美文网首页
TCP的三次握手与四次挥手

TCP的三次握手与四次挥手

作者: 12313凯皇 | 来源:发表于2019-04-01 18:11 被阅读0次

通常我们进行HTTP连接网络的时候会进行TCP的三次握手,然后传输数据,之后再释放连接。TCP传输如下图所示:


TCP传输

TCP三次握手的过程如下:

  • 第一次握手:建立连接。客户端发送连接请求报文段,将SYN设置为1Sequence Number(seq)x;接下来客户端进入SYN_SENT状态,等待服务端的确认。
  • 第二次握手:服务器收到客户端的SYN报文段,对SYN报文段进行确认,设置Acknowledgment Number(ACK)x+1(seq +1 );同时自己还要发送SYN请求信息,将SYN设置为1seqy。服务端将上述所有信息放到SYN+ACK报文段中,一并发送给客户端,此时服务端进入SYN_RCVD状态。
  • 第三次握手:客户端收到服务端的SYN + ACK报文段;然后将ACK设置为y+1,向服务端发送ACK报文段,这个报文段发送完毕后,客户端和服务端都进入ESTABLISHED(TCP连接成功)状态,完成TCP的三次握手。

举一个很形象的例子:

A和B打电话
A:喂,我是A,你听的到吗?(第一次握手)
B:我听的到,你听的到吗?(第二次握手)
A:我也能听到。(第三次握手)
三次握手完毕,双方都确定对方能够听到(接收到消息),连接建立完毕,后面就可以开始通话了(传输数据)。

当客户端和服务端通过三次握手建立了TCP连接以后,当数据传送完毕,断开连接时就需要进行TCP的四次挥手。其四次挥手如下所示:

  • 第一次挥手:服务端设置seqACK,向服务器发送一个FIN报文段。此时客户端进入FIN_WAIT_1状态,表示客户端没有数据要发送给服务端了。
  • 第二次挥手:服务端收到了客户端发送的FIN报文段,向客户端回了一个ACK报文段
  • 第三次挥手:服务端向客户端发送FIN报文段,请求关闭连接,同时服务端进入LAST_ACK状态。
  • 第四次挥手:客户端收到服务端发送的FIN报文段,向服务端发送ACK报文段,然后客户端就进入TIME_WAIT状态。服务端收到客户端的ACK报文段以后,就关闭连接。此时,客户端等待2MSL(最大报文段生存时间)后依然没有收到回复,说明服务端已正常关闭,这样服务端就可以关闭连接了。

接着上面的例子来形容:

A和B聊完了,准备结束通话
A:我说完了,我不说了(A -> FIN_WAIT1)
B:好的,我知道你说完了(B -> CLOSE_WAIT)
B:我也说完了,那下次聊,再见(B -> LAST_ACK)
A:我知道你也说完了,再见。(A -> FIN_WAIT2)

下面再通过一张图来加强理解:


三次握手与四次挥手

如果有大量的连接,每次在连接、关闭时都要经历三次握手、四次挥手,这很显然会造成性能低下。因此,HTTP有一种keepalive connections的机制,它可以在传输数据后仍然保持连接,当客户端需要再次获取数据时,直接使用刚刚空闲下来的连接而无须再次握手,如下图所示:

连接复用
为什么是三次握手,而不是两次或四次?

因为三次握手刚好双方都可以确认自己的发送的数据对方是可以接收到的。例如A是客户端,B是服务端,那么前两次握手A就可以确认B是能够收到A所发送的请求的,后两次握手B可以确认A是能够接收到B所发送的请求的。

同样的,如果是两次握手,那么B无法确认他所发送的消息A是否能收到,如果是四次则会造成浪费。

相关文章

  • 2、tcpdump抓包分析三次握手和四次挥手

    TCP为什么需要三次握手、四次挥手 三次握手 三次握手 四次挥手 SYN flood攻击

  • TCP的3次握手&4次挥手

    详解 TCP 连接的“ 三次握手 ”与“ 四次挥手 ” 为什么“握手”是三次,“挥手”却要四次? 建立连接时,被动...

  • TCP连接的建立和终止

    目录(1)三次握手(2)四次挥手(3)TCP状态转换图(4)TCP连接三次握手+四次挥手+状态转换 一:三次握手 ...

  • TCP的三次握手和四次挥手

    参考资料:[1].【TCP】详解TCP 三次握手和四次挥手[2]. iOS:为什么TCP连接要三次握手,四次挥手[...

  • 不积跬步--TCP三次握手和四次挥手过程

    本文来至转载TCP三次握手和四次挥手过程 TCP三次握手和四次挥手过程 1、三次握手 (1)三次握手的详述 首先C...

  • TCP三次握手与四次挥手

    TCP的三次握手与四次挥手(详解+动图)TCP之三次握手四次挥手 UDP,在传送数据前不需要先建立连接,远地的主机...

  • 计算机网络

    TCP三次握手与四次挥手 UDP报文段结构 TCP报文段结构

  • tcp

    报文结构、三次握手、四次挥手 Tcp--三次握手,四次挥手[https://www.jianshu.com/p/a...

  • tcp三次握手四次挥手

    tcp三次握手四次挥手 TCP状态图 TCP状态时序图 tcp三次握手 流程图: TCP握手状态说明: TCP_S...

  • 梳理部分解答之网络基础

    网络基础 TCP三次握手四次挥手 TCP三次握手 所谓三次握手(Three-way Handshake),是指建立...

网友评论

      本文标题:TCP的三次握手与四次挥手

      本文链接:https://www.haomeiwen.com/subject/wcbvbqtx.html