计算机网络复习

应用层

好处:

  • 屏蔽底层细节
  • 抽象
  • 提供额外的功能

Socket编程

  • 进程通过socket完成网络通信
  • 真正的并发是开很多socket(单socket多进程要冲突控制)

组织架构

  • 客户/服务器(C/S)方式
  • 对等(P2P)方式

协议

WWW

  • Web页面(html):包含到多种对象的链接
  • Web对象:可以是图片,音频,视频等
    • 静态对象:多媒体,css
    • 动态对象:交互信息,如注册信息等
  • 对象用URL编址
  • 动态Web:用CGI协议等,前后端分离,数据库+脚本

HTTP

  • 缺省使用TCP的80端口
  • 无状态协议
  • 不同标准
    • HTTP/1.0: 无状态,非持久连接
    • HTTP/1.1: 支持长连接,流水线机制和断点冲脸
    • HTTPS: 加入TLS保证安全
    • HTTP/2.0: 提高带宽利用率,降低延迟,服务端可以主动推送消息确定存活
  • 服务过程:三次握手,四次分手
  • 请求报文结构
    • 开始行 (请求叫请求行,响应叫状态行)
      • 方法:GET,POST(提交数据)
      • 版本
      • URL / 状态码
        • 200 OK
        • 301 MOVED
        • 400 BAD REQUEST
        • 404 NOT FOUND
        • 505 HTTP VERSION NOT SUPPORTED
    • 首部行:用key: value记录控制信息
    • 实体主体
  • 缓存:浏览器缓存和代理缓存
    • 可通过询问原始服务器保证副本一致
  • Cookie:存储在用户主机,保存服务器发来的信息
    • 只保存文本,不被执行

DNS

  • 提供域名和ip的转换
    • 网络层服务,但以应用层方式实现
  • 采用层次结构
    • 下层服务器没有数据的时候就往上层问
    • 根服务器和顶级域服务器不一定有数据,但二级域服务器一定有其管辖区的数据
    • 管辖区可能小于管辖域(所有使用当前级别域名的域名)
  • 使用UDP端口53:减少开销
  • 域名查询方式
    • 递归查询(代替询问者查询):主机向本地服务器
    • 迭代查询(返回新服务器的IP):本地服务器向更上级服务器
    • 先通过递归查询到本地域最顶层,在从根往下迭代查询
  • 报文:基础结构,问题,资源记录
  • 不安全:所有流量明文传输,没有身份验证机制和签名
    • 通信链路窃听
    • 服务器收集

电子邮件

  • 基本架构:用户代理->传送代理
  • SMTP:传送邮件
    • 不包括认证
    • 明文
    • 只能发ASCII
  • POP3:接收邮件
    • 拉操作(SMTP一直需要目标在线)
  • IMAP:接收邮件
    • 更加复杂,维护文件夹(POP3删除)
    • 用户状态信息,可以访问邮件一部分

P2P

  • 去中心化
  • 核心问题:peer索引
    • 中心化索引
      • 单点故障
      • 性能瓶颈
    • 洪泛索引
      • 找不到就直接往所有邻居发询问
      • 信息太多,可扩展性有限
    • 混合索引
      • 层次化,超级节点间flooding
  • BitTorrent
    • 一个实际的P2P协议
    • 可能自私退出
    • 优化策略:
      • 找罕见的块下载
      • 找速度匹配的peer
      • 投入越多回报越高
    • 问题多:速度慢,版权,不共享,恶意节点
  • 分布式哈希表
    • 不需要中心化就能查询数据在哪
    • Chord
      • 顺时针排,key由下一个顺时针的peer存储
      • 问题:负载均衡/能力不一样
      • 可以划分更多虚拟节点

RTSP, RTP, RTCP

  • 用于流媒体传输的控制协议
    • 服务质量(平滑性,画质等)很重要
  • RTP
    • 提供实时传输,但没有任何保证
    • 不对数据块做任何处理
  • RTSP
    • 多媒体播放控制
    • 控制暂停继续,前进后退等
  • RTCP
    • 和RTP配合
    • 保证服务质量,同步等

