一、概述
TCP即传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。它的可靠性就是在于,发送数据之前,需要先进行连接。建立链接与断开链接的过程,我们通俗的称为“三次握手”与“四次挥手”。
二、TCP报文格式及解释
1.结构
TCP协议的报文格式:它是由两个部分组成的:一部分是TCP首部(头部)+ TCP数据部分(我们需要传输的东西)。
TCP首部也是有两个部分组成:一个部分是20个字节的固定首部,一个是选项部分。
TCP首部结构如下图:
2.释义
序号即SEQ
保留后面的都是标识,ACK为标识,ack为确认号(注意区分大小写)
URG:紧急标志位,说明紧急指针有效;
ACK:确认标志位,多数情况下空,说明确认序号有效;
PSH:push标志位,置位时表示接收方应立即请求将报文交给应用层;
RST:复位标志,用于重建一个已经混乱的连接;
SYN:同步标志,该标志仅在三次握手建立TCP连接时有效;
FIN:结束标志,带该标志位的数据包用于结束一个TCP会话。
三、建立链接的“三次握手”
客户端发送报文:SYN = 1,SEQ = x
服务器回应报文:SYN = 1, ACK =1, SEQ = y, ack = x+1
客户端发送报文:ACK =1 ,SEQ = x + 1,ack=y+1
四、断开连接的“四次挥手”
客户端发送报文:FIN = 1,SEQ =a,
服务器响应报文:ACK = 1,SEQ = b, ack = a+1
服务器发送报文:FIN = 1,ACK = 1,SEQ = c,ack = a + 1
客户端响应报文:ACK = 1, SEQ = a + 1,ack =c +1