计网
概述
性能指标
速率:数据的传输速率,也称为比特率或数据率
带宽:信号具有的频率成分范围,信道的频带宽度
吞吐量:单位时间通过信道、接口等的数据量
时延:传输所需时间
- 发送时延
- 传播时延(传播速度看做是固定的,200m/us)
- 处理时延(分析首部、提取数据、差错检验、查找路由等)
- 排队时延(在输入输出队列中排毒的时间)
时延带宽积:以比特为单位的链路长度
时延带宽积 = 传播时延 * 带宽
利用率:有数据通过时间 / 总时间,利用率并非越高越好
五层协议
结合了 OSI七层结构 和 TCP四层结构
PDU(Protocol Data Unit):
物理层
编码:数据 –> 数字信号
调制:数据 –> 模拟信号
编码方式
- 非归零编码:正电平1,负电平0
- 归零编码:正脉冲1,负脉冲0
- 曼彻斯特编码:高到低跳变1,低到高跳变0(也可以反过来)
- 差分曼彻斯特编码:每一位的中心始终都有跳变。开始边界有跳变为0,没有为1
信道
信道带宽:信道能通过的频率范围
奈氏准则(奈奎斯特定理):
为了避免码间串扰,码元的传输速率上限为2W波特(W是信道的带宽,单位Hz)
理想低通道下的极限数据传输率为2Wlog2(v) (比特/秒)(v为每个码元能表示的比特数)
波特:码元传输速率单位,他说明单位时间传输了多少个码元
比特:每秒传输 二进制代码 位数
码元:数字通信中用来承载信息的基本单位,一个码元可以表示一个或多个比特
信噪比:S / N(信号的平均功率 / 噪声的平均功率),用分贝作为度量单位,dB = 10 * log10(S/N)
如S/N = 1000,信噪比为10 * log10(30) = 30 dB
香农定理:
在带宽受限及有高斯白噪声干扰下,信道的极限、无差错的信息传输速率
C = W log2(1 + S/N) (bit / s)
当两个定理算出来的值不相等时,以小的为准
信道复用
频分复用(FDM)
使用调制的方法,把各路信号分别搬移到适当的频率位置,各路信号在同样的时间占用不同的带宽资源
时分复用(TDM)
将时间划分为一段段等长的时分复用帧,每一路信号在每一个 TDM帧中占用固定序号的时隙
波分复用(WDM)
光的频分复用
码分复用(CDM)
各用户使用经过特殊挑选的不同码型,彼此之间不会干扰
码分复用例题
线缆
1. 双绞线(Twisted Pair)
- 结构:由两根绝缘铜线相互绞合而成,减少电磁干扰。
- 类型:
- 非屏蔽双绞线(UTP, Unshielded Twisted Pair):
- 常见于以太网(如 Cat5、Cat6)。
- 成本低,易于安装。
- 屏蔽双绞线(STP, Shielded Twisted Pair):
- 外层有屏蔽层,抗干扰能力强。
- 适用于高干扰环境。
- 非屏蔽双绞线(UTP, Unshielded Twisted Pair):
- 应用:
- 局域网(LAN)、电话线路。
- 标准:
- Cat5:支持 100 Mbps(100 米)。
- Cat6:支持 1 Gbps(100 米)。
2. 同轴电缆(Coaxial Cable)
- 结构:由内导体、绝缘层、屏蔽层和外护套组成。
- 类型:
- 细同轴电缆(Thinnet):
- 直径较小,适用于短距离传输。
- 粗同轴电缆(Thicknet):
- 直径较大,适用于长距离传输。
- 细同轴电缆(Thinnet):
- 应用:
- 早期以太网、有线电视(CATV)。
- 特点:
- 抗干扰能力强,但成本较高,安装复杂。
3. 光纤(Fiber Optic Cable)
- 结构:由玻璃或塑料纤维制成,通过光信号传输数据。
- 类型:
- 单模光纤(Single-Mode Fiber):
- 芯径小,传输距离远(可达数十公里)。
- 适用于长距离、高速传输。
- 多模光纤(Multi-Mode Fiber):
- 芯径较大,传输距离较短(通常 2 公里以内)。
- 适用于短距离、高速传输。
- 单模光纤(Single-Mode Fiber):
- 应用:
- 数据中心、广域网(WAN)、电信网络。
- 特点:
- 带宽高,抗干扰能力强,但成本较高。
4. 串行电缆(Serial Cable)
- 结构:用于串行通信,通常为多芯电缆。
- 类型:
- RS-232:用于短距离通信(如计算机与调制解调器)。
- RS-485:支持多点通信,适用于工业环境。
- 应用:
- 串行通信、工业控制。
5. USB 电缆(Universal Serial Bus Cable)
- 结构:用于连接计算机与外部设备,支持数据传输和供电。
- 类型:
- USB 2.0:传输速率 480 Mbps。
- USB 3.0:传输速率 5 Gbps。
- USB-C:支持正反插,传输速率可达 40 Gbps(USB 4.0)。
- 应用:
- 外设连接(如打印机、移动硬盘)。
6. 电力线通信(Power Line Communication, PLC)
- 结构:利用电力线传输数据。
- 应用:
- 家庭网络、智能电网。
- 特点:
- 无需额外布线,但受电力线干扰影响。
7. 无线介质(Wireless Media)
- 类型:
- 无线电波:如 Wi-Fi、蓝牙。
- 微波:如卫星通信。
- 红外线:如遥控器。
- 应用:
- 无线网络、移动通信。
数据链路层
节点与节点之间传输
术语
- 链路:节点之间的物理通道
- 数据链路:节点间的逻辑通道,既数据链路 = 链路 + 协议
- 帧:链路层的协议数据单元,封装网络层的数据报
三个基本功能
封装成帧
把若干比特打包成帧,便于检错和判断帧开始与帧结束
- 帧的数据部分不能超过MTU(最大传输单元)
- 帧定界符:SOH(Start Of Header)、EOT(End Of Transmission)
透明传输
成帧的标识可作为数据传输
- 数据部分出现定界符时前插ESC(转义字符),传给网络层时删除
差错检测
检测帧的传输是否有比特错误
检错
奇偶校验
循环冗余校验CRC
只要信息位不要太长,余数不为0时表示第几位出现了错误,因此循环冗余校验有一定的纠错能力
纠错
海明校验码
将信息位分为k组进行偶校验。
注意:2^k ≥ n + k + 1;校验位Pi放在2^(i - 1)位置上
1位纠错能力、2位检错能力
流量控制
停止-等待协议(SW)
发送窗口 = 1;接收窗口 = 1
用多少bit给帧编号:2^n >= WT + WR(n为bit数,WT为发送窗口,WR为接收窗口)
后退N帧协议(GBN)
发送窗口 > 1;接收窗口 = 1
发送帧丢失:若发送方对于某一个帧迟迟未收到ack,则这个帧之后所有已发送的帧都要重传
确认帧丢失:因为是只对最后一个收到的帧发送ack,故发送方没收到ack就要重传整个发送窗口的帧
选择重传协议(SR)
发送窗口 > 1;接收窗口 > 1,接收窗口不能比发送窗口大
每个帧都需要返回ack
数据帧丢失:一组里面哪个丢了,超时后就重传哪个帧
数据帧出错:发送出错的帧的编号nak(主动请求),发送方重传
确认帧丢失:超时重传,接收方收到重复帧也返回对应的ack
介质访问控制
信道换分:
时分复用(TDM)
将时间分成等长的TDM帧,每个帧又分为m个等长的时隙,并分配给m个用户使用
缺点:信道利用率低
统计时分复用(STDM)
又称异步时分复用,动态按需分配时隙
频分复用(FDM)
将信道的总频带划分为多个子频带
优点:各个节点可同时发送信号
缺点:只能用于模拟信号
波分复用(WDM)
光的频分复用,将各节点发出的不同波长的光信号复合到光纤上
码分复用(CDM)
给每个节点赋予专属的码片序列,节点发送1时发送码片,0时发送码片的反码。码片序列需要相互正交(内积为0)
收到数据后,用节点的码片乘之,再除以码片的维度,就能得到这个节点发送的信号(因为正交,乘其他节点的码片得到的都是0)
随机访问:
ALOHA协议
帧准备好后直接发送到信道上,等到收到ack后再传下个帧。如果因为冲突传送失败了,在等待随机一段时间后会重传
时隙ALOHA协议
只有在每个时隙开始时才能发送到信道上,降低冲突发生的概率
CSMA协议(载波监听多路访问协议)
在ALOHA协议基础上,发送数据前先监听信道是否空闲,只有空闲时才会尝试发送
1-坚持CSMA协议
一直监听
非坚持CSMA协议
监听到信道不空闲后放弃监听,随机一段时间后再监听
当多个节点准备好数据时,这么做可以错开发送数据的时间,降低冲突概率
p-坚持CSMA协议
监听到信道空闲后有p概率直接发送,1-p概率推迟一段时间再发送。监听到信道不空闲坚持监听
降低先到空闲时一起发送数据产生的冲突概率
✨CSMA/CD协议(CD: 冲突检测)
- 用于早期的有线以太网(总线型);
- 最短帧长:2 * 最大单向传播时延 * 信道带宽(为了当数据传到最远时仍没有发完,此时检测到冲突可停止发送。如果发完了但产生了冲突,就不会检测到冲突,但实际产生冲突了);
- 最长帧长:防止某些节点一直占用信道;
- CSMA没有ack机制,发完了就当成功了;
- 以太网规定:最短帧长64B,最长帧长1518B;
CSMA/CA协议(CA: 冲突避免)
- 适用于无线局域网
RTS: Request To Send 请求发送
CTS: Clear To Send 允许发送
轮询访问:
令牌传递协议
局域网
特点:
- 覆盖范围小
- 较低的时延和误码率
- 节点间以帧为单位传输
- 支持单播、广播和多播
IEEE802.3以太网标准(物理层)
IEEE802的分层划分为:物理层、介质访问控制层(类似数据链路层)、逻辑链路控制层
全双工半双工:
- 同轴电缆只能半双工
- 双绞线:速率< 2.5Gbps可支持半双工or全双工** ;速率>=2.5Gbps仅支持全双工**(节点连接时协商)
- 光纤只支持全双工
- 默认交换机连接的终端节点都可以全双工,集线器的半双工
常见以太网MAC层标准
- V2标准和IEEE802.3标准的不同是一个是类型(网络层协议类型)一个是长度(数据部分长度)
- 当目的地址全为1时为广播帧,广播只会在局域网广播,即路由器不会把广播帧传出去
VLAN
作用:
- 可以将局域网划分为多个VLAN,每个VLAN是一个广播域
划分方式:
- 基于交换机的接口
- 基于设备的MAC地址
- 基于IP地址(需要网络层支持,让VLAN可以跨越路由器)
使用VLAN需要用支持VLAN的交换机
交换机与交换机之间传输的是802.1Q帧,与标准以太网帧的区别是类型字段前面加了4字节的VLAN标签,用于标记发送方的VID
无线局域网(IEEE802.11)
门户(Portal):将两类局域网(有线和无线)连接,变成一个更大的局域网
广域网
链路层协议:
PPP协议
只支持全双工
无需纠错、无需序号、无需流量控制
用字节填充法
- 将0x7E(帧定界符) –> 0x7D 0x5E
- 将0x7D–> 0x7D 0x5D
帧错误就丢弃
数据部分最大传输单元MTU
- 地址字段:通常固定为
0xFF
,表示广播地址,由于PPP是点对点协议,地址字段的实际意义不大 - 协议字段
0x0021
:IPv40x0057
:IPv60xC021
:链路控制协议(LCP)0x8021
:网络控制协议(NCP)
PPP面向字节,使用字节填充法
HDLC(High-level Data Link Control)面向比特,使用比特填充法(每5个连续1则添加一个0)
以太网交换机
自学习功能:
- 交换表:记录MAC地址和端口号的映射关系
- 初始交换表为空,收到要转发的帧时不知道要转给谁,于是向所有端口广播
- 每次将发送方的MAC地址和端口记录到交换表中
- 每个表项有个有效期,过期作废,解决MAC地址和端口号的对应关系发生改变
交换方式:
直通交换
交换机仅需接收并处理目的地址的6个字节
存储转发交换
HDLC
High-Leve Data Link Control,高级数据链路控制协议
面向比特传输,使用零比特插入法,属于数据链路层协议
HDLC帧结构
HDLC帧类型
- 信息帧(I-frame)
- 用于传输用户数据。
- 包含序列号(N(S) 和 N(R)),用于流量控制和确认。
- 监控帧(S-frame)
- 用于流量控制和错误控制。
- 包含确认号(N(R)),但不携带用户数据。
- 常见的监控帧类型:
- RR(Receive Ready):准备接收下一帧。
- RNR(Receive Not Ready):暂时无法接收数据。
- REJ(Reject):请求重传指定帧。
- 无编号帧(U-frame)
- 用于链路管理(如建立和释放连接)。
- 不包含序列号。
- 常见的无编号帧类型:
- SABM(Set Asynchronous Balanced Mode):设置异步平衡模式。
- DISC(Disconnect):断开连接。
- UA(Unnumbered Acknowledgment):确认无编号帧。
IEEE 局域网模型
1. 物理层(Physical Layer)
- 功能:
- 负责在物理介质上传输原始的比特流。
- 定义电气、机械、功能和规程特性(如电缆类型、信号编码、传输速率)。
- 主要任务:
- 比特流的传输和同步。
- 物理介质的连接和管理。
2. 介质访问控制子层(MAC, Medium Access Control)
- 功能:
- 控制设备对共享传输介质的访问。
- 负责帧的封装和解封装,以及错误检测。
- 主要任务:
- MAC 地址的寻址和管理。
- 介质访问控制(如 CSMA/CD、CSMA/CA)。
- 帧的发送和接收。
3. 逻辑链路控制子层(LLC, Logical Link Control)
- 功能:
- 提供与上层(网络层)的接口,实现可靠的数据传输。
- 负责流量控制、错误控制和帧的复用。
- 主要任务:
- 建立和维护逻辑链路。
- 提供不同的服务类型(如无确认无连接、面向连接)。
网络层
主机与主机之间传输
网络层的功能
- 异构网络互联
- 路由与转发
- 拥塞控制
IPv4
分片
受数据链路层最大帧长MTU的影响,网络层的IP数据报可能会被分片
ip地址分配
最初分配方案
子网划分
将一部分主机号拿出来划分子网号
子网掩码:
- 1的位置对应网路号和子网号,0的位置对应主机号。和ip与运算后获得网络前缀,可用来判断是否在同一个子网
- 路由器要想使用子网掩码,转发表格式变为<目的网络号,子网掩码,转发接口>
无分类编址CIDR
网络号不再只有固定分发,可以根据需要来确定网络号的位数
子网划分
定长子网划分
子网号的位数固定,可能造成子网里的主机号利用率低
变长子网划分
更灵活分配子网
路由聚合
把路由表里转发接口相同,部分网络前缀也相同的几个表项聚合为一条,按照最长前缀匹配原则。
减少内存占用,加快查询速度
NAT
Net Address Translation网络地址转换
作用:让一个局域网内的主机共享一个ip
ARP
ARP协议用于查询同一网络中的<IP地址,MAC地址>之间的映射关系,存储在ARP表中。
在ARP表中还没有对应项时,通过ARP请求分组(广播)来找,之后目的主机通过ARP响应分组(单播)来告诉它的MAC地址。
ARP分组占28字节
DHCP
动态主机配置协议(应用层协议)
作用:给刚接入网络的主机动态分配IP地址、配置默认网关、子网掩码
过程:
客户端UDP端口号68,服务器端UDP端口号67
发现报文(DISCOVER)
- 还没分配IP地址,源地址填全0
- 目的MAC全1表示广播帧
提供报文(OFFER)
- 目的MAC从发现报文里知道了
- 目的IP仍然是全1广播
- IP地址都是有有效期的
请求报文(REQUEST)
- 用于表示客户端收到了提供报文
- 目的MAC还是全1广播,因为DHCP服务器可能不止一台,客户端收到的提供报文不知道是哪一台发的
- 目的IP同理
- 接收的IP此时还不属于客户端,源IP仍然是全0
确认报文(ACKNOWLEDGE)
内容和提供报文一样的,表示DHCP服务器确认了
IPv6
首部
和IPv4的区别
- 地址为由4B扩展到16B
- 移除校验和字段
- 移出了首部中的可选字段,变成了扩展首部
- 不需要DHCP
- 首部长度由4B的倍数变为8B的倍数
- 只能在主机处分片,IPv4可以在路由器和主机处分片
- 取消了协议字段,改成了下一个首部字段
- 取消了总长度字段,改为有效载荷字段(因为首部固定40B)
基本地址类型
- 单播:一对一
- 多播:一对多
- 任播:一对多中的一个通信,是一种网络寻址和路由的策略,使得资料可以根据路由拓扑来决定送到“最近”或“最好”的目的地
IPv4向IPv6过渡策略
双栈协议
主机同时用4和6的地址,路由器的不同接口分别配置了4和6的地址
隧道技术
把IPv6作为数据部分封装到IPv4中来传输
IP组播(多播)
发送方只发送一次数据,通过组播理由协议传递数据到用户端尽可能近的节点后,才开始复制和分发
组播地址范围为224.0.0.0~239.255.255.255(D类)
基于UDP,不产生ICMP差错报文
组播MAC地址开头为01-00-5E,余下的6个十六进制位根据IP组播组地址的最后23位来定
IGMP协议
网络层协议,让路由器知道本局域网上是否有主机参与或退出了某个组播组
过程:
- 主机要想加入某组播组,向组播组的组播地址发送IGMP报文,路由器通过组播路由选择协议把这组成员关系发送到网上的其他组播路由协议
- 路由器周期性探寻本地局域网上的主机,以便知道这些主机是否还是组播组的成员
组播路由选择协议
- 基于链路状态的路由选择
- 基于距离-向量的路由选择
- 协议无关的组播
路由算法和路由协议
路由算法
静态路由:手动配置每一条路由
动态路由:根据网络流量负载和拓扑结构动态调整自身路由表
常见的动态路由算法
距离-向量路由算法
x节点到y节点的最短花费为min{x到相邻节点的花费 + 相邻节点到y的花费}
每个节点维护这些信息:
- 到相邻节点的链路费用
- 到网络中其他节点的费用。这是一组距离,称为距离向量
- 收到的每个相邻节点的距离向量
节点间定期向每个邻居发送它的距离向量副本;
收到邻居的副本后可更新自己的距离向量,并向邻居发送更新报文
缺点:在大型网络中会导致很大的更新报文
常见有RIP算法
链路状态路由算法
要求每个节点都具有全网拓扑结构图;
主动测试所有相邻节点的状态,定期的将链路状态广播给所有其他节点
通过Dijkstra最短路径算法计算到达其他节点的最短路径
优点:适用于大型网络,有更好的扩展性
常见有OSPF算法
路由协议
自治系统AS:整个互联网划分为许多较小的系统
内部网关协议(IGP,Interior Gateway Protocol)
自治系统内使用的
RIP(Routing Info Protocol,路由信息协议)
应用层协议、UDP、520端口
规定:
- 每个节点维护距离向量
- 使用跳数作为花费
- 一条路径最多15跳,16跳认为不可达,因此适用于小型网络
- 路由表项<目的网络,距离,下一跳路由器地址>
- 定期(如30s)向相邻路由器交换路由信息
优缺点:
- 实现简单、开销小、收敛过程快
- 发现距离更短路由消息传播的快
- 发现故障传播的慢
OSPF(开放最短路径优先)
网络层协议、IP数据包
规定:
- 使用泛洪法向自治系统中所有路由器发送消息
- 使用迪杰斯特拉算法计算最短路径
外部网关协议(EGP,External Gateway Protocol)
自治系统间使用的
BGP(Border Gateway Protocol,边界网关协议)
应用层协议、基于TCP
三种路由协议比较
传输层
传输层的功能
端口
分类:
服务器使用的端口号:
熟知端口号0~1023
登记端口号1024~49151
客户端使用的端口号:
- 49152~65535(16bit)
注意点:
- 两台主机的端口号是相互独立的
- TCP、UDP的端口号也是相互独立的
套接字(Socket)
(IP地址 : 端口号)
差错检测
TCP和UDP都会检错,出错了TCP会通知对方重传,UDP直接丢弃
UDP和TCP比较
- 首部大小:UDP 8B;TCP 20~60B
- 拆分:UDP不支持拆分;TCP支持拆分,因此可传输长报文
- 可靠:UDP无连接、不可靠;TCP有连接、可靠、支持拥塞控制
- 对象数量:UDP支持一对一、一对多;TCP仅支持一对一
- 传输对象:UDP面向报文;TCP面向字节流
UDP
首部
校验
发送方:
- 计算前需要添加伪首部进行校验
- 每16bit为一组进行二进制加法,
- 如果最高位有进位,需要加回到最低位,
- 最后得到一个16bit的结果,取反得到校验和
- 封装到网络层前需要把伪首部去掉
接收方:
- 添加伪首部,将收到的数据每16bit为一组进行二进制加法
- 再加上校验和,结果全1就通过校验
TCP
TCP报文段
- 序号(sequence):数据部分在原始字节流中的偏移量,起始序号不一定是0,由发送方自己定
- 确认号(ack、ack_seq):表示这个序号之前的字节都已收到
- 标志位
- URG:紧急位,1为应尽快插队发送
- ✨ACK:0表示ack_seq无效,1表示ack_seq有效。只在第一次握手时是0
- PSH:推送位,1为希望接收方尽快回复
- RST:复位位:1为出现严重差错,必须释放连接
- ✨SYN:同步位,1为连接请求或连接接收报文,在第一、二次握手时为1
- ✨FIN:终止位,在第一、三次挥手时为1
- 数据偏移:TCP首部长度,单位为4B,取值范围为0~15
- 紧急指针:表示紧急数据的序号,和序号是独立的
- 窗口(rwnd、rcvwnd):receive window,接收缓冲区剩余大小
- 校验和:同UDP,伪首部里的17改为6
连接管理
建立连接
- 第一、二次握手虽然没有数据,但序号要+1
- 第三次握手可以携带数据,若携带数据则会消耗序号,没有则不会
数据传输
释放连接
- 第一、三次挥手需要序号+1
- 第二次挥手可以携带数据
- 第四次挥手之后会等待2 MSL(最长报文寿命),防止服务器端没有收到第四次挥手;如果服务器在时间段内没有收到第四次挥手,则会再发第三次挥手,客户端会重置等待时间
可靠传输、流量控制
关键是rwnd字段
累计确认:服务器端可以收到多个数据后一起确认;若连续收到两个长度为MSS的报文段,则应该立即返回ack段;等待收到多个报文的时间间隔最多不超过0.5s
捎带数据:在返回ack报文时可以带上要发送的数据
重传机制:
超时重传
快重传:基于立即确认机制,每收到一个报文段就立即确认,即使是失序的报文段也要返回ACK
拥塞控制
流量控制:控制端到端的数据发送量(局部的)
拥塞控制:控制整个网络中每台主机的数据发送量(全局的)
慢开始算法和拥塞控制
- 立即确认:慢开始算法里每收到一个报文段就要回一个ack
- 拥塞避免算法:发生超时重传时拥塞避免的阈值变为当前发送窗口的一半
- 拥塞避免阶段每次加一个MSS(最大段长)
- 发送窗口 = min(拥塞窗口, 接收窗口)
快重传和快恢复
- 快重传:当收到三个确认号相同的冗余ACK时,立即重传对应报文段
- 快恢复算法:发生快重传时,将阈值和发送窗口都设为当前发送窗口的一半,然后切换为拥塞避免算法
应用层
网络应用模型
C/S
服务器:
- 永久提供服务
- 永久性地址/域名
客户端:
- 间歇性接入网络
- 可能使用动态IP地址
- 不与其他客户机直接通信
应用:Web、FTP、远程登录、电子邮件等
P2P
- 不存在永远在线的服务器
- 每个主机都可以提供和请求服务
- 节点间可以直接通信
- 可扩展性好,健壮性强
DNS
作用:域名 –> ip地址
查询顺序:本地域名服务器 –> 根域名服务器 –> 顶级域名服务器 –>
权限域名服务器
查询方式:递归查询(别人帮查)、迭代查询(自己查)
FTP
使用TCP实现可靠传输
21为TCP控制连接端口,用于发送请求
20为TCP数据连接端口,用于发送文件
主动模式:客户端向21端口发送请求并监听20端口收文件
被动模式:客户端向21端口发送请求,服务器随机一个>1024的端口发送给客户端,客户端连接这个端口来收数据
电子邮件
发邮件协议:SMTP(端口号25)、MIME(对SMTP的扩充)
收邮件协议:POP3(端口号110)、IMAP、HTTP(基于万维网时)
万维网
HTTP 端口80