传输层

  • Socket是应用层和传输层间的接口
  • 端口号:16bit
    • 熟知端口:0-1023
    • 注册端口:1024-49151
    • 私有或动态端口:49152-65535
  • 复用分用
    • 复用:打包将不同端口的东西一起传送
    • 分用:来自不同端口的包送到不同socket

UDP

  • 不包含任何保证和流量控制
  • 交付的套接字只和报文中目的端口号和IP有关,和源没关系
  • 有边界,以报文为单位
  • 可选检查报文完整性
    • checksum:16bit和取反(checksum=0)
  • 无发送缓冲区,有接收缓冲区
  • 发的快,开销小,处理简单
    • 适合流媒体等容忍丢包的应用
    • 适合以单次请求响应为主的应用
    • 或者应用层保证可靠

TCP

  • 有连接,套接字和源及目的都有关
  • 流传输,没有边界
  • 传输触发条件:收到数据,应用程序调用,超时
  • 报文结构
    • 主要是有seq,checksum,port等
    • 重要选项
      • 最大段长度
      • 窗口比例因子
      • 选择重传
  • 主要机制
    • 建立连接
      • 三次握手
        • SYN, SYNACK, ACK
        • 保证服务器和客户端都在线
        • 起始序号不能重叠:时钟
      • 四次分手
        • 双方各自FIN, ACK
        • 保证服务器和客户端都离线
        • 优化:两个可以一起发送
        • 丢包就重传,多次不行就放弃
      • 安全隐患
        • flooding发SYN占资源
        • TCP端口扫描:通过发SYN或FIN得知端口是否被占用
    • 可靠数据传输
      • 一般可靠性
        • 重传出错数据包:数据包号seq+ACK
        • 计时器防止丢包
      • 优化:流水线传输(GBN/SR)
        • 滑动窗口限制未确认包上限
        • 回退N(GBN)
          • 发送端:维护一个计时器,到时间重传所有未确认的
          • 接收端:不缓存包
          • 优点:减轻接收端负担
          • 缺点:增加发送端和信道负担
        • 选择重传(SR)
          • 发送端:给每个包维护单独的计时器,只重传单个
          • 接收端:缓存出错包后的包/乱序包
          • 优点:减少重传
          • 缺点:缓存,单独的计时器
        • SR的窗口大小不能超过seq一半,GBN则不能超过seq大小
      • TCP的可靠性
        • 定时器和确认方式与GBN类似
        • 重发策略和缓存与SR类似
        • 减少不必要的重传
        • 优化1:超时值的设置-Karn算法
          • 移动指数加权平均测量平均RTT
          • 由于方差大,加一个安全距离衡量方差
          • 只考虑一次发送成功的包
          • 发生重传就直接超时翻倍直到上界
        • 优化2:快速重传
          • 三次重复ACK马上重传
        • 优化3:推迟确认
          • 接收方可以在收到多个报文后发送延迟确认
          • 为了保证可靠,至少每隔一个报文段正常确认
          • 上限500ms
    • 流量控制
      • 发送端控制发送速率,避免接收缓存溢出
      • 由于又要可靠又有缓冲区,才存在流量控制(比较GBN/SR和UDP)
      • 接受缓存的剩余空间叫接收窗口
      • 非零窗口通告
        • 接收方在接收窗口为0时告诉发送端
        • 由于传输限制(3条件),只能发送端发探测看接收窗口是否为0
        • 零窗口探测靠超时
        • 接收端返回接收窗口的大小
        • 糊涂窗口综合症:不断发小窗口通告并被填满
          • 发送方等等再发送:Nagle算法启发式
          • 接收方推迟确认且等接收窗口显著增大再说(达到MSS或缓存的一半)
    • 拥塞控制
      • 流量控制考虑接收端,拥塞控制考虑网络能力
      • 大量资源用于不必要重传和被丢掉的包
      • 传统TCP不考虑网络层的额外信息,自行推断拥塞
      • 发送方利用丢包感知拥塞
        • 超时
        • 3ACK
      • 发送方通过拥塞窗口cwnd限制发送速率
      • AIMD:乘性减少,加性增加拥塞窗口大小
        • 丢一次包cwnd减半:缓解拥塞
        • 过一个RTT将cwnd增大一个MSS:避免震荡
      • 调整cwnd
        • 慢启动:cwnd太小时候指数级增加cwnd
          • cwnd初始为1MSS
          • 加性太慢了
          • 比没拥塞控制慢。。。
          • 直到ssthresh或丢包
        • 拥塞避免:cwnd超过ssthresh就线性增长
          • 超时:网络传输能力极差
          • 3ACK:海绵里的水挤一挤总还有
          • Tahoe不区分这两个,直接重新慢启动
          • Reno在3ACK的时候进入快速恢复
          • 两个算法都是令ssthresh = cwnd/2
        • 快速恢复
          • 一开始令cwnd=cwnd/2+3, 即cwnd比ssthresh多3
          • 继续收到相同的ACK:每次cwnd多MSS
          • 新ACK:cwnd=ssthresh然后拥塞避免
          • 丢包时:重新开始
      • 吞吐量
        • 丢包时窗口大小W,忽略慢启动
        • 丢包前吞吐W/RTT,丢包后W/2RTT
        • 平均约为0.75W/RTT(分析见图)
      • 公平性
        • 多个TCP共享同一个瓶颈链路,速度应该相同
        • 公平性来自于AIMD(见下图)
  • 拥塞控制改进
    • New Reno:快速重传后若还是不行则马上重传第一个未被确认的包
    • BIC和CUBIC:更快找到合适的cwnd大小
      • BIC使用二分查找逼近Wmax
        • 如果有新的Wmax就对称指数找新的Wmax
        • 过于复杂
        • 不公平(RTT越短cwnd增长越快)
      • CUBIC:窗口增长函数只和距离上次丢包时间有关
        • 和RTT无关
        • 用三次函数逼近BIC曲线
    • BBR:以瓶颈链路带宽*往返时间作为目标(不要把缓冲区填满)
    • DCTCP:面向数据中心
      • 问题:总流量大(incast),端口占用(queue buildup),缓冲区占用(buffer pressure)
      • 更精细的窗口
      • 交换机:队列长度超N时给之后的包标记ECN
      • 接收端:只有出现或消失ECN时直接ACK,否则delay ACK
      • 发送端:每个RTT更新cwnd,根据ECN ACK/总ACK数动态调整
      • 队列长度稳定且低

