TCP的三次握手和四次挥手

Posted mitoohi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP的三次握手和四次挥手相关的知识,希望对你有一定的参考价值。

传输层实现可靠会话的协议TCP协议

Q:如何建立连接?为什么要这样 建立连接?

A:通过发送TCP报文的方式实现建立连接,其中共需要三次“握手”

技术图片

为什么需要三次握手来建立连接:这和TCP报文的设计有关

技术图片

 

每个报文只能包含一个ACK一个SYN和一个FIN标志位,

(1)A给B发送    {SYN=1(我想建立连接),seq=x(用以标识A的请求)},

(2)B收到后回复A  {SYN=1(我也想建立连接),ACK=1(我刚确认了一个请求),ack=x+1(我确认的是A的请求),seq=y(同样用于标识B此次的请求)},

(3)A再次给B发送  {ACK=1(我刚才也确认了一个请求),seq=x+1(我是A),ack=y+1(我确认的是B的请求)}

Q:如何断开连接?为什么采用这种方式断开连接?

A:同样是通过发送TCP报文的方式断开连接,但是断开连接需要四次“挥手”

技术图片

为什么需要四次“挥手”呢?从两部分说,A、B都需要告诉对方此次会话可以结束了并且都需要告诉对方自己已经结束了:

(1)A发送给B  {FIN=1(你可以断开连接了),seq=u(用于标识A的请求)}

 

(2)B回复A   {ACK=1(那我就断开了),seq=v,ack=u+1(我断开的是A的请求)}--------此时是半断开状态

(3)B发送给A  {FIN=1(你也可以断开连接了),ACK=1(我刚才已经断开了一个连接),ack=u+1(我断开的是A的连接),seq=w(用于表示B的请求)}

(4)A回复B   {ACK=1(我刚才也断开了连接),ack=w+1(我断开的是B的链接),seq=u+1(我是A)} 

最终双方都断开了链接并且告诉对方自己已经断开了连接。

以上是关于TCP的三次握手和四次挥手的主要内容,如果未能解决你的问题,请参考以下文章

图解TCP的三次握手和四次挥手(简单明了)

关于TCP的三次握手和四次挥手及其衍生问题

图解TCP的三次握手和四次挥手

图解TCP的三次握手和四次挥手

TCP的三次握手和四次挥手

揭秘——TCP的三次握手和四次挥手