news 2026/6/10 20:49:03

网络协议到底长什么样?从二进制视角看 TCP/IP

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
网络协议到底长什么样?从二进制视角看 TCP/IP

各类资料学习下载合集
链接:https://pan.quark.cn/s/7c8c391011eb

在网络世界里,“协议”(Protocol)的本质就是一份通信双方共同遵守的约定。这就好比两个人对话,必须约定好都讲普通话,才能互相理解。

在计算机中,这份“约定”体现为数据在内存中的排列格式。发送方把数据按格式“打包”,接收方按格式“拆包”。如果格式对不上(比如你发了 TCP 包,我却按 UDP 规则去读),通信就会失败。

一、 协议的“样貌”:C 语言结构体

笔记中提到了 TCP、UDP 和 IP 的报文结构,这些结构在操作系统内核源码中,通常是用 C 语言的struct(结构体)来定义的。让我们把笔记中的文字描述转化为代码:

1. TCP 报头 (20 字节 + 选项)

TCP 是面向连接的可靠传输协议。它的头部非常复杂,因为它要管的事情很多(排序、确认、流控)。

// Linux 内核风格的 TCP 头部定义示意structtcp_header{unsignedshortsource_port;// 16位源端口unsignedshortdest_port;// 16位目的端口unsignedintseq_num;// 32位序号unsignedintack_num;// 32位确认序号// 4位首部长度 + 保留位 + 标志位 (共16位)// 这里用位域表示unsignedshortheader_len:4,reserved:6,flags:6;unsignedshortwindow;// 16位窗口大小unsignedshortchecksum;// 16位校验和unsignedshorturg_ptr;// 16位紧急指针};

2. UDP 报头 (仅 8 字节)

UDP 是无连接的,主打一个“快”字。它的头部极其精简,只有 4 个字段。

structudp_header{unsignedshortsource_port;// 16位源端口unsignedshortdest_port;// 16位目的端口unsignedshortlength;// 16位长度 (含头部+数据)unsignedshortchecksum;// 16位校验和};

3. IP 报头 (20 字节 + 选项)

IP 负责寻址和路由。它包含了源 IP 和目的 IP,就像快递单上的发件人和收件人。

structip_header{unsignedcharver_ihl;// 4位版本 + 4位首部长度unsignedchartos;// 8位服务类型unsignedshorttotal_len
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 12:52:53

汇编语言全接触-72.Win32程序的命令行参数

在 Dos 汇编中,psp 段的 0080H 开始的位置就是命令行参数,在 Win32汇编中,我们获得命令行参数的方法是使用 Api - GetCommandLine,它没有输入参数,返回的是指向命令行的指针,返回的字符串中,包含…

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

计算机毕设Java金象传动公司工资管理信息系统开发 基于Java的金象传动企业薪酬管理信息化系统构建 Java技术驱动的金象传动公司薪资管理系统开发

计算机毕设Java金象传动公司工资管理信息系统开发k5gpm9(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着信息技术的飞速发展,企业对高效、便捷的管理系统的依赖程…

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

Docker国内镜像源配置 + 部署VibeThinker-1.5B实战步骤详解

Docker国内镜像加速与VibeThinker-1.5B轻量推理部署实战 在AI模型日益庞大的今天,动辄数百GB的显存需求让许多开发者望而却步。但你有没有想过,一个仅1.5B参数的小模型,也能在数学和编程推理上击败几十倍规模的大模型?更现实的问题…

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

Xilinx Vivado中VHDL模块设计超详细版教程

从零开始:手把手教你用 Vivado 搭建一个可靠的 VHDL 加法器模块你有没有过这样的经历?明明代码写得逻辑清晰,仿真波形也对得上,结果下载到 FPGA 板子上就是“没反应”——LED 不亮、输出乱跳。或者更糟,综合报错一堆LU…

作者头像 李华
网站建设 2026/6/10 14:52:53

Proteus仿真在PCB设计前的电路功能验证完整指南

用Proteus提前“跑通”电路:嵌入式开发前的功能验证实战指南你有没有过这样的经历?花了几周时间画好PCB,打样回来焊上芯片,结果一通电——LED不亮、串口没输出、ADC读数乱跳。更糟的是,问题出在哪儿?是原理…

作者头像 李华
网站建设 2026/6/10 14:52:22

为什么你的Dify React应用首屏超时?(三大核心优化策略首次公开)

第一章:Dify React 部署优化的核心挑战在将 Dify 基于 React 的前端应用部署到生产环境时,开发者常面临性能、构建效率与资源管理的多重挑战。尽管 Dify 提供了灵活的低代码集成能力,但其前端层仍依赖标准 React 构建流程,这使得部…

作者头像 李华