zl程序教程

您现在的位置是:首页 >  云平台

当前栏目

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

TCP 理解 直接 三次 握手 四次
2023-09-11 14:21:00 时间

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


事实上仅仅有一句话:TCP连接是两个端点之间的事。因为TCP连接是可靠连接,所以无论是建立连接还是关闭连接,须要两个端点都要发送请求和收到确认


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


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

从client的角度来说,它仅仅须要发送一个请求syn,然后收到ack就能知道连接是能够建立的

从server端的角度。它也仅仅须要发送一个请求syn,然后收到ack就能知道连接是能够建立的


所以建立连接时最少仅仅须要三次握手就可以,即server端收到clientsyn,之后向client发送ack的同一时候携带上自己的syn。这样就仅仅须要三次握手就能使两方都发生syn和都收到ack.

当然你自己设计的时候也能够使用4次或者很多其它的握手,可是最少3次就可以




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

从client的角度来说,它发送一个关闭请求FIn,然后收到ack就知道能够关闭连接的

从server的角度来说。它发送一个关闭请求Fin,然后收到ack就知道能够关闭连接的


可是因为是读和写通道,所以server端在收到client的关闭Fin时,可能还在往client发送消息,所以仅仅能先发送ack确认client客户关闭写通道,这时候服务端不能使用通过一消息发送它的关闭Fin。仅仅能过会等它自己写完了,才干又一次发送一个关闭请求的Fin。

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