TCP三次握手和四次断开
TCP三次握手
client : 请求连接;
server: 好的,同意连接;
client: 好的,开始对话吧。
为什么三次而不是两次?
明白一点:什么叫做双向的可靠通讯,如A和B交流:
一个方向: A----------------》 B: A说的话,B确认收到 并且 给A回复下,这样就保证了, A ----------------》 B :这个方向说的话是可靠的,A知道:我说的话B都能收到嘛。
另一个方向: B --------------------》 A: B说的话,A确认并给B回复下,这样就保证了, B --------------------》 A : 这个方向说的话是可靠的,B知道:我说的话A都能收到嘛。
下面看看两次的握手
client : 我要请求连接;
server: 好的,同意链接;
截止此刻 client知道 : 我发给server 的信息,server是可以收到,并且回复给我的。而 server 此刻知道 它的话 client收到没,显然不知道呀,所以 client必须回复给server一句:我收到你的话了。
故产生了 “第三次握手”
四次断开:
http://blog.csdn.net/study_zhxu/article/details/55212006
https://blog.csdn.net/eric0318/article/details/51087513
https://www.cnblogs.com/qiaoconglovelife/p/5733056.html
怎么保证“传输可靠性”,即确保数据无差错的传给对方???
TCP通过以下方式来提供可靠性,假设A 发送 到 B:
1、停止等待协议:每发送完一个分组,就停止发送,等待对方的确认,收到确认后再发送下一个分组。
(1) 超时重发:A在发送后就设置一个超时定时器,若超过定时器时间还没有收到确认,就重新发送此分组(注意:A发送完一个分组后必须保留副本,为超时重传使用;分组和确认分组都要进行编号;超时重传时间必须大于一个往返时间);
(2)校验错误:B认为发送过来的报文,是错的,不会回复确认信息,引发“超时重传”
(3) 确认丢失和确认迟到:B发送的确认丢失或迟到后,A过了超时定时器的时间,就重新发送分组,B收到这个分组,知道是重复的分组,会丢弃它,再次向A发送确认;
上述的确认和重传机制,称为自动重传请求ARQ协议;
2、连续ARQ协议:
利用发送窗口,位于发送窗口内的所有分组都可以连续发送出去,而不需要等待对方的确认。A每收到一个确认,就把发送窗口向前滑动一个分组的位置。B采用累积确认方式,对按序到达的最后一个分组发送确认,就表示到这个分组之前的所有分组都收到了。
3、保证数据的顺序性:
既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。 (对失序数据进行重新排序,然后才交给应用层)

浙公网安备 33010602011771号