计算机网络笔记
写于:2025-01-08 改于:2025-01-08
字数:30563 阅读需要169 mins
01 第一章 绪论
因特网基础设施为应用提供服务
为分布式应用提供编程接口
- 协议
协议定义了网络实体之间发送和接收报文的格式、顺序,以及报文发送和接收及其它事件所采取的操作。
02 第二章 网络模型
网络协议的三要素
- 语法
- 规定用户数据与控制信息的结构、格式、编码及信号电平等。可以比做是对能上路车辆的要求,不符合条件的改装车辆不能上路。
- 语义
- 定义需要发出何种控制信息,以及完成的动作与响应。可比做是具体的交通标志和细则,看到红灯就要停下(做出相应的响应),左转的时候要提前打左转向灯(发出相应的控制命令)。
- 时序
- 对事件实现顺序的详细说明。可以看做在公路上要按规定的顺序和速度行驶,超速或慢速都会影响交通秩序。
2.3 OSI参考模型
- 应用层 负责向用户提供服务
- 表示层 负责翻译、加密和压缩数据
- 会话层 负责对话控制和同步
- 传输层 负责整个报文进程到进程的传递
- 网络层 负责将分组从源地址传递到目的地址
- 数据链路层 负责将帧从一跳(节点)到下一跳(节点)传递,把物理层的数据无差错地传递给网络层。
- 物理层 物理介质上传输位流所需的功能,定义了接口与传输介质的机械和电气特性。
2.4 TCP/IP 协议族
TCP/IP 协议族有五层:物理层、数据链路层、网络层、传输层和应用层。
OSI中的应用层,表示层,会话层合并为应用层。
2.5 寻址
TCP/IP协议族使用 4 种地址:
- 物理地址( Physical Addresses )
- 逻辑地址( Logical Addresses )
- 端口地址( Port Addresses )
- 专用地址(Specific Addresses)
物理地址
物理地址,也称链路地址、硬件地址、MAC地址,是局域网或广域网定义的节点地址。它包含在数据链路层的帧中,是最低级的地址。其长度和格式是可变的,与网络有关。通常以太网在网络接口卡上标明6个字节(48位)的物理地址,写成12个十六进制的数字,每个字节(2个十六进制数)用冒号分开,如 07:01:02:01:2C:4B。
IP地址
计算机或路由器的每个端口都有一对地址(物理地址和逻辑地址),跳到跳时物理地址将改变,但逻辑地址保持不变。
端口地址
从跳到跳物理地址会改变,但是逻辑地址和端口地址从源到目的均保持不变。
专用地址
有些面向用户的应用被设计为专用地址,如电子邮件地址和统一资源定位符(URL)。电子邮件地址定义邮件收发人,统一资源定位符用于在万维网中寻找一个文档。这些地址由发送计算机转换成对应的端口地址和逻辑地址。
03 第十九章 逻辑寻址
19.1 IPV4
IPv4 地址 是一个 32-bit 的地址。
为什么需要IP地址?
数据报的目的IP地址决定了数据报到达哪个计算机,目标MAC地址决定了该数据报下一跳由哪个设备接收,不一定是终点。
分类的 IP 地址
5类:A、B、C、D和 E
A 0xxx xxxx
B 10xx xxxx
C 110x xxxx
D 1110 xxxx
E 1111 xxxx
特殊IP地址
网络号 | 主机号 | 源地址使用 | 目的地址使用 | 意义 |
---|---|---|---|---|
0 | 0 | √ | × | 0.0.0.0本网络上的本主机 |
全1 | 全1 | × | √ | 255.255.255.255只在本网络上广播(路由器不转发) |
net-id | 全1 | × | √ | 特定子网的广播地址,对net-id上所有主机广播 |
127 | 非全0或全1的数 | √ | √ | 用作本地软件环回测试 |
169.254 | 0 | √ | √ | 主机无法获取IP地址时会自动配置如169.254.x.x/16 的地址,使其可以通信 |
19.2 划分子网
[ IP 地址 ] AND [ 子网掩码 ] = 网络地址
- A类地址:默认子网掩码是 255.0.0.0(/8),网络号8位,主机号24位。
- B类地址:默认子网掩码是 255.255.0.0(/16),网络号16位,主机号16位。
- C类地址:默认子网掩码是 255.255.255.0(/24),网络号24位,主机号8位。
- D类地址:用于组播,无子网掩码。
- E类地址:保留地址,无子网掩码。
19.3 无分类编址(CIDR)
没有分类概念,[ IP 地址 ] AND [ 子网掩码 ]即广播域。
04 第十三章 有线局域网:以太网
以太网是一种传输速率为10Mbps的常用局域网(LAN)标准
- 共享媒体:所有网络设备依次使用同一通信媒体。
- 广播域:需要传输的帧被发送到所有节点,但只有寻址到的节点才会接收到帧。
- CSMA/CD:以太网中利用载波监听多路访问/冲突检测方法来防止更多节点同时发送数据。
- MAC地址:媒体访问控制层的所有网络接口卡(NIC)都采用48位网络地址。
13.2 以太网帧结构
- 前同步码(8字节):以太网帧以前同步码字段开始,前7字节是1和0交替出现的前导码,最后一个字节是帧前定界符,结构为10101011。前导码用于“唤醒”接收端,并将它们的时钟和发送方时钟同步。帧前定界符的最后两个比特警告接收端“重要的内容”就要到来了。前导码与帧前定界符在接收后不保留,也不计入帧首部长度。
- 目的地址(6字节):目的端MAC地址。当目的端收到一个以太网帧,帧的目的地址与目的端地址相同或是MAC广播地址时,它都将该帧的数据字段内容传递给网络层;如果收到具有任何其他MAC地址的帧,则丢弃之。
- 源地址(6字节):源端的MAC地址。
- 类型/长度(2字节):类型字段定义以太网使用的网络层协议,长度字段表示数据字段包含的字节数。
- 0x0800 IPv4(Internet Protocol Version 4)
- 0x0806 ARP (Address Resulotion Protocol)
- 0x0835 RARP (Resever Address Resulotion Protocol)
- 0x86DD IPv6 (Internet Protocol Version 6)
- 数据字段(46~1500字节):以太网最大帧长是1518字节,最小帧长是64字节。这意味着IP数据报不能超过1500字节,否则必须进行分片;IP数据报也不能小于46字节,否则必须被填充到46字节。
- CRC(4字节):循环冗余检测CRC字段用于判断帧传输是否出错,校验包括目的地址、源地址、长度与数据,前导码与帧前定界符不进行校验。
物理广播地址
- 广播地址FF-FF-FF-FF-FF-FF
- 多播地址第一个字节的最低位为1,多播功能由网络层协议以及交换机等硬件实现。
05 第十五章 连接局域网、主干网和虚拟局域网
- 中继器
- 中继器是仅工作在物理层的设备,常用于星型结构,可多级级联。
- 中继器能够扩展局域网的物理长度,但不能连接采用不同协议的两个局域网,只能连接同一局域网的两个分段。
- 中继器可重新生成原始的位模式,是再生器而不是放大器。
- 中继器对每帧进行转发,没有过滤能力。
- 有源集线器
- 工作在物理层,功能与网线一样只是将数字信号发送到其它端口,并不能识别哪些数字信号是帧前同步码、帧定界符及网络层首部等。
- 集线器组建的以太网中,无论数据帧的MAC地址是否是自己的,都能够捕获,因此以太网具有与生俱来的安全隐患。
- 集线器组建的以太网中计算机共享带宽,计算机数量越多,平均带宽就越低。
- 网桥
- 网桥工作在物理层和数据链路层。作为物理层设备时,重新生成收到的信号;作为数据链路层设备时,可以检查帧所包含的MAC地址。
- 网桥不改变帧中的MAC地址,具有用作过滤决策的表,检查帧的目的MAC地址并基于MAC地址转发。
- 网桥的每个接口是独立的冲突域,冲突域的数量增加,但冲突的概率降低。
- 网桥可实现帧的存储转发,但增加了时延。
- 网桥可连接不同的局域网,需考虑帧格式、最大数据长度、数据速率、发送位的顺序、安全、是否支持多媒体等特性。网桥的不同接口也可采用不同的带宽。
- 透明网桥(站点完全意识不到桥的存在)
- 帧能从一个站点转发到另外一个站点
- 能够学习帧中的地址,自动建立转发表
- 避免形成循环(Loop)问题
网桥
网桥将不同端口连接的网络分隔成独立的冲突域,但网桥在收到一个广播数据帧时,会向所有端口转发这个广播帧,即所有端口处于同一个广播域中。
二层交换机
交换机包括二层和三层交换机。二层交换机也称为以太网交换机,是一个多端口并具有更好性能的网桥,可以像网桥一样基于收到帧的MAC地址做出过滤决策。二层交换机工作过程比网桥更加复杂,它有缓存区来保存帧并进行处理。
从总线型局域网或集线器局域网转变为交换局域网,连接设备在软件或硬件上不需做任何修改。只要二层交换机有足够容量为所有连接设备服务,每个连接设备都具有相当于原来整个局域网容量的专用容量。
广播风暴
由于网络拓扑的设计和连接问题,或其他原因导致广播在网段内大量复制,传播数据帧,导致网络性能下降,甚至网络瘫痪,这就是广播风暴。广播风暴会占用大量网络带宽,导致正常业务不能运行,甚至彻底瘫痪。
广播风暴的产生有多种原因,如蠕虫病毒、交换机端口故障、网卡故障、链路冗余没有启用生成树协议、网线线序错误或受到干扰等。蠕虫病毒和ARP攻击是造成网络广播风暴最主要的原因。
广播风暴在一些使用集线器的网络中比较常见,最快捷的方法是集线器断电后重启,但彻底解决问题的办法是使用交换机,并划分VLAN、通过端口控制网络广播风暴。
网关
在网络层以上实现网络互连,是复杂的网络互连设备,仅用于两个高层协议不同的网络互连,可用于广域网和局域网。
充当转换任务的计算机系统或设备,用于不同通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,是一个翻译器。
由于历史的原因,许多有关TCP/IP的文献曾把网络层使用的路由器称为网关,如今很多局域网采用都是路由来接入网络,因此通常指的网关就是路由器端口的IP。
15.3 虚拟局域网(Virtual LAN)
这些逻辑网段分别拥有独立的冲突域和广播域,因此VLAN可以缩小广播域和隔离广播。
VLAN ID 有2^12范围通常为 0 到 4095,其中:
- 0:保留,用于特殊用途。
- 1:默认 VLAN,所有交换机端口初始属于 VLAN 1。
- 2-4094:可用的 VLAN ID。
- 4095:保留,不可用(只在特定的情况下使用)。
在VLAN交换网络中,以太网帧主要有以下两种形式:
- 有标记帧(Tagged):加入了 4 字节VLAN标签的帧。
- 无标记帧(Untagged):原始的、未加入 4 字节VLAN标签的帧。
交换机内部处理的数据帧一律都是有标记帧。从用户终端接收无标记帧后,交换机会为无标记帧添加 VLAN 标签,然后通过干道链路发送帧。交换机向用户终端发送帧前,会去除 VLAN 标签,并通过接入链路向终端发送无标记帧。
在VLAN交换网络中,把交换机与终端直接相连的链路称为接入链路(Access Link),接入链路上交换机一侧的端口称为Access端口。交换机之间直接相连的链路称为干道链路(Trunk Link),Trunk链路两侧的端口称为Trunk端口。
IEEE 802.1Q 协议和帧格式
- TPID :标签协议标识符(Tag Protocol Identifier),表示数据帧的类型。取值为 0x8100 表示该帧是 IEEE 802.1Q 的VLAN数据帧。
- PRI :Priority,表示数据帧的802.1p优先级。取值范围为 0-7,值越大优先级越高,当交换机拥塞时,优先发送优先级高的数据帧。
- CFI :标准格式指示位(Canonical Format Indicator),表示MAC地址在不同的传输介质中是否以标准格式封装,用于兼容以太网和令牌环网。1 表示以非标准格式封装,在以太网中,CFI 为 0。
- VID :VLAN ID,数据帧所属的VLAN的编号,VLAN ID 取值范围为 0 - 4095。因为 0 和 4095 为协议保留值,所以VLAN ID的有效范围是1 - 4094。
- PRI、CFI和VID统称为标签控制信息(Tag Control Information)。
06 第二十五章 域名系统
应用层
万维网与超文本传输协议
网址也称统一资源定位符URL(Uniform Resource Locator)
DNS
- 静态映射
- host(文件)
- 动态映射DDNS
- 将信息数据分割为许多小的部分,存储于不同计算机中,灵活方便;
- 只在专门的服务器上配置主机到IP地址的映射,需要通信的设备要去服务器查询。
25.1 名字空间和域名空间
层次名字空间 最多128级 0到-127
25.2 因特网中的DNS
DNS服务器的原理是通过域名解析协议进行域名解析,基于UDP或TCP协议,采用客户-服务器模式进行通信。
- 根域名服务器(Root Name Server)
- 是全球DNS系统的核心,包含所有顶级域名的信息。当本地DNS服务器无法处理某个域名请求时,它会向根域名服务器发起请求,获取域名服务器的信息,进而进行下一步的解析。
- 顶级域名服务器(Top-Level Domain Name Server)
- 存储所有同一顶级域名(如.com、.org等)下的二级域名(如.baidu.com等)的DNS信息,其作用是提供顶级域名的解析指引,帮助其他域名服务器找到对应的权威域名服务器。
- 权威域名服务器(Authoritative Name Server)
- 是域名系统中负责提供特定域名的IP地址和其他相关信息的DNS服务器,包含特定域名下的所有DNS记录。权威域名服务器直接存储了该域名的完整、准确的信息,是域名解析过程中的最终权威来源。当用户访问某个域名时,权威域名服务器会返回该域名的IP地址。
- 本地DNS服务器(Local DNS Server)
- 通常由网络服务提供商(ISP)或企业机构提供,主要负责本地DNS缓存的管理和域名解析的处理。本地DNS服务器会向根域名服务器、顶级域名服务器和权威域名服务器等发起请求,获取DNS信息,并将这些信息缓存到本地以提高DNS解析效率。
25.3 DNS解析
将名字映射成为地址或者将地址映射成为名字的过程,称为名字-地址解析。DNS解析包括递归解析(Recursive Resolution)和迭代解析(Iterative Resolution)两种。
DNS缓存
为了改善时延性能并减少因特网上的DNS报文数量,DNS广泛使用了缓存技术。当DNS服务器收到一个DNS应答时,就能将映射缓存在本地存储器中。以后当有相同主机名的查询到达该DNS服务器时,即使它不是该主机名的权威服务器,也能提供所要求的IP地址。由于主机和主机名与IP地址间的映射并不是永久的,DNS 服务器在一段时间后(通常设置为两天)将丢弃缓存的信息。有了缓存之后,除了少数DNS查询以外,无需再查询根服务器。
25.4 DNS报文
- 查询
- 头部
- 查询记录
- 响应
- 头部
- 查询记录
- 响应记录
- 授权记录
- 附加记录
首部
- 标识符:16位,用于标识该查询。这个标识符会被复制到对查询的应答报文中,使客户可用来匹配发送的请求和接收到的应答。
- 标志字段:16位,含有若干标志。“查询/应答”标志位指出报文是查询报文(0)还是应答报文(1)。当DNS 服务器是所请求名字的权威DNS服务器时,“权威”标志置位。如果希望执行递归查询,“希望递归”标志位置位。如果DNS服务器支持递归查询,在回答报文中对“递归可用”标志位置位。
4个有关数量的字段,指出了在首部后的4类数据区域出现的数量。
- 查询区域包含了正在进行的查询信息,包括:①名字字段:正在被查询的主机名字;②类型字段:指出该名字的正被询问的问题类型,如主机地址是与一个名字相关联(类型A)还是与某个名字的邮件服务器相关联(类型MX)。
- 响应区域包含了回答报文中对最初请求的名字的资源记录,包括Type(如A、NS、CNAME和 MX)字段、Value 字段和TTL字段。回答区域中可以包含多条资源记录,因此一个主机名能够有多个IP地址。
- 权威区域(授权记录)包含了其它权威服务器的记录。
- 附加信息区域包含了其它有帮助的记录。
DNS可以使用UDP或者TCP协议,服务器均使用熟知端口53。当响应报文的长度小于512字节时,就使用UDP,因为大多数UDP分组有512字节的限制。如果响应报文大于512字节,则必须使用TCP协议。
07 第二十三章 传输层协议
- 套接字Socket = IP地址 + 端口;
- 套接字唯一标识了一个进程;
- 一个TCP连接被一对套接字地址确定;
- 端口号16位,0 ~ 65536
- 熟知端口号:0 ~ 1023,由IANA分配和控制
- 注册端口号:1024 ~ 49151,在IANA注册
- 动态端口号:49152 ~ 65535,临时使用
数据链路层的可靠性存在于两个节点之间,网络层提供不可靠的服务(可能丢失或超时),因此端到端的可靠性需要在传输层实现(差错控制)。
23.2 UDP
用户数据报协议(User Datagram Protocol)称为无连接的不可靠的传输层协议。它除了提供进程到进程而不是主机到主机的通信外,没有给IP服务增加任何东西。协议简单,开销小。
报文头
- 源端口号:16位,发送方端口号。
- 目的端口号:16位,接收方端口号。
- 总长度:16位,表示整个UDP报文长度,包括首部和数据部分,单位为字节。也可以通过“UDP长度 = IP长度 – IP首部长度”来计算。
- 检验和:16位,可选,通过校验目的地一组数据项的和来检测通信中数据的完整性和准确性,通常以十六进制为数制表示。
共8字节
UDP 整个报文都会参与检验和计算。除此之外,UDP 还会在报文前面拼接一个 IP 伪首部,同时参与检验和计算。IP 伪首部包含 IP 层的核心信息,包括源地址、目的地址、协议类型和报文长度。
加上伪首部6字节报文头共10字节5组
校验和
发送方计算检验和:
- 报文被划分为16位为一组
- 检验和字的初始值设为 0
- 所有组包括检验和都使用反码运算相加
- 对累加和求反码变成检验和
- 检验和随数据一起发送
接收方检查检验和:
- 报文(包括检验和)被划分成16位为一组
- 使用反码运算将所有组相加
- 对该和求反码生成新的检验和
- 如果检验和是0则接收报文,否则丢弃
UDP特点
- 无连接的服务。独立数据报,无编号,无连接,沿不同路径传递,减小了建立连接的开销和时延。
- 尽最大努力交付。不保证可靠传输,无需维持复杂的连接状态,节省系统资源。
- 面向报文。对应用层交付的报文,既不合并也不拆分,一次交付一个完整的报文。应用程序需选择合适大小的报文,报文太长时由网络层分片。
- 无流量控制和差错控制。没有流量控制,除校验和之外没有差错控制,接收方可能溢出,报文可能丢失或重复,出错时悄悄丢弃。
- 无拥塞控制。网络出现拥塞时不会使源主机的发送速率降低,适用于允许网络拥塞时丢失一些数据但不允许太大时延的实时应用。
- 支持多种通信。如一对一、一对多、多对一和多对多的通信。
- 首部开销小。只有8字节。
23.3 TCP
TCP(Transmission Control Protocol)是一个面向连接的协议,它在两个TCP之间建立一个虚拟连接来发送数据。另外, TCP在传输层使用流量控制和差错控制机制。
报文头
- 源端口和目的端口:各 2 字节,是传输层与应用层的服务接口,实现传输层的复用和分用功能。
- 序号字段seq:4 字节,序号字段的值是报文段所发送数据的第一个字节的序号,初始序号随机生成。
- 确认号字段ack:4 字节,是期望收到对方下一个报文段数据的第一个字节的序号。
- 首部长度:4 bit,其单位不是字节而是 4 字节,字段的值在 5(20字节)到 15(60字节)之间。
- 保留字段:6 bit,保留为今后使用,目前置为 0。
- 控制字段:6 bit,定义了6种不同的控制位或标记。
- 窗口字段:2 字节,用于控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。
- 检验和:2 字节,检验范围包括首部和数据部分及12 字节的伪首部。
- 紧急指针字段:2 字节,表示报文段中紧急数据有多少字节 (紧急数据放在报文段数据的最前面)。
- 选项字段:长度可变。TCP 只规定了一种选项,即最大报文段长度 MSS (Maximum Segment Size),表示报文段中数据字段的最大长度。数据字段加上 TCP 首部才等于整个的 TCP 报文段。
控制字段
URG:紧急指针。置1时表示发送端应用程序告诉发送端TCP这块数据是紧急的,需要将紧急数据放在段的开始,接收端TCP利用紧急指针的值从段中取出紧急数据,并不按序地将其传递给接收应用。 PSH:请求急迫。发送端TCP不必等待窗口被填满,这个段包含的数据必须尽快地传递给接收应用程序,而不要等待更多数据的到来。
TCP是面向连接的协议,在源端和目的端之间建立一条虚路径。一个报文的所有段都沿着这条虚路径发送,整个报文使用单一的虚路径有利于确认处理及对损坏或丢失帧的重发。
传输阶段
面向连接的传输有三个阶段:连接建立、数据传输和连接终止。连接的管理就是使连接的建立和释放都能正常地进行,连接建立过程中要解决三个问题:
- 每一方能够确知对方的存在;
- 允许双方协商一些参数(如最大报文段长度、最大窗口、服务质量等);
- 能够对传输实体资源(如缓存大小、连接表中的项目等)进行分配。
连接建立
SYN段不携带数据,但占用一个序列号。SYN + ACK 段不携带数据,也占用一个序列号。ACK段如果不携带数据,则不占用序列号。
三次握手协议也存在一定的可靠性缺陷,但在实际应用中,不能只顾可靠性而忽视可行性和工作效率。三次握手中若其中某次握手失败,也难以保障较好的可靠性,其设计就是放弃一定的可靠性来换取较大的通信效率。
数据传输
终止连接
如果FIN段不携带数据,则占用一个序列号。如果 FIN + ACK 段没有携带数据,也占用一个序列号。ACK段如果不携带数据,则不占用序列号。
流量控制
TCP的滑动窗口
- TCP的滑动窗口是面向字节的且为可变大小;
- 窗口的滑动是由接收方而不是发送方控制的,发送方必须服从接收方的命令;
- TCP窗口受接收方窗口(rwnd)和拥塞窗口(cwnd)共同的影响,取两者中的最小值;
- 发送方不必发送一个全窗口大小的数据;
- 接收方可暂时关闭窗口,之后发送方可发送一个1字节的探测报文。
计时器
TCP在建立连接之后,可能会启动4个计时器:重传计时器、坚持计时器、保活计时器和时间等待计时器。
- 保活计时器是为了防止TCP连接的双方出现长时间的空闲。当建立TCP连接后,如果很长时间内客户端都没有向服务器端发送数据,很可能是客户端出现故障,造成服务器端一直处于等待状态。
-
每当服务器收到客户端的信息,就将保活计时器复位,若服务器超过2小时还没有收到来自客户的信息,就发送探测报文段,若发送了10个探测报文段(每75秒发送一个)还没收到响应,则终止连接。
- TCP关闭连接时并不是立即关闭,在等待期间连接还处于过渡状态,这样就可以使重复的FIN报文段在到达终点之后被丢弃。
-
时间等待计时器Time_Wait Timer是在连接终止期间使用的。时间设置一般为报文段寿命期望值的 2 倍即 2MSL,MSL是报文段最大生存时间 (Maximum Segment Lifetime)。
- 如果接收方通告窗口为零,发送方需要停止发送,直至接收方确认并通告一个非零窗口。但是这个报文可能会丢失,造成双方都在等待对方,出现死锁。
-
TCP为每个连接设置一个坚持计时器Persistent Timer,当发送方收到零窗口的确认时,就启动坚持计时器。计时器到期后,发送方会发送一个1字节的探测报文,提醒接收方确认报文已丢失,必须重传。
- 重传计时器用于控制丢失的报文段或丢弃的报文段,即对报文段确认的等待时间,重传时间 = 2*RTT。
- 当TCP发送报文段时,就创建这个特定报文段的重传计时器,若在计时器超时之前收到对报文段的确认,则撤销计时器;若在收到对特定报文段的确认之前计时器超时,则重传该报文,并将计时器复位。
糊涂窗口综合征(Silly Windows Syndrome)
糊涂窗口综合症指当发送端应用进程产生数据很慢或接收端应用进程处理接收缓冲区数据很慢,或二者兼而有之,就会使应用进程间传送的报文段很小,效率很低。其解决办法有:
- Clark解决方法:只要有数据到达就发送确认,但宣布的窗口大小为零,直到或者缓存空间已能放入具有最大长度的报文段,或者缓存空间的一半已经空了。
- 延迟确认:当一个报文段到达时并不立即发送确认,接收端在确认收到的报文段之前一直等待,直到缓存有足够的空间为止。
差错控制
TCP差错控制包括检测出报文的差错、丢失、失序和重复并纠正,有三种处理方式:
- 检验和:16位,用于检查受到损坏的段,如果损坏则会被丢弃。
- 确认:数据段需确认,不携带数据但占用序号的控制段也要确认,ACK段不需要确认。
- 重传:差错控制的核心。当一个段损坏、丢失或延迟时需要重传,不占用序号的段不重传,尤其是ACK不重传。
- RTO后重传:也称超时重传,用于段或ACK延迟或丢失时,根据段的平均往返时间RTT(Round-Trip Time)来设置重传超时RTO(Retransmission Time Out)计时器的时间。
- 快速重传:收到三个重复ACK时,在重传计时器超时之前就进行重传。
失序控制
- 当一个段被延迟、丢失或废弃时,后面一些段的到达就失序了。
- 数据可以失序到达,TCP暂时存储失序的段,并标记它们为失序的段直到缺少的段到达。
- 失序的段不传递给进程,TCP确保传递给进程的段是无失序的。
拥塞控制 (Congestion Control)
拥塞控制是指控制拥塞和使载荷低于网络容量的机制和技术。拥塞是分组交换网络中的重要问题。如果网络中的载荷即发送到网络中的分组数量,超过了网络的容量即网络中能处理的分组数量,在网络中就可能发生拥塞。拥塞会引起数据丢失、时延增加、资源浪费和网络应用性能下降。
发送方控制拥塞窗口的原则是:发送方维持一个拥塞窗口cwnd,其大小取决于网络的拥塞程度且动态变化,发送方让自己的发送窗口小于等于cwnd。只要网络没有发生拥塞,拥塞窗口就再增大一些,以发送更多的分组。如果网络发生拥塞,就将拥塞窗口减小一些,如果发送方没有按时收到确认报文,可能网络就发生了拥塞。如果接收方窗口是rwnd,则实际窗口= min(rwnd, cwnd),如果不考虑接收窗口,则拥塞策略有:
- 慢启动:很慢的传输速率启动,迅速增大到阈值
- 拥塞避免:达到阈值后为避免拥塞降低数据速率
- 拥塞检测:检测到拥塞后返回慢启动或拥塞避免
慢速启动:指数增长
- 慢启动:TCP发送端先以较低的数据率发送数据,如先发送一个TCP报文,其长度为1个MSS(Maximum Segment Size),如果在重传定时器超时之前收到对该数据段的正确确认,则成倍增加这个拥塞窗口使其变为2个MSS,以此类推直至达到阈值。
- 简化前提:使用报文的个数而不是字节的个数;rwnd比cwnd大得多;每段单独确认。
拥塞避免:加性增加
- 当拥塞窗口的大小达到慢启动的阈值时,慢启动阶段停止,加性增加阶段开始。
- 拥塞避免:不同于慢启动时发送数据速率的成倍增长,当整个窗口所有段都被确认(一次传输)时,采用每次增加 1个MSS的递增方式,直到检测到数据丢失。
拥塞检测:乘性减少
如果发生拥塞,必须减小拥塞窗口。发送方通过重传的要求判断拥塞程度。
- 如果检测到计时器超时,说明拥塞严重,可能发生了段的丢失,TCP做出强烈反应:
- 设置阈值为当前拥塞窗口的一半;
- 设置cwnd为1个段的大小;
- 进入慢启动阶段。
- 如果连续接收到三个相同ACK,说明轻度拥塞,某些段可能丢失,某些段可能到达,此过程可进行快速重传和快速恢复。TCP做出轻度反应:
- 设置阈值为当前拥塞窗口的一半;
- 设置cwnd为阈值的大小;
- 进入拥塞避免阶段。
TCP&UDP
- 连接
- TCP是面向连接的协议,传输数据前先要建立连接。
- UDP 不需要建立连接,即刻传输数据。
- 服务对象
- TCP是一对一的两点服务,即一条连接只有两个端点。
- UDP支持一对一,一对多,多对多的交互通信。
- 可靠性
- TCP可靠交付数据,数据无差错、无丢失、无重复、按需到达。
- UDP 是尽最大努力交付,不保证数据交付的可靠性。
- 拥塞控制和流量控制
- TCP 有拥塞控制和流量控制机制,保证数据传输的安全性。
- UDP 没有这两种控制机制,即使网络非常拥堵,也不会影响 UDP 的发送速率。
- 首部开销
- TCP 首部长度较长(20-60字节),开销较大。
- UDP 首部只有8个字节,并且是固定不变的,开销较小。
- 传输方式
- TCP 是面向字节流的传递,不保留消息边界,但保证顺序和可靠。
- UDP是面向报文的协议,保留消息边界,但可能会丢包和乱序。
- 应用场景
- TCP
- 客户端程序和服务器端程序需要多次交互才能实现特定功能应用,如接收电子邮件POP3,发送电子邮件SMTP,传输文件FTP等;
- 应用程序传输的文件需要分段传输,如浏览器访问网页时网页中的图片和HTML文件需要分段后发送给浏览器,QQ传文件时也需要进行分段,此时使用TCP协议。
- UDP
- 应用程序发送的数据包不需要分段,如域名解析时的请求报文和返回的解析结果;
- 实时通信如QQ或微信语音聊天,发送方和接收方需要实时交互,不允许较长时延;
- 适用于需要有简单请求 - 响应通信的进程,较少考虑流量控制和差错控制;
- 适用于多播或广播通信,具有内部流量控制和差错控制的进程。
- TCP
23.4 SCTP
流控传输协议(Stream Control Transmission Protocol)是一种新型可靠的、面向报文的传输层协议,它兼有UDP和TCP的最佳特性。SCTP主要是为一些新型因特网应用而设计的,这些新应用所需要的服务都比TCP所能提供的更复杂。
SCTP的一次关联可以包含多个流,也允许每个端有多个IP地址。
- 在SCTP中,数据大块(Data Chunk )按传输序列号(TSN)编号,控制信息和数据信息在分开的大块中携带。
- 为了区别不同的流,SCTP 使用SI。为了区别属于同一个流中的不同数据大块,SCTP使用流序列号(SSN)。
- 在SCTP 中TCP 有段,SCTP 有分组。
08 第二十章 IP协议
网络层的两个平面
- 数据平面
- 决定到达路由器输入链路之一的数据报如何转发到该路由器的输出链路之一,即网络层中每台路由器的功能,涉及转发、IPv4协议、IPv6协议及其寻址。
- 控制平面
- 控制数据报沿着从源主机到目的主机的端到端路径中路由器之间的路由方式,即网络范围的逻辑,涉及路由选择算法,以及广泛用于因特网的 OSPF 和 BGP 等路由选择协议。
网络层的主要功能
- 转发(forwarding)
- 转发是在数据平面中实现的唯一功能,是指将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地操作,常在很短的时间内(通常为几纳秒)发生,因此通常用硬件来实现。
- 路由选择(routing)
- 路由选择是指确定分组从源到目的地所采取的端到端路径的处理过程,常在较长时间内(通常为几秒)发生,因此通常用软件来实现。
20.1 网际互联
- 源端:检查路由表寻找路由选择信息、分片
- 目的端:地址验证、重组
- 路由器:进行路由选择
20.2 IPv4
网际协议第四版 (IPv4) 是TCP/IP协议使用的传输机制。IPv4是一种不可靠的无连接的数据报协议,它尽力传递(Best-effort delivery)数据报,但是不提供差错控制或流量控制(除首部检验和之外),不保证可靠性。
报文
- 版本:4 bit,指IP协议的版本。目前的 IP 协议版本号为 4 (即 IPv4)。
- 首部长度:4 bit,可表示的最大数值是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是60字节。
- 服务:8 bit,用来获得更好的服务。这个字段以前一直没有使用。
- 总长度:16 bit,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节,但总长度不能超过最大传送单元 MTU。以太网限制帧中数据报的长度在46到1500字节之间,当数据报长度小于46字节时,必须进行填充。
- 标识:16 bit,它是一个计数器,用来产生数据报的标识。
- 标志:3 bit,只有后两位有意义。
- DF(Don’ t Fragment):DF=1(不能分片),DF=0(允许分片)
- MF(More Fragment):MF=1(还有分片),MF=0(最后一片)
- 片偏移:13 bit,用于指出较长的分组在分片后某片在原分组中的相对位置,以8个字节为偏移单位。
20.3 IPv6
128位,16位一组
20.4 IPv4 到 IPv6的过渡
- 双协议栈 通过DNS来确定使用哪个协议栈
- 隧道策略 传送隧道为IPv4区,添加IPv4报文头
- 首部转换
09 第二十一章 地址映射、差错报告和多播
21.1 网际控制报文协议ICMP
IP 协议没有差错报告或差错纠正机制,也缺少一种管理查询机制,网际控制报文协议ICMP (Internet Control Message Protocol)就是为了弥补上述两个缺点而设计的,它配合IP协议使用。
ICMP 的主要功能是确认 IP 数据报是否成功送达目的地,并通知源主机发送过程中 IP 数据报被丢弃的原因。
ICMP的特点
- ICMP不能纠错,允许主机或路由器报告差错情况和提供有关异常情况的报告,且总是向源端报告差错。
- ICMP 报文作为网络层数据报的数据(但它并不是高层协议),加上首部组成 IP 数据报发送出去。
- ICMP分为差错报告报文和查询报文。
- 对于携带ICMP差错报文的数据报,不再生产ICMP差错报文。
- 对分段的数据报文,只对第一个分段产生ICMP差错报文。
- 对于多播地址的数据报文,不产生ICMP差错报文。
- 具有特殊地址的数据报文,如127.0.0.0或者0.0.0.0,不产生ICMP差错报文。
五种差错报文
- 目的端不可达
- 当路由器不能找到路由或主机不能传递数据时,丢弃这个数据报,然后发送目的端不可达(Destination Unreachable)报文。
- 目的端不可达报文或者由路由器产生,或者由目的主机创建。
- 源端抑制
- 源端抑制(source quench)用来补充流量控制;
- 当路由器或者目的主机中产生拥塞时,路由器或者目的主机丢弃数据报,向发送方发送源端抑制报文。
- 时间超时
- TTL减为0时,路由器丢弃数据报,并发送一个时间超时(Time Exceeded)的消息给源主机,通知其该数据报已被丢弃。
- 报文的所有分片没有在限定时间内到达(超时),由目的主机发送时间超时报文。
- 参数问题
- IP分组的首部中产生错误或者二义性时,路由器或者主机丢弃这个分组,然后向源主机发送参数问题(Parameter problems)报文。
- 重定向
- 如果路由器发现一条更优的路径来发送数据,就会向源主机发送重定向(Redirection)消息,这个消息包含了最合适的路由信息和源数据。
ICMP应用
Ping命令 Tracert命令
21.2 ICMPv6
IPV6配套的ICMP协议
21.3 动态主机配置协议DHCP
自举协议BOOTP(Bootstrap Protocol)是一种基于IP/UDP协议的引导协议,也是DHCP协议的前身。用于无盘工作站的局域网,从中心服务器获得IP地址,通过BOOTP协议为局域网中的无盘工作站分配动态IP地址。
DHCP (Dynamic Host Configuration Protocol) 协议从BOOTP基础上发展而来,可依据策略对主机进行动态配置,所有IP参数都由DHCP服务器集中管理,可有效并动态地分配客户端的TCP/IP设定。
DHCP协议支持 C/S 结构,分为DHCP客户端和DHCP服务器两部分。
DHCP 服务器向客户端提供 IP地址、子网掩码、默认网关、DNS 服务器地址等信息。DHCP 服务器通过三种形式为客户端分配IP地址:将一个IP地址固定分配给一个客户端、随机将地址永久性分配给客户端和随机将地址分配给客户端使用一段时间,第三种形式最常见。地址的有效使用时间称为租用期,租用期满之前,客户端必须向服务器请求继续租用。
DHCP工作过程
DHCP 协议报文采用 UDP 方式封装,DHCP Server 侦听的端口号是 67 ,DHCP Client 的端口号是 68 。DHCP 的基本工作流程分为 4 个阶段,即发现阶段、提供阶段、请求阶段、确认阶段。
- DHCP DISCOVER 寻找服务器
- 当DHCP客户端首次登录网络时,如果发现本机上没有任何IP配置,则会向网络发出DHCP Discover广播,源地址为 0.0.0.0 ,目的地址为 255.255.255.255。
- DHCP OFFER 分配IP地址
- 当DHCP服务器监听到客户端发出的 DHCP Discover 广播后,会从那些还没有租出的地址范围内选择最前面的空置IP,连同其它TCP/IP设定,发给客户端一个DHCP Offer,DHCP Offer会包含租约期限的信息。
- DHCP REQUEST 请求使用
- 如果客户端收到多台DHCP服务器的响应,挑选其中一个DHCP Offer,发送DHCP Request广播,告诉所有DHCP服务器它将接受哪一台服务器提供的IP地址。客户端还会发送ARP来查询网络上其它机器是否已使用该IP地址,如果发现该IP已被占用,客户端向DHCP服务器发送DHCP Decline,拒绝接受其DHCP Offer,并重新发送 DHCP Discover 信息。
- DHCP ACK IP地址分配确认
- 当DHCP服务器收到客户端DHCP Request请求信息之后,向DHCP客户端发送一个包含所提供IP地址和其他设置的DHCP Ack确认信息,确认IP地址正式生效,然后DHCP客户端将其TCP/IP协议与网卡绑定。除被选中的服务器外,其它DHCP服务器都将收回曾提供的IP地址。
DHCP中继
- 动态获取 IP 地址的过程中,使用广播方式发送报文,因此 DHCP 只适用于客户端和服务器在同一个子网内的情况。
- 如果为每个网段配置一个DHCP服务器,显然太浪费了。DHCP Relay可实现跨网段通信获取 IP 地址。这样,多个子网的客户端可以使用同一个 DHCP服务器,既节省成本,又方便集中管理。
- 客户端发送 DHCP Discover 或 DHCP Request 广播报文,具有 DHCP Relay 功能的网络设备收到后,根据配置将报文单播给指定的 DHCP服务器;
- DHCP服务器进行 IP 地址的分配,单播发送给 DHCP Relay ,DHCP Relay 再将配置信息广播给客户端,完成对客户端的动态配置。
21.5 网络地址转换 NAT
由于IPv4地址空间不足,网络地址转换NAT(Network Address Translation)技术作为一种能够解决IPv4地址短缺的解决方案而被广泛应用。网络地址转换也称为网络掩蔽或者IP掩蔽,是一种在IP数据报通过路由器或防火墙时重写源IP地址或目的IP地址的技术。这种技术被普遍使用在拥有多台主机但只通过一个或少量公有IP地址访问Internet的私有网络中。
- 全球地址:也称公有地址,是全球唯一的IP地址,必须向因特网的管理机构申请。
- 专用地址:也称为私有地址、可重用地址,是仅在机构内部使用的 IP 地址,可以由本机构自行分配,不需要向因特网的管理机构申请。专用地址只能用于一个机构的内部通信,不能用于和因特网上的主机通信。在因特网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。
分类
- 静态NAT(Static NAT):实现专用地址和全球地址的一对一映射,一个全球IP地址只会分配给唯一且固定的内网主机。
- 动态NAT(Dynamic NAT):将专用地址转换为全球地址时,IP地址对是不确定的、随机的,当ISP提供的全球IP地址略少于网络内部的计算机数量时,可以采用动态转换的方式。
- 网络地址端口转换PAT(Port Address Translation):把专用地址映射到外部网络的一个全球IP地址的不同端口上,它将内部地址全部映射到外部网络中一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的端口号。
21.6 地址解析协议ARP
ARP(Address Resolution Protocol)协议可将一个逻辑地址映射成为与它对应的物理地址,RARP协议则恰好相反,可通过静态或动态映射实现。
静态映射是创建一个将逻辑地址和物理地址对应的表,并存储在网络的每个机器上。动态映射是知道逻辑地址和物理地址之一时,利用协议求出另一个地址。
报文头
- 硬件类型(Hardware Type):网络接口硬件的类型,1表示以太网;
- 协议类型(Protocol Type):发送方使用的协议,0800H表示IPv4协议;
- 硬件地址长度(Hardware length):以字节为单位的物理地址长度,以太网地址长度为6;
- 协议地址长度(Protocol length):以字节为单位的逻辑地址长度,IPv4地址长度为4;
- 操作(Operation):定义分组的类型,有两种,1表示ARP请求,2表示ARP应答。
流程
- IP请求ARP协议产生一个ARP请求报文,填入发送方物理地址、IP地址以及目标的IP地址,目标的物理地址字段填0;
- 将此报文发送给数据链路层封装成帧,使用发送方物理地址作为源地址进行广播;
- 每个主机和路由器均接收到此帧,除了目标机器,其它机器丢弃该帧;
- 目标机器使用单播方式以ARP回答报文进行应答,回答报文包括其物理地址;
- 发送方收到回答报文,知道目标机器的物理地址;
- 将发送给目标机器的IP数据报封装成帧,以单播方式发送。
ARP缓存
- ARP缓存本质就是一个IP地址与MAC地址的对应表,表中每一个条目分别记录了网络上其他主机的IP地址和对应的MAC地址。
- 当地址解析协议被询问一个IP地址节点的MAC地址时,先在ARP缓存中查看,若存在,就直接返回与之对应的MAC地址,若不存在,才发送ARP请求向局域网查询。
- ARP缓存可以包含动态和静态项目。动态项目随时间推移自动添加和删除,每个动态ARP缓存项的潜在生命周期是10分钟。静态项目一直保留在缓存中,直到重新启动计算机为止。
ARP欺骗
- 对路由器ARP表的欺骗
- 通知路由器一系列错误的内网MAC地址,并按照一定的频率不断进行,使真实的地址信息无法通过更新保存在路由器中,使路由器的所有数据只能发送给错误的MAC地址,造成正常主机无法收到信息。
- 对内网PC的网关欺骗
- 建立虚假网关,使被欺骗的主机向假网关发送数据,而不是通过正常的路由器途径上网。ARP欺骗可以导致目标计算机与网关通信失败,更会导致通信重定向,所有的数据都会通过攻击者的机器,因此存在极大的安全隐患。
RARP协议
反向ARP,将硬件地址查找逻辑地址;RARP已在很大程度上被引导程序协议BOOTP和动态主机配置协议DHCP所替代,这两种协议都可以提供IP地址之外的更多信息,而且还可以跨越本地链路。
21.7 网际组管理协议IGMP
IP协议存在单播和多播两种类型的通信,网际组管理协IGMP议(Internet Group Management Protocol) 是一个辅助协议,主机与本地路由器之间使用IGMP来进行组播组成员信息的交互。IGMP是TCP/IP中重要标准之一,所有IP组播系统都需要支持IGMP协议。
通过维护一张表管理组播组成员。
10 第二十二章 传递、转发和路由选择
22.1 传递和转发
传递是指网络层使用底层物理网络处理分组的方法。转发是指主机或路由器根据其路由表将分组路由到目的端。当主机有分组要发送时,或是路由器已收到一个分组要转发时,就要查找路由表以便求得到达最终目的端的路由。
最长掩码匹配
在查找路由表时可能会得到不止一个匹配结果,此时应当从匹配结果中选择具有最长掩码的路由。
掩码越长,其地址块就越小,因而路由就越具体。路由表中常常包含一个默认路由(0.0.0.0),这个路由在所有表项都不匹配的时候有着最短的掩码匹配(/0)。
路由
路由表只存在于终端计算机、路由器及三层交换机中,二层交换机中不存在路由表。
- 直连路由(direct):设备自动发现的路由信息,路由器可自动发现与自己接口直接相连的网络的路由。
- 静态路由(static):人工输入,无法自动更新,用于小型互联网或实验网络。
- 动态路由(协议名RIP or OSPF etc):路由器可自动周期性更新,适合大型网络。
路由器会运行多种路由协议如BGP、OSPF、ISIS等,同一条路由可以从不同的路由协议学习到,此时可人为定义协议优先级进行路由优选。协议优先级越小,越被路由优选。
22.2 路由算法
Dijkstra算法
- Step 1 [初始化]
- T = {s} 目前结点集合只含有源结点
- L(n) = w(s, n) 当 n ≠ s, 到相邻结点的初始路径代价就是链路代价
- Step 2 [找到下一结点]
- 找出不在 T 中的某个相邻结点,这个相邻结点与 s 之间有最小代价路径;
- 将这个结点合并到 T 中,同时也将该结点与 T 中某一结点形成的一条有用边加入到 T 中。
- Step 3 [更新最小代价路径]
- L(n) = min[L(n), L(x) + w(x, n)],对所有 n Ï T
- 如果后一个表达式的值最小,那么从 s 到 n 的路径变成了从 s 到 x 的路径以及从 x 到 n 的链路衔接。
- 当所有结点都已加入 T 后,算法结束。
Bellman-Ford算法
- Step 1 [初始化]
- L0(n) = ∞, 对所有n != s
- Lh(s) = 0, 对所有 h
- Step 2 [更新]
- 对每个后继的 h >= 0
- 将 n 与前一次处理的结点 j 连接,以获取最小值,并对每个 n ≠ s, 计算
Lh+1(n) = min{Lh(n), minj [Lh(j) + w(j,n)]}
如果后者最小,则删除在以前循环时形成的 n 与任何其它上次处理结点之间的连接,从 s 到 n 的路径以从 j 到 n 的链路结束。
- 将 n 与前一次处理的结点 j 连接,以获取最小值,并对每个 n ≠ s, 计算
- 对每个后继的 h >= 0
第 2 步不断重复,当 h = K 时,算法将从 s 到 n 的长度为 K+1 的可能路径与上一次得到的路径相比较,如果上次更短的路径具有较小的代价,则保持上次的路径;否则从 s 到 n 之间定义一条长度为 K+1 的新路径,它包含长度为 K 的从 s 到某结点 j 的路径(上一次循环时为 j 定义的 K 跳路径),再加上从结点 j 到结点 n 的直接 1 跳。
22.3 单播路由选择协议
自治系统AS
自治系统AS(Autonomous System)是处于一个管理机构控制之下的路由器和网络群组。在一个自治系统中的所有路由器必须相互连接,运行相同的路由协议,同时分配同一个自治系统编号。
- 度量:给网络指定代价
- 路由信息选择协议RIP
- 开放最短路径优先协议OSPF
- 可达性
- 边界网关协议BGP
距离向量路由协议
- Step1: 初始化
- 初始化自己与邻站,自己与自己的距离
- Step2: 共享路由信息
- 在距离向量路由选择中,每个节点与它的邻站周期性地或有变化时共享其路由表。
- 每个节点向邻居节点共享它的完整路由表。
- 表中的第三列对接收节点来说是没有用的,当它收到一个表的时候,把第三列都用发送方的节点名替代。
- Step3: 距离向量更新
- 如果下一节点相同,选取新行;
- 如果下一节点不同,选取具有最小代价的行,最小代价相同时保持旧项目。
- 周期性更新:通常每隔30秒
- 触发更新:路由表有变化时
- 邻站表引起自己表的更新
- 检测到邻站链路有故障时
- 定义无穷大:将一个较小的数值定义为无穷大,如RIP协议定义无穷大为16。
- 分割范围(split horizon):发送表的一部分。如果节点B认为通过A到达X是最佳路径,则B不向A通知此消息。
- 毒性逆转(poison reverse):如果节点B到达X的最佳路径是通过A,它将告诉A自己到X的距离是无穷大。这样,B向A撒了一个善意的谎言,使得只要B经过A选路到X,它就会一直持续这个谎言,A也就永远不会尝试从B选路到X了,因而避免了环路问题。
路由信息协议RIP
路由信息协议RIP(Routing Information Protocol)是基于距离向量算法的路由协议,利用跳数来作为计量标准,每经过一个路由器跳数就加 1。RIP采用Bellman-Ford算法,是基于UDP的协议。
RIP中15跳为最大值,因此只能应用于小规模网络,而根据跳数选择的路由,不一定是最优路由。RIP的收敛速度慢(240s),带宽占用率大(30s一次),网络可见度只有一跳。其优点是实现简单,开销较小。
当路由器收到相邻路由器(其地址为 X)的 RIP 报文时:
- 先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。
- 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
- 若原来路由表中没有目的网络N,则把该项目加到路由表中;
- 否则(即路由表中有目的网络N),此时查看下一跳地址:
- 若下一跳地址是X,则把收到的项目替换原路由表中的项目;
- 否则 (即路由表中有目的网络N,但下一跳不是X)
- 若收到项目中的距离小于路由表中的距离,则进行更新;
- 否则什么也不做。
- 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16。
- 返回。
RIP协议分为RIPv1和RIPv2,两者的区别如下:
- RIPv1仅适用于分类的网络路由,协议报文无法携带掩码信息,只能识别A、B、C类自然网段的路由,因此RIPv1不支持非连续子网。当网络中划分子网时,RIPv1仅通告其主类网络地址,形成路由表。RIPv1采用广播更新(255.255.255.255),非常占用网络资源。
- RIPv2报文中携带掩码信息,支持可变长子网掩码VLSM和无分类域间路由选择CIDR。增强了安全性,支持对协议报文进行验证,并提供明文验证和MD5验证两种方式。RIPv2采用增量更新、组播更新(224.0.0.9),减少了资源消耗。
链路状态路由协议
洪泛法(Flooding)是计算机网络中一种简单直接的数据传输技术,它不依赖于网络中的路由表或者路径选择算法。每个接收到消息的节点将消息复制并发送给除了消息来源外的所有其他节点,这个过程一直重复,直到消息到达网络中所有节点或达到预设的跳数限制。
- 按每个节点建立链路状态分组LSP的链路状态,链路状态分组携带大量信息,如节点标识、链路清单、序列号和寿命等。当区域的拓扑发生变化时生成LSP,或者周期性(如60分钟~2小时)产生LSP。
- 创建节点的LSP,并从每个接口发送LSP副本,接收到LSP的节点再通过每个接口(接收副本的接口除外)再次转发副本,即用洪泛法 向其它路由器扩散LSP。收到LSP的每个节点与已有的副本比较,丢弃旧的,保留新的。
- 为每个节点构成一个最短路径树,基于最短路径树计算路由表。
优点
- 简单性 :不需要复杂的路由算法或者网络拓扑知识,易于实现
- 鲁棒性 :即使节点故障或连接失败,消息仍可以通过其他路径到达目的地
- 实时性 :在紧急情况下,可以快速传播消息到网络中的所有节点 缺点
- 网络负载 :洪泛可能导致大量的重复数据在网络中传输,增加了网络负载
- 缺乏效率 :在大型网络中效率较低,因为它不考虑最优路径或网络拥堵情况
- 安全性 :可能被恶意用于执行拒绝服务DoS攻击,通过发送大量消息来淹没网络
最短路径优先协议 OSPF
开放式最短路径优先协议 OSPF (Open Shortest Path First) 是广泛使用的一种动态路由协议,它属于链路状态路由协议,通过交换链路状态信息来维护路由表,从而实现路由选择。
OSPF基于 IP 协议,使用 IP 数据报来传输路由信息,具有路由变化收敛速度快、无路由环路、支持变长子网掩码 VLSM 和路由汇总、层次区域划分等优点。
工作过程
- 了解自身链路:了解与其直连的网络
- 寻找邻居:首先寻找网络中可与自己交换链路状态信息的周边路由器
- 创建链路状态数据分组:建立邻居关系后创建链路状态数据分组
- 链路状态信息传递:将描述链路状态的 LSA 洪泛到邻居,最终形成包含网络完整链路状态信息的链路状态数据库
- 计算路由:路由区域内的每台路由器都可使用 Dijkstra 最短路径优先算法来独立计算路由
区域(Area)是AS中一些网络、主机和路由器的集合,区域之间是互联的,每个区域用 32 bit 的区域标识符表示(点分十进制)。OSPF 使用层次结构的区域划分,主干区域 0.0.0.0为必需的,用于连通其它非主干区域。区域不能太大,一个区域内的路由器最好不超过 200 个。
优点:
- 缩小数据库规模:将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,减少了整个网络上的通信量。
- 方便路由控制:在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其它区域的网络拓扑的情况。
-
收敛速度快:增强稳定性,扩展性强。
- 适合大规模网络:对跳数没有限制,可用于多种场合,也支持大规模网络。
- 组播触发式更新:OSPF 以触发方式发送拓扑变化信息,可减少网络宽带的利用率及对其它设备的干扰。
- 收敛速度快:网络结构改变时会以最快的速度发出新的报文,从而很快扩散到整个网络。
- 以开销作为度量值:以开销值作为标准,考虑到了链路带宽对路由度量值的影响,带宽越高开销就越小,因而 OSPF 选路主要基于带宽因素。
- 避免路由环路:使用最短路径算法不会产生环路。
- 应用广泛:应用最广泛的 IGP 之一。
路径向量路由选择协议
边界网关协议 BGP
22.4 多播路由选择协议
在单播中,路由器将接收到的分组仅从其端口中的一个转发出去。在多播中,路由器可能通过它的多个端口将其所接收到的分组转发出去。
11 第十章 检错与纠错
10.1 相关概念
传输差错的产生过程
误码率是指二进制比特在数据传输中出错的概率,是衡量数据传输系统在正常工作状态下传输可靠性的参数。
为了检测或纠正差错,需要发送除了数据外的额外(冗余)位。
- 检错:是否发生错误
- 纠错:哪里发生错误(前向纠错和重传)
10.2 块编码
在块编码中,把报文划分成块,每块有 k 位,称为数据字,并增加 r 个冗余位使其长度变为 n = k + r,形成 n 位的块称为码字。
4B/5B 编码
差错检测
差错检测的前提是:
- 接收方有(或能找到)有效码字的列表
- 原来码字已改变成无效的码字 如果码字在传输中被破坏,但接收到的码字仍然是一个有效的码字,差错则无法被检测到。
差错纠正
检错是接收方只需知道接收到的码字是无效的,但纠错时接收方需要知道发送的原来码字,因此纠错比检错更复杂,需要更多冗余位。
汉明距离
汉明距离:是差错编码的核心概念,两个相同长度字的汉明距离是对应位不同的数量,用 d (x, y) (总是大于0) 表示,可通过两个字异或后 1 的个数来计算。
\[\begin{equation*} d(x,y) = \sum_{i = 1}^{n - 1}{x_i⊕𝒚_𝒊} \end{equation*}\]最小汉明距离:在一个码组集合中,任意两个编码之间汉明距离的最小值称为这个码组的最小汉明距离。最小汉明距离越大,码组抗干扰能力越强。
接收到的码字和发送的码字之间的汉明距离是传输中被破坏的位数,为了保证检测出最多 s 个错误,块编码中最小汉明距离一定是 dmin = s + 1。
s=dmin - 1
为了保证最多能纠正 t 个差错,块编码中的最小汉明距离是 dmin = 2t + 1。奇数
10.3 线性块编码
在线性块编码中,任两个有效码字的异或(即模二加)生成另一个有效码字。
线性块编码的最小汉明距离为:具有最少 1 的个数的非 0 有效码字中 1 的个数。
简单奇偶校验编码
n = k + 1,且 dmin = 2 的单比特检错编码。
两维奇偶校验编码 两维奇偶校验能检测出所有3位或3位以下的错误(因为此时至少在某一行或某一列上有一位错)、奇数位错以及很大一部分偶数位错。
汉明编码
本书只讨论最小汉明距离为 dmin = 3 的汉明码,它最多能检测出 2 位差错和最多纠正 1 位差错。选择 m ≥ 3 的整数,则码字长 n、数据字长 k 和校验位 r 的关系为
n = 2^m − 1, k = n – m , r = m
10.4 循环码
循环码是一种特殊的线性块编码,如果码字循环移位(旋转),其结果是另一个循环码字。
循环冗余校验(Cyclic Redundancy Check, CRC)生成的数字在传输或者存储之前计算出来并且附加到数据后面,然后接收方进行检验确定数据是否发生变化。计算过程为:
- k 位数据字,右边加上 n – k 位 0,变成 n 位码字后传给生成器;
- 生成器用长度为 n – k +1 的除数(常称为生成多项式,简称生成子、生成器)去除生成的 n 位码字(模 2 除法);
- 除法的商被丢弃,n – k 位余数加到数据字上生成要传输的码字。
- 校验器用相同的除数去除接收到的码字,得到的余数是 n – k 位校正子;循环码的除数。
- 如果校正子全 0,码字最左边 k 位被接收为数据字,否则丢弃。
CRC性能分析
- 如果校正子 s(x) ≠ 0,说明有一位或多位被破坏
- 如果 s(x) = 0,可能没有位被破坏,或者有一些位被破坏,但是译码器无法检测到(超出检错能力)。
- 如果数据字为 d(x),码字为 c(x),生成多项式为 g(x),校正子为 s(x),差错为 e(x),则
- 接收到的码字=𝑐(𝑥)+𝑒(𝑥)
- 接收到的码字/(𝑔(𝑥))=(𝑐(𝑥))/(𝑔(𝑥))+(𝑒(𝑥))/(𝑔(𝑥))
循环码中,有些可以被生成多项式 g(x) 整除的差错无法被捕捉到。(发生的概率极小)
单个位差错
两个独立的单个位差错
t为奇数时有因子x+1;
两个独立的单比特差错相邻距离为奇数时,生成多项式 x+1 无法检错出差错。
突发性差错
10.5 检验和与反码
在数据处理和数据通信领域中,检验和(checksum)是用于校验目的地一组数据项的和,通常是以十六进制为数制表示的形式。如果校验和的数值超过十六进制的FF,也就是255,就要求其补码作为校验和。用于Internet的其它高层协议中,尤其是在远距离通信中保证数据的完整性和准确性。
- 发送方校验和的步骤:
- 报文被划分为16位字
- 校验和字的初始值设为 0
- 所有字包括校验和使用反码运算相加
- 对累加和求反码变成校验和
- 校验和随数据一起发送
- 接收方校验和的步骤:
- 报文(包括校验和)被划分成16位字
- 使用反码运算将所有字相加
- 对该和求反码生成新校验和
- 如果校验和是0则接收报文,否则丢弃
12 第十一章 数据链路控制
数据链路控制是由特定的数据链路控制规程来实现的,其基本功能有:
- 建立链路:确定链路的操作方式。
- 码组或帧控制:按码组的格式或帧的结构发送和接收消息报文及控制信息。
- 差错控制:采用编码或重发等方式进行差错控制。
- 流量控制:接收方缓存满或出现故障时控制信息流量,使发送暂停或继续。
- 异常状态报告和恢复:检测异常状态并恢复,通知高层处理或发出吿警。
- 编码透明传输:对链路上所传送的字符及数据无限制。
- 释放链路:通信完毕或由于其它原因发出拆链信号后,能及时释放链路。
11.1 成帧
面向字符型协议
典型的面向字符型数据链路层协议是二进制同步通信(BSC)协议。面向字符型使用已定义的某种编码的子集来执行通信控制,并规定了数据与控制报文的格式以及协议操作过程。缺点是采用不同字符集的计算机之间难以通信,而且控制字符编码不能出现在数据字段中,否则会引起通信控制错误。
面向字符型的BSC协议使用ASCII码中的10个控制字符完成通信控制,并规定了数据与控制报文的格式,以及协议操作过程。
字节填充:当数据中出现与控制字符相同的编码时,添加一个额外字节的过程。
面向字符型链路控制协议的缺点:
- 控制报文与数据报文的格式不一致。
- 协议规定通信双方只能交替工作,效率低,线路利用率低。
- 控制字符出错无法控制,系统可靠性较差。
- 增加新功能需要设定新的控制字符,功能扩展困难。
面向比特型协议
面向比特型协议主要包括:同步数据链路控制(SDLC)协议与高级数据链路控制(HDLC)协议。
添加Flag为01111110
位填充:遇到1个0后面连续5个1时,插入一个比特0的过程,使得接收方不会误认为0111110是帧的标记。
11.2 流量控制和差错控制
数据链路层最重要的功能就是流量控制和差错控制。流量控制是一系列程序,用来限制发送方在等到确认之前发送的数据数量。差错控制则基于自动重复请求 (Automatic Repeat Request, ARQ) 即重传数据。
11.3 无噪声信道
假定存在一种不会出现帧丢失、帧重复或帧损坏的理想信道,这种信道称为无噪声信道。无噪声信道包括两种协议,不使用流量控制的最简单协议 (Simplest Protocol) 和使用流量控制的停止等待协议(Stop-and-Wait Protocol),但两种协议均不使用差错控制。
11.4 有噪声信道
停止等待ARQ (Stop-and-Wait Automatic Repeat Request)
回退N帧ARQ (Go-Back-N Automatic Repeat Request)
用滑动窗口定义发送方和接收方关心的序列号范围。序列号是模2m,其中m为序列号字段长度。
发送窗口通过三个变量Sf 、Sn和 Ssize来定义其大小。 Ssize小于2m ,一般取2m − 1 。当有效确认到达时,发送窗口滑动一个或者多个帧时隙。
- 当一个帧安全有序到达时,接收方发送肯定的确认;
- 如果一个帧损坏或失序了,接收方不响应,丢弃所有后来的帧直到收到一个期待帧;
- 接收方不响应使未确认帧的定时器过期,发送方从此帧开始重发所有帧;
- 接收方收到这些帧后发送一个累积确认;
- 停等ARQ是窗口大小为 1 的回退N帧ARQ的特殊情况。
选择性重传ARQ (Selective Repeat Automatic Repeat Request)
回退N帧ARQ存在的问题:
- 接收方只有一个变量,不能解决帧失序问题
- 在有噪声信道中效率低下,因为需要重发多个帧
选择性重传ARQ的改进:
- 窗口尺寸更小,为2m-1
- 接收窗口与发送窗口大小相同
- 每个帧都有一个定时器,定时器也要编号;
- 一组连续帧到达且从窗口起点开始则可向网络层交付;
- 每个窗口位置只发送一个NAK并指明窗口中的第一个时隙;
- 当数据被交付到网络层时才发送ACK。
11.5 高级数据链路控制协议HDLC
高级数据链路控制协议HDLC (High-level Data Link Control) 是面向比特型的数据链路协议,支持点到点和多点链路,可实现前面讨论的各种ARQ协议。具有两种通用传输模式:正常响应方式(Normal Response Mode, NRM) 和异步平衡方式(Asynchronous Balanced Mode,ABM)。
11.6 点对点协议PPP
用户计算机与ISP进行通信时,所使用的数据链路层协议通常就是点对点协议PPP(Point-to-Point Protocol)。点对点信道是指一条链路上只有一个发送端和一个接收端的信道。PPP协议是目前使用最广泛的点对点数据链路层协议,也广泛应用于广域网路由器之间的专用线路。
PPPoE(PPP over Ethernet)在以太网上运行 PPP 的协议,是将 PPP 封装在以太网框架中的一种网络隧道协议。
13 第十二章 多路访问
- IEEE 802参考模型 局域网标准委员会制定了IEEE 802参考模型与标准,由于不同厂商局域网产品的数据链路层与物理层协议各不相同,IEEE 802委员会将数据链路层分为两个子层:逻辑链路控制 (Logical Link Control,LLC) 子层与介质访问控制 (Media Access Control,MAC) 子层。LLC子层为802标准系列共用,MAC子层协议则依赖于各自的物理层。
12.1 随机访问协议
在随机访问(竞争访问)方式中,没有一个站点是优于其它站点的,也不能控制其它站点。没有站点有权力允许或不允许其它站点发送或不发送数据,有数据要发送的站点通过自身的协议来决定发送还是不发送数据。包括ALOHA协议、载波侦听多路访问协议CSMA (Carrier Sense Multiple Access)、带冲突检测的CSMA (Carrier Sense Multiple Access with Collision Detection) 和带冲突避免的CSMA (Carrier Sense Multiple Access with Collision Avoidance)。
ALOHA
纯ALOHA为任意时间随意发帧。
纯ALOHA的吞吐量是S = G × e −2G ,当G= (1/2)时,最大吞吐量为Smax = 0.184 。G是帧传输时间内系统产生帧的平均数量。
时隙ALOHA是时间离散化为块,只在块开始时发帧。
时隙ALOHA的吞吐量是S = G × e −G ,当G= 1时,最大吞吐量为Smax = 0.368 。
CSMA
载波侦听多路访问CSMA要求每一个站点在发送前先要监听介质,以减少冲突发生的概率。但是它不能消除冲突,冲突的概率依然存在的原因是传播的延迟。
三种坚持型
带冲突检测的载波监听多路访问CSMA/CD
带冲突检测的载波监听多路访问CSMA/CD是 IEEE 802.3 使用的一种媒体访问控制方法,规定了冲突处理的算法,主要应用于总线型以太网中。每个站点一旦检测到有冲突,就会放弃当前的传送任务,快速地终止被损坏的帧可以节省时间和带宽。
CSMA/CD基本原理:所有节点都共享网络传输信道,节点在发送数据之前首先检测信道是否空闲,如果信道空闲则发送,否则就等待;在发送出信息后,再对冲突进行检测,当发现冲突时,取消发送。
冲突检测时间是最大往返传播时间的两倍。数据帧必须足够长,使得在传输结束前能够检测到冲突,否则性能就像CSMA一样低。
帧长 = 2 × 传播时间 × 数据速率
例12.5 CSMA/CD网络中,带宽10Mbps,最大传播时间为25.6us,那么最小帧长是多少?
解:帧传输时间必须最少为最大传播时间的两倍以上,即
Tfr = 2 × Tp = 51.2 μs
即一个站点需要51.2us后才能检测到冲突。所以帧的最小长度是:
10 Mbps × 51.2 μs = 512 bits = 64 bytes
这也是10兆以太网的最小帧长。
- 最小帧长要能传输到冲突产生。
带冲突避免的载波侦听多路访问CSMA/CA
CSMA/CA是一种数据传输时避免各站点之间数据传输冲突的算法,其特点是发送包的同时不能检测到信道上有无冲突,只能尽量“避免”。通常CSMA/CA利用ACK信号来避免冲突的发生,即只有当客户端收到网络上返回的ACK信号后才确认发出的数据已经正确到达目的地。
- 帧间间隔(Interframe Space,IFS)
- 竞争窗口(Contention Window)
- 肯定的确认和定时器超时
12.2 受控访问协议
在受控访问协议中,站点之间相互协商以确定哪个站有权发送,没有得到授权的站点无权发送数据。主要包括预约 (Reservation)、轮询 (Polling) 和令牌 (Token Passing) 三类受控访问协议。
12.3 通道化协议
划分信道也是一种多路访问方法。不同站点之间在时间域、频率域或码域上正交化来共享信道,包括频分多址FDMA (Frequency-Division Multiple Access)、时分多址TDMA (Time-Division Multiple Access) 和码分多址 CDMA (Code-Division Multiple Access) 三种方式。
14 第十四章 无线局域网
14.1 IEEE 802.11
802.11标准定义使用ISM的2.4GHz频段、最大传输速率为2Mbps的无线局域网物理层与MAC子层协议。
14.2 CSMA/CA工作原理
IEEE802.11协议的MAC层采用CSMA/CA方法,设计目标是尽可能减小冲突发生概率,为CSMA增加一个冲突避免 (Collision Avoidance) 的功能,在使用CSMA/CA 的同时还增加使用确认机制。CSMA/CA工作过程可总结为:信道监听、推迟发送、冲突退避。
发送方发送帧之前,通过检测载波频率的能量来侦听介质,在通道空闲之前,使用带有补偿的持续策略。发送方发现信道空闲之后,等待一个DIFS之后,发送RTS控制帧。接收方接收到RTS,等待SIFS后发送CTS;等待一个SIFS之后,发送方发送数据;接收方等待一个SIFS后,发送ACK。
一个站点发送RTS帧时,它包含了需要占用信道的时间,则其它站建立NAV(Network Allocation Vector)定时器。NAV定时器指出允许这些站点检测信道是否空闲之前还需要等待多长时间。任何一个站在检查物理信道是否空闲之前,需要检查它的NAV是否过期。
14.3 IEEE802.11帧
IEEE802.11协议定义了3种帧:管理帧、控制帧与数据帧。管理帧用于站点和接入点之间的初始化通信,控制帧用于访问通道和对帧的确认,数据帧携带数据与控制信息。
14.4 IEEE 802.11无线接入
无线访问控制器AC(Access Controller):管理配置无线网络,为用户提供无线接入功能。 无线接入点AP(Access Point):提供无线客户端到局域网的桥接功能,进行无线和有线帧转换。
AP 分为 FAT AP 和 FIT AP 两种模式,AC + FIT AP 是当前主流模式,AC集中处理所有的安全、管理和控制功能,FIT AP只提供可靠的、高性能的射频服务。所有的配置均在无线控制器和交换机上,FIT AP上没有配置信息,需要从无线控制器上注册并下载配置,有直连方式、二层网络连接、跨越三层网络连接等三种连接方式。
CAPWAP协议 无线接入点控制与规范CAPWAP (Control And Provisioning of Wireless Access Points) 是实现AP和AC之间互通的一个通用封装和传输机制,定义了AC如何对AP进行管理和业务配置。
无线接入过程
- 网络扫描:无线网卡发现附近有可接入的所有无线网络。
- 链路认证:802.11 标准要求无线终端访问网络前必须进行 802.11“链路认证”,分为开放式和共享密钥式,开放式不需要做任何配置;共享密钥是采用WEP加密方式,需要在无线终端上配置一个密钥字符串。
- 建立关联:无线终端与特定AP建立关联。
- 数据传输:用户开始网络数据访问,在数据传输的开始阶段一般还需要一个用户身份验证的过程。用户身份验证主要有WPA/WPA2-PSK认证、802.1x认证、WAPI认证、 Portal认证和MAC认证。
配置AC
15 第三章 数据与信号
物理层是网络模型的最底层,负责传输数据的二进制符号,并控制信号的传输速率、编码方式和电气特性等。
信息(message):通信的目的是传送信息,如文字、图像、视频和音频等。 数据(data):信息在传输之前需要进行编码,编码后的信息就变成数据。 信号(signal):数据在通信线路上传递需要变成电信号或光信号。
3.1 周期模拟信号
周期模拟信号可以分为简单类型和复合类型两种。简单类型模拟信号,即正弦波(sine wave),不能再分解为更简单的信号。单一频率的正弦波在数据通信中没有用处,需要发送复合信号,复合信号由多个简单正弦波组成。
带宽
复合信号的带宽是信号最高频率与最低频率的差值。
3.2 数字信号
数据除了可以用模拟信号表示外,还可以使用数字信号表示。一个数字信号可以多于两个电平表示。在这种情况下,每个电平就可以发送多个位。每秒发送的位数称为比特率,单位是bit/s或者bps。
基带传输
传输数字信号有两种方法,即基带传输和宽带传输。基带传输是通过通道直接传输数字信号,不转换为模拟信号,需要一个带宽下限是 0 的低通通道。宽带传输则需要对信号进行调制,通道不包括 0 频率。
结论:只有存在无穷大或非常大带宽的低通通道,保持数字信号形状的数字信号基带传输才是可能的。
在基带传输中,所需带宽与比特率成正比;如果需要更快地发送位,就需要更大的带宽。
宽带传输
如果可用通道是带通通道,不能直接发送数字信号到通道,需要在传输前把数字信号转换成模拟信号。
3.3 传输减损
信号通过介质进行传输,其传输并不是完美无缺的,传输过程中存在信号减损,即信号在介质的开始端和结束端是不相同的。常见的传输减损有三种:衰减、失真和噪声。
信噪比SNR = 平均信号功率 / 平均噪声功率
3.4 数据速率限制
数据速率是数据通信中的一个重要参数,它取决于三个因素:
- 有效带宽
- 使用的信号电平数
- 通道的质量(噪声电平)
无噪声信道:奈奎斯特比特率
理论上的最大比特率 = 2 × 带宽 × log2 L,L是电平数
例3.36 需要通过带宽为20kHz的无噪声通道发送265kbps的数据,则需要多少信号电平?
解:使用奈奎斯特公式如下:
265000=2×20000×log2 L
log2 L=6.625,L=2^6.625=98.7个
因为结果不是2的幂,所以需要增加电平数或者减小比特率。如果有128个电平,比特率是280kbps。如果有64个电平,比特率是240kbps。
注意:增加信号电平数会减弱系统的可靠性!
有噪声信道:香农定理
通道容量 = 带宽 × log2(1+SNR)
例3.41 有一个 1MHz带宽的通道,通道的信噪比是 63,合适的比特率以及信号电平是多少?
解:首先使用香农公式确定上限
C = Blog2(1+SNR) = 106 • log2(1+63) = 6Mbps
计算结果6Mbps是上限,为了获得更好的性能,可选择低一些的值例如 4Mbps,然后使用奈奎斯特公式计算信号电平的数量:
4Mbps = 2×1MHz×log2L -> L = 4
香农定理给出数据速率的上限,奈奎斯特公式给出所需的信号电平数。
3.5 性能
- 带宽
- 带宽指单位时间能通过链路的数据量,通常以bit/s或bps来表示,即每秒可传输之位数。
- 吞吐量
- 单位时间内成功传送数据的数量(以比特、字节、分组等测量)
- 时延
- 时延是指数据从网络一端传送到另一端所需的时间,包括传输时延、传播时延、处理时延和排队时延。时延是衡量网络响应速度的一个重要指标。
- 传输时延 = 报文长度 / 传输速率,是发送报文所需的时间;
- 传播时延 = 站点距离 / 传播速率,指传输一个比特从源到目标的时间,取决于电磁信号的传播速度(真空中传播速度是3×108m/s)。
- 带宽时延积
- 带宽时延积是传播时延与带宽的乘积,表示一条链路上传播的所有比特的数量,也称为以比特为单位的链路长度。
- 利用率
- 最大链路利用率 = 数据传输时间/发送周期
- 往返时间(Round-Trip Time, RTT)是指从源端发送数据开始到接收到目的端发来的相应确认的总时间,即双方交互一次所需要的时间。
- 丢包率(Packet Loss Rate)是指在一定时间范围内,传输过程中丢失的分组数量与总分组数量的比率,是衡量网络可靠性的一个关键指标。
16 第四章 数字传输
4.1 数字到数字转换
数字数据传输可采用数字信道来传输数据,用一系列断续变化的电压脉冲或光脉冲来表示。
数字数据采用数字信号传输主要有三种技术:线性编码 (line coding)、块编码(block coding)和扰码(scrambling)。
线路编码是将数字数据转换为数字信号的过程。
每个信号元素承载的数据元素的个数定义为比率 r
数据速率指每秒发送的数据元素的数量,单位是bps或 b/s,也叫比特率。信号速率指每秒发送的信号元素的数量,单位是波特率(baud),或脉冲速率 (pulse rate)、调制速率 (modulation rate)、波特率 (baud rate)。 编码的目标是增加数据速率而降低信号速率。
若 N 是数据速率,c 是情形因子(一般取值1/2),S 是信号速率,r 是比率,则
S=c×N×1/r
最小带宽B = c×N×1/r
最大数据速率N = (1/c)×B×r
线路编码
线路编码包括单极性码、极性编码、双极性编码、多电平和多跳变等。
编码方案
AMI
AMI:交替传号反码 (Alternate Mark Inversion) 传号指1,AMI是交替1的翻转替换 0:零电平, 1:交替正负电平
多线路传输 —— MLT-3
三电平多线路传输 (three level multiline transmission) 是一种多于两个跳变规则的差分编码,包括正电平、零和负电平三种电平。编码规则为: 如果下一位是 0,则不跳变; 如果下一位是 1 且当前电平是 0,下一个电平是最后一个非零电平的相反值; 如果下一位是 1 且当前电平不是0,下一个电平是 0。
块编码
4B/5B 编码方案,仅包含不超过一个前导 0(左边位)和两个后缀 0(右边位),使不同组合形成新的序列时,最多只会有连续的 3 个 0,解决了 NRZ-I 存在的长 0 序列不能自同步的问题,但增加了 20% 的信号速率,且没有解决 NRZ-I 的直流分量问题。
扰码
双相码适用于 LAN 中间站的专用链路,不适用于长距离通信;块编码和NRZ 编码的组合有 DC 分量,也不适合于长距离通信;双极性 AMI 带宽窄且没有 DC 分量,但连续 0 的长序列会失去同步;对 AMI 规则进行部分修改后引入扰码 B8ZS 和 HDB3。
8零置换的双极编码B8ZS
8 个连续 0 电平会被替换成 000VB0VB; V 表示违反 (Violation),是个非零电平,与前一个非零脉冲极性相同的极性,即违反了 AMI 编码规则; B 表示双极,表示与 AMI 相一致的非零电平,即与前一个非零脉冲极性相反的极性。
高密度双极3零编码HDB3
4 个连续 0 电平被置换成 000V 或 B00V,有两种不同的置换是为了维持每次置换后非零脉冲为偶数; 如果最后一次置换后的非零脉冲数是奇数,则置换为 000V,使非零脉冲总数为偶数; 如果最后一次置换后的非零脉冲数是偶数,则置换为 B00V,使非零脉冲总数为偶数。
4.2 模拟到数字转换
脉冲码调制 PCM (pulse code modulation) 和 Delta 调制 (delta modulation)。
脉冲码调制PCM
脉冲编码调制是最常用、最简单的波形编码,它把一个时间连续、取值连续的模拟信号变换成时间离散、取值离散的数字信号后在信道中传输。脉冲编码调制先对模拟信号进行抽样,再对样值幅度量化,然后编码产生数字信号。
采样就是对模拟信号进行周期性扫描,把时间上连续的信号变成时间上离散的信号。采样率也称采样速度或者采样频率,定义了单位时间内从连续信号中提取并组成离散信号的采样个数,单位是赫兹(Hz)。采样频率的倒数称为采样周期或采样时间。
模拟信号经过采样后应当包含原信号中的所有信息,即能够无失真地恢复原始模拟信号。采样速率的下限是由Nyquist采样定理确定的,采样率必须至少是信号所包含最高频率的2倍。
Nyquist采样定理
量化就是把经过采样得到的瞬时值幅度离散,即用一组规定的电平把瞬时采样值用最接近的电平值来表示。采样量化后得到的量化脉冲幅度调制信号仅为有限个数值,是一系列振幅值介于信号最大振幅和最小振幅间的脉冲。
将原始模拟信号的振幅 [Vmin ,Vmax] 分成 L 个区间(量化等级),每个区间的高度为Δ = (Vmax - Vmin) / L,L 与信号振幅范围及恢复信号的准确度有关。分配 0 到 L-1 的量化值给每个区间的中点,样本振幅值即近似为量化值。量化位数决定了量化级别的数量,即数字化的精度。
编码是用一组二进制码组来表示每一个有固定电平的量化值。然而,实际上量化是在编码过程中同时完成的,故编码过程也称为模/数变换,可记作 A/D。如果每个样本可以转换成 nb 个位的码字,量化等级是 L,则
nb = log2 L
比特率 = 采样率×每个样本位数 = fs × nb
例4.14 对人的语音进行数字化,若每个样本有 8 位,则比特率是多少?
解:人的语音通常包含 0 到 4000Hz 的频率,则有:
采样率 = 4000×2 = 8000 samples/s
比特率 = 8000×8 = 64,000bps = 64kbps
Delta调制DM
Delta调制是一种将编码信息转换成 1 个二进制位流的调制方法,只需要 1 位将 1 个电平进行编码。工作原理是将当前采样值与之前采样值进行比较,两者的差值决定传输值的增量或减量。如果极性差为正,则 Δ 表示的信号步长增加 1,则传输 1。而当极性差为负时,则信号的 Δ 即步长减小,则传递 0。因此,每个样本只允许传输一个二进制位。
4.3 传输模式
通过链路传输二进制数据可以采用并行模式或串行模式。在并行模式中,每个时钟脉冲发送多位。在串行模式中,每个时钟脉冲发送 1 位。并行传输只有一种方式,串行传输则包括三类:异步(asynchronous)、同步 (synchronous) 和等时 (isynchronous)。
在异步传输中信号的时序并不重要,信息的接收和转换通过约定的模式进行,即将位流组成字节作为一个单位进行传输。为了使接收方知道什么时候消息到达,增加起始位“0”和终止位“1”。在异步传输中没有同步时钟,异步在这里是指在字节级上的异步,但是每位仍然要同步,它们的持续时间是相同的。
在同步传输模式中,不是独立地发送每个字节,而是组合成帧一起发送,由接收方负责将位流分解为字节。帧的开始部分包含一组同步字符,通知接收方帧已经到达,同时确保接收方的采样速度和比特的到达速度保持一致,使收发双方进入同步。帧的最后部分是帧的结束标记,表示这一帧的传输结束。
等时传输应用在实时的流传输如音视频流,保证数据以固定速率到达。
17 第五章 模拟传输
5.1 数字到模拟转换
数字调制是现代通信技术中的一种重要方法,它通过改变模拟载波信号(作为基波来承载信息的高频率信号)的某些离散状态来表征所传送的信息,称为调制或移动键控。主要优点包括抗干扰、抗信道损耗性能强,具有更高的安全性等。常见的数字调制方式包括:
- 幅移键控ASK:通过改变载波信号的幅度来表示二进制数字信号中的信息。
- 频移键控FSK:使用不同的频率用来表示不同的数字信号。
- 相移键控PSK:通过改变载波信号的相位来表示数字信息。
- 二进制相移键控BPSK:相移键控的一种,载波相位在 0 或 π 之间切换来表示数字信号。
- 正交幅度调制QAM:在实部和虚部两个正交维度上采用幅度调制的数字调制方法。
5.2 模拟信号调制
模拟调制系统是一种将模拟信号转换为调制信号的系统。在模拟调制中,原始信号是时间连续和幅度连续的模拟信号,而调制信号是通过改变载波信号的某些特性来携带原始信号信息的信号。
常见的信号都是基带信号,频率在一个比较低的频段上,如果介质具有帯通特性或者只有帯通带宽可用,则模拟信号就需要进行调制,将其搬移到高频段,所以可以认为调制是从基带信号变成带通信号的过程。
常见的模拟调制技术包括调幅调制 AM (Amplitude Modulation)、调频调制 FM (Frequency Modulation) 和相位调制 PM (Phase Modulation)。
AM所需的总带宽可以由调制信号的带宽确定:BAM = 2B。
FM 所需总带宽由调制信号的带宽确定:BFM = 2(1 + β)B。β是调制因子,一般为4。
PM 所需的总带宽由调制信号的带宽和最大振幅确定:BPM = 2(1 + β)B。
18 第六章 带宽利用
带宽合理使用主要包括复用 (multiplexing) 与扩频 (spreading) 两种类型。在复用中,目标是效率,将一些通道合并为一个通道;在扩频中,目标是保密、抗干扰,扩展通道的带宽以插入冗余,以达到保密与抗干扰的目标。
6.1 复用
频分多路复用FDM
波分多路复用WDM
时分多路复用TDM
TDM中当数据速率不同时,可使用以下三种策略或三种策略的组合:多级复用(Multilevel Multiplexing)、多时隙分配(Multiple-slot Allocation)和脉冲填充(Pulse Stuffing)。
6.2 扩频
调频扩频 FHSS(Frequency Hopping Spread Spectrum) 是用源信号调制 M 个不同的载波频率。在某一时刻用信号调制 1 个载波频率,在下一时刻信号调制另一个频率。虽然调制是一次使用一个频率,但在最终用了 M 个频率。源信号扩展后占用的带宽是 BFHSS >B 。称为伪随机噪声的伪随机代码生成器对每个跳周期生成一个 k 位模式。频率表使用这个模式查找用于该跳频周期的频率,并将其传递给频率合成器。频率合成器生成该频率的载波信号,源信号再调制这个载波信号。
直接序列扩频 DSSS(Direct Sequence Spread Spectrum) 技术也是扩大源信号的带宽,每个数据位用扩展编码的 n 位代替,即每一位被编码为 n 个码片,则码片的速率是源信号数据速率的 n 倍。