关于TCP的三次握手

1.几个重要缩写的解释

ACK:acknowledgement,表示响应

SYN:synchnorous,表示请求简历连接

FIN:Finished,表示结束连接

PSH:Push,表示有数据传输

RST:Rest,表示连接重置

URG:urgent,表示紧急

顺序号:sequence number

确认号:acknowledgement number 

2.三次握手过程


关于TCP的三次握手_第1张图片

第一次握手:客户端的TCP首先向服务器端的TCP发送一个特殊的TCP报文段。该报文段中不包含应用层数据。但是在报文段首部中的一个标志位SYN=1,该报文被称为SYN报文段。另外,客户会随机地选择一个初始序列号(client_isn),并将此编号置于SYN报文段中。该报文段被封装成一个IP数据报中发送给服务器。SYN报文段:SYN=1,seq=client_isn

第二次握手:一旦SYN报文段的IP数据报到达服务器主机,服务器会提取SYN报文段,为该TCP连接分配TCP缓存和变量,并向该客户TCP发送允许连接的报文段。该报文段也不包含应用层数据。包含三个重要的信息。首先SYN比特被置位1,其次,该TCP报文段首部的确认信息被置位client_isn+1,最后,服务器选择自己的初始序号(server_isn)。SYNACK报文段:SYN=1,ack=client_isn+1,seq=server_isn

第三次握手:在收到SYNACK报文段后,客户也要给该连接分配缓存和变量。同时发送报文段。该报文段格式:SYN=0,seq=client_isn+1,ack=server_isn+1.

3.四次挥手过程(断开连接)


关于TCP的三次握手_第2张图片

client和server都可以断开连接。下面以客户断开连接为例。

第一次:客户端发送TCP报文段:FIN=1

第二次:服务端返回一个确认报文段:ACK

第三次:服务端发送自己的终止报文段,FIN=1

第四次:客户对服务器报文段进行确认,ACK

4.客户TCP经历的典型的TCP状态序列


关于TCP的三次握手_第3张图片

客户TCP开始时处于 CLOSED (关闭状态)。客户的应用程序发起一个新的TCP连接,发送一个SYN报文段。发送完报文段后,客户进入了 SYN_SENT 状态(等待来自服务器TCP的对客户所发报文段进行确认且SYN比特被置位1的一个报文段)。收到这样一个报文段后,客户进入 ESTABLISHED(已建立)状态(TCP客户就能发送和接受包含有效载荷数据) 。如果客户端需要断开连接。客户端发送FIN=1报文段,并进入 FIN_WAIT_1状态 (等待一个来自服务端确认的ACK=1)。当他收到确认后,客户进入 FIN_WAIT_2状态 (等待来自服务器端的FIN=1报文),当收到服务器端报文后,客户进入 TIME_WAIT状态。假定ACK丢失时,TIME_WAIT状态使TCP客户重新上传最后确认的报文。

5.服务端状态序列


关于TCP的三次握手_第4张图片

你可能感兴趣的:(关于TCP的三次握手)