TCP选项(持续更新)

很多初学者在学习TCP协议是比较关注的是TCP头部中的各字段,往往会忽略TCP选项。本文将梳理下TCP选项中个字段的含义。

1、最大段大小MSS(Maxitum Segment Size)
种类号2,长度4(Bytes)
最大段大小是指TCP协议所允许的从对方接收到的最大报文段,因此这也是通信双方在数据交换过程中能够使用的最大报文段。
这个值是在建立tcp连接的三次握手中双端协商得到的。p1发送SYN包来请求建立连接,在这个包中,mss选项字段会填充自己一端能接收的mss值,典型值为1460,p2在回应的SYN+ACK包中的mss选项中也会填充自己的mss值(一般也为1460),双方会取两个mss中的较小者作为本次通信连接的mss。下面简单看下典型值1460是怎么来的。
首先介绍MTU(Maxitum Transmission Unit)最大传输单元。这个值和链路层协议(如以太网)有着密切联系。以太网EthernetII可以传输的最大数据帧是1518B,而以太网的帧头(包含目的MAC地址6B,源MAC地址6B,域2B)14个字节+帧尾的用于CRC校验的4个字节一共18B,这样算下来可供上层协议的传输数据的大小就成了1518-18=1500字节。这个值就是MTU。遗憾的是网络传输中的很多设备各自有不同的MTU,不过幸运的是他们基本都大于等于1500。
上层协议比较关心MTU的值,因为一旦它们传下来的数据包大小超过了MTU则会被链路层丢弃。所以在网络层中IP协议一般会更具需求将数据进行分片。IP字段中有个DF(Donot Fragment)字段,它被值位表明这个数据不能被分片,当这个数据包在网络传输中遇到MTU小于该包大小的时候,网络设备就会丢弃这个包,并向发送者传输一个错误信息。
上面讲了MTU的一些内容,下面看1460是怎么来的。
1500减去IP包头20减去TCP数据包头20就是1460了,就这么简单!当然在IPv6中IP包头是40字节,相应的这个值就是1440了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值