前提了解:
如上图所示,TCP头部主要包括以下信息:
1、源端口号 (16位):数据包的发送方端口
2、目标端口号 (16位):数据包的接收方端口
3、序列号 seq(32位):在请求连接的时候操作系统会分配一个32位的数作为序列号,用来标识一个数据包在发送中的位置。
TCP为应用层数据中的每个字节都分配了一个seq号,TCP就是利用seq来实现的可靠传输。
TCP中的seq指的是TCP数据包中应用层数据的第一个字节对应的序列号。
4、确认应答号 ack(32位):表示发送端中seq在ack之前的所有字节都已经被接收方接收了,接收方下一个希望接收的seq是ack。
5、 4个主要标识位
(1)SYN
SYN = 1,代表这个数据包是客户端和服务器之间连接数据包。
(2)ACK
ACK = 1,代表这个数据包是一个答复包,用于确认收到的数据包。
(3)FIN
FIN = 1,说明这是一个单方面结束连接的数据包
(4)RST
RST = 1,说明TCP连接出现异常强制断开连接。