news 2026/4/18 8:52:14

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/4/16 10:37:21

Banana Vision Studio应用案例:快速生成时尚单品拆解图

Banana Vision Studio应用案例:快速生成时尚单品拆解图 0. 学习目标 你是否遇到过这些情况: 设计师需要为新款运动鞋制作结构说明图,但手绘耗时太久;产品经理要向工厂提供清晰的服装部件分解图,却苦于缺乏专业制图能…

作者头像 李华
网站建设 2026/4/18 3:42:08

新手必看:Z-Image-Turbo孙珍妮模型使用全攻略

新手必看:Z-Image-Turbo孙珍妮模型使用全攻略 想用AI生成孙珍妮的专属图片,却不知道从何下手?今天,我就带你从零开始,手把手搞定【Z-Image-Turbo】依然似故人_孙珍妮这个镜像。整个过程非常简单,你不需要懂…

作者头像 李华
网站建设 2026/4/12 17:30:08

PowerPaint-V1问题解决:常见错误排查与优化建议

PowerPaint-V1问题解决:常见错误排查与优化建议 如果你正在使用PowerPaint-V1这个强大的图像修复工具,可能会遇到一些“小麻烦”。别担心,这很正常。任何强大的工具在初次使用或深度使用时,都可能遇到环境配置、参数设置或理解偏…

作者头像 李华
网站建设 2026/4/18 8:39:15

零基础玩转圣光艺苑:用AI生成文艺复兴风格艺术品教程

零基础玩转圣光艺苑:用AI生成文艺复兴风格艺术品教程 你是否曾站在美术馆里,凝视一幅拉斐尔的圣母像,被那柔和的明暗过渡、庄重的构图与温润的矿物颜料质感深深打动?又是否幻想过——不用调色盘、不握画笔,只需几句话…

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

StructBERT中文情感分析:5分钟搭建轻量级WebUI,小白也能用

StructBERT中文情感分析:5分钟搭建轻量级WebUI,小白也能用 1. 为什么你需要一个“开箱即用”的中文情感分析工具? 你有没有遇到过这些场景: 电商运营要快速看懂上千条商品评论是夸还是骂?客服主管想一眼看出今天客户…

作者头像 李华
网站建设 2026/4/15 12:34:37

通义千问3-Reranker-0.6B:医疗文献检索实战

通义千问3-Reranker-0.6B:医疗文献检索实战 在医学研究和临床实践中,快速、准确地从海量文献中定位关键证据,是科研人员、医生和药企研发团队每天面临的现实挑战。一篇新发表的临床试验报告、一份更新的诊疗指南、一项突破性的机制研究——这…

作者头像 李华