QUIC

  • TCP存在的问题
    • 应用无法修改TCP
    • 握手时延大(要三个RTT)
    • 队头阻塞(丢包复杂,多路复用慢)
  • 架构:基于UDP,替代TCP,TLS和部分HTTP,模块化拥塞控制
  • 优势
    • 解决了队头阻塞问题
    • seq更明确,RTT更精确
    • 支持ip/port切换
    • 容易部署更新

网络层

  • 路由器只存在网络层和链路层
  • 多跳传输
  • 保证主机间数据传输
  • 模型选项
    • 面向连接(电路交换)/无连接(分组交换)
    • 网络/端系统负责可靠性
    • 性能保障/无保障
  • Internet:无连接的数据报服务
    • 不提供任何服务质量的承诺
    • 不提供可靠传输服务
  • 网络层关键功能:转发,路由
    • 转发
      • 数据平面
      • 纳秒级电路
      • 基于最长前缀规则查询转发表
    • 路由
      • 控制平面
      • 毫秒级算法
      • 有多个路由算法按优先级选择

协议

IPv4

  • 数据报格式
    • srcIP, destIP, protocal, checksum等
    • 生存时间TTL:每一跳减一
  • 分片:由于网络存在最大传输单元MTU
    • 途中分片:不允许就需要通过发现机制保证数据报大小小于路径MTU
    • 重组:途中或目的端,需要编号,offset等
    • ipv4:可以途中分片,只能在目的段重组
  • IP地址:每个主机唯一
    • 网络地址+主机号
    • 同一个网络地址为子网,可以直接链路层传输
      • 子网掩码:1为网络地址,0为主机号
      • 子网和设备无关,只和接口有关
      • CIDR:如128.0.0.0/24
      • 同一个CIDR可以进一步切分(地址聚合)
  • 同子网直接用MAC交付,否则间接转发(路由)

