0
点赞
收藏
分享

微信扫一扫

校园网自动登陆(河南科技学院)

Aliven888 2023-05-08 阅读 85
TCP三次握手/四次挥手

三次握手

  • 任何基于TCP的应用,在发送数据之前,都需要由TCP进行三次握手进行连接
握手流程:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oagl5gBn-1683529215901)(C:\Users\su\AppData\Roaming\Typora\typora-user-images\image-20230505160457734.png)]

三次握手原理

  • 第1次握手:客户端发送一个带有SYN(synchronize)标志的数据包给服务端
    • 详细:客户端发送建立连接的请求,请求中包含seq(序列号)和SYN,此seq是发送端随即生成。SYN字段为1标识需要建立TCP连接**(syn=1,seq=x,x为随机值)。**
  • 第2次握手:服务端接收成功后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了
    • 详细:服务端回复客户端的请求,回复的报文包含syn,seq,ack,此seq是回复端随机生成,syn置为1表示需要建立一个连接,并生成ack字段,ack的数值为seq+1,确认收到客户端发来的信息。(syn=1,seq=y,ack=x+1)。
  • 第3次握手:客户端再回传一个带有ACK标志的数据包,表示我知道了,握手结束
    • 客户端收到服务端发送的TCP建立验证请求后,会使自己的序列号加1表示,并且再次回复ACK验证请求,在服务端发过来的seq上加1进行回复。(SYN=1,ACK=y+1,seq=x+1)。
  • 其中:SYN标志位数置1,表示发起一个连接;ACK表示序列号有效,确认收到消息。

四次挥手

四次挥手原理

  • 第1次挥手:客户端发送一个FIN,用来关闭客户端到服务端的数据传送,客户端进入FIN_WAIT_1状态
    • 客户端报文发送断开请求,请求中包含seq序列号、fin,fin为1表示需要断开tcp连接。(FIN=1,seq=x,x由客户端随机生成)
  • 第2次挥手:服务端收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务端进入CLOSE_WAIT状态
    • 服务端回复客户端的断开请求,回复的报文中包含ack、seq、fin,ack为ack+1确认收到客户端发来的信息,seq随机生成,fin置为1表需要断开连接**(FIN=1,ACK=x+1,seq=y,y由服务端随机生成)**
  • 第3次挥手:服务端发送一个FIN,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态
    • 服务端回复完客户端的断开请求后,不会马上进行TCCP连接的断开,会先确保断开前,所有传输的数据是否已经传输完毕,一旦确认传输完毕,会讲回复报文的fin置为1,并产生随机seq。(FIN=1,ACK=x+1,seq=z,z由服务端随机生成)
  • 第4次挥手:客户端收到FIN后,客户端t进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,服务端进入CLOSED状态,完成四次挥手
    • 客户端收到服务端的断开请求,回复服务端的断开请求,包含随机seq和ack,ack会在断开请求的seq基础+1,从而完成服务端请求的验证回复。(FIN=1,ACK=z+1,seq=h,h为客户端随机生成)
  • 其中:FIN标志位数置1,表示断开TCP连接。
举报

相关推荐

0 条评论