文章目录
- 1. 停止等待ARQ协议
- 2. 连续ARQ协议与滑动窗口协议
1. 停止等待ARQ协议
-
ARQ(Automatic Repeat–reQuest)自动重传请求
-
几种重传情况
-
发送端丢失
发送方过久没有接收到接收方的确认报,这种情况会触发超时重传机制,发送方重新发送报文。 -
确认报丢失
发送方依然没有收到确认报,所以会触发重传,而接收方接收到两个重复的包,直接将后来的包丢掉。 -
延迟确认
发送方迟迟没收到确认报,于是重传,重传的接收到确认报了,之后前面的确认报才来,这时候无事发生。
-
-
问题:若有个包重传了N次还是失败,会⼀直持续重传到成功为止吗?
答:在网络通信中,如果一个数据包重传了N次仍然失败,它是否会一直持续重传直到成功,这取决于具体的协议和设置。例如,在TCP(传输控制协议)中,重传5次还未成功就会发送RST报文,连接将被断开。这是为了防止网络拥塞和无效通信。
2. 连续ARQ协议与滑动窗口协议
- 在停止等待协议的基础上改进,发送方发一个窗口大小内的数据,接收方只回一次确认报。
- 如果接收窗口最多能接4个包,但发送方只发了2个包:
- 发送方可能一次发送一个窗口的包,也有可能不发,不一定的,得看发送方的协议约定。
- 接收方的确认报只确认收到两个包。
- 每个包多大,这个在一开始建立连接的时候就会约定好
- 就是选项段的第一个:最大报文段长度(Maximum Segment Size)。
- 如果建立连接时约定的MSS大小不一,取最小的。
- 最大报文段长度在一开始就约定好了
- 窗口的大小并非固定死的,是由接收端控制的,这关系到流量控制:
- 接收端如果缓存区不够用或者想控制流量,就在确认报中将窗口大小改小。
- 序号和确认号
-
当发送方发出一连串数据,但是其中丢了几个包,接收方会确认第一个丢失的包的位置(ACK),之后会在选项中标注出哪些包丢失了,也就是选择性确认技术(SACK)。
- 发送方会滑到ACK的位置,开始重新发送这个窗口内没有传输过的包,传过的不会再发。
-
此处应当辨析超时重传与连续ARQ协议:为什么超时就整段重传,而这个ARQ滑动窗口仅仅只重传未发送的包?
- 超时重传:在TCP中,传输层分包超时会导致包重传;在给包分片的IP层中,片超时(或丢失)会直接将整个包的片丢掉不管,然后发送方触发超时重传。
- 连续ARQ:只重发丢掉的包。
- 为什么:因为网络层是在路由之间传输的,如果一直等待错包重传很占用路由的空间,所以选择直接扔掉重传;而传输层可以看作是管道直连(网络层掩盖了底层逻辑),所以占用的空间资源是各主机的,并无太大影响。
-