如果tcp的首部不带任何数据信息的话,通常是20个字节大小。
每一个tcp包头部都包含以上的信息,我们详细的来了解一下
16位源端口号和16位目的端口号:用来寻找发送端和接收端应用程序,这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP链接。
32位序号:序号用来标识从tcp发端向tcp收端发送的数据字节流,它表示在这个报文段中的第一个数据字节。如果将字节流看成是在两个应用程序间单向流动,则tcp用序号对每一个字节进行计数。序号是32bit的无符号数,序号达到2^32-1后,又从0开始。
32位确认号:既然每一个传输的字节都被计数,确认序号包含发送确认的一段所期望接收的下一个序号,因此,确认序号应该是上次成功接收到数据字节序号+1。注意:只有ACK标志为1时,确认号才有效。
6个标志比特,它们中多个可被同时置为1
URG:紧急指针
ACK:确认序号有效
RST:重建连接
PSH:接收方因该尽快吧这个报文段交给应用层
SYN:同步序列号发起一个链接
FIN:发送端完成发送任务
16位检验和:这是一个强制性的字段,一定是发端计算和存储,并由收端进行验证。tcp数据传输将保持它首部和数据的检验和,这是一个端到端的检验和,目的是监测数据在传输过程中的任何变化。如果收到段的检验和有差错,tcp将丢弃这个报文段和不确认收到词报文段,希望发送端能够超时重传。
16位紧急指针:只有当URG标志置为1的时候紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。tcp的紧急方式是发送端向另一端发送紧急数据的一种方式。
选项:常见的可选字段是最长报文大小,又称MSS。每个链接方通常都是在通信的第一个报文段(第一个syn)中指明这个选项。它指明本段所能接收的最大长度报文段。