码迷,mamicode.com
首页 > 其他好文 > 详细

TCP三次握手和四次握手最直接的理解

时间:2014-09-17 13:44:02      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:tcp   服务器   

网上有很多文章讲TCP为什么建立连接时需要三次握手,关闭连接时需要四次握手,讲了很多原理,反而让很多人难以理解。


其实只有一句话:TCP连接是两个端点之间的事,由于TCP连接是可靠连接,所以不管是建立连接还是关闭连接,需要两个端点都要发送请求和收到确认


其次要理解TCP的通道是全双工的,是可以读和写数据的,理解这个之后就明白了为什么关闭连接时需要四次握手。


首先讲三次握手,建立连接时不涉及到读写通道,只是两个端点的请求和确认。要记住是两个端点之间的,两个端点是平等的关系。

从客户端的角度来说,它只需要发送一个请求syn,然后收到ack就能知道连接是可以建立的

从服务器端的角度,它也只需要发送一个请求syn,然后收到ack就能知道连接是可以建立的


所以建立连接时最少只需要三次握手即可,即服务器端收到客户端syn,之后向客户端发送ack的同时携带上自己的syn,这样就只需要三次握手就能使双方都发生syn和都收到ack.

当然你自己设计的时候也可以使用4次或者更多的握手,但是最少3次即可


bubuko.com,布布扣


关闭连接时也还是两个端点都要发送请求和收到确认。但是关闭连接时涉及到两个端点的读写通道的事。

从客户端的角度来说,它发送一个关闭请求FIn,然后收到ack就知道可以关闭连接的

从服务器的角度来说,它发送一个关闭请求Fin,然后收到ack就知道可以关闭连接的


但是由于是读和写通道,所以服务器端在收到客户端的关闭Fin时,可能还在往客户端发送消息,所以只能先发送ack确认客户端客户关闭写通道,这时候服务端不能使用通过一消息发送它的关闭Fin,只能过会等它自己写完了,才能重新发送一个关闭请求的Fin。

所以比建立连接时多了一次握手,关闭连接时最少需要4次握手。理解了为什么需要4次握手之后,就不难理解TCP半关闭的概念。






TCP三次握手和四次握手最直接的理解

标签:tcp   服务器   

原文地址:http://blog.csdn.net/iter_zc/article/details/39339723

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!