专业认证

关注公众号 jb51net

关闭
IT专业知识 > 专业认证 >

华为HCIA认证考试TCP的三次握手与四次挥手原理图文分析

我畏时光

本文讲述了华为HCIA认证考试TCP的三次握手与四次挥手。分享给大家供大家参考,具体如下:

HCIA---TCP的三次握手与四次挥手

目录

三次握手

图例

在这里插入图片描述
SYN:同步序列编号,表示请求建立连接。建立连接初始值为 1 。

ACK:表示确认号是否有效,一般值为 1 。

seq:4 个字节大小,表示序列号,用来标记数据段的顺序。

ack:4 个字节大小,表示确认号,值期望接收到下一个字节的编号,因此受到的报文段最后一个字节编号值 =1 表示确认。

过程详解

第一次握手:
客户端发送发送 SYN 包(seq = x)到服务器,并进入 SYN - SENT 状态,等待服务器确认;

第二次握手:
服务器收到 SYN 包,确认客户端的 SYN(ack = x + 1),同时自己也发送一个 SYN + ACK 包(seq = y),请求与客户端建立连接,此时服务器会进入 SYN - RECV 状态;

第三次握手:
客户端收到服务器的 SYN + ACK 包,会向服务器发送确认包 ACK(ack = y + 1),发送完毕之后客户端和服务器便会进入 ESTABLISHED (TCP 连接成功)状态,完成三次握手。

PS:大写的单词表示标志位,其值要么是 1 要么是 0 ,而小写单词表示序列号。

四次挥手

图例

在这里插入图片描述FIN:请求断开连接。

过程详解

第一次挥手:
客户端发出连接释放报文 FIN(seq = u),停止发送数据,并进入 FIN - WAIT - 1 (终止等待 1)状态。

第二次挥手:
服务器收到连接释放报文,会发送出确认报文 ACK(ack = u + 1),并且带上自己的序列号 seq = v ,此时服务器会进入 CLOSE - WAIT(关闭等待)状态。

第三次挥手:
客户端收到服务器的确认请求之后,会进入 FIN - WAIT - 2(终止等待2)状态,等待服务器发送连接释放报文。在此之前客户端属于半封闭状态,即客户端已经有没有数据给服务器发送了,但是还能接收到来自服务器的数据。
服务器发送完最后的数据,就会向客户端发送连接释放报文 FIN(ack = u + 1)以及自己的序列号 seq = w ,此时服务器进入 LAST - ACK(最后确认)状态,等待客户端的确认。

第四次挥手:
客户端收到服务器的连接释放报文后,便会发送确认报文 ACK(ack = w + 1),然后客户端进入 TIME - WITE(时间等待)状态。
此时客户端的 TCP 连接还没有被释放,必须经过 2MSL(最长报文段寿命)的时间后,才会进入 CLOSED 状态。
服务器收到客户端的确认报文便会立即进入 CLOSED 状态,结束此次的 TCP 连接。

PS:TCP 规定,即使 FIN 包不携带任何数据,也要消耗掉一个序列号。