TCP-IP详解:TCP的头部与选项

时间:2023-01-07 23:12:43

参考书籍:TCP-IP详解

本文主要介绍TCP的头部与选项


TCP的头部

TCP属于协议层的第三次,封包被称为segment,现在主要来看下TCP头部的格式,如下图

TCP-IP详解:TCP的头部与选项

一般情况下TCP Header 的长度为20个字节,没有TCP Options

由上图,需要注意的地方:

1. TCP layer 没有IP地址的概念,那个是IP 层的,所以前4个字节是源端口和目的端口

2. Sequence Number:传输数据过程中,为每一个封包分配一个序号,保证网络传输数据的顺序性

3. Acknowledgment Number:用来确认确实有收到相关封包,内容表示期望收到下一个报文的序列号,用来解决丢包的问题

4. TCP Flags:这部分主要标志数据包的属性,比如SYN,RST,FIN等,操控TCP的状态机

5. Window:滑动窗口,主要用于解决流控拥塞的问题

6. Checksum:校验值

7. Urgent Pointer:紧急指针,可以告知紧急的数据位置,需要和Flag的U flag 配合使用

8. TCP Options:一般包含在三次握手中,有Option的选项!

在tcpdump抓出来的TCP Header如下图

TCP-IP详解:TCP的头部与选项


TCP Option

每个选项的开始都是1个Byte的kind字段,说明选项的类型,Kind为0/1的时候,选项只占1个Byte,其他选项在kind字段后面还有len字节,说明总长度包括kind和len的字节。看下图

TCP-IP详解:TCP的头部与选项

从图中我们可以看到

0. 代表选项表结束

1.代表无操作

2.代表MSS

3.代表窗口扩大银子

8.代表时间戳

 其他的kind值为4/5/6/7 四个选项被称为选择ACK及回显选项,目前回显选项已经被时间戳给代替!

下面来看下在SYN上显示的TCP选项

<mss 512, nop, wscale 0, nop, nop, timestamp 146647 0>

TCP-IP详解:TCP的头部与选项

从图中可以看到:

0~3 Byte : MSS 512   

4~7 Byte : nop,wscale 0

8~11Byte:nop,nop,timestamp 

12~15 Byte:146647

16~19 Byte:0 最少4个字节对齐

在tcpdump抓出的解析是这样的:

<mss 1460, nop, wscale 8, nop, nop, sack>

TCP-IP详解:TCP的头部与选项