news 2026/6/10 3:21:37

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/6/5 9:36:25

Llama-3.2-3B效果实测:Ollama部署后的惊艳表现

Llama-3.2-3B效果实测:Ollama部署后的惊艳表现 1. 开篇:小身材大能量的语言模型 最近Meta发布的Llama-3.2-3B模型让我眼前一亮——这个只有30亿参数的小模型,在文本生成任务上的表现完全不输给一些大模型。通过Ollama部署后,我进…

作者头像 李华
网站建设 2026/6/5 6:04:49

零基础入门:用Qwen3-ASR-0.6B搭建本地语音识别工具

零基础入门:用Qwen3-ASR-0.6B搭建本地语音识别工具 1. 为什么你需要一个本地语音识别工具? 你是否遇到过这些场景: 开会录音后,手动整理会议纪要花了整整一小时;想把采访音频转成文字,却担心上传到云端泄…

作者头像 李华
网站建设 2026/6/9 8:36:39

Qwen3-ForcedAligner-0.6B部署指南:纯本地运行的语音识别解决方案

Qwen3-ForcedAligner-0.6B部署指南:纯本地运行的语音识别解决方案 1. 引言 你是否遇到过这些场景? 会议录音转文字耗时半小时,还要手动对齐时间戳;剪辑视频时反复拖动音频波形找说话起止点;为播客制作双语字幕&#…

作者头像 李华
网站建设 2026/6/9 18:40:58

Qwen3-ASR-0.6B入门:从安装到语音转写全流程

Qwen3-ASR-0.6B入门:从安装到语音转写全流程 这是一款真正能“装进笔记本电脑”的语音识别工具——不用联网、不传音频、不依赖云服务,点开浏览器就能把会议录音、课堂笔记、采访素材变成可编辑的文字。它不是概念演示,而是你明天就能用上的…

作者头像 李华
网站建设 2026/6/9 18:39:49

DeerFlow WebUI体验:可视化操作研究助手

DeerFlow WebUI体验:可视化操作研究助手 如果你正在寻找一个能帮你做深度研究、自动生成报告、甚至制作播客的AI助手,那么DeerFlow绝对值得你花时间了解一下。今天,我们不谈复杂的架构和代码,就从一个普通用户的角度,…

作者头像 李华
网站建设 2026/6/9 22:16:19

美胸-年美-造相Z-Turbo实用教程:打造个性化美胸角色

美胸-年美-造相Z-Turbo实用教程:打造个性化美胸角色 想不想亲手创造出专属于你的、独一无二的二次元美胸角色?无论是为你的故事寻找灵感,还是为你的游戏设计人物,又或者只是想体验一下AI绘画的乐趣,今天要介绍的这个工…

作者头像 李华