一、 三次握手
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被标记,表示这是确认请求。
客户端收到服务端请求释放连接报文,发送确认收到信息,完成四次挥手。
四次挥手情景:客户端表示,我没有要传送的数据了,断开连接吧。
服务端说:“好,但我还有要传送的数据(不断给客户端发送数据,此时客户端已经不能向服务端发送数据了,只能接受服务端发送给客户端的数据)”
服务端发送完数据后说:“我发完了,断开连接吧”
客户端收到消息表示:好,断开连接。