IPv6

  • 用于替代IPv4
    • 初始:提供更多合法地址
    • 后续:提升服务质量,加快包处理与转发
  • 地址长度128bit,以冒分十六进制表示,前导零及连续0000可不写
  • 与IPv4包比较
    • 固定首部40字节长
    • 去除分片字段:不允许途中分片
    • 去除校验和
    • 扩展头机制
      • 可指向下一个扩展头类型(如分段头,逐跳选项头等)
      • 或者上层传统协议名
  • 兼容IPv4
    • 隧道技术:通过将IPv6包(包括头)作为内容在IPv4网络中传播达到兼容(或反过来)
    • 翻译技术:报头互相翻译
      • 破坏端到端
      • 异构地址寻址
      • 内嵌IP地址
      • 分片问题,影响转发性能

ARP

  • 接口存在硬件地址(MAC地址)
    • 链路层传输时IP不变,但MAC会变
  • 通过ARP获取IP-MAC映射
    • 若缓存有则直接使用
    • 否则广播ARP query询问对应主机
    • 缓存直到超时
  • 不安全:可以通过ARP spoofing发大量请求
    • ARP无状态,无论是否发过请求都会在收到响应时更新ARP表
    • 攻击者可以继续转发收到的IP-MAC对

DHCP

  • 获取(申请)IPv4地址
  • 基于UDP,服务器使用67端口,客户端使用68端口
  • 流程
    • 客户端广播DHCP DISCOVER
    • 服务器收到DISCOVER返回DHCP OFFER提供一个或多个可用的IPv4地址
    • 客户端返回DHCP REQUEST声明一个想使用的IPv4地址
    • 服务器发送DHCP ACK
  • 也返回缺省路由器IP,DNS服务器IP,子网掩码
  • 不安全
    • DHCP耗竭攻击:占用所有可用的IPv4地址
    • 流氓DHCP:启动虚假的DHCP服务提供虚假配置

NAT

  • 私有地址转化为公共地址
  • 子网发出的所有包有相同的IP,通过端口号区分
  • 功能
    • 节省合法地址
    • 灵活连接internet
    • 保护私密性
  • 缺点
    • 违反IP模型等
    • IP报头不能加密
    • 新型应用需要多考虑NAT场景,如P2P

ICMP

  • 允许主机或路由器报告差错情况和提供有关异常情况的报告
  • 报文类型
    • 差错报告
    • 询问
  • Ping:使用询问报文的回送请求/回答
  • TraceRoute:从1开始递增TTL发送ICMP包到目标的不可能端口,返回包的srcIP就是路由器地址;收到端口不可达结束

BGP

  • 层次路由
    • 避免路由表过多,给不同网络更大管理自由度
    • 将网络分成不同自治域,内部随便用,外部用统一的外部网关路由协议
  • 唯一正在运行的外部网关路由协议
  • 两部分:eBGP和iBGP
    • eBGP从相邻的AS获得可达性信息(如AS2, AS3, X指经过AS2,AS3可达X)
    • iBGP传输给AS内部节点
  • 分享可达性信息时承诺路径可靠
    • 网络可能通过eBGP向另一个AS分享路径信息
    • 学习到多个路径时通过内部策略选择
  • BGP的路径的每个节点是AS级别的
    • AS的边界路由器很少
  • 不同AS可能有不同的路由策略
    • 通过选择性分享路由信息实现
    • 不想B到C的路径通过X,X不向B分享到C的路径

