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将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。 (对失序数据进行重新排序,然后才交给应用层)

posted @ 2018-03-01 16:00  郑升  阅读(214)  评论(0)    收藏  举报