为什么TCP头部没有数据长度信息而UDP有

article/2025/4/25 21:12:41

先让我们看看IP,TCP,UDP的头部结构

1. IPv4 头部

ipv4_header

2. TCP和UDP头部 
TCP_UDP_headers

可以看到IP的头部包换数据的长度,TCP的头部不包含数据长度,UDP的头部则包含。

从信息冗余的角度来看,UDP的长度信息是不需要的。

因为IPv4的头部已经包含了数据的长度信息,这里的数据如果当前的通讯协议是UDP,那么这个长度就包含了UDP的头部和UDP的数据,因为UDP的头部长度固定为8字节,那么这样就很容易的算出UDP的数据的长度了。

根据 《TCP/IP Illustrated Volume 1》,这个信息也是冗余的。这是 Stevens关于这个问题的描述,关于Stevens是谁,为什么要引用他说的话,是因为他写了

TCP/IP Illustrated的1,2,3卷,而这本书可以说是解析TCP/IP协议的圣经。

那又是什么原因致使UDP的头部包含了这个冗余信息呢?

Stevens在卷2中提到很有可能是为了校验和校验,确切的说是32对齐,因为如果没有这这部分信息,那么UDP的头部就不是32对齐的。

在TCP/IP协议族中,所谓校验和就是16bit的和。


http://chatgpt.dhexx.cn/article/DqCa9pTj.shtml

相关文章

TCP头部格式和封装

文章目录 12.3 TCP头部和封装12.3.1 端口号12.3.2 序列号12.3.3 头部长度12.3.4 相关控制位12.3.5 窗口大小12.3.6 校验和12.3.7 选项字段 12.3 TCP头部和封装 ​ 下图显示了TCP在IP数据报中的封装: ​ TCP头部紧跟着IP头部或者IPv6扩展头部,经常是20字…

封装与解封装(TCP头部格式)

封装和解封装: 应用层---HTTP --超文本传输协议--- TCP 80 HTTPS --- TCP 443 FTP ---文件传输协议---TCP 20/21 ITFTP ---简单文件传输协议--- UDP 69 TELNET---远程控制协议---TCP23 SSH ---TCP 22 DNS---域名解析协议---UDP和TCP 53 HDCP---动态主机配置…

TCP头部信息与UDP头部信息

TCP头部信息 源端口号以及目的端口号: 各占2个字节,端口是传输层和应用层的服务接口,用于寻找发送端和接收端的进程,通过这两个端口号和IP头部的ip发送和接收号,可以唯一的确定一个连接。    一般来讲,通…

TCP协议--TCP头部

《Linux高性能服务器编程》阅读笔记: 1. TCP协议的概念 TCP和UDP是传输层的两个主要协议。TCP相对于UDP来说,是面向连接、字节流和可靠传输。 (1) 面向连接   使用TCP通信的双方必须先建立起连接,然后才能开始数据的读写。建立连接后双方…

#TCP/IP# TCP头部选项功能详解

简单回顾下TCP报文格式 1)TCP报文:由 TCP首部 和 TCP数据 组成。2)TCP首部:由 20字节的固定长度 和 可变长字段(选项和填充)组成。3)TCP首部总长度:由TCP头中的“数据偏移”字段决定…

TCP头部格式的了解

tcp头部格式如下图所示: 1.源端口号,16位,发送方的端口号。 2.目标端口号,16位,发送方的目标端口号。 3. 32为序列号,sequence number,保证网络传输数据的顺序性。 4. 32位确认号,acknowledgment num…

TCP头部结构信息

TCP 头部结构信息 tcp头部信息出现在每个tcp报文段中,用于指定通信的源端端口,目的端口,管理tcp连接等。tcp头部结构如下图所示: tcp头部结构 1、16位端口号:告知主机该报文段来自哪里(源端口)以及传给…

计算机网络—IP头部结构,TCP头部结构,UDP头部结构

