您的位置:首页 > 理论基础 > 计算机网络

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

2016-09-03 16:37 218 查看
参考书籍:TCP-IP详解

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

TCP的头部

TCP属于协议层的第三次,封包被称为segment,现在主要来看下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 Option

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



从图中我们可以看到

0. 代表选项表结束

1.代表无操作

2.代表MSS

3.代表窗口扩大银子

8.代表时间戳

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

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

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



从图中可以看到:

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>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LINUX network socket 网络 tcp