TCP报文头部如下图所示:
16位端口号:告知主机该报文来自哪里以及来自哪个上层协议或应用程序的。
32位序号:一次TCP通信过程中一个传输方向上字节流的编号。如果A向B发报文,报文中数据初始值会产生一个随机值ISN(初始序值号),如果A前一次发送了1024个字节,那么本次发送报文段的序号为ISN+1024
32位确认号:用于表示接收方对发送方的回应。数值为收到发送方发来报文的序号值+1。如A对B发送报文段序号值为ISN+024,那么B回应A时,确认号为1024+ISN+1;
4位头部长度:表示该TCP头部所占多少个4字节。由于4位2进制能表示0-15,所以TCP头部长度最长为4*15=60字节。
6位保留用于后续版本长度扩充
6位标志位:
URG标志:如果这一位时1,表示紧急指针有效
ACK标志:如果为1,表示该报文为确认报文
PSH标志:表示提醒接收缓冲区已满,如果应用程序不加以处理,它们将一直在接收缓冲区中
RST标志:表示要求对方重新建立连接。带RST标记的报文段称为复位报文段
SYN标记:表示请求建立连接。带此标记为同步报文段。
FIN标志:表示通知对象本端已关闭。带此标记的报文段为结束报文段。
16位窗口大小:用于TCP流量控制。告诉对方本端还能容纳多少字节数据。
16位校验和:用于CRC循环冗余算法检验数据在传输过程中是否损坏。
16位应急指针:用于发送紧急数据。