TCP三次握手和四次挥手

TCP三次握手:

  1. 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。服务器

  2. 第二次握手: Server 收到数据包后由标志位 SYN=1 知道 Client 请求创建链接, Server 将标志位 SYN 和 ACK 都置为 1 , ack=J+1 ,随机产生一个值 seq=K ,并将该数据包发送给 Client 以确认链接请求, Server 进入 SYN_RCVD 状态。spa

  3. 第三次握手: Client 收到确认后,检查 ack 是否为 J+1 , ACK 是否为 1 ,若是正确则将标志位 ACK 置为 1 , ack=K+1 ,并将该数据包发送给 Server , Server 检查 ack 是否为 K+1 , ACK 是否为 1 ,若是正确则链接创建成功, Client 和 Server 进入 ESTABLISHED 状态,完成三次握手,随后 Client 与 Server 之间能够开始传输数据了。3d

简单来讲,就是blog

  1. 创建链接时,客户端发送SYN包(SYN=i)到服务器,并进入到SYN-SEND状态,等待服务器确认。it

  2. 服务器收到 SYN 包,必须确认客户的 SYN ( ack=i+1 ) , 同时本身也发送一个 SYN 包( SYN=k ) , 即 SYN+ACK 包,此时服务器进入 SYN-RECV 状态。请求

  3. 客户端收到服务器的 SYN+ACK 包,向服务器发送确认报 ACK ( ack=k+1 ) , 此包发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三次握手,客户端与服务器开始传送数据。im

 

TCP四次挥手:

  1. 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。数据

  2. 第二次挥手: Server 收到 FIN 后,发送一个 ACK 给 Client ,确认序号为收到序号 +1 (与 SYN 相同,一个 FIN 占用一个序号), Server 进入 CLOSE_WAIT 状态。客户端

  3. 第三次挥手: Server 发送一个 FIN ,用来关闭 Server 到 Client 的数据传送, Server 进入 LAST_ACK 状态。db

  4. 第四次挥手: Client 收到 FIN 后, Client 进入 TIME_WAIT 状态,接着发送一个 ACK 给 Server ,确认序号为收到序号 +1 , Server 进入 CLOSED 状态,完成四次挥手。

相关文章
相关标签/搜索