news 2026/5/17 3:53:13

一文读懂:原始套接字的前世今生

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一文读懂:原始套接字的前世今生

原始套接字

该套接字允许对较低层协议(如 IP 或 ICMP)进行直接访问,常用于网络协议分析,检验新的网络协议实现,也可用于测试新配置或安装的网络设备。

这类套接字可用来接受 ICMP 报文并解析出相应字段。

ICMP 是 "Internet Control Message Protocol"(Internet控制消息协议) 的缩写。ICMP 协议是一种面向无连接的协议,用于传输出错报告控制信息。它是 TCP/IP 协议族的一个子协议,用于在 IP 主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

当程序出现了错误,它就可以向你提供一份错误报告,让你得知错误的原因。就好比是公司里的某位员工哪天有事不去上班,他就要向领导请假,写好“请假条”告知自己的请假原因,如果无故旷工,领导肯定是会找麻烦的。

ICMP 报文内容是放在 IP 数据包的数据部分里来互相交流的。也就是,从 ICMP 的报文格式来说,ICMP 是 IP 的上层协议。一个 ICMP 报文包括 IP 报头(至少 20 字节)、ICMP 报头(至少 8 字节)和 ICMP 报文(属于 ICMP 报文的数据部分)。当 IP 报头中的协议类型字段值为 1 时,就说明这是一个 ICMP 报文。ICMP 报头如下图:

解析 ICMP 报文可以使用 Python 中 struct 模块的 upack() 函数来实现。其参数:

fmtstr: 格式化字符串

packet: 需要解析的字符数组

该函数的返回值可以是多个,根据格式串中指定的类型返回到相应变量中。

例如:

a,b,c,d=struct.unpack('5s6sif',bytes)

则从 bytes 这个数组中解析出

a:5 个字符的字符串(5s),

b:6 个字符的字符串(6s),

c:整型(i),

d:浮点型数据(f)。

对于 Ping 命令的 ICMP 报文,我们需从 IP 包中取出 ICMP 报头,位于 20 到 28 字节;从中可以取出报文类型 type,代码 code,校验和 checksum,报文 ID 及报文序号字段;对于类型为 1 的报文且其 ID 为需要接收的报文,从 28 字节后面开始解析发送的数据为发送时间,数据类型及长度根据发送的数据来确定。

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

Arm CCI缓存一致性互联组件原理与应用解析

1. Arm CCI系列互联组件概述在现代SoC设计中,多核处理器协同工作时面临的核心挑战之一是如何高效维护缓存一致性。Arm Cache Coherent Interconnect(CCI)系列组件正是为解决这一难题而设计的硬件基础设施。作为系统级缓存一致性控制器&#x…

作者头像 李华
网站建设 2026/5/17 3:44:30

Takeoff Community:开源大模型推理引擎部署与优化实战

1. 项目概述:一个让大模型推理“起飞”的开源引擎最近在折腾大语言模型本地部署的朋友,估计都绕不开一个核心痛点:推理速度慢、资源占用高、部署流程繁琐。无论是想用 Llama 3 做个本地知识库,还是想跑通一个 7B 参数的模型试试效…

作者头像 李华
网站建设 2026/5/17 3:44:18

专业级工作流引擎设计:从DSL到分布式架构的深度解析

1. 项目概述:一个为专业开发者打造的现代化工作流引擎最近在GitHub上看到一个名为“pro-workflow”的项目,作者是rohitg00。这个标题本身就很有意思,它没有直接叫“workflow”,而是加了一个“pro”的前缀。这立刻让我想到&#xf…

作者头像 李华
网站建设 2026/5/17 3:44:15

AI 术语通俗词典:logits

logits 是机器学习、深度学习、分类模型和人工智能中非常常见的一个术语。它通常用来描述:模型在经过 Sigmoid 或 Softmax 之前输出的原始分数。换句话说,logits 是在回答:模型还没有把结果转换成概率之前,对每个类别给出的原始判…

作者头像 李华
网站建设 2026/5/17 3:40:11

基于MCP协议的开发者提示词管理工具:Devora Prompt Assistant 详解

1. 项目概述:一个专为开发者设计的提示词管理利器最近在折腾AI编程助手的时候,发现了一个挺有意思的开源项目:Devora-AS/devora-prompt-assistant-mcp。乍一看这个标题,可能有点绕,但拆解一下就很清晰了。“Devora-AS”…

作者头像 李华
网站建设 2026/5/17 3:39:36

基于Python/Flask的洗车店业务管理系统设计与实现

1. 项目概述:从“洗车”到“洗车服务”的数字化重构最近在GitHub上看到一个挺有意思的项目,叫“washing-cars”。光看名字,你可能会觉得这只是一个关于洗车的小工具或者记录表。但当我深入进去,才发现它远不止于此。这个项目本质上…

作者头像 李华