前言
转载请声明转载并标明本博客链接。
(1) 毒性逆转
(2) 乒乓环路
(3) TOS
(4) 网络前缀聚合
(5) 滑动窗口协议
上面的是还未搞明白的知识点。
文章目录
5 网络层(上)
5.1 网络层服务
- 从发送主机向接收主机传送数据段(segment)
- 发送主机:将数据段封装到数据报(datagram)中
- 接收主机:向传输层交付数据段(segment)
每个
主机和路由器都运行网络层协议
- 路由器检验所有穿越它的IP数据报的头部域
- 决策如何处理IP数据报
网络层核心功能-转发与路由
转发
(forwarding): 将分组从路由器的输入端口转移到合 适的输出端口路由
(routing): 确定 分组从源到目的经过的路径- 路由算法 (routing algorithms)
- 路由算法 (routing algorithms)
网络层核心功能-连接建立
- 某些网络的重要功能:
- ATM, 帧中继, X.25
- 数据分组传输之前两端主机需要首先建立
虚拟/逻辑连接
- 网络设备(如路由器)参与连接的建立
网络层连接与传输层连接的对比
:- 网络层连接:
两个主机
之间 (路 径上的路由器等网络设备参与 其中) - 传输层连接:
两个应用进程
之间(对中间网络设备透明)
- 网络层连接:
网络层服务模型
-
Q
: 网络层为发送端(主机)到接收端(主机)的数据报传送 “通道(channel)”提供什么样的服务模型(service model)?
-
无连接服务
(connection-less service):- 不事先为系列分组的传输确定传输路径
- 每个分组独立确定传输路径
- 不同分组可能传输路径不同
数据报网络
(datagram network )
-
连接服务
(connection service):- 首先为系列分组的传输确定从源到目的经过的路径 (建立连接)
- 然后沿该路径(连接)传输系列分组
- 系列分组传输路径相同
- 传输结束后拆除连接
虚电路网络
(virtual-circuit network )
5.2 虚电路网络与数据报网络
5.2.1 虚电路网络
连接服务
。结合了电路交换
和分组交换
的优点。
连接服务与无连接服务
- 数据报(datagram)网络与虚电路(virtual-circuit)网 络是典型两类分组交换网络
- 数据报网络提供网络层无连接服务
- 虚电路网络提供网络层连接服务
- 类似于传输层的无连接服务(UDP)和面向连接 服务(TCP),但是网络层服务:
主机到主机服务
网络核心实现
虚电路(Virtual circuits)
虚电路
:一条从源主机到目的主机,类似于电路
的路径(逻辑连接)
- 分组交换
- 每个分组的传输利用链路的全部带宽
- 源到目的路径经过的网络层设备共同完成虚电路功能
注意:
尽管虚电路中采用了很多电路交换中的术语,但本质上是此非彼的关系。
- 通信过程:
- 呼叫建立(call setup)→数据传输 →拆除呼叫
- 每个分组携带虚电路标识(VC ID),而不是目的主机地址
- 虚电路经过的
每个
网络设备 (如路由器),维护每条
经过它的虚电路连接状态 - 链路、网络设备资源(如带宽 、缓存等)可以面向VC进行预分配
- 预分配资源=可预期服务性能
- 如ATM的电路仿真(CBR)
VC的具体实现
每条虚电路包括
:
- 从源主机到目的主机的
一条路径
虚电路号(VCID)
, 沿路每段链路一个编号- 沿路每个网络层设备(如路由器),
利用转发表记录 经过的每条虚电路
- 沿某条虚电路传输的分组,携带对应虚电路的 VCID,而
不是目的地址
- 同一条VC ,在每段链路上的VCID通常不同
- 路由器转发分组时依据
VC转发表
改写/替换虚电路号
- 路由器转发分组时依据
VC转发表
路由器R1的VC转发表:
![](https://i-blog.csdnimg.cn/blog_migrate/3eab9689eafc7f192a363989cc7c51a7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ec3b6c94d58073e4b40e74dde48090f7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8e110d014a54e4e2e796fc40df65de46.png)
虚电路信令协议(signaling protocols)
- 用于VC的建立、维护与拆除
- 路径选择
- 应用于虚电路网络
- 如ATM、帧中继(frame-relay)网络等
- 目前的Internet不采用
![](https://i-blog.csdnimg.cn/blog_migrate/aff4d5b6c34ae8ef497841063d55728f.png)
5.2.2 数据报网络
- 网络层无连接
- 每个分组携带目的地址
- 路由器根据分组的目的地址转发分组
- 基于路由协议/算法构建转发表
- 检索转发表
- 每个分组独立选路
数据报转发表
对应的,虚电路网络
有VC
转发表。
32位可存放40多亿地址,但在分组有限的大小中这是很不现实的,所以分组是根据地址范围
来转发的。
![](https://i-blog.csdnimg.cn/blog_migrate/f7720976bfdaaa289196a1936d47b1d4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d1f75462b4d3bb5b98bc7e16f146ddaf.png)
![](https://i-blog.csdnimg.cn/blog_migrate/305bc1542aea125edd4ac9f98db93e52.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ece67ac12ab252d945c79aaffb4f2a1b.png)
但这也出现了一个问题:
如果地址范围划分的不是这么“完美”会怎么样?
解决办法:最长前缀匹配优先
。
最长前缀匹配优先
![](https://i-blog.csdnimg.cn/blog_migrate/4fe31624322c50486552c0e314ba3a2c.png)
5.2.3 数据报网络与VC网络的对比
![](https://i-blog.csdnimg.cn/blog_migrate/93bce563e2beca49d0c30f2d9667866a.png)
5.3 IPv4协议
5.3.1 IP协议(1)-IP数据报
![](https://i-blog.csdnimg.cn/blog_migrate/f4075f119aace9e52291ff882a46ee78.png)
IP数据报(分组)格式
![](https://i-blog.csdnimg.cn/blog_migrate/246f22dc592d195782e5b04564641cb6.png)
版本号
字段占4位:IP协议的版本号 E.g. 4→IPv4,6 → IPv6首部长度
字段占4位:IP分组首部长度- 以
4字节
为单位 - E.g. 5→IP首部长度为20(5×4)字节
- 以
服务类型(TOS)
字段占8位:指示期望获得哪种类型的服务- 1998 年这个字段改名为区分服务
- 只有在网络提供区分服务(DiffServ)时使用
- 一般情况下不使用,通常IP分组的该字段(第2字节)的值为00H
- 总长度字段占16位:IP分组的总字节数(首部+数据)
- 最大IP分组的总长度:65535B
- 最小的IP分组首部:20B
- IP分组可以封装的最大数据:65535-20=65515B
生存时间(TTL)
字段占8位:IP分组在网络中可以通过的 路由器数(或跳步数)- 路由器转发一次分组,TTL减1
- 如果TTL=0,路由器则丢弃该IP分组
协议
字段占8位:指示IP分组封装的是哪个协议的数据包- 实现复用/分解
- E.g. 6为TCP,表示封装的为TCP段;17为UDP,表示封装的是UDP数据报
首部校验和
字段占16位:实现对IP分组首部的差错检测- 计算校验和时,该字段置全0
- 采用反码算数运算求和,和的反码作为首部校验和字段
- 逐跳计算、逐跳校验
源IP地址、目的IP地址
字段各占32位:分别标识发送分组 的源主机/路由器(网络接口)和接收分组的目的主机/路由器 (网络接口)的IP地址选项
字段占长度可变,范围在1~40B之间:携带安全、源选路径、时间戳和路由记录等内容- 实际上很少被使用
填充
字段占长度可变,范围在0~3B之间:目的是补齐整个 首部,符合32位对齐,即保证首部长度是4字节的倍数
5.3.2 IP协议(2)-IP分片
最大传输单元(MTU)
- 网络链路存在MTU (最大传输单元)——链路层数据帧可封装数据的上限
- 不同链路的MTU不同
IP分片与重组
- 大IP分组向较小MTU链路转发时,
可以
被“分片” (fragmented)- 1个IP分组分为多片IP分组
- IP分片到达目的主机后进行“重组” (reassembled)
- IP首部的相关字段用于标识分片以及确定分片的相对顺序
- 总长度、标识、标志位和片偏移
- 总长度、标识、标志位和片偏移
IP分组格式
![](https://i-blog.csdnimg.cn/blog_migrate/f9cd0a638f004674358cc8dac93d2813.png)
标识
字段占16位:标识一个IP分组- IP协议利用一个计数器,每产生IP分组计数器加1,作为该IP分组 的标识
![](https://i-blog.csdnimg.cn/blog_migrate/83acf5309dee3f851370d0f333229693.png)
- 标志位字段占3位:
DF (Don't Fragment)
MF (More Fragment)
DF =1
:禁止分片;
DF =0
:允许分片MF =1
:非最后一片;
MF =0
:最后一片(或未分片)
![](https://i-blog.csdnimg.cn/blog_migrate/a7f4462867972801985ef4081cf92849.png)
- 片偏移字段占13位:一个IP分组分片封装原IP分组数据的相对偏移量
- 片偏移字段
以8字节为单位
- 片偏移字段
IP分片过程
- 假设原IP分组总长度为
L
,待转发链路的MTU为M
- 若L>M,且DF=0,则可以/需要分片
- 分片时每个分片的标识复制原IP分组的标识
- 通常分片时,除最后一个分片,其他分片均分为MTU允 许的最大分片
- 一个最大分片可封装的数据应该是
8的倍数
,因此,一个 最大分片可封装的数据为:
d = ⌈ M − 20 8 ⌉ × 8 d=\biggl\lceil\frac{M-20}8\biggr\rceil\times8 d=⌈8M−20⌉×8 - 需要的总片数为:
n = ⌈ L − 20 d ⌉ n=\biggl\lceil\frac{L-20}d\biggr\rceil n=⌈dL−20⌉ - 每片的片偏移字段取值为:
F i = d 8 × ( i − 1 ) , 1 ≤ i ≤ n F_i=\frac d8\times(i-1),\quad 1\leq i\leq n Fi=8d×(i−1),1≤i≤n - 每片的总长度字段为:
L i { d + 20 1 ≤ i ≤ n L − ( n − 1 ) d i = n L_i \begin{cases} d+20 & \quad 1\leq i\leq n\\ L-(n-1)d &\quad i=n\\ \end{cases} Li{d+20L−(n−1)d1≤i≤ni=n - 每片的MF标志位为:
M F i = { 1 1 ≤ i < n 0 i = n {MF}_i=\begin{cases} 1 & \quad 1\leq i < n \\ 0 & \quad i=n \end{cases} MFi={101≤i<ni=n
![](https://i-blog.csdnimg.cn/blog_migrate/2e88d472ca137996d17e6565e75514b0.png)
5.3.3 IP协议(3)-IP编址
IP编址(addressing)
-
IP分组:
- 源地址(SA)-从哪儿来
- 目的地址(DA)-到哪儿去
-
接口(interface)
: 主机/路 由器与物理链路的连接- 实现网络层功能
- 路由器通常有多个接口
- 主机通常只有一个或两个接口 (e.g.,有线的以太网接口,无线的802.11接口)
-
IP地址
: 32比特(IPv4) 编号标识主机、路由器的接口
-
IP地址与每个接口关联
-
怎样为接口分配IP地址呢?
IP子网(Subnets)
- IP地址:
网络号(NetID)
– 高位比特主机号(HostID)
– 低位比特
- IP子网:
- IP地址具有
相同网络号
的设备接口 不跨越路由器
(第三及以 上层网络设备)可以彼此物理联通
的接口
- IP地址具有
- 图中网络有多少个 IP子网?
六个。
5.3.4 IP协议(4)-有类IP地址
- IP地址:
网络号(NetID)
– 高位比特主机号(HostID)
– 低位比特
- IP子网:
- IP地址具有
相同网络号
的设备接口 不跨越路由器
(第三及以 上层网络设备)可以彼此物理联通
的接口
- IP地址具有
有类IP地址
采用二分法
。
![](https://i-blog.csdnimg.cn/blog_migrate/d32c151de36c9195229d351109a7f947.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c1861080380cb2934edd2328c41c2fd6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f3e3b2e0cd5ea7978f226b6e717db862.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a519de090352c92cd19b73f27281f213.png)
-
特殊IP地址
-
私有(Private)IP地址
私有IP地址一般用于机构内部网络,在公网中是无法与其通信的,私有IP地址增加了IP地址的复用性
(因为公网连接不上,各个机构又是分开的)。
5.3.5 IP协议(4)-IP子网划分与子网掩码
-
IP地址:
网络号(NetID)
– 高位比特主机号(HostID)
– 低位比特
-
IP子网:
- IP地址具有
相同网络号
的设备接口 不跨越路由器
(第三及以 上层网络设备)可以彼此物理联通
的接口
- IP地址具有
-
有类IP地址
如何进行子网划分(Subnetting)?
![](https://i-blog.csdnimg.cn/blog_migrate/459f29d4472c3a97b49a51702083b942.png)
- IP地址:
网络号(NetID)
– 高位比特子网号(SubID)
– 原网络主机号部分比特主机号(HostID)
– 低位比特
![](https://i-blog.csdnimg.cn/blog_migrate/636388fb91a62a496ef151325a19f91a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bae5be87a85f89847f0fffdebbb282b2.png)
-
如何确定是否划分了子网?利用多少位划分子网?
子网掩码
-
子网掩码
-
形如IP地址:
32位
- 点分十进制形式
-
取值:
- NetID、SubID位全取
1
- HostID位全取
0
- NetID、SubID位全取
-
例如:
- A网的默认子网掩码为:255.0.0.0
- B网的默认子网掩码为:255.255.0.0
- C网的默认子网掩码为:255.255.255.0
- 借用3比特划分子网的B网的子网掩码为:255.255.224.0
-
子网划分
-
例如:
- 子网201.2.3.0,255.255.255.0,划分为等长的4个子网
- 子网201.2.3.0,255.255.255.0,划分为等长的4个子网
-
路由器如何确定应该将IP分组转发到哪个子网?
通过子网掩码
。
子网掩码的应用
-
将IP分组的目的IP地址与子网掩码
按位与
运算, 提取子网地址 -
例如:
- 目的IP地址:172.32.1.112,子网掩码:255.255.254.0
子网地址
:172.32.0.0(子网掩码:255.255.254.0)地址范围
:172.32.0.0~172.32.1.255可分配地址范围
:172.32.0.1~172.32.1.254广播地址
:172.32.1.255
- 目的IP地址:172.32.1.112,子网掩码:255.255.254.0
-
一个C类网络划分子网举例
6 网络层(中)
6.1 CIDR与路由聚合
无类域间路由(CIDR
: C
lassless I
nterD
omain R
outing)
- 消除传统的 A 类、B 类和 C 类地址界限
- NetID+SubID→Network Prefix (Prefix)
可以任意长度
- NetID+SubID→Network Prefix (Prefix)
- 融合子网地址与子网掩码,方便子网划分
- 无类地址格式:
a.b.c.d/x
,其中x
为前缀长度
- 无类地址格式:
- 例如
- 子网201.2.3.64,
255.255.255.192
→201.2.3.64/26
CIDR与路由聚合的作用
- 提高IPv4 地址空间分配效率
- 提高路由效率
- 将多个子网聚合为一个较大的子网
- 构造超网(supernetting)
路由聚合
(route aggregation)
路由聚合
- 将多个子网
聚合
,大大缩小了路由中的转发表的大小
![](https://i-blog.csdnimg.cn/blog_migrate/ca89e4cba8266fefbeecd6aa202f4618.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1e916315040d0da97955960ebf993dce.png)
- 层级编址使得路由信息通告更高效:
但是层级编制会出现一个问题:聚合之后的地址可能会包括其它子网中的地址,如下图中的200.23.18.2/23,这是就要遵循最长前缀匹配优先
原则了。
划分子网的意义是什么?如何进行子网划分?什么是定长子网划分?什么是变长子网划分?如何准确地描述一个子网?为什么要进行路由聚集?如何进行路由聚集?什么情况下可以进行路由聚集?
- 划分子网的意义:提升IP地址的利用效率; 按规则分配IP地址,提升IP地址的辨识度,便于寻址,IP地址形成自上而下层次鲜明的结构;对不同地区不同类型的网络设备加以区分。
- 如何进行子网划分:IP地址逻辑上分为NetID+SubID+HostID,NetID+SubID作为网络地址,HostID作为主机号;按有类地址的NetID,SubID从HostID的高bit进行借位(借n位可划分2^n个等长的子网),组合成网络地址;通过子网掩码声明网络地址的bit宽度。
- 定长子网划分:每个子网规模一样大的划分,此时各子网子网掩码相同。
- 变长子网划分:每个子网规模不一样大,各子网子网掩码也不同。
- 如何准确描述一个子网:网络IP地址+子网掩码 或是a.b.c.d/x的CIDR策略形式。
- 为什么要进行路由聚集:为了缩小转发表大小,提高转发效率
- 如何进行路由聚集:取消有类地址划分,NetID+SubID不定长度;需要聚合的子网地址按位取相同的前缀作为新的子网地址(超网); 转发表合并这些子网的转发规则为新的子网规则,同时保证为非合并前子网地址但满足条件的地址增加更长的前缀匹配规则。
- 什么情况下可以进行路由聚集:一个路由器同时连接多个较小规模的子网时。
6.2 DHCP协议
-
如何获得IP地址?
Q
: 一个主机如何获得IP地址?- “硬编码”
- 静态配置
动态主机配置协议-DHCP
:D
ynamicH
ostC
onfigurationP
rotocol- 从服务器动态获取:
- IP地址
- 子网掩码
- 默认网关地址
- DNS服务器名称与IP地址
- “即插即用”
- 允许地址重用
- 支持在用地址续租
DHCP协议
给客户端分配的地址是有时间限制的。 - 支持移动用户加入网络
- 从服务器动态获取:
动态主机配置协议(DHCP)
- 主机广播
“DHCP discover”
(发现报文) - DHCP服务器利用
“DHCP offer”
(提供报文) 进行响应 - 主机请求IP地址:
“DHCP request”
(请求报文) - DHCP服务器分配IP地址:
“DHCP ack”
(确认报文)
- 主机广播
- DHCP工作过程示例
- DHCP协议实现于
应用层
- 请求报文封装到UDP数据报中
- IP广播
- 链路层广播
(e.g. 以太网广播)
- DHCP服务器构造 ACK报文
- 包括分配给客户的 IP地址、子网掩码 、默认网关、DNS 服务器地址
- 包括分配给客户的 IP地址、子网掩码 、默认网关、DNS 服务器地址
- DHCP协议实现于
- “硬编码”
6.3 网络地址转换(NAT)
![](https://i-blog.csdnimg.cn/blog_migrate/baa06896eb99921dbd87ae35914dda84.png)
- 研究
NAT
的动机- 只需/能从ISP申请一个IP地址
- IPv4地址耗尽
- 本地网络设备IP地址的变更,无需通告外界 网络
- 变更ISP时,无需修改内部网络设备IP地址
- 内部网络设备对外界网络不可见,即不可直接寻址(安全)
- 只需/能从ISP申请一个IP地址
- 优点及争议
- 16-bit端口号字段:
- 可以同时支持60,000多并行连接!
- NAT主要争议:
- 路由器应该只处理第3层功能
- 违背端到端通信原则
- 应用开发者必须考虑到NAT的存在,e.g., P2P应用
- 地址短缺问题应该由IPv6来解决
- 16-bit端口号字段:
6.3.1 NAT的实现
-
实现:
替换
- 利用(NAT IP地址,新端口号)替换每个外出IP数据报的(源IP地址,源端口号)
记录
- 将每对(NAT IP地址, 新端口号) 与(源IP地址, 源端 口号)的替换信息存储到NAT转换表中
替换
- 根据NAT转换表,利用(源IP地址, 源端口号)替换每个
进入内网IP数据报
的(目的IP地址,目的端口号), 即(NAT IP地址, 新端口号)
- 根据NAT转换表,利用(源IP地址, 源端口号)替换每个
-
NAT的执行过程举例:
6.3.2 NAT穿透问题
- 客户期望连接内网地址为 10.0.0.1的服务器
- 客户
不能直接利用
地址 10.0.0.1直接访问服务器 - 对外唯一可见的地址是NAT 地址: 138.76.29.7
- 客户
解决方案
:-
1
:
静态配置NAT ,将特定端口的连接请求转发给服务器- e.g., (138.76.29.7, 2500) 总是转发给(10.0.0.1, 25000)
- e.g., (138.76.29.7, 2500) 总是转发给(10.0.0.1, 25000)
-
2
:
利用UPnP (Universal Plug and Play) 互联网网关设备协议 (IGDInternet Gateway Device ) 自动配置:- 学习到NAT公共IP地址 (138.76.29.7)
- 在NAT转换表中,增删端口映射
-
3
:
中继(如Skype)- NAT内部的客户与中继服务器建立连接
- 外部客户也与中继服务器建立连接
- 中继服务器桥接两个连接的分组
-
6.4 互联网控制报文协议(ICMP)
- 互联网控制报文协议 ICMP (Internet Control Message Protocol)支持
主机
或路由器
:差错(或异常)报告
网络探询
- 两类 ICMP 报文:
- 差错报告报文(5种)
- 目的不可达
- 源抑制(Source Quench)
- 超时/超期
- 参数问题
- 重定向 (Redirect)
- 网络探询报文(2组)
- 回声(Echo)请求与应答报文(Reply)
- 时间戳请求与应答报文
- 差错报告报文(5种)
- ICMP报文
- 例外情况 :
- 几种不发送 ICMP差错报告报文的特殊情况:
- 对ICMP差错报告报文不再发送 ICMP差错报告报文
- 除第1个IP数据报分片外,对所有后续分片均不发送ICMP差错 报告报文
- 对所有多播IP数据报均不发送 ICMP差错报告报文
- 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的IP数据报不发送 ICMP 差错报告报文
- 几种 ICMP 报文已不再使用
- 信息请求与应答报文
- 子网掩码请求和应答报文
- 路由器询问和通告报文
- 几种不发送 ICMP差错报告报文的特殊情况:
- 例外情况 :
6.4.1 ICMP报文的格式
ICMP报文封装到IP数据报
中传输。
6.4.2 ICMP差错报告报文数据封装
![](https://i-blog.csdnimg.cn/blog_migrate/d54b2f495fb7f218afd24c6ecf32ea22.png)
6.4.3 ICMP的应用举例:Traceroute
-
源主机向目的主机发送一系列 UDP 数据报
- 第1组IP数据报TTL =1
- 第2组IP数据报TTL=2, etc.
TTL是 Time To Live的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。TTL是IPv4包头的一个8 bit字段。
- 目的端口号为不可能使用的端口号
-
当第n组数据报(TTL=n)到达第 n 个路由器时:
- 路由器丢弃数据报
- 向源主机发送ICMP报文 (type=11, code=0)
- ICMP报文携带路由器名称和 IP地址信息
-
当ICMP报文返回到源主机时, 记录RTT
-
停止准则
:- UDP数据报最终到达目的主机
- 目的主机返回“目的端口不可达”ICMP报文 (type=3, code=3)
- 源主机停止
6.5 IPv6简介
6.5.1 IPv6的研发动机
最初动机
: 32位IPv4地址空间已分配殆尽- 其他动机: 改进首部格式
- 快速处理/转发数据报
- 支持QoS
IPv6数据报格式
:- 固定长度的40字节基本首部
- 不允许分片
6.5.2 IPv6数据报格式
优先级(priority)
: 标识数据报的优先级
流标签(flow Label)
: 标识同一“流”中的数据报
下一个首部(next header)
: 标识下一个选项首部或上层协议首部(如TCP首部)
6.5.3 其他改变 vs IPv4
校验和(checksum)
: 彻底移除,以减少每跳处理 时间选项(options)
: 允许,但是从基本首部移出,定义 多个选项首部,通过“下一个首部”字段指示ICMPv6
: 新版ICMP- 附加报文类型,e.g. “Packet Too Big”
- 多播组管理功能
6.5.4 IPv6地址表示形式
-
一般形式
:
1080:0:FF:0:8:800:200C:417A -
压缩形式
:
FF01:0:0:0:0:0:0:43 压缩→ FF01::43 -
IPv4-嵌入形式
:
0:0:0:0:0:FFFF:13.1.68.3
或 ::FFFF:13.1.68.3 -
地址前缀
:
2002:43c:476b::/48 (注: IPv6不再使用掩码!) -
URLs
:
http://[3FFE::1:800:200C:417A]:8000
6.5.5 IPv6基本地址类型
![](https://i-blog.csdnimg.cn/blog_migrate/3b2deb48a835ff6d84c8fdb2f9b41a32.png)
6.5.6 IPv4向IPv6过渡
- 不可能在某个时刻所有路由器同时被更新为IPv6
- 不会有 “标志性的日期”
- IPv4和IPv6路由器共存的网络如何运行?
隧道(tunneling)
: IPv6数据报作为IPv4数据报的载 荷进行封装,穿越IPv4网络
- 隧道技术:
- 隧道技术:
6.6 典例讲解
题目:
- 题目描述
- 题目:
解答:
- (1)
- (2)
- (3)
7 网络层(下)
7.1~7.5:路由算法部分
7.6~7.9:Internet路由部分
7.1 路由算法概述
![](https://i-blog.csdnimg.cn/blog_migrate/06c0bd361495c89275fd2862dcfef8a5.png)
- 网络抽象:图
图
: G = (N, E)
N
= 路由器集合= { u, v, w, x, y, z }
E
= 链路集合 ={ (u,v), (u,x), (v,x), (v,w), (x,w), (x,y), (w,y), (w,z), (y,z) }
附注
: 图的抽象在网络领域应用很广泛 E.g.:P2P,其中,N是 peers集合,而E是TCP连接集合
网
- 图抽象:费用(Costs)
c(x, x’) = 链路(x, x’)的费用 e.g., c(w, z) = 5
每段链路的费用可以总是1,
或者是,
带宽的倒数(带宽越大,其倒数越小)、拥塞程度等 。
路径费用:(x1, x2, x3,…, xp) = c(x1,x2) + c(x2,x3) + … + c(xp-1,xp)
- 路由算法分类
静态路由 vs 动态路由?
静态路由
:- 手工配置
- 路由更新慢
- 优先级高
动态路由
:- 路由更新快
- 定期更新
- 及时响应链路费用或 网络拓扑变化
- 路由更新快
全局信息 vs 分散信息?
全局信息
:- 所有路由器掌握完整的网络 拓扑和链路费用信息
- E.g. 链路状态(LS)路由算法
分散(decentralized)信息
:- 路由器只掌握物理相连的邻 居以及链路费用
- 邻居间信息交换、运算的迭 代过程
- E.g. 距离向量(DV)路由算法
7.2 链路状态路由算法
- 网络抽象:图
图
: G = (N, E)
N
= 路由器集合= { u, v, w, x, y, z }
E
= 链路集合 ={ (u,v), (u,x), (v,x), (v,w), (x,w), (x,y), (w,y), (w,z), (y,z) }
7.2.1 Dijkstra 算法
Dijkstra 算法
- 所有结点(路由器)掌握网 络拓扑和链路费用
- 通过“链路状态广播”
- 所有结点拥有相同信息
- 计算从一个结点(“源”) 到达所有其他结点的最短路径
- 获得该结点的转发表
- 迭代: k次迭代后,得到 到达k个目的结点的最短 路径
符号
:
- c(x,y): 结点x到结点y链路 费用;如果x和y不直接相 连,则=∞
- D(v): 从源到目的v的当前 路径费用值
- p(v): 沿从源到v的当前路径,v的前序结点
- N’: 已经找到最小费用路径的结点集合
伪代码:
Dijkstra算法举例说明:
- 1
- 2
- u的最终最短路径树:
- u的最终转发表:
- u的最终最短路径树:
Dijkstra 算法:讨论
算法复杂性
: n个结点- 每次迭代: 需要检测所有不在集合N’中的结点w
- n(n+1)/2次比较: O(n2)
- 更高效的实现: O(nlogn)
存在震荡(oscillations)可能
:- e.g., 假设链路费用是该链路承载的通信量:
震荡发生后,可能会出现这样的情况:
分组从B->C->D之后,又从D->C,这样子永远都无法B->C->D->A。
- e.g., 假设链路费用是该链路承载的通信量:
7.3 距离向量路由算法(1)
距离向量(Distance Vector)路由算法。
Bellman-Ford
举例
- 距离向量路由算法
7.4 距离向量路由算法(2)
-
距离向量路由算法:举例
-
距离向量DV: 链路费用变化
链路费用变化:
- 结点检测本地链路费用变化
- 更新路由信息,重新计算距离向量
- 如果DV改变,通告所有邻居
7.4.1 距离向量DV: 无穷计数问题
![](https://i-blog.csdnimg.cn/blog_migrate/77b791424e6afa799e59afc28f44aa35.png)
- 解决无穷计数问题的方法:
-
1
毒性逆转(poisoned reverse)
:
这个毒性逆转问题感觉PPT中展示的不是很清楚,我先把PPT放上来,后续补上其他材料
如果一个结点(e.g. Z)到达某目的(e.g.X)的最小 费用路径是通过某个邻居(e.g.Y),则:- 通告给该邻居结点到达该目的的距离为无穷大
如果网络结构很复杂,毒性逆转
技术也无法解决无穷计数问题。
- 通告给该邻居结点到达该目的的距离为无穷大
-
2
定义最大度量(maximum metric)
:- 定义一个最大的有效费用值,如15跳步,16跳步表示∞
(上图的意思是:R1现如今无法直达192.168.1.1/24,但之前是可以的,当时R2到192.168.1.0/24的路径R2->R1->192.168.1.0/24路径是已被保留下来的(2跳),所以现如今R1到192.168.1.0/24的路径(实际上是不可能存在的路径)就会被当成R1->R2->R1->192.168.1.0/24(3跳))
然后一直增加到15或16跳步时就被当作∞了,这样就不会继续计数下去,也就说避免了无穷计数问题。
- 定义一个最大的有效费用值,如15跳步,16跳步表示∞
-
7.5 层次路由
- 将任意规模网络抽象为一个图计算路由-过于理想化
- 标识所有路由器
- “扁平”网络 ——在实际网络(尤其是大规模网络)中,
不可行!
7.5.1 研发层次路由的动机
网络规模
:考虑6亿目 的结点的网络- 路由表几乎无法存储!
- 路由计算过程的信息 (e.g. 链路状态分组、 DV)交换量巨大,会淹没链路!
管理自治
:- 每个网络的管理可能都期望自主控制其网内的路由
- 互联网(internet) = 网络之 网络(network of networks)
7.5.2 层次路由详述
- 聚合路由器为一个区域 :自治系统
AS (autonomous systems)
- 同一AS内的路由器运行相同的路由协议(算法)
自治系统内部路由协议
(“intra-AS” routing protocol)- 不同自治系统内的路由 器可以运行不同的AS内部路由协议
网关路由器(gateway router)
:- 位于AS“边缘”
- 通过链路连接其他AS的网关路由器
互连的AS
- 转发表由AS内部路由算法与AS间路由算法共同配置
AS内部路由算法
设置AS内部
目的网络路由入口(entries)AS内部路由算法与AS间路由算法
共同设置 AS外部
目的网络路由入口
互
自治系统间(Inter-AS)路由任务
- 假设AS1内某路由器收到一个目的地址在AS1 之外的数据报:
- 路由器应该将该数据报转发给哪个网关路由器呢?
AS1必须:
- 学习到哪些目的网络可以通过AS2到达,哪些 可以通过AS3到达
- 将这些网络可达性信息 传播给AS1内部路由器
![](https://i-blog.csdnimg.cn/blog_migrate/15cc65c0d497259a7fbd91e6aee4ae8f.png)
举例说明层次路由
-
例2: 路由器1d的转发表设置
- 假设AS1学习到(通过AS间路由协议):子网
x
可以通过AS3 (网关 1c)到达,但不能通过AS2到达- AS间路由协议向所有内部路由器传播该可达性信息
- 路由器1d:利用AS内部路由信息,确定其到达1c 的最小费用路径接口
/
- 在1d转发表中增加入口:
(x, /)
- 在1d转发表中增加入口:
- 假设AS1学习到(通过AS间路由协议):子网
-
例2: 在多AS间选择
- 假设AS1通过AS间路由协议学习到:子网x通过 AS3和AS2均可到达
- 为了配置转发表,路由器1d必须确定应该将去往子网
x
的数据报转发给哪个网关?- 这个任务也是由AS间路由协议完成!
- 这个任务也是由AS间路由协议完成!
-
例3: 在多AS间选择
- 假设AS1通过AS间路由协议学习到:子网
x
通过 AS3和AS2均可到达 - 为了配置转发表,路由器1d必须确定应该将去往子网
x
的数据报转发给哪个网关?- 这个任务也是由AS间路由协议完成!
热土豆路由
: 将分组发送给最近的网关路由器.
- 假设AS1通过AS间路由协议学习到:子网
7.6 RIP协议
7.6.1 AS内部路由
- Internet采用层次路由
- AS内部路由协议也称为内部网络协议
IGP (interior gateway protocols)
- 最常见的AS内部路由协议:
- 路由信息协议:RIP(Routing Information Protocol)
- 开放最短路径优先:OSPF(Open Shortest Path First)
- 内部网关路由协议:IGRP(Interior Gateway Routing Protocol)
- Cisco私有协议
7.6.2 RIP
-
早于1982年随BSD-UNIX操作系统发布
-
距离向量路由算法
- 距离度量:跳步数 (
max = 15 hops
), 每条链路1个跳步 - 每隔30秒,邻居之间交换一次DV,成为
通告(advertisement)
- 每次通告:最多25个目的
子网
(IP地址形式)
- 距离度量:跳步数 (
-
举例:
默认D到A的跳步为1,现D到z所需跳步为7,但A到z跳步为4,所以将D->z变成D->A->后所需跳步为5。所以说RIP的实质就是距离最短算法。 -
RIP: 链路失效、恢复
如果180秒没有收到通告→邻居/链路失效- 经过该邻居的路由不可用
- 重新计算路由
- 向邻居发送新的通告
- 邻居再依次向外发送通告(如果转发表改变)
- 链路失效信息能否快速传播到全网?
- 可能发生无穷计数问题
毒性逆转技术
用于预防乒乓(ping-pong)环路 (另外:无穷大距离 = 16 hops)
- 经过该邻居的路由不可用
-
RIP路由表的处理
- RIP路由表是利用一个称作route-d (daemon)的
应用层
进程进行管理- 应用进程实现
- 通告报文周期性地通过UDP数据报发送
- RIP路由表是利用一个称作route-d (daemon)的
7.7 OSPF协议简介
OSPF (Open Shortest Path First)
- “开放”: 公众可用
- 采用链路状态路由算法
- LS分组扩散(通告)
- 每个路由器构造完整的网络(AS)拓扑图
- 利用Dijkstra算法计算路由
- OSPF通告中每个入口对应一个邻居
- OSPF通告在
整个AS
范围泛洪- OSPF报文直接封装到
IP
数据报中
- OSPF报文直接封装到
- 与OSPF极其相似的一个路由协议:
IS-IS 路由协议
7.7.1 OSPF优点(RIP不具备)
安全(security)
: 所有OSPF报文可以被认证 (预防恶意入侵)- 允许使用
多条
相同费用的路径
(RIP只能选一条) - 对于每条链路,可以针对不同的
服务类型TOS
设置多个不同的费用度量 (e.g., 卫星链路可以针对“尽力” (best effort) ToS设置“低”费用;针对实时ToS 设置“高”费用) - 集成单播路由与多播路由:
- 多播OSPF协议(MOSPF) 与OSPF利用相同的 网络拓扑数据
- OSPF支持对大规模AS
分层
(hierarchical
)
在7.7.2详细叙述。
7.7.2 分层的OSPF
![](https://i-blog.csdnimg.cn/blog_migrate/cbd786485c5f2cd82856ae5f9e6a9a4c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b827742f2b1134e2c135881fa48bebd7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/61e9dd7d06efc3d653990018dd17a602.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fe030aa9ee4d51506342b66642d4f875.png)
注意区分
区边界路由器
和AS边界路由器
的不同。
7.8 BGP协议简介
Internet AS间路由协议: BGP 。
边界网关协议BGP (Border Gateway Protocol)
: 事实上的标准域间路由协议- 将Internet “粘合”为一个整体的关键
- BGP为每个AS提供了一种手段:
eBGP
: 从邻居AS获取子网可达性信息.iBGP
: 向所有AS内部路由器传播子网可达性信息.- 基于可达性信息与策略,确定到达其他网络的 “好” 路径.
- 容许子网向Internet其余部分通告它的存在: “我在这儿!”
7.8.1 BGP基础
BGP会话(session)
:两个
BGP路由器 (“Peers
”) 交换BGP报文:- 通告去往不同目的
前缀
(prefix)的路径
(“路径向量 (path vector)”协议)
这里所谓的"前缀"是指子网
。
而且这里是路径向量
而不是RIP协议的距离向量
,二者是不同的。 - 报文交换基于半永久的
TCP
连接
- 通告去往不同目的
BGP报文
:OPEN
: 与peer建立TCP连接,并认证发送方UPDATE
: 通告新路径 (或撤销原路径)KEEPALIVE
: 在无UPDATE时,保活连接;也用于对 OPEN请求的确认NOTIFICATION
: 报告先前报文的差错;也被用于关闭 连接
- 当AS3通告一个前缀给AS1时:
- AS3
承诺
可以将数据报转发给该子网 - AS3在通告中会
聚合
网络前缀
- AS3
7.8.2 BGP基础: 分发路径信息
- 在
3a
与1c
之间, AS3利用eBGP
会话向AS1发送前缀可达性信息.1c
则可以利用iBGP
向AS1内的所有路由器分发新的前缀可达 性信息1b
可以(也可能不
)进一步通过1b-到-2a的eBGP会话,向 AS2通告新的可达性信息
- 当路由器获得新的前缀可达性时,即在其转发表中增加关于该前缀的入口(路由项)
7.8.3 路径属性与BGP路由(route)
- 通告的前缀信息包括BGP属性
- 前缀+属性= “路由”
- 两个重要属性:
AS-PATH(AS路径)
: 包含前缀通告所经过的AS序列: e.g., AS 67, AS 17NEXT-HOP(下一跳)
: 开始一个AS-PATH的路由器接口,指向下一 跳AS.- 可能从当前AS到下一跳AS存在
多条链路
如AS2中,此时热土豆路由
就派上用场了。
- 可能从当前AS到下一跳AS存在
7.8.4 BGP路由选择
- 网关路由器收到路由通告后,利用其输入
策略 (import policy)
决策接受/拒绝该路由- e.g., 从不将流量路由到AS x
基于策略(policy-based)
路由
- 路由器可能获知到达某目的AS的多条路由,基于 以下准则选择:
- 本地偏好(preference)值属性: 策略决策(policy decision)
最短
AS-PATH最近
NEXT-HOP路由器: 热土豆路由(hot potato routing)- 附加准则
7.8.5 BGP路由选择策略举例
![](https://i-blog.csdnimg.cn/blog_migrate/14dcb9b57c446995a6bf33aed92ae39c.png)
-
上图的各组成元素的所代表的意思:
- A,B,C是提供商网络/AS(provider network/AS)
- X,W,Y是客户网络(customer network/AS)
- W,Y是桩网络(stub network/AS): 只与一个其他AS相连
- X是双宿网络(dual-homed network/AS): 连接两个其他AS
- X不期望经过他路由B到C的流量
- … 因此,X不会向B通告任何一条到达C的路由
-
上图路由策略:
- A向B通告一条路径:AW
- B向X通告路径:BAW
- B是否应该向C通告路径BAW呢?
绝不!
B路由CBAW的流量没有任何“收益
”, 因为W和C均不是B的客户。- B期望强制C通过A向W路由流量
- B期望只路由去往/来自
其客户的流量
!
7.8.6 为什么采用不同的AS内与AS间路由协议?
说明:
inter-AS: 自治系统间
inter-AS: 自治系统内
-
策略(policy)
:- inter-AS: 期望能够管理控制流量如何被路由,谁路由 经过其网络等.
- intra-AS: 单一管理,无需策略决策
-
规模(scale)
:- 层次路由节省路由表大小,减少路由更新流量
- 适应大规模互联网
-
性能(performance)
:- intra-AS: 侧重性能
- inter-AS: 策略主导
8 数据链路层
8.1 数据链路层服务
8.1.1 概述
术语
:
- 主机和路由器:结点(
nodes
)
在数据链路层主机和路由器均被视作结点
。 - 连接相邻结点的通信信道:链路 (
links
)- 有线链路(wired links)
- 无线链路(wireless links)
- 局域网(LANs)
- 链路层(第2层)数据分组:帧 (
frame
),封装网络层数据报
8.1.2 链路层服务
组帧(framing)
- 封装数据报构成数据帧,加首部和尾部
- 帧同步
链路接入(link access)
- 如果是共享介质,需要解决信道接入(channel access)
- 帧首部中的“MAC”地址,用于标识帧的源和目的
- 不同于IP地址!
相邻结点间可靠交付
- 在低误码率的有线链路上很少采用 (如光纤,某些双绞线等)
- 无线链路:误码率高,需要可靠交付
流量控制(flow control)
- 协调(pacing)相邻的发送结点和接收结点
差错检测(error detection)
- 信号衰减和噪声会引起差错.
- 接收端检测到差错:
- 通知发送端重传或者直接丢弃帧
差错纠正(error correction)
- 接收端直接纠正比特差错
全双工和半双工通信控制
- 全双工:链路两端结点
同时
双向传输 - 半双工:链路两端结点
交替
双向传输
- 全双工:链路两端结点
8.1.3 链路层的具体实现?
- 由每个主机或路由器接口实现
- 链路层在“适配器” (即网络接口卡-NIC)中实现或者在一个芯片上实现
- 以太网网卡,802.11网卡 ;以太网芯片组
- 实现
链路层
和物理层
- 链接主机的系统总线
- 由硬件、软件与固件组成
![](https://i-blog.csdnimg.cn/blog_migrate/436691346265e6e50c2242f0ca13a39b.png)
8.1.4 网卡间通信
![](https://i-blog.csdnimg.cn/blog_migrate/1889e985b0759367e668e6172c7d3c37.png)
发送端
:- 将数据报封装成帧
- 增加
差错检测
比特,实现可靠数据传输和流量控制等.
接收端
:检测差错
,实现可靠数据传输和流量控制等- 提取数据报,交付上层协议实体
8.2 差错编码
用于差错检测
和差错纠正
。
差错编码是通过想方设法增加其汉明距离来达到差错检测和差错纠正的。
注意:此图只表示了差错检测,未表示差错纠正。
8.2.1 差错编码的检错能力
- 差错编码可分为
检错码
与纠错码
- 对于检错码,如果编码集的汉明距离
d
s
=
r
+
1
ds=r+1
ds=r+1,则该差错编码可以检测
r
r
r位的差错
- 例如,编码集 {0000,0101,1010,1111} 的汉明距离ds=2,可以 100%检测1比特差错
- 对于纠错码,如果编码集的汉明距离
d
s
=
2
r
+
1
ds=2r+1
ds=2r+1,则该差错编码可以纠正
r
r
r位的差错
- 例如,编码集 {000000,010101,101010,111111} 的汉明距离ds=3 ,可以纠正1比特差错,如100010纠正为101010。
8.2.2 奇偶校验码
![](https://i-blog.csdnimg.cn/blog_migrate/27e5cc096e961ac3b44c78e6b085763b.png)
无论是奇校验还是偶校验,都只能检测奇位数错误而无法检测偶位数错误。
补充材料:
奇偶校验码浅谈 https://www.cnblogs.com/dushikang/p/8334776.html
8.2.3 Internet校验和(Checksum)
发送端
:- 将“数据”(校验内容) 划分为16位的二进制 “整数”序列
- 求和(sum):补码求和 (最高位进位的“1”, 返回最低位继续加)
- 校验和(Checksum): sum的反码
- 放入分组(UDP、TCP 、IP)的校验和字段
接收端
:- 与发送端相同算法计算
- 计算得到的"checksum":
- 为16位全0(或sum为16位 全1):无错
- 否则:有错
8.2.4 循环冗余校验码(CRC)
检错能力更强大的差错编码。
-
CRC的原理
:- 将数据比特,D,视为一个二进制数
- 选择一个r+1位的比特模式 (生成比特模式),G
- 目标:选择r位的CRC比特,R,满足
- <D,R>刚好可以被G整除(模2)
- 接收端检错:利用G除<D,R>,余式全0,无错;否则,有错!
- 可以检测所有突发长度小于r+1位差错。
-
广泛应用于实际网络 (以太网,802.11 WiFi,ATM)
-
CRC举例:
补充材料:
CRC校验码的计算示例
由以上分析可知,既然除数是随机,或者按标准选定的,所以CRC校验的关键是如何求出余数,也就是CRC校验码。
下面以一个例子来具体说明整个过程。现假设选择的CRC生成多项式为 G ( X ) = X 4 + X 3 + 1 G(X)=X4+X3+1 G(X)=X4+X3+1 ,要求出二进制序列10110011的CRC校验码。下面是具体的计算过程:
- 首先把生成多项式转换成二进制数,由 G ( X ) = X 4 + X 3 + 1 G(X)=X4+X3+1 G(X)=X4+X3+1 可以知道(,它一共是5位(总位数等于最高位的幂次加1,即4+1=5。其实就是 x 0 x^0 x0~ x 4 x^4 x4 的 0 0 0~ 4 4 4一共5位。),然后根据多项式各项的含义(多项式只列出二进制值为1的位,也就是这个二进制的第4位、第3位、第0位的二进制均为1,其它位均为0)很快就可得到它的二进制比特串为11001。
- 因为生成多项式的位数为5,根据前面的介绍,得知CRC校验码的位数为4(校验码的位数比生成多项式的位数少1)。因为原数据帧10110011,在它后面再加4个0,得到101100110000,然后把这个数以“模2除法”方式除以生成多项式,得到的余数,即CRC校验码为0100,如下图所示:
- 把上步计算得到的CRC校验码0100替换原始帧101100110000后面的四个“0”,得到新帧101100110100。再把这个新帧发送到接收端。
- 当以上新帧到达接收端后,接收端会把这个新帧再用上面选定的除数11001以“模2除法”方式去除,验证余数是否为0,如果为0,则证明该帧数据在传输过程中没有出现差错,否则出现了差错
8.3 多路访问控制(MAC)协议
MAC协议决定了节点什么时候允许发送分组,而且通常控制对物理层的所有访问。
-
两类“链路”:
- 点对点链路
- 拨号接入的PPP
- 以太网交换机与主机间的点对点链路
广播链路 (共享介质)
- 早期的总线以太网
- HFC的上行链路
- 802.11无线局域网
- 点对点链路
-
单一共享广播信道
-
两个或者两个以上结点同时传输:干扰(interference)
冲突(collision)
- 结点同时接收到两个或者多个信号→
接收失败!
- 结点同时接收到两个或者多个信号→
-
多路访问控制协议(multiple access control protocol)
- 采用分布式算法决定结点如何共享信道,即决策结点何时可以传输数据
- 必须基于信道本身,通信信道共享协调信息!
- 无带外信道用于协调
8.3.1 理想MAC协议
给定:
速率为R bps的广播信道
期望:
- 当只有一个结点希望传输数据时,它可以以速 率 R发送.
- 当有M个结点期望发送数据时,每个节点平均 发送数据的平均速率是R/M
- 完全分散控制:
- 无需特定结点协调
- 无需时钟、时隙同步
- 简单
8.3.2 MAC协议分类
三大类:
信道划分(channel partitioning)MAC协议
- 多路复用技术
- TDMA、FDMA、CDMA、WDMA等
随机访问(random access)MAC协议
- 信道不划分,允许冲突
- 采用冲突“恢复”机制
轮转(“taking turns”)MAC协议
- 结点轮流使用信道
8.3.3 信道划分MAC协议
TDMA
TDMA: time division multiple access
- “周期性”接入信道
- 每个站点在每个周期,占用固定长度的时隙(e.g.长度= 分组传输时间)
- 未用时隙空闲(idle)
- 例如:6-站点LAN,1,3,4传输分组,2,5,6空闲
如上图所示,2、5、6是未被使用的,这造成了资源的浪费。
FDMA
FDMA: frequency division multiple access
- 信道频谱划分为若干频带(frequency bands)
- 每个站点分配一个固定的频带
- 无传输频带空闲
- 例如: 6站点LAN, 1,3,4频带传输数据, 2,5,6频带空闲。
有些频段是没被使用的,这造成了资源的浪费。
8.3.5 随机访问MAC协议
- 当结点要发送分组时:
- 利用信道全部数据速率R发送分组
- 没有事先的结点间协调
- 两个或多个结点同时传输:➜ “冲突”
随机访问MAC协议
需要定义:- 如何检测冲突
- 如何从冲突中恢复 (e.g., 通过延迟重传)
典型的随机访问MAC协议
:时隙(sloted)ALOHA
ALOHA,也称纯ALOHA
CSMA、CSMA/CD、CSMA/CA
时隙ALOHA协议 (S-ALOHA)
假定:
- 所有帧大小相同
- 时间被划分为等长的时隙 (每个时隙可以传输1个帧)
- 结点只能在时隙开始时刻发送帧
- 结点间时钟同步
- 如果2个或2个以上结点在 同一时隙发送帧,结点即检测到冲突
运行:
- 当结点有新的帧时,在下 一个时隙(slot)发送
- 如果无冲突:该结点可以在下一个时隙继续发 送新的帧
- 如果冲突:该结点在下 一个时隙以概率
p
重传该帧,直至成功
- 当结点有新的帧时,在下 一个时隙(slot)发送
![](https://i-blog.csdnimg.cn/blog_migrate/5a23896850e4a06e26fcdd4ee611e6e0.png)
-
优点:
- 单个结点活动时,可以 连续以信道全部速率传 输数据
- 高度分散化:只需同步时隙
- 简单
-
缺点:
- 冲突,浪费时隙
- 空闲时隙
- 结点也许能以远小于分组传输时间检测到冲突
- 时钟同步
-
效率分析:
- 假设: N N N个结点有很多帧待传输,每个结点在每个时隙均以概率p发送数据
- 对于给定的一个结点,在 一个时隙将帧发送成功的 概率= p ( 1 − p ) N − 1 p(1-p)^{N-1} p(1−p)N−1
- 对于任意结点成功发送帧的概率= N p ( 1 − p ) N − 1 Np(1-p)^{N-1} Np(1−p)N−1
- 最大效率: 求得使
N
p
(
1
−
p
)
N
−
1
Np(1-p)^{N-1}
Np(1−p)N−1最大的
p*
- 对于很多结点,求
N
p
∗
(
1
−
p
∗
)
N
−
1
Np*(1-p*)^{N-1}
Np∗(1−p∗)N−1当N趋近无 穷时的极限,可得:
最大效率= 1/e = 0.37
ALOHA协议
- 非时隙(纯)Aloha:更加简单,无需同步
- 当有新的帧生成时
- 立即发送
- 冲突可能性增大:
- 在t0时刻发送帧,会与在
[
t
0
−
1
,
t
0
+
1
]
[t_0-1, t_0+1]
[t0−1,t0+1](易损时间区)期间其他结点发送的帧冲突
- 在t0时刻发送帧,会与在
[
t
0
−
1
,
t
0
+
1
]
[t_0-1, t_0+1]
[t0−1,t0+1](易损时间区)期间其他结点发送的帧冲突
- 效率分析:
CSMA协议
载波监听多路访问协议 CSMA
(carrier sense multiple access)- 发送帧之前,监听信道 (载波):
- 信道空闲:发送完整帧
- 信道忙:推迟发送
- 1-坚持CSMA
- 非坚持CSMA
- P-坚持CSMA
冲突可能仍然发生
: 信号传播延迟- 继续发送冲突帧:浪费信道资源
上图是B和D同时监听到信道中无冲突,课这样B和D又产生了冲突从而造成信道浪费。
CSMA/CD协议
![](https://i-blog.csdnimg.cn/blog_migrate/adcef699346436e805631814a3e722b1.png)
特点
:发送分组的时候保持监听,不发送的时候断开监听。
CSMA/CD
: CSMA withC
ollisionD
etection- 短时间内可以检测到冲突
- 冲突后传输中止,减少信道浪费
- 冲突检测:
- 有线局域网易于实现:测量信号强度,比较发射信号与接收信号
- 无线局域网很难实现:接收信号强度淹没在本地发射信号强度下
- 实现CSMA/CD的前提
例题:
- CSMA/CD的效率
- T p r o p T_{prop} Tprop = LAN中2个结点间的最大传播延迟
-
t
t
r
a
n
s
t_{trans}
ttrans = 最长帧传输延迟
效率= 1 1 + 5 t p r o p / t t r a n s \textbf效\textbf率\textbf =\frac 1{1+5t_{prop}/t_{trans}} 效率=1+5tprop/ttrans1
-
t
p
r
o
p
t_{prop}
tprop 趋近于0或者
t
t
r
a
n
s
t_{trans}
ttrans趋近于
∞
∞
∞时,效率趋近于
1
- 远优于ALOHA,并且简单、分散!
8.3.6 轮转访问MAC协议
- 信道划分MAC协议:
- 网络负载重时,共享信道
效率高
,且公平
- 网络负载轻时,共享信道
效率低
!
- 网络负载重时,共享信道
- 随机访问MAC协议:
- 网络负载轻时,共享信道
效率高
,单个结点可以利用 信道的全部带宽 - 网络负载重时,产生冲突开销
- 网络负载轻时,共享信道
轮转访问MAC协议
: 综合两者的优点!
轮转访问MAC协议简介
轮询(polling)
:- 主结点轮流“邀请” 从属结点发送数据
- 典型应用: “哑(dumb)” 从属 设备
轮
- 问题:
- 轮询开销
- 等待延迟
如下图,每个slave需要等到master叫到(轮着叫的)才能发送数据。
- 单点故障
令牌传递(token passing)
:- 控制令牌依次从一个结 点传递到下一个结点.
- 令牌:特殊帧
- 控制令牌依次从一个结点传递到下一个结点.
- 令牌:特殊帧
- 问题:
- 令牌开销
- 等待延迟
假设令牌刚从这台机器发出,又得轮一圈才能回来。
- 单点故障
8.3.7 MAC协议总结
信道划分MAC协议
:时间、频带、码片划分- TDMA、FDMA、CDMA
随机访问MAC协议
:- ALOHA, S-ALOHA, CSMA, CSMA/CD
- CSMA/CD应用于以太网
- CSMA/CA应用802.11无线局域网
轮转访问MAC协议
:- 综合了上面两个MAC协议的优点,算是折中的一种存在。
- 主结点轮询;令牌传递
- 蓝牙、FDDI、令牌环网
9 局域网
9.1 ARP协议
9.1.1 ARP协议简介
- 32位IP地址:
- 接口的网络层地址
- 用于标识网络层(第3层)分组,支持分组转发
- MAC地址(或称LAN地址,物理地址,以太网地址) :
- 作用:用于局域网内标识一个帧从哪个接口发出,到达哪个物理相连的其他接口
- 48位MAC地址(用于大部分LANs),固化在网卡的 ROM中,有时也可以软件设置
- e.g.: 1A-2F-BB-76-09-AD
以十六进制
表示。
- 局域网中的每块网卡都有一个唯一的
MAC 地址
- MAC地址由IEEE统一管理与分配
- 网卡生产商购买MAC地址空间(前24比特)
- 类比:
- MAC地址:身份证号
- IP地址:邮政地址
- MAC地址是“平面”地址: ➜ 可“携带”
- 可以从一个LAN移到另一个LAN
- IP地址是层次地址: ➜ 不可“携带”
- IP地址依赖于结点连接到哪个子网
9.1.2 ARP: 地址解析协议
![](https://i-blog.csdnimg.cn/blog_migrate/cab5b508a47b042cbba01492b0ebf7bb.png)
9.1.3 ARP协议在同一局域网内的工作机制(寻址)
- A想要给同一局域网内的B发送数据报
- B的MAC地址不在A的ARP表中.
- A
广播
ARP查询分组,其中包含B的IP地址- 目的MAC地址 = FF-FFFF-FF-FF-FF
- LAN中
所有
结点都会接收ARP查询
- B接收ARP查询分组,IP地址匹配成功,向A应答B的MAC地址
- 利用单播帧向A发送应答
- A在其ARP表中,缓存B的IP-MAC地址对,直至超时
- 超时后,再次刷新
- ARP是“即插即用”协议:
- 结点自主创建ARP表, 无需干预
本小节是在同一个LAN中ARP工作机制,下一小节讲跨LAN时ARP工作机制。
9.1.4 ARP协议在不同局域网间的工作机制(寻址)
- 通信过程: A通过路由器R向B发送数据报
- 关注寻址:IP地址(数据报中)和MAC地址(帧中)
- 假设A知道B的IP地址(怎么知道的?)
- 假设A知道第一跳路由器R (左)接口IP地址 (怎么知道的?)
- 假设A知道第一跳路由器R (左)接口MAC地址 (怎么知道的?)
A是如何确定要把数据发送到R的左边接口的?
默认网关
,也称“第一跳路由器”。
- 在上图中,A将分组发往B的过程详解:
- A构造IP数据报,其中源IP地址是A的IP地址,目的IP地址是B的IP地址
- A构造链路层帧,其中源MAC地址是A的MAC地址,目的MAC地址是
R(左)接口的MAC地址
,封装A到B的IP数据报。
- 帧从A发送至R
- R接收帧,提取IP数据报,传递给上层IP协议
- R转发IP数据报(
源和目的IP地址不变!
) - R创建链路层帧,其中源MAC地址是R(右)接口的MAC地址,目 的MAC地址是B的MAC地址,封装A到B的IP数据报。
- R转发IP数据报(源和目的IP地址不变!)
- R创建链路层帧,其中源MAC地址是R (右)接口的MAC地址,目的MAC地址是B的MAC地址,封装A到B的IP数据报。
通过上面过程,可以发现IP src
和IP dest
是不会改变的,因为在网络层将数据报递交给链路层时数据报会被封装起来。
9.2 以太网
何为以太?
以太是古希腊哲学家亚里士多德所设想的一种物质。是物理学史上一种假想的物质观念,其内涵随物理学发展而演变。“以太”一词是英文Ether或Aether的音译。古希腊人以其泛指青天或上层大气。在亚里士多德看来,物质元素除了水、火、气、土之外,还有一种居于天空上层的以太。在科学史上,它起初带有一种神秘色彩。后来人们逐渐增加其内涵,使它成为某些历史时期物理学家赖以思考的假想物质。
以太是古希腊哲学家亚里士多德所设想的一种物质。19世纪的物理学家,认为它是一种曾被假想的电磁波的传播媒质。但后来的实验和理论表明,如果假定“以太”的不存在,很多物理现象可以有更为简单的解释。
9.2.1 以太网
- “统治地位”的有线LAN技术:
- 造价低廉(NIC不足¥100.00)
- 应用最广泛的LAN技术
- 比令牌局域网和ATM等,简单、便宜
- 满足网络速率需求:10 Mbps – 10 Gbps
以太网:物理拓扑
总线(bus)
: 上世纪90年代中期前流行- 所有结点在同一
冲突域(collision domain)
(可能彼此冲突)
- 所有结点在同一
星型(star)
: 目前主流网络拓扑- 中心
交换机(switch)
- 每个结点一个单独冲突域(结点间彼此不冲突)
- 中心
以太网:不可靠、无连接服务
无连接(connectionless)
: 发送帧的网卡与接 收帧的网卡间没有“握手”过程不可靠(unreliable)
: 接收网卡不向发送网卡进行确认- 差错帧直接丢弃,丢弃帧中的数据恢复依靠高 层协议 (e.g., TCP),否则,发生数据丢失
- 以太网的MAC协议:
采用二进制指数退避算 法的CSMA/CD
以太网CSMA/CD算法
- NIC从网络层接收数据报 ,创建数据帧。
- 监听信道: 如果NIC监听到信道空闲 ,则开始发送帧; 如果NIC监听到信道忙, 则一直等待到信道空闲 ,然后发送帧。
- NIC发送完整个帧,而没 有检测到其他结点的数 据发送,则NIC确认帧发 送成功!
- 如果NIC检测到其他结点传输数据,则中止发送, 并发送堵塞信号 (jam signal)
- 中止发送后,NIC进入二 进制指数退避:
- 第m次连续冲突后:
• 取n = Min(m, 10)
• NIC 从{0,1,2, …, 2n-1}中随机选择一个数K
• NIC等待K·512比特的传输 延迟时间,再返回第2步 - 连续冲突次数越多,平均等待时间越长。
- 第m次连续冲突后:
以太网帧结构
发送端网卡将IP数据报(或其他网络层协议分组)封装到以太网帧中:
前导码(Preamble)(8B)
:- 7个字节的10101010,第8字节为10101011
- 用于发送端与接收端的时钟同步
目的MAC地址、源MAC地址(各6B)
:- 如果网卡的MAC地址与收到的帧的目的MAC地址匹配,或者帧的目的MAC地址为广播地址(FF-FF-FF-FF-FF-FF),则网卡接收该帧,并将其封装的网络层分组交给相应的网络层协议。
- 否则,网卡丢弃(不接收)该帧。
类型(Type)(2B)
:
指示帧中封装的是哪种高层协议的分组 (如,IP数据报、Novell IPX数据报、AppleTalk数据报等)数据(Data)(46-1500B)
:
指上层协议载荷。- R=10Mbps,RTTmax=512μs,Lmin / R = RTTmax
- Lmin=512bits=64B,Datamin=Lmin-18=46B
CRC(4B)
: 循环冗余校验码- 丢弃差错帧
- 丢弃差错帧
802.3以太网标准: 链路与物理层
许多
不同的以太网标准- 相同的MAC协议和帧格式
- 不同速率: 2 Mbps, 10 Mbps, 100 Mbps, 1Gbps, 10G bps
- 不同物理介质: 光纤, 线缆
科普:何为双绞线?
双绞线(twisted pair,TP)是一种综合布线工程中最常用的传输介质,是由两根具有绝缘保护层的铜导线组成的。把两根绝缘的铜导线按一定密度互相绞在一起,每一根导线在传输中辐射出来的电波会被另一根线上发出的电波抵消,有效降低信号干扰的程度。
双绞线一般由两根22~26号绝缘铜导线相互缠绕而成,“双绞线”的名字也是由此而来。实际使用时,双绞线是由多对双绞线一起包在一个绝缘电缆套管里的。如果把一对或多对双绞线放在一个绝缘套管中便成了双绞线电缆 ,但日常生活中一般把“双绞线电缆”直接称为“双绞线”。
与其他传输介质相比,双绞线在传输距离,信道宽度和数据传输速度等方面均受到一定限制,但价格较为低廉。
- 原理
双绞线是由一对相互绝缘的金属导线绞合而成。采用这种方式,不仅可以抵御一部分来自外界的电磁波干扰,也可以降低多对绞线之间的相互干扰。把两根绝缘的导线互相绞在一起,干扰信号作用在这两根相互绞缠在一起的导线上是一致的(这个干扰信号叫做共模信号),在接收信号的差分电路中可以将共模信号消除,从而提取出有用信号(差模信号) 。
9.2.2 交换机
- 链路层设备
- 存储-转发以太网帧
- 检验到达帧的目的MAC地址,
选择性 (selectively)
向一个或多个输出链路转发帧 - 利用CSMA/CD访问链路,发送帧
透明(transparent)
- 主机感知不到交换机的存在
即插即用(plug-and-play)
自学习(self-learning)
- 交换机无需配置
交换机: 多端口间同时传输
注意:下面的图中用英文字母简单代替MAC地址以便描述。
- 主机利用独享(dedicated) 链路直接连接交换机
- 交换机缓存帧
- 交换机在每段链路上利用 CSMA/CD收发帧,但无 冲突,且可以全双工
- 每段链路一个独立的冲突域
交换(switching):
A-A’与 B-B’的传输可以同时进行,没有冲突
交换机转发表:交换表
Q:
交换机怎么知道A’可以通过接口4到达,而B’可以通过接口5 到达?
A:
每个交换机有一个交换表 (switch table), 每个入口(entry):- (主机的MAC地址, 到达主机的接 口, 时间戳)
- 看起来很像路由表!
Q:
交换表入口信息如何创建和 维护的那?- 类似于路由协议?
- 类似于路由协议?
交换机: 自学习
- 交换机通过自学习,获知到达主机的接口信息
- 当收到帧时,交换机“学习”到发送帧的主机(通 过帧的源MAC地址),位于收到该帧的接口所连接 的LAN网段
- 将发送主机MAC地址/接口信息记录到交换表中
交换机: 帧过滤/转发
当交换机收到帧:
- 记录帧的源MAC地址与输入链路接口
- 利用目的MAC地址检索交换表
![](https://i-blog.csdnimg.cn/blog_migrate/eae37a3788519e90180d99eefd120e3e.png)
自学习与转发过程举例
- 目的MAC地址A’,位置未知:
泛洪
- 目的MAC地址A,位置已知:
选择性转发
交换机互联
- 交换机可以互联
Q:
当A向G发送帧时,S1怎么知道通过S4转发?S4又怎么 知道通过S3转发?
A:
自学习!(工作过程与单一交换机情形相同!) (通过泛洪自学习。)
多交换机自学习举例
假设C向H发送帧,H向C发送应答帧
Q:
请给出S1, S2, S3, S4的交换表,并说明帧的转发过程?
组织机构(Institutional)网络
![](https://i-blog.csdnimg.cn/blog_migrate/9e0075c9f4873b9ae3b842a76e75a716.png)
9.2.3 交换机 vs. 路由器
![](https://i-blog.csdnimg.cn/blog_migrate/7f577f957a02298301c2f279666dbe8b.png)
两者均为存储-转发设备:
路由器
: 网络层设备 (检测 网络层分组首部)交换机
: 链路层设备 (检测 链路层帧的首部)
二者均使用转发表:
路由器
: 利用路由算法(路 由协议)计算(设置), 依据IP地址交换机
: 利用自学习、泛洪 构建转发表, 依据MAC地址
9.2.4 网络设备对比
![](https://i-blog.csdnimg.cn/blog_migrate/b64d3614a58708d2da59aeaf742326b2.png)
所谓 直通传输 指的是边收边发
。
9.2.5 虚拟局域网(VLAN)
VLANs的研发动机
考虑一下情形:
- CS用户迁移到EE,但是希望连接至CS交换机, 怎么办?
- 单一广播域:
- 所有第2层广播流量(ARP, DHCP, 未知目的MAC地址 位置)必须穿越整个LAN
- 安全/隐私、效率问题
VLANs
![](https://i-blog.csdnimg.cn/blog_migrate/f49c311ba7ae03c86f08c8aefad6d5a6.png)
基于端口的VLAN
流量隔离(traffic isolation)
: 去往/来自端口1-8的帧只到达端口1-8- 也可以基于MAC地址定义 VLAN, 而不是交换端口
动态成员
: 端口可以动态分 配给不同VLAN
路由器在VLAN间转发: 通过路由(就像在 独立的交换机之间)
实践中,厂家会将交换机与路由器集成在一起
跨越多交换机的VLAN
多线缆连接
- 每个线缆连接一个VLAN
中继端口(trunk port)
: 在跨越多个物理交换机定义的VLAN 承载帧- 为多VLAN转发802.1帧容易产生歧义 (必须携带VLAN ID信息)
802.1q
协议为经过中继端口转发的帧增加/去除额外的首部域
802.1Q VLAN帧格式
![](https://i-blog.csdnimg.cn/blog_migrate/359db056137e2b2981eb56dd129f23c2.png)
9.3 PPP协议
9.3.1 点对点数据链路控制
- 一个发送端,一个接收端,一条链路:比广播 链路容易
- 无需介质访问控制(Media Access Control)
- 无需明确的MAC寻址
- e.g., 拨号链路, ISDN链路
- 常见的点对点数据链路控制协议:
- HDLC: High Level Data Link Control
- PPP (Point-to-Point Protocol)
9.3.2 PPP设计需求[RFC 1557]
组帧:
将网络层数据报封装到数据链路层帧中- 可以同时承载任何网络层协议分组(不仅IP数据报)
- 可以向上层实现分用(多路分解)
比特透明传输:
数据域必须支持承载任何比特 模式差错检测:
(无纠正)连接活性(connection liveness)检测:
检测、并 向网络层通知链路失效网络层地址协商:
端结点可以学习/配置彼此网 络地址
9.3.3 PPP无需支持的功能
- 无需差错纠正/恢复
- 无需流量控制
- 不存在乱序交付
- 无需支持多点链路
9.3.4 PPP数据帧
标志(Flag):
定界符(delimiter)地址(Address):
无效(仅仅是一个选项)控制(Control):
无效;未来可能的多种控制域协议(Protocol):
上层协议 (eg, PPP-LCP, IP, IPCP, etc)信息(info):
上层协议分组数据校验(check):
CRC校验,用于差错检测
9.3.5 字节填充(Byte Stuffing)
- “数据透明传输”需求: 数据域必须允许包含标志模式<01111110>
Q:
如何判断该作为数据接收,还是作为标志处理?
发送端:
在数据
中的<01111110>和 <01111101>字节前添加额外的字节 <01111101
> (“填充(stuffs)”)接收端:
- 单个字节<01111101>表示一个填充字节
- 连续两个字节<01111101>:丢弃第1个,第2个作为数据接收
- 单个字节<01111110>: 标志字节
- <01111110><01111101>字节表示此时的<01111110>是数据而不是标志
9.3.6 PPP数据控制协议
在交换网络层数据之前,PPP数据链路两端必须:
配置PPP链路
- 最大帧长
- 身份认证(authentication)
- etc.
学习/配置网络层信息
- 对于IP协议: 通过交换IPCP 协议 (IP Control Protocol ) 报文 (IP分组首部的“上层 协议”字段取值: 8021),完成IP地址等相关信息配置
- PPP协议状态:
9.4 802.11无线局域网
9.4.1 IEEE 802.11无线局域网
802.11b
- 2.4-2.5GHz免费频段 (unlicensed spectrum)
- 最高速率:11 Mbps
- 物理层采用直接序列扩频 (DSSS)技术
- 所有主机使用相同的码 片序列
802.11a
- 5-6 GHz频段
- 最高速率:54 Mbps
802.11g
- 2.4-2.5 GHz频段
- 最高速率:54 Mbps
802.11n:
多天线(MIMO)- 2.4-2.5 GHz频段
- 最高速率:600 Mbps
![](https://i-blog.csdnimg.cn/blog_migrate/8c05b2b6936e4acbec7659587dface3f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/847f0911a17cd5bd874286f37690d8b2.png)
9.4.2 IEEE 802.11体系结构
- 无线主机与基站通信
基站(base station) = 访问点(access point-AP)
基本服务集BSS(Basic Service Set)
,也称为单元(cell)- 基础设施网络模式: •
- 无线主机
- AP: 基站
- 基础设施网络模式: •
- 自组网(ad hoc)模式:
- 只有主机
9.4.3 802.11:信道与AP关联
- 802.11b: 2.4GHz-2.485GHz频谱划分为11个不同 频率的信道
- 每个AP选择一个频率(信道)
- 存在干扰可能: 相邻的AP可能选择相同的信道!
- 主机: 必须与某个AP
关联(associate)
- 扫描信道,监听包含AP名称(服务集标识符-SSID )和MAC地址的
信标(beacon)
帧 - 选择一个AP进行关联
- 可能需要进行身份认证
- 典型情形:运行DHCP获取IP地址等信息
- 扫描信道,监听包含AP名称(服务集标识符-SSID )和MAC地址的
9.4.4 802.11AP关联:被动扫描与主动扫描
![](https://i-blog.csdnimg.cn/blog_migrate/5b09fee6bd689ceeef0412ba3ce727dc.png)
被动扫描(scanning):
- 各AP发送信标帧
- 主机(H1)向选择的AP发送关联请求帧
- AP向主机(H1)发送关联响应帧
主动扫描:
- 主机(H1)主动广播探测请求帧 (Probe Request Frame)
- AP发送探测响应帧(Probe Response Frame)
- 主机(H1)向选择的AP发送关联请求帧
- AP向主机(H1)发送关联响应帧
9.4.5 802.11:多路访问控制
- 避免冲突: 2+结点同时传输
- 802.11: CSMA – 发送数据前监听信道
- 避免与正在进行传输的其他结点冲突
- 802.11: 不能像CSMA/CD那样,边发送、边检测冲突!
- 无线信道很难实现
- 无法侦听到所有可能的冲突:隐藏站、信号衰落
- 目标:
避免冲突(avoid collisions)
-CSMA/C
(ollision)A
(voidance)
9.4.6 IEEE 802.11 MAC协议: CSMA/CA
-
802.11 sender
1
2
-
802.11 receiver
9.4.7 IEEE 802.11 MAC协议: CSMA/CA
基本思想:
允许发送端“预约”(reserve)信道,而不是随机发送数据帧,从而避免长数据帧的冲突。
- 发送端首先利用CSMA向BS发送一个很短的
RTS
(request-to-send)帧- RTS帧仍然可能彼此冲突 (但RTS帧很短)
- BS广播一个
CTS
(clear-to-send)帧作为对RTS的响应 - CTS帧可以被所有结点接收
- 消除隐藏站影响
- 发送端可以发送数据帧
- 其他结点推迟发送
9.4.8 冲突避免(CA): RTS-CTS交换
![](https://i-blog.csdnimg.cn/blog_migrate/f5adf952f00266b03d6f32a5c98101ca.png)
9.4.9 IEEE 802.11 MAC帧
![](https://i-blog.csdnimg.cn/blog_migrate/1c512b3798a38bc3a243d3360bb38f33.png)
- IEEE 802.11数据帧地址
上图中的4个address。- 802.11数据帧有4个地址字段
- 地址4:用于自组网络
- 地址1~地址3:
给一个例子说明地址1~地址3是如何起作用的: