news 2026/5/30 22:16:03

Linux:UDP和TCP报头管理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux:UDP和TCP报头管理

Linux:UDP 和 TCP 报头管理详解

在 Linux 网络编程中,理解TCPUDP的报头(Header)结构非常重要,因为它们直接决定了数据如何被发送、接收、校验、排序、拥塞控制等。Linux 内核网络栈(net/ipv4/tcp_input.c、udp.c 等)会解析这些字段,而用户态程序(socket 编程)也需要正确处理它们。

下面分别详细说明两种协议的报头结构各字段含义字节序常用场景以及Linux 中的管理方式

1. UDP 报头(User Datagram Protocol)

UDP 是无连接、不可靠的传输层协议,报头非常精简,只有8 字节(固定长度,无选项字段)。

UDP 报头结构(总 8 字节,网络字节序 Big-Endian):

偏移(字节)字段名长度(bit)说明
0–1Source Port16发送方端口号(0 表示不关心回复)
2–3Destination Port16接收方端口号
4–5Length16UDP 数据报总长度(报头 8 字节 + 数据长度),最小 8,最大 65535
6–7Checksum16校验和(覆盖伪首部 + UDP 报头 + 数据),可为 0(不校验)

关键特点

  • 固定 8 字节,无选项字段
  • Length字段包含报头 + 数据的总长度(单位:字节)
  • Checksum是可选的(很多应用设为 0 以提高性能,但 IPv6 下必须计算)
  • 伪首部(Pseudo-header):校验和计算时会包含 IP 层源/目的 IP、协议号(17)、UDP 长度(不包含在 UDP 报头中)

Linux 中的典型管理

  • recvfrom()/sendto()时,内核自动填充/解析端口和长度
  • 校验和由内核网络栈计算(可通过setsockopt(SO_NO_CHECK)关闭)
  • 常见应用:DNS、DHCP、RTP、QUIC(部分)、游戏、视频流

2. TCP 报头(Transmission Control Protocol)

TCP 是面向连接、可靠的协议,报头至少 20 字节,最多 60 字节(带选项时)。

TCP 报头结构(网络字节序 Big-Endian):

偏移(字节)字段名长度(bit)说明
0–1Source Port16发送方端口号
2–3Destination Port16接收方端口号
4–7Sequence Number32当前段第一个字节的序号(SYN 段为初始序号 ISN)
8–11Acknowledgment Number32期望收到的下一个字节序号(ACK 标志置位时有效)
12–13Data Offset+ Reserved + Flags16前 4 bit:Data Offset(报头长度,单位 32-bit 字,最小 5=20 字节)
后 12 bit:保留 + 标志位
14–15Window Size16接收窗口大小(字节),用于流量控制
16–17Checksum16校验和(伪首部 + TCP 报头 + 数据)
18–19Urgent Pointer16紧急指针(URG 标志置位时有效,表示紧急数据的结束偏移)
20+Options(可选)0–40 字节常见:MSS、Window Scale、SACK、Timestamp、Selective ACK 等

TCP 标志位(Flags)(12 bit 中的重要 6 位):

  • URG:紧急指针有效
  • ACK:确认号有效
  • PSH:接收方尽快交付数据(push)
  • RST:重置连接(异常终止)
  • SYN:同步序号(建立连接)
  • FIN:结束连接

常见 TCP Options(Options 字段):

Kind长度名称作用
0End of Options选项结束
11NOP填充字节
24MSS最大段大小(通常 1460)
33Window Scale窗口扩大因子(移位)
42SACK Permitted允许选择性确认
5varSACK选择性确认块
810Timestamp时间戳(RTT 计算、PAWS 保护)

Linux 中的典型管理

  • 内核自动维护 Sequence/Acknowledgment、Window、Flags、Checksum
  • 用户程序通过connect()accept()send()recv()间接使用
  • 可通过setsockopt()控制:
    • TCP_NODELAY(禁用 Nagle 算法)
    • TCP_MAXSEG(设置 MSS)
    • TCP_INFO(获取连接统计,如 RTT、拥塞窗口)
    • TCP_USER_TIMEOUT
  • 抓包工具(tcpdump、Wireshark)最常看到这些字段

