<>一、 三次握手

<>1. 第一次握手

源端口Src port:65387 目标端口 Dst port:443
SYN=1,标志位置为1,表示建立连接,连接成功后将会再次被置0
Seq:0 随机序列号
ack:0 初始建立连接为0,表示当前没有收到数据

客户端通过TCP协议向服务器发送连接请求报文,其首部中的SYN被置1

<>2. 第二次握手

SYN:1 表示请求建立连接
Seq:0 序列号
ack:1 随机序列号+1

服务器收到请求报文段,标志位ACK=1,表示同意,发回确认。

<>3.第三次握手

标志位ACK,表示已经收到记录
Seq:1
ack:1 随机序列号+1
客户端收到报文段后,向服务器给出确认,通知上层应用连接已建立。

三次握手情景:客户端发送消息,表示我可以给你发送数据吗?
服务器收到消息表示:可以,但我可能也要向你发送数据。
客户端收到消息表示:好,开始传送数据吧。

<>二、 四次挥手

由于TCP连接是全双工的,每个方向都要单独关闭。

<>1. 第一次挥手

序列号seq:9521
确认号ack:645009,
Fin:1 表示我是一个请求释放连接的报文
ACK和FIN被标记,ACK被标记也是对上一个报文数据的确认

数据传输后,通信的双方都可以释放连接,客户端向服务端发送释放连接请求,并停止再发送数据,等待对方确认。

<>2. 第二次挥手

ACK被标记,表示这是一个确认报文
序列号 seq:645009
确认号 ack:9522 序列号+1

服务端收到释放连接信息,然后发送确认收到报文。

<>3.第三次挥手

序列号 seq:645009
确认号 ack:9522
fin和ack被标记,服务器表示我也要释放连接了

服务端向客户端发送fin报文,表示释放连接,用来关闭服务端向客户端的数据传送。

<>4. 第四次挥手

客户端发送确认报文,表示已经收到服务端释放连接的请求
序列号 seq:9522
确认号 ack:645010 序列号+1
只有ack被标记,表示这是确认请求。

客户端收到服务端请求释放连接报文,发送确认收到信息,完成四次挥手。

四次挥手情景:客户端表示,我没有要传送的数据了,断开连接吧。
服务端说:“好,但我还有要传送的数据(不断给客户端发送数据,此时客户端已经不能向服务端发送数据了,只能接受服务端发送给客户端的数据)”
服务端发送完数据后说:“我发完了,断开连接吧”
客户端收到消息表示:好,断开连接。

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信