引入
运输层连接有三个阶段
- 连接建立(三次握手)
- 数据传送
- 连接释放(四次挥手)
三次握手原理
1.图解三次握手建立 TCP 连接的各状态
2.建立连接过程分析
(1)第一次握手
A 向 B 发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x。
(2)第二次握手
B 收到连接请求报文段后,同意A的请求,发回确认,B 在确认报文段中设置SYN = 1,ACK = 1,确认号ack = x+1,自己选择的序号 seq = y
(3)第三次握手
A收到此报文段后向 B 给出确认,设置 ACK = 1,确认号 ack = y +1,然后 A 通知上层应用进程,连接已经建立。
3.建立连接的状态转换分析
(1)第一次握手
-
客户端:CLOSED–>SYN-SENT
客户端之前处于关闭状态,需要传送数据时,向服务端发送建立连接请求,转换为SYN-SENT,表示建立连接请求报文段已发送。 -
服务端:CLOSED–>LISTEN
服务端之前处于关闭状态,由于服务端需要接收客户端发来的数据,所以转换为LISTEN状态,表示处于监听状态
(2)第二次握手
-
客户端:SYN-SENT–>ESTABLISHED
客户端接收到了服务端的请求报文,然后转换为ESTABLISHED状态,表示连接已建立。 -
服务端:LISTEN–>SYN-RCVD
服务端接收到了客户端的请求报文,也给客户端发送请求连接报文,之后等待客户端确认,转换为SYN-RCVD,表示已接收到客户端的请求。
(3)第三次握手
-
客户端:SYN-SENT–>ESTABLISHED
给服务端发送确认信息,然后转换为ESTABLISHED状态,表示连接已建立。 -
服务端:SYN-RCVD–>ESTABLISHED
接收到了客户端发来的确认之后,就转换状态为ESTABLISHED,表示已经建立连接。