可靠性
上面大神提到了TCP中流的概念,也提到了片段(Segment
),但是Segment
中片段编号(sequence number
)仅仅完成了次序(Order
)的问题,但是由于IP
协议是不可靠传输,所以按照之前说的,片段乱序到达(Out of order
),接收主机时不会接收,所以到最后接收主机可能收到的是个"假的文件"
TCP
的补救办法是在每收到一个正确、顺序的Segment
时,向发送方发送一个特殊的TCP
片段,这个特殊的TCP
片段用来知会(ACK
Ackonwledge
)发送方,我已经成功收到你发送的Segment
了,请继续发下一个吧~
如果发送方在发送Segment 1
到接收方等待一段时间后,没有受到接收方返回的ACK 1
回复,发送方就可以认为接收方并没有受到Segment 1
,于是发送方开始重新发送这个Segment 1
,直到接收方返回ACK 1
回复,然后开始发送下一个Segment 2
当然接收方在回复ACK 1
时也有可能会丢失,所以接收方如果在看见还是Segment 1
,就知道刚才发的ACK 1
已经丢失了,于是开始重新发送ACK 1
所以结论是Segment
重新发送存在两种可能:
- 数据丢失
ACK
丢失所以通过这个机制,TCP解决了传输过程中丢失片段的问题,但这样传一个等一个似乎有点呆萌了吧,所以TCP通过滑窗来解决这一问题,Next~