广播、组播、选播

  • 广播:给所有地址发送同一个包
    • 给每个主机发包
    • 多目标路由
    • 泛洪
      • 序号控制泛洪
      • 逆向路径转发
    • 生成树
  • 组播:给组内地址发送包
    • 确定组成员
    • 生成树
  • 选播:给最近的组成员发送包
    • DNS

路由

  • 可以使用局部,动态的路由
    • 但也可以在每个节点都存整体拓扑信息
    • 或静态路由

距离向量算法

  • 分布式bellman-ford算法
    • 每个点存到别的点距离的估计值(距离向量)
    • 同时保存所有直接邻居的DV
    • 每个点向邻居发自己的距离向量
    • 收到DV后更新所保存y的DV并重新计算自己的DV
    • 自己DV变化就通知邻居
  • 异步,迭代,分布式
  • 坏消息导致迭代慢
    • 出现无穷大时可能迭代无穷次
    • 毒性逆转:若a到c下一跳为b,a将通知b其到c距离为无穷大
    • 有效但无法解决一般性的问题
  • 发送最多O(nE)条消息,收敛速度不稳定

链路状态算法

  • 基于Dijkstra
  • 每个节点知道整个拓扑,独立计算
  • 流程
    • 发现邻居
    • 设置到邻居的成本
    • 构造最新链路信息
    • 分享信息到所有路由
    • 计算路径
  • 发送O(nE)条消息,收敛速度O(nlogn)或n方

其他网络技术

网络服务质量(QoS)

  • 服务时要满足一定指标(抖动,时延等)
  • 数据包调度:服务器输出端口决定以何顺序转发
    • FIFO(FCFS)
    • (加权)公平队列
    • 优先级
  • 流量工程:提高带宽利用率,避免拥塞
    • 流量整形:避免突发流量,控制流速
      • 漏桶算法:在出口放一个桶(缓冲区),均匀的出流速,若桶满了就丢掉数据包
      • 令牌桶算法:匀速生成令牌,满了丢掉,包到了令牌数目够就发并扣除令牌,否则丢包
    • 综合服务:各路由器作资源预留等,对流做分类调度管理
      • 很难实现
    • 区分服务:通过IP报头信息(DSCP)进行分类处理
      • 公地悲剧,报头信息不受控

面向连接服务

  • 虚电路
    • 先建立逻辑连接(并非真正的物理连接)
    • 并非完全可靠,可能由于链路中某点失效而导致数据完全丢失
    • 流程:建立连接,发送数据,释放连接
    • 靠虚电路号分组转发
  • MPLS(多协议标签交换)
    • 在上层支持多种协议(IP,IPv6等)
    • 根据包的标签转发
    • 路由器可能会修改标签后转发
    • 可以构建处理等价类后分标签
  • VPN
    • 通过隧道技术模拟出点对点专线
    • 依赖于加密技术和电子签名技术
    • 在VPN网关间加密,不保证VPN网关和主机间

软件定义网络(SDN)

  • 传统网络架构缺陷
    • 硬件,操作系统封闭不兼容,网络不可编程
    • 消息传播效率低
    • 网络设备数量不断增加
    • 无法做到全局的流量工程
      • 局部算法有缺陷
  • 是一种理念,并非具体的技术
  • 技术要点
    • 基于流表的通用转发接口
    • 控制平面和数据平面分离
    • 中心化控制平面
      • 通过远程控制器和路由交互
    • 应用程序可编程开发
  • SDN的优势
    • 数据平面提供开放接口,允许编程
    • 中心化控制器:全局网络视角,更简单的网络编程
    • 分离数据平面及控制平面,控制器通过南向(北向)接口与交换机(第三方算法)交互
  • 数据平面
    • 由控制器写入各路由器的流表
    • OpenFlow的匹配-动作
      • 实例:OpenVSwitch
      • 不支持有状态的处理
  • 控制平面
    • 控制器架构:接口模块,数据库,通信模块
      • 通信模块如Openflow协议,使用TCP交互

数据链路层

  • 利用物理层提供的位流服务,提供明确的服务接口
  • 在物理相连的节点间进行传输
    • 在节点间传输帧
  • 不同链路可能采取不同协议,提供不同服务

