数据链路层
概念
实现直接相连的两个设备之间的数据传输
两种信道
- 点对点信道。例如拨号上网,连接到最近的ISP
- 广播信道。学校教室的机房,局域网
数据链路和帧
- 链路(物理链路):点到点的物理线路。点:主机、路由器
- 数据链路(逻辑链路):物理线路+通信协议=链路+协议。类比:城市交通=街道+交通规则
- 帧:数据链路层将网络层的IP数据报加上首部尾部构成一个帧。相邻结点的数据链路层检查该帧,若无差错则接收,否则丢弃。数据链路层的帧类比物理层的比特,都是作为该层传输数据的单位。
三个基本问题
封装成帧
加首部尾部封装成传输数据的帧。首位部是为了确定帧的界限,进行帧定界。MUT(Maximum Transfer Unit):最大传送单元,帧的数据部分长度上限
透明传输
无论什么样的比特组合的数据,都能暗战原样没有差别地通过这个数据链路层。具体指:数据部分出现控制字符“SOH”或“EOT”,则在前面插入一个转义字符“ESC”,这种方法称为字节填充或字符填充
差错检错
用循环冗余检验CRC(Cyclic Redundancy Check的检错技术
具体操作如下:
发送方过程:将数据分组,每组k位,后面加n位冗余码(多余的)构成一个帧,一共(k+n)
冗余码的由来(模2运算,异或运算):k位后添n个0,得到(k+n)位除以事先商定的(n+1)位除数P,余数为R(n位,比P少一位),R即是冗余码,也称为帧检验序列FCS(Frame Check Sequence)
接收方:将每一帧经过CRC检验,若R=0,则接收;否则丢弃。
注意:数据链路层不是可靠传输,只做到无差错接受,凡是收到的都是对的
点对点信道的协议
点对点协议PPP(Point-to-Point Protocol):
组成:
1.将IP数据报分装到串行链路的方法
2.链路控制协议LCP(Link Control Protocol):
3.网络控制协议NCP(Network Control Protocol):
PPP协议的帧格式
首部:标志字段:0x7E("ox"表示后面是十六进制),连续两帧之间只需要一个标志字段
地址字段:0xFF
控制字段:0x03
协议字段:
若为0x0021,则信息字段为IP数据报
若为0x8021,则为网络层的控制数据
若为0xC021,则为PPP链路控制协议
若为0xC023,则为鉴别数据
尾部:帧检验序列FCS、标志字段F
在透明传输中
字节填充(当PPP在用异步传输时):标志字段0x7E(01111110),转义字符0x7D(01111101)。
发送端数据部分(信息字段)出现的情况和方法
- 0x7E☞(0x7D,0x5E)
- 0x7D☞(0x7D,0x5D)
- 数值小于0x20的字符,在该前面加入0x7D,同时改变该编码。eg:0x03☞(0x7D,0x23)
- 接收端则根据这规律也可知道原数据,例如题目要求写出原来的数据
零比特填充(当PPP在用同步传输时):
在发送端:发现5个连续的1,则立刻填入一个0。保证在信息字段不会出现连续6个1。
接收端:在收到一个帧时,先找到标志字段F(01111110)确定帧的边界,接着扫描比特位,每当发现5个连续1时,就把这5个连续的1后一个0删除,这样就保证了透明传输。