3. UDP vs TCP 报头对比(快速记忆)

特性UDPTCP
报头长度固定 8 字节20–60 字节
连接性无连接面向连接
序号字段有(32 bit Sequence + Acknowledgment)
确认机制有(ACK 号 + 窗口)
流量控制有(滑动窗口)
拥塞控制有(Reno、Cubic、BBR 等)
校验和可选(可为 0)强制(但可以伪造)
选项字段有(MSS、SACK、Timestamp 等)
可靠性应用层负责内核保证
Linux 典型使用DNS、DHCP、RTP、QUIC 数据报HTTP/HTTPS、SSH、FTP、数据库等

4. Linux 中查看/调试报头的方式

  • 抓包

    tcpdump -i eth0 -nnvv -s0 port53# 看 DNS(UDP)tcpdump -i any -nnvv'tcp port 80'# 看 HTTP(TCP)
  • Wireshark:最直观,可直接看到每个字段的解析

  • ss / netstat(查看连接状态):

    ss -tunlp# 查看 TCP/UDP 监听和连接
  • strace:跟踪用户程序的 socket 调用

    strace-e networkcurlexample.com
  • 内核源码:感兴趣可看net/ipv4/tcp_input.cudp_recvmsg()

总结一句话

  • UDP报头极简(8 字节),只管端口 + 长度 + 校验,适合低延迟、高吞吐、无状态场景。
  • TCP报头复杂(20+ 字节),承载了序号、确认、窗口、标志、选项,是 Linux 网络编程中最复杂的部分之一。

如果你想深入某个部分(比如 TCP 三次握手/四次挥手中的报文变化、Linux 如何实现滑动窗口、如何用 raw socket 自己构造报文等),告诉我,可以继续展开代码示例或抓包分析。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 16:25:11

实战分享:用Fish Speech 1.5制作多语言播客节目

实战分享:用Fish Speech 1.5制作多语言播客节目 你是否想过,一个人、一台电脑,就能制作一档覆盖全球听众的多语言播客?过去,这需要聘请不同语种的配音演员,投入高昂的制作成本。现在,借助Fish …

作者头像 李华
网站建设 2026/5/30 4:06:37

Qwen3-TTS语音合成:10种语言自由切换

Qwen3-TTS语音合成:10种语言自由切换 1. 引言 你有没有遇到过这样的场景:刚写完一段中文产品介绍,马上要录制成西班牙语发给海外团队;或者为日本客户准备的培训材料,需要同步生成日语配音;又或者想用德语…

作者头像 李华
网站建设 2026/5/30 15:00:01

服装设计新姿势:Nano-Banana Studio复古画报风格,打造独特视觉语言

服装设计新姿势:Nano-Banana Studio复古画报风格,打造独特视觉语言 你是否厌倦了千篇一律的服装设计展示图?想为你的设计作品注入一丝复古灵魂,让它在一众平铺直叙的图片中脱颖而出? 今天,我要为你介绍一…

作者头像 李华
网站建设 2026/5/29 2:51:26

免费体验8K画质:BEYOND REALITY Z-Image在线创作指南

免费体验8K画质:BEYOND REALITY Z-Image在线创作指南 想体验专业级的写实人像生成,却苦于复杂的本地部署和昂贵的硬件门槛?今天,我将带你体验一个能在线创作8K级高清写实人像的“神器”——BEYOND REALITY Z-Image。它基于强大的…

作者头像 李华
网站建设 2026/5/28 21:58:08

新手避坑指南:AudioLDM-S音效生成常见问题解答

新手避坑指南:AudioLDM-S音效生成常见问题解答 1. 为什么刚上手就卡在第一步?——环境与启动常见问题 1.1 启动后打不开网页?别急,先看这三点 很多新手第一次运行镜像,看到终端输出一串地址(比如 http:/…

作者头像 李华
网站建设 2026/5/28 18:28:45

零代码!用Nano-Banana轻松生成工业设计分解图

零代码!用Nano-Banana轻松生成工业设计分解图 你是否曾为设计提案绞尽脑汁,却总觉得二维渲染图不够有说服力?或者,在向客户展示产品内部结构时,只能用枯燥的零件清单和模糊的示意图? 今天,我要…

作者头像 李华