提供服务

  • 服务类型
    • 无确认无连接服务:可靠信道,实时通信,如以太网
    • 有确认无连接服务:不可靠信道,如802.11无线网
    • 有确认有连接:长延迟不可靠
  • 成帧
    • 字节计数法:差错影响极大
    • 带字节填充的定界符(需要escape):效率低
    • 带比特填充的定界符:如01111110,五个连续1就填充0
    • 物理编码违例:选择的定界符不是正常会出现的编码
      • 4B/5B编码:将4bit编码成5bit,剩下的16个编码可以做定界符
  • 差错控制
    • 差错检测与纠正
    • 如传三份数据,有一个错了可以通过另外两份纠正(冗余极大)
    • 检错码与纠错码(前向纠错,FEC)
    • 典型检错码
      • 奇偶校验:所有bit的异或
      • 校验和:16bit和取反
      • CRC:检查不超过r位错
        • 选定r+1位二进制串G作为生成多项式
        • 计算G模2除D«r为R一起发送
        • 接收端将<D, R>模2除以G,余数为0就通过
    • 理论下界
      • 为了检查d位错需要设计海明距离至少为d+1的编码,为了纠正则需要2d+1
      • 假设要检测单比特错误,m个信息位,r个校验位
        • 每个m位信息至少消耗m+r+1个码位
        • 即(m+r+1)*2^m <= 2^{m+r}
    • 典型纠错码
      • 海明码
        • 检错码位于2的指数幂位上
        • 2^k位置的值是所有二进制表示k位为1的位的值的和
        • 检查时若Pa,Pb,Pc出错,出错位为a+b+c
  • 流量控制
  • 访问控制
    • 由于大多使用广播信道,可能同时请求使用产生冲突
    • 分布式算法确定谁访问信道
    • 信道划分
      • TDMA:划分出等长时间片
      • FDMA:划分不同频段
      • CDMA:划分不同编码
      • 静态划分无法应对突发业务,有资源浪费且可能分配不合理
      • 平均延迟时间为可发送帧率减到达帧率的倒数
    • 随机访问
      • ALOHA
        • 要发送就马上全速发送,检测冲突并重发
        • 纯ALOHA协议:想发就发
          • 假设每个站点在单位时间内发送概率为p,发送都在单位时间内完成
          • 理论分析知成功概率Np(1-p)^{2(N-1)}->1/2e
        • 分隙ALOHA协议:只在时间槽开始时传输
          • 冲突只在时间槽开始时发生
          • 成功概率翻倍为1/e
      • CSMA
        • 先听后发,先监听,如果没被占用就发
        • 非持续式:监听失败时等一个随机时间再监听
          • 减少再次冲突可能性
          • 浪费时间
        • 1-持续式:持续监听,空闲马上发送
          • 如果多个站都在监听必定冲突
        • p-持续式:持续监听,空闲p概率发送,1-p概率推迟一个单元
        • 冲突检测
          • CSMA不能避免由于刚好同时发送和延时导致的冲突
          • CSMA/CD:发送时检测到冲突立马停止,等随机时间再监听
            • 1-持续式+冲突检测
            • 以太网中使用二进制回退,从n-bit数中选(n是碰撞次数)
            • 停止传输后发送Jam强化信号
            • 需要持续监听2D时间(D是单边延迟)来完全确定没有冲突
            • 信道利用率接近1
    • 轮流协议
      • 轮询协议:主节点轮流分配使用权
        • 轮询昂贵
        • 单点故障
        • 通知有延迟
      • 令牌传递:只有有令牌的才能发送
        • 令牌可靠性
        • 令牌维护代价
      • 位图协议
        • 竞争期:在自己的时槽举手要预留资源
        • 发送期:按顺序发送
        • 无法考虑优先级,但是高负荷时利用率高
      • 二进制倒计数
        • 编号,高计数有高优先级
        • 每个站点发送自己序号中某一位比特
      • 有限竞争协议
        • 低负荷竞争减少延迟
        • 高负荷无冲突法获得高效率

