2 baidu 27330673 baidu_27330673 于 2016.05.02 13:24 提问

关于tcp首部数据偏移的问题

书上说“由于4位二进制数能够表示的最大十进制数是15,因此数据偏移的最大值是60字节,这也是TCP首部的最大长度(即选项长度不超过40字节)”,请问60是怎么来的?有人说15x(32/8)=60,为什么要乘以4呢?那个因此到底是什么意思?

1个回答

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.05.02 13:35
已采纳

占4比特,表示数据开始的地方离TCP段的起始处有多远。实际上就是TCP段首部的长度。由于首部长度不固定,因此数据偏移字段是必要的。
数据偏移以32位为长度单位,也就是4个字节,因此TCP首部的最大长度是60个字节。即偏移最大为15个长度单位=15*32位=15*4字节。
参考文章:http://www.cnblogs.com/zhuyf87/archive/2012/12/29/2838937.html

wojiushiwo945you
wojiushiwo945you 回复baidu_27330673: 是啊。偏移只是个数值,它是有单位的。TCP协议是以32比特为单位的。
大约 2 年之前 回复
baidu_27330673
baidu_27330673 所以才要乘以32,谢了!
大约 2 年之前 回复
baidu_27330673
baidu_27330673 哦哦哦,我明白了,因为它的单位就是4个字节是吧?
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
TCP首部信息
一、TCP的连接 TCP的连接端点叫做套接字或插口。根据TFC793的定义:端口号拼接到IP地址的端点构成了套接字。因此,套接字的表示方法是在点分十进制的IP地址之后写上端口号,中间用冒号或逗号隔开。例如,若IP地址是192.2.4.5而端口号是80,那么得到的套接字就是(192.3.4.5:80)。总之,我们有 套接字socket={IP地址:端口号} 每一条TCP连接唯一地被通信两端的两
TCP报文格局详解
TCP和谈只定义了一种报文格局      建立、拆除连接、传输数据应用同样的报文  TCP报文格局 TCP报文段首部(20个字节)  源端口和目标端口:各占2个字节,16比特的端标语加上32比特的IP地址,共同构成相当于传输层办事接见点的地址,即“插口”;  这些端口可用来将若干高层和谈向下复用; 序号字段和确认序号字段:  序号:占4个字节,是本报文
TCP报文段头部格式
TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段。一个TCP报文段分为首部和数据两个部分。TCP报文段首部的前20个字节是固定的,后面有4n字节是根据需要增加的选项。TCP首部的最小长度是20字节,最大长度是60字节。 下面介绍各个字段: 源端口和目的端口:各占2个字节。 序号:占4字节。序号范围是0~2^32-1。TCP是面向字节流的,TCP连接中传送的字节流中的每个字节都按顺序编
TCP 报文段首部格式
源端口和目的端口:各占2个字节。序号:占4字节。序号范围是0~2^32-1。TCP是面向字节流的,TCP连接中传送的字节流中的每个字节都按顺序编号。整个要传送的字节流的起始序号必须要在连接建立时设置。首部中的序号字段值指的是本报文段所发送的数据的第一个字节的序号。确认号:4个字节,是期望收到对方下一个报文段的第一个数据字节的序号。  若确认号=N,则表明:到序号N-1为止的所有数据都已正确收到。
TCP、IP、ARP、ICMP首部分析
之前整理了一些STM32以太网应用的知识,记在笔记本上,现在把它整理到博客中,希望能对大家学习有帮助。最近新发现的好博文,分享出来,大家一起看。通俗大白话来理解TCP协议的三次握手和四次分手:https://github.com/jawil/blog/issues/14我自己提炼的关于《HTTP权威指南》每章的知识点总结!:https://github.com/woai30231/httpTCP通...
ip/tcp 首部长度字段
iphdr->ihl:ip的首部长度; tcphdr->doff:TCP的首部长度; iiphdr结构详解: include struct iphdr { #if defined(__LITTLE_ENDIAN_BITFIELD) __u8    ihl:4, version:4; #elif defined (__BIG_ENDIAN_BITFIELD) __u8   
22、TCP 报文的格式,字段的意义
TCP报文段分为首部和数据两部分。      TCP报文段首部的前20个字节是固定的,后面有4N字节是根据需要而增加的选项(N是整数)。因此TCP首部的最小长度是20字节。 首部固定部分各字段的意义如下: 源端口和目的端口:各占2个字节,分别写入源端口号和目的端口号。序号:占4个字节。序号使用mod运算。TCP是面向字节流的,在一个TCP连接中传送的字节流中的每一个字
为什么TCP头部没有数据长度信息而UDP有
先让我们看看IP,TCP,UDP的头部结构1. IPv4 头部2. TCP和UDP头部 可以看到IP的头部包换数据的长度,TCP的头部不包含数据长度,UDP的头部则包含。从信息冗余的角度来看,UDP的长度信息是不需要的。因为IPv4的头部已经包含了数据的长度信息,这里的数据如果当前的通讯协议是UDP,那么这个长度就包含了UDP的头部和UDP的数据,因为UDP的头部长度固定为8字节,那么这样就很容易...
TCP报文段首部详解
TCP虽然是面向字节流的,但是tcp传送的数据单元却是报文段,一个报文段分为首部和数据两部分,几乎TCP所有功能都从首部来体现,下面我们来详细的剖析下它的首部. (1):源端口与目标端口:分别写入源端口号和目标端口号. (2):32位序列号:也就是我们tcp三次握手中的seq,表示的是我们tcp数据段发送的第一个字节的序号,范围[0,2^32 - 1],例如,我们的seq = 201,携带的
TCP首部
TCP的数据被封装在一个IP数据报中: TCP首部如下图所示: 下面以此讲解这些字段的含义。 16位源端口号、16位目的端口号。用于寻找发送端和接收端应用进程。一个IP地址(IP首部)加一个端口号(TCP首部)称为一个套接字,一对套接字可唯一确定一个TCP连接。 32位序号。用来标识数据字节流中的字节,它的值表示该报文段中第一个数据字