TCP的3次握手和4次挥手过程

建立连接(3次握手)

TCP3次握手.png

  • SYN是标志位,设置SYN=1,表示请求建立连接
  • 服务端会同时和多个客户端建立连接,所以在报文交互时,需要带上序号seq,在响应是seq+1,以此来检测报文合法性

连接过程

  • 客户端:我想建立一个连接。状态:CLOSED -> SYN SENT
  • 服务端:可以,我同意建立连接。状态:LISTEN -> SYN RCVD
  • 客户端:好的,我收到你的确认,我准备好接收数据了。状态:SYN SENT -> ESTABLISHED
  • 服务端听到客户端准备好了,也进入准备状态。状态:SYN RCVD -> ESTABLISHED

至此,TCP连接就建立完毕,开始互相发送数据了。

断开连接(4次挥手)

TCP4次挥手.png

  • FIN是标志位,设置FIN=1,表示请求断开连接

断开连接过程

  • 客户端:我数据发完了,我要断开连接了。状态:ESTABLISHED -> FIN WAIT 1
  • 服务端:好,我知道你要断开连接了。状态:ESTABLISHED -> CLOSE WAIT

此时,客户端确认服务端已经知道要断开了。但是,服务端可能还有数据没发送完,所以客户端还能接收数据但不会发送数据。状态:FIN WAIT 1 -> FIN WAIT 2

过了一会,服务端数据发完了。
* 服务端:我准备好了,断开连接吧。状态:CLOSE WAIT -> LAST ACK
* 客户端:好,那我断开连接了,再见。状态:FIN WAIT 2 -> TIME WAIT
* 服务端:客户端已经断开了,我也断开吧。状态:LAST ACK -> CLOSED
* 客户端等待2个MSL时间以后断开连接,状态:TIME WAIT -> CLOSED

TCP握手挥手的状态

状态描述
CLOSED关闭状态,没有连接活动或正在进行
LISTEN监听状态,服务器正在等待连接进入
SYN SENT已经发出连接请求,等待确认
SYN RCVD收到一个连接请求,尚未确认
ESTABLISHED连接建立,正常数据传输状态
FIN WAIT 1(主动关闭)已经发送关闭请求,等待确认
FIN WAIT 2(主动关闭)收到对方关闭确认,等待对方关闭请求
TIME WAIT完成双向关闭,等待所有分组死掉
CLOSE WAIT(被动关闭)收到对方关闭请求,已经确认
LAST ACK(被动关闭)等待最后一个关闭确认,并等待所有分组死掉
CLOSING双方同时尝试关闭,等待对方确认
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值