计网复习一些细小但重要的知识点

2022/3/2 6:16:55

本文主要是介绍计网复习一些细小但重要的知识点,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.TCP默认使用的窗口协议下,是选择的回退N帧还是选择重传?

上面这两个协议是非常基础的协议,属于特别抽基础那种,实际应用是有所改进的

一般TCP结合了这两种重传机制(而非单一):

(1)累计确认:使用accumulative acknowledgement,即发回的ACK相当于对之前发送的很多packet进行确认。

(2)只设一个timer,对应的是发送方所有未确认的packet里最早发送的那个。如果发生timeout或者3 duplicates,则只重传最早的那一个。

(3)如果接收方收到了新的确认,则重置计时器,并继续把它跟所有未确认的packet里最早发送的那个联系起来。

(4)有快传,快传不会影响计时器(即计时机继续计时)。另外,快传说的是收到3个重复的ACK,不算最初的那一个有效的ACK,即一共应该是4个相同的ACK(如下图)。

 

(5)接收方窗口不是固定的1,而且发送方和接收方窗口都不是固定的,都是不断变化的,这是对两协议的改进

(6)有选择重传:通过SACK实现

 

 

 注:解释一下这里首部长度选项最多40字节,每个边界4字节,为什么选项中只能指明4个字节块的边界信息?

 因为这里包含SACK允许选项字段和SACK字段(均在TCP首部的选项字段,不足4n字节用0填充)

(1)SACK允许选项(声明使用SACK)
SACK特性是TCP的一个可选特性,是否启用需要收发双发进行协商,通信双发在SYN段或SYN+ACK段中添加SACK允许选项通知对端本端是否支持SACK,如果双发都支持,那么后续连接态通信过程中就可以使用SACK选项了。所以SACK允许选项只能出现在SYN段中。

SACK允许选项格式如下图:

(2)SACK选项(SACK的具体信息)
连接建立后,如果出现开头所述的情况,接收方就可以通过SACK选项告诉发送方字节的实际接收情况。SACK选项格式如下:

 可见除了每个字节块2个边界共需8个字节外,至少还有SACK允许选项(2字节),所以总共40字节最多容纳4组边界,这就占用了4*8+2=34字节,不足以容纳另外1组边界了。所以并非简单想想的5*8=40

 


 

持续更新中(直到期末结束)



这篇关于计网复习一些细小但重要的知识点的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程