局域网

  • 不需要网络层技术就能传输的网络
  • 实际上等于子网
  • 通过MAC地址进行标识
    • 大多烧录在硬件上不可更改
    • 只和接口有关,和设备无关
  • 以太网
    • 无连接
    • 不可靠
    • 使用CSMA/CD
      • 二进制指数后退的最大值为10
  • 交换
    • 集线器:早期使用
      • 内部全连通
      • 不能扩展增加容量
      • 所有端口位于同一冲突域
    • 交换机:网桥
      • 分割了冲突域
      • 可以全双工同时收发
      • 可以并行传输
    • 理想的交换是透明的:逆向学习
      • 通过从某个端口来的包学习MAC地址-端口映射
      • 再次收到重置老化时间
    • 数据包处理
      • 转发:存在表项且端口不一样
      • 过滤(丢弃):出入端口相同
      • 泛洪:不存在表项或广播
    • 交换模式:
      • 存储转发:安全但是慢
      • 直通交换:快但不安全
      • 无碎片交换:接收到前64字节就转发,避免碎片帧但不完全安全
  • 虚拟局域网
    • 不增加新硬件添加新局域网
    • 通过交换机配置设置新的广播域
      • 基于端口
        • 最常用
        • 流量隔离
        • 动态配置
      • 基于MAC地址
      • 基于协议
      • 基于子网

无线网络

  • 终端不一定在移动,只是没有线
  • 可以基于基础设施,也可以自组织
  • 核心问题:无线,移动
    • 无线:信号弱,干扰,多路径传播
      • 隐藏终端:AC互相有障碍听不到,但在B处干扰
      • 信号衰减:AC离得太远信号弱,但在B处干扰
      • 无法实现边发边听,“说话这么小声还想CSMA/CD?”
      • CDMA:通过正交编码减少干扰影响
        • 发出时用bit乘以本用户编码
        • 接收时算数据和发出用户编码点乘和
    • 移动:如何定位主机,保持TCP连接,IP地址等
      • 注意无线网络一般有固定IP
      • 归属网络:长期不更换,移动设备在其中有永久地址
      • 外部网络:移动设备移动后所处的网络,在其中有外部代理,移动设备有转交地址
      • 进入外部网络
        • 移动设备申请转交地址
        • 外部代理通知归属代理转交地址及设备属于自己的网络
      • 通信
        • 通过路由解决:无法处理大量移动设备
        • 通过代理解决
          • 间接路由:通信者-归属代理-外部代理-移动设备(直接回复无需代理)
            • 对通信者来讲移动是透明的
            • 当通信者与移动设备在同一个子网时效率低下
          • 直接路由:通信者-外部代理-移动设备(需要先得知转交地址)
            • 对通信者不透明
            • 再次移动就只能设定锚外部代理进行转发

802.11

  • 使用CSMA/CA,两种模式都支持
  • 无线主机,接入点AP(只在基础设施模式存在)
    • 被动扫描:主机监听AP信标帧
    • 主动扫描:主机广播探测请求帧
  • CSMA/CA
    • 有ACK
    • 倒计时递减总空闲时间
    • 未发送前空闲时间超过DIFS就发送整个帧
    • 和CSMA/CD区别:倒计时,DIFS,ACK
  • 预约机制
    • 发送者发送RTS
    • 基站广播CTS
    • 发送者开始传输
    • 其他人收到ACK后开始预约
  • 移动:同一子网下移动IP不变,交换机逆向学习

蜂窝网

  • 用户-基站-移动交换中心MSC-公共电话网
  • 发展历史
    • 2G:完全使用语音网络
    • 3G:语音和数据网络并行
    • 4G:舍弃语音网络,两个平面分离
  • 移动IP:报文间接路由,代理发现,代理注册
    • 归属网络为设备订购服务的网络(如中国移动等)
    • 同一MSC时可以由MSC进行全局调度
    • MSC之间则使用锚MSC
    • 4G引入寻呼机制(可能休眠)