目录
停止等待协议与连续ARQ协议
TCP传输使用的是停止等待协议,即向发送端发送数据包后,接受端收到并发送确认请求,发送端收到确认请求后再发送下一个数据包。如果发送后,发送端会等待一段时间,时长为一个数据包往返需要的时间,如果因为发送失败没有收到请求,发送端就会重传数据包。
因为接受端发送确认请求选择的路径有时可能比较远,会出现确认迟到的情况。如果没有收到请求是因为确认迟到,那么发送端再次收到确认请求后不会做任何事。
TCP发数据包的时候,如果单纯使用停止等待协议,发一个确认一个再发一个,那么信道利用率就会很低,所以需要使用连续ARQ协议。利用连续ARQ协议发送的时候,同时发送滑动窗口内的多个数据包,也就是流水线传输。一旦收到数据包的确认后,窗口就会向前移动。接受端采取的是累积确认的方式,只对到达的最后一个数据包发送确认,比如是3最后到达,就不会发1、2的确认,那么滑动窗口收到3的确认后,就向前滑动3个窗口。如果发送分组的中途有数据包,那么就Go-back-N。比如1-5都发送了出去,3中途丢失了,那么接受端只会发2的确认,那么3、4、5都得重发,也就是丢了第N个包,就回退N重发。
TCP的两端都各有两个窗口,一个是发送窗口,一个是接受窗口,总共四个窗口。通过字节的序号