文章目录 IP头部结构TCP头部结构UDP头部结构TCP和UDP的区别MAC地址、IP地址、端口号数据传输过程图解 IP头部结构 IP头部结构图如下 注意:一行32bit为4字节,扩展的时候总是一行一行的拓展,也就是4个字节4个字节的扩展 版本号(Ve…

TCP的头部格式,详细信息都在这

重要的TCP头部格式来啦: 序列号:在建立连接时,由计算机生成的随机数作为初始值,通过SYN包传给接收方主机,每发送一次数据,就会累加一次这个数据字节数的大小,用来解决网络包乱序问题。确认应答号…

tcp 头部格式是怎样的?都有哪些字段?TCP 与 UDP 的区别

传输控制协议(Transmission Control Protocol,TCP)是一种传输层协议。TCP使数据包从源到目的地的传输更加顺畅。它是一种面向连接的端到端协议。每个数据包由TCP包裹在一个报头中,该报头由10个强制字段共20个字节和一个0到40 字节的可选数据字段组成 1…

【网络】TCP报文头部

目录 源端口、目的端口 序号()Seq 确认号 数据偏移(头部长度) URG ACK PSH RST SYN FIN 窗口大小 校验和 紧急指针 选项部分 最大报文段长度 MSS 窗口扩大 时间戳 最大报文段长度(MSS) 窗口…

TCP头部结构详解

tcp头部信息出现在每个tcp报文段中,用于指定通信的源端端口,目的端口,管理tcp连接等。tcp头部结构如下图所示: tcp头部结构 1、16位端口号:告知主机该报文段来自哪里(源端口)以及传给哪个上层协议或应用程…

TCP头部详解

1. TCP的定义 TCP提供一种面向连接的、可靠的字节流服务。 面向连接: 两个使用TCP的应用(通常是一个客户和一个服务)在彼此交换数据之前必须建立一个TCP连接。 TCP提供可靠性的方式: 1)应用数据被分割成TCP认为最适合发送的数据块; 2)当…

TCP协议详解(一):TCP头部结构

TCP字节流服务 网络传输层中,TCP是面向连接、可靠的、字节流传输。 TCP协议通信双方必须先建立连接,通信双方必须为该连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。TCP是全双工的,即双方的数据读写可通过一个连接…

Python 变量的命名规范

引言 混乱或错误的命名不仅让我们对代码难以理解,更糟糕的是,会误导我们的思维,导致对代码的理解完全错误。相反,良好的命名,则可以让我们的代码非常容易读懂,也能向读者正确表达事物以及逻辑的本质&#x…

matlab中变量命名规则,Matlab变量及命名规则

Matlab变量及命名规则 Matlab变量及命名规则 Matlab中所有的变量都是用矩阵形式来表示的,即所有的变量都表示一个矩阵或者一个向量。其命名规则如下: (1)变量名对大小写敏感; (2)变量名的第一个字符必须为英文字母,其长度不能超过…

matlab变量名的命名规则

简述Java中变量的命名的规则? 首字母只能是字母下划线‘_’‘$’符号(变量名首字母不能是数字!!!) 其余部分任意多的:数字字母下划线‘_’‘$’符号 Java命名规则 局部变量和成员变量 我说我知道的约定俗成&#xff1a…

vb变量名的命名规则

求十分详细的的java变量命名规范 您好,提问者: 在java编程中命名规范是统一的,而且老外发明的东西是没有中文的,严格区分大小写。 规范:以字母、下划线、$符号组成,不能以数字开头,声明类跟变量…

python变量名有哪些_python变量名命名规则

原博文 2020-03-21 11:07 − 一.python变量名命名规则: 1.变量名通常由字母,数字,下划线组成; 2.数字不能作为变量名开头; 3.不能以python中的关键字命名; 4.变量名要有意义; 5.不要用汉字和拼音去命名; 6.变量名要区分大小写; 7.推荐使用驼峰型(GuessAge或guessAge)和…

Tips:一个字符占几个字节?

《JAVA啃骨头》之 Javascript 章节 Tips:一个字符占几个字节? ASCII码:   一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,…