计算机网络笔记–8 数据链路层
前言
这是学习计算机网络课程时记录的笔记,里面大部分内容来源于哈尔滨工业大学李全龙老师的《计算机网络》mooc,加上我个人的理解整理出的内容。
5.1数据链路层服务
术语:
主机和路由器——>结点
连接相邻结点的通信信道——>链路:有线链路,无线链路,局域网
链路层(第二层)数据分组:帧,封装网络层数据报
数据链路层负责通过一条链路从一个节点向另一个物理链路直接相连的相邻节点传送数据报
链路层服务
1.组帧
封装数据报构成数据帧,加首部和尾部
帧同步:如何在物理层提取比特流信息,通常在数据帧首尾加上特殊帧定界服务字符(串)
2.链路接入
如果是共享介质,需要解决信道接入
帧首部的MAC地址,用于标识帧的源和目的——>不同于IP地址(网络/链路)
3.相邻节点间可靠交付
在低误码率的有线链路上很少采用那些可靠数据帧交付协议(如光纤,某些双绞线等)
无线链路:误码率高,需要可靠交付
4.流量控制
协调相邻的发送节点和接受
5.差错检测
信号衰减和噪声会引起差错
接收端检测到差错:通知发送端重传(可靠)或直接丢弃帧(不可靠)
6.差错纠正
接收端直接纠正比特差错(通过纠错编码)
7.全双工和半双工通信控制
同时双向传输或者交替双向传输
链路层的具体实现(硬件构成):
每个主机或路由器接口
链路层在“适配器”(网络接口卡—NIC)中实现或者在一个芯片上实现:
以太网网卡。802.11网卡:以太网芯片组
实现链路层和物理层
链接主机的系统连线
由硬件、软件与固件组成
网卡间通信
发送端:
将数据报封装成帧
增加差错检测比特,实现可靠数据传输和流量控制等
接收端:
检测差错,实现可靠数据传输和流量控制等
提取数据报,交付上层协议实体
5.2差错编码
差错编码基本原理:
D->DR,其中R为差错检测与纠正比特(冗余比特)
分组码,卷积码
线性分组码,非线性分组码——>R和D的关系是线性还是非线性
课程中默认的是线性分组码
即使满足R’=f(D’),也可能发生差错——>差错编码不能保证100%可靠
差错编码的检错能力
差错编码的可分为检错码和纠错码
对于检错码,如果编码集的汉明距离ds=r+1, 则该差错编码可以检测r位的差错
汉明距离:两个码字对应比特位不同的位数,比如0010和1111的汉明距离是3
因为只要错了1比特,肯定不在编码集里,错误之后的码字一定不在编码集里
对于纠错码,如果编码集的汉明距离ds=2r+1,则该差错编码可以纠正r位的差错,遵循最近原则
比如右图C变成C’,那么因为C’离C最近,所以会被变为C
奇偶校验码
1.比特校验位
检测奇数位差错
0代表数据中1的个数是奇数个->只能检测出奇数个位发生的差错
2.二维奇偶校验
检测奇数位差错,部分偶数位差错
3.Internet校验和(Checksum)
发送端:将数据划分为16位二进制“整数”序列
求和:补码求和(最高位的1加入到最低位)
校验和:sum的反码
放入分组(UDP、TCP、IP)的校验和字段:
接收端:与发送端相同算法计算
计算得到的“checksum”——>为16位全0:无错
否则出错
循环冗余校验码(CRC)
检错能力更强大的差错编码
将数据比特D,视为一个二进制数
选择一个r+1位的比特模式(生成比特模式),G
目标:选择r位的CRC比特R,满足
<D,R>能够刚好被G整除(模2)
接收端检错:利用G除以<D,R>,余式全0无错,否则有错
可以检测所有突发长度小于r+1位差错
广泛应用于实际网络(以太网,ATM)
5.3多路访问协议
两类“链路”
1.点对点链路:拨号接入的PPP
以太网交换机与主机间的点对点链路
2.广播链路(共享介质)
早期的总线以太网
HFC的上行链路
802.11无线局域网
多路访问控制(MAC)协议
单一共享广播信道
两个或两个以上节点同时传输——>干扰,即冲突
冲突:节点同时接受两个或多个信号——>接收失败