目录
一、基本问题
1.封装成帧
1.1将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。
1.2透明传输
透明表示一个实际存在的事物看起来好像不存在一样。
帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。
需要在数据部分出现首部尾部相同的内容前面插入转义字符。如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符。
在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在
比特填充
方法:为了不使信息位中出现的比特流01111110被误判为帧的首尾标志,发送方的数据链路层在信息位中遇到5个连续的"1"时,将自动在其后插入一个"0";
举例:
原始数据:0110111111110111110010
填充后:011011111011101111100010
2、差错检错
2.1、奇偶检验码:
奇检验:(在最前面加一个1)
一个误码可检测出错误[1数量的奇性改变]
1 1 0 1 1 0 1 -------------------------------------------------1 1 0 1 1 0 0
2.2、循环冗余检验(CRC)
3.可靠传输
3.1停止等待协议
3.1.2停止等待协议利用率
例题:
3.2回退N帧协议
窗口大小: 1<<
-1
- 累计确认的情况
接收方收到0 1 后发送ACK1,收到2 3 4 后发送ACK4,假设ACK1在传输过程中丢失了,
而ACK4正确到达了发送方,发送方就知道序号为4及之前的数据分组已被接收方正确接收了。
- 有差错的情况.
发送5 6 7 0 1,假设5出现了乱码,接收方丢弃5,剩下4个与接受窗口不匹配,也同样丢失他们,
并对之前按序接收的最后一个数据分组进行确认,也就是发送ACK4,每丢失一个数据分组,
就发送一个ACK4,当收到这些重复的ACK4时,就发现之前发送的出错,可以不等超市计时器
超市,就立刻开始重传。
综合理解:
例题:
【2009年题35】数据链路层使用后退N帧(GBN)协议,发送方已经发送了编号为0~7的帧。
当计时器超时时,若发送方只收到0、2、3号帧的确认,则发送方需要重发的帧数是4.
注意:(1)“发送方只收到0、2、3号帧的确认”表明接收方正确接收了0~3号帧,并针对它们中的每一个发送了确认帧,
只不过针对1号帧的确认帧丢失了(这是题目中的陷阱)。
3.3选择重传协议
窗口大小: 1<<
-1
一般情况下接收窗口大小与发送窗口相同。
- 发送方将发送窗口内数据0123发送给接收方,且此时2号分组出现丢失。
- 此时接收方能正确接收0,1 序号分组,并且发送ACK0,ACK1。并且此时接收窗口向前滑动。
3. 此时接收方接收3号数据分组,并且发送ACK3,但是由于此时2号分组没有收到,不能向后滑动创建,只能继续接收剩余窗口。
此时发送方会对发送窗口中的3号数据做已确认标记,防止超时重发。
4.此时发送方收到ACK0,ACK1,将窗口向后滑动,并且将4,5号数据发送出去。
5.接收方接收到4,5号分组后,回传ACK4,ACK5
6.2号数据触发超时重传机制,此时将2号数据发送过去,接收方接收到后回传ACK2,并且此接收