LwIP系列(3):以太网帧、IP、TCP、UDP、IGMP、ICMP帧格式详解

news2024/11/8 0:43:33

前言

TCP/IP 本质上是软件协议,而LwIP也是对软件协议进行解析处理,所以我们有必要了解下以太网帧、IP、TCP、UDP、IGMP、ICMP帧格式,这样在代码中,才能有的放矢。

以太网帧框架

以太网帧是最底层的原始数据,帧框架如下图所示:
在这里插入图片描述
其中【前同步码】和【以太网尾部】我们在抓包的时候,并不能真正看到,我们可以暂时认为这两部分有以太网芯片实现,对于协议栈,并不会包括这两部分。

以太网帧首部

在这里插入图片描述
以太网帧首部包括:【目的MAC】+ 源MAC + 类型

IP帧首部

在这里插入图片描述

TCP帧首部

在这里插入图片描述

tcp抓包示例

client PC :192.168.114
server PC:192.168.1.9, 端口:8080
发送数据:123456780

req数据

xx xx xx xx xx xx xx xx xx xx xx xx 08 00 45 00       // mac 注释隐藏
00 32 9a d0 40 00 80 06 dc 29 c0 a8 01 72 c0 a8
01 09 f8 e8 1f 90 38 55 0d 2b 26 6b 47 eb 50 18
02 01 53 a1 00 00 31 32 33 34 35 36 37 38 39 30

解析

xx xx xx xx xx xx	 			// 目的mac   注释隐藏
xx xx xx xx xx xx 				// 源mac     注释隐藏
08 00 							// IP 协议
45 00 00 32 9a d0 40 00 80 06 dc 29 c0 a8 01 72 c0 a8 01 09    // IP帧头 
f8 e8 1f 90 38 55 0d 2b 26 6b 47 eb 50 18 02 01 53 a1 00 00    // TCP帧头
31 32 33 34 35 36 37 38 39 30								   // 应用数据					

resp数据

xx xx xx xx xx xx xx xx xx xx xx xx 08 00 45 00   	// mac 注释隐藏
00 28 7f af 40 00 80 06 f7 54 c0 a8 01 09 c0 a8   
01 72 1f 90 f8 e8 26 6b 47 eb 38 55 0d 35 50 10   
10 04 4f ab 00 00                               

解析

xx xx xx xx xx xx 			   // 目的mac   注释隐藏
xx xx xx xx xx xx 			   // 源mac     注释隐藏
08 00 						   // IP 数据
45 00 00 28 7f af 40 00 80 06 f7 54 c0 a8 01 09 c0 a8 01 72    // IP帧头 	
1f 90 f8 e8 26 6b 47 eb 38 55 0d 35 50 10 10 04 4f ab 00 00    // TCP帧头

UDP帧首部

在这里插入图片描述

udp抓包示例

client PC :192.168.114
server PC:192.168.1.9, 端口:8080
发送数据:123456780

req数据

xx xx xx xx xx xx xx xx xx xx xx xx 08 00 45 00   	// mac 注释隐藏
00 26 9a e6 00 00 80 11 1c 15 c0 a8 01 72 c0 a8  
01 09 1f 90 1f 90 00 12 32 d9 31 32 33 34 35 36  
37 38 39 30                                     

解析

xx xx xx xx xx xx	 			// 目的mac   注释隐藏
xx xx xx xx xx xx 				// 源mac     注释隐藏
08 00 							// IP 协议
45 00 00 26 9a e6 00 00 80 11 1c 15 c0 a8 01 72 c0 a8 01 09 	// IP 帧头
1f 90 1f 90 00 12 32 d9 										// udp 帧头
31 32 33 34 35 36 37 38 39 30           						// 应用数据		

注意:udp只有req,没有resp。

ICMP帧格式

在这里插入图片描述

icmp(ping)抓包示例

ping 192.168.1.9

req数据

xx xx xx xx xx xx xx xx xx xx xx xx 08 00 45 00  		// mac 隐藏
00 3c 9a cc 00 00 80 01 1c 29 c0 a8 01 72 c0 a8   
01 09 08 00 4d 41 00 01 00 1a 61 62 63 64 65 66  
67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76   
77 61 62 63 64 65 66 67 68 69                   

解析

xx xx xx xx xx xx	 			// 目的mac   注释隐藏
xx xx xx xx xx xx 				// 源mac     注释隐藏
08 00 							// IP 协议
45 00 00 3c 9a cc 00 00 80 01 1c 29 c0 a8 01 72 c0 a8 01 09    // IP帧头 
08 00 4d 41 												   // ICMP帧头
00 01 00 1a 61 62 63 64 65 66  
67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76   
77 61 62 63 64 65 66 67 68 69   							  // ICMP数据内容			

resp数据

xx xx xx xx xx xx xx xx xx xx xx xx 08 00 45 00  
00 3c 7f ab 00 00 80 01 37 4a c0 a8 01 09 c0 a8  
01 72 00 00 55 41 00 01 00 1a 61 62 63 64 65 66  
67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 
77 61 62 63 64 65 66 67 68 69                                      

解析

xx xx xx xx xx xx 				// 目的mac   注释隐藏
xx xx xx xx xx xx 				// 源mac     注释隐藏
08 00 							// IP 协议
45 00 00 3c 7f ab 00 00 80 01 37 4a c0 a8 01 09 c0 a8 01 72 	// IP帧头
00 00 55 41 													// ICMP 帧头
00 01 00 1a 61 62 63 64 65 66  
67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 
77 61 62 63 64 65 66 67 68 69   

IGMP

在这里插入图片描述

小结

  1. TCP、UDP、IGMP、ICMP均属于IP协议。
  2. ARP、RARP与IP协议平级。
  3. 以太网帧是最底层的协议,是原始数据。
  4. 以太网帧的前同步帧,结尾CRC是硬件驱动层面的,不属于应用层,我们在具体的代码、抓包中,并不会看到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/683990.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux用户密码管理

密码复杂度设置 之前写过一篇文章,通过编辑/etc/pam.d下的配置文件来信hi先密码复杂度设置。 这里介绍另一种方法,使用authconfig名来配置。 如果没有安装该软件,输入如下命令安装: yum install authconfig -y 设置方法如下: authconfi…

力扣动态规划专题(六)编辑距离与回文问题 步骤及C++实现

文章目录 392. 判断子序列动态规划双指针 115.不同的子序列583. 两个字符串的删除操作方法一方法二 72. 编辑距离647. 回文子串动态规划双指针 516.最长回文子序列 392. 判断子序列 动态规划 步骤 确定dp数组以及下标的含义 dp[i][j] 表示以下标i-1为结尾的字符串s&#xff0c…

Json数据 通用提取工具 Web版

问题来源 楼主使用Golang 实现了一款通用型 JSON 数据提取工具,支持自动识别 JSON 数据节点并有序提取为 CSV 文件。 看到大家有这样的评论,顺手实现下,~~ 尴尬的是搞完了 ,发现 这个论坛注册不足15天,不能回复评论。晕…

迅为RK3568开发板系统编程手册全新升级

iTOP-3568开发板C应用编程手册全新升级,《iTOP-RK3568开发板系统编程手册》旨在帮助刚入门的用户进行入门规划和学习,为系统编程基础指导手册。 第1部分 系统编程初探 第1章 系统编程初探 1.1 什么是系统编程 1.2 系统编程的作用 1.3 系统调用和C语言库函…

R语言使用xlsx包、安装包的经验以及切换工作目录的方法

R语言使用xlsx包 首先不同于读取txt和csv文件,R语言读取xlsx文件需要安装xlsx包 使用下面命令进行安装xlsx install.packages(“xlsx”) 安装过程非常顺利,需要附带安装其它几个包。如果安装出现错误,可以尝试切换网络,使用手机热…

2-css-1

一 CSS 初体验 CSS 定义:层叠样式表 (Cascading Style Sheets,缩写为 CSS),是一种样式表语言,用来描述HTML文档的呈现(美化内容) CSS 书写在什么位置? title 标签下方哪个标签里面…

2-css-5

一 定位 1 认识 作用:灵活的改变盒子在网页中的位置 实现: 定位模式:position边偏移:设置盒子的位置 left right top bottom 2 相对定位 position: relative 特点: 不脱标,占用自己原来位置显示模式…

如何将JSON对象转化为java对象,如何将java对象转化为JSON对象

如何将JSON对象转化为java对象,如何将java对象转化为JSON对象 一、在java中如何构建一个JSON对象 在java中我们可以通过创建JsonObject对象的方式来为其添加相应的参数属性,进而构造JSON对象 1、导入JsonObject的依赖 JsonObject是Gson库中的一个类&…

数据结构--数据结构的基本概念

数据结构–数据结构的基本概念 知识总览: 数据结构的三要素 #mermaid-svg-jflLhauniFK26Yxb {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-jflLhauniFK26Yxb .error-icon{fill:#552222;}#mermaid-svg-…

软件测试已经人员饱和了?是否选择退出这个行业?

铺天盖地的职场内卷文章充斥我们眼球,给大家带来山大压力,内心焦虑。据闻,2023年有1070万高校应届毕业生涌入用人市场,其中有多少人将卷入软件测试行业呢?而最近大厂毕业之风盛行,对外输出人才,…

从小白到大神之路之学习运维第46天---第三阶段----Ceph分布式存储系统(CentOS7.9版本下安装部署ceph)

第三阶段基础 时 间:2023年6月25日 参加人:全班人员 内 容: Ceph分布式存储系统 目录 一、Ceph概述 二、Ceph 的工作原理和工作流程 三、Ceph 组件包括 1. RADOS 2. OSD 3. MON 4. MDS 5. RGW 6. RBD 7. CephFS 四、安装部…

文心一言 VS 讯飞星火 VS chatgpt (47)-- 算法导论6.1 5题

五、一个已排好序的数组是一个最小堆吗? 文心一言: 一个已排好序的数组不一定是一个最小堆。最小堆是一种特殊的二叉树,它满足以下性质:对于任意节点 x,其父节点 y 的值都小于等于 x 的值。而一个已排好序的数组只是一个有序数…

【FFmpeg实战】压缩数据AVPacket解析

因为FFmpeg更新的比较快,API也会跟着有所变动,所以声明一下,本文使用的FFmpeg版本为V3.3.5。 1.AVPacket简介 AVPacket是FFmpeg中很重要的一个数据结构,它保存了解复用(demuxer)之后,解码(dec…

TS格式视频的使用

什么是TS文件格式 TS(Transport Stream,传输流)是一种封装的格式,它的全称为MPEG2-TS。MPEG2-TS是一种标准数据容器格式,传输与存储音视频、节目与系统信息协议数据,主要应用于数字广播系统,例…

在加密数据时,如何选择合适的算法?

我们将分解两种主要类型的加密 - 对称和非对称 - 然后深入研究 5 种最常用的加密算法列表,以前所未有的方式简化它们 加密经常被指责为政治实体隐藏恐怖活动,是始终成为头条新闻的网络安全话题之一。任何对不同类型的加密有充分了解的人都可能会觉得对这…

内网穿透工具cpolar——将内网站点发布至公网、远程连接公司内网电脑

在现代互联的时代,我们经常需要将局域网中的服务器或提供给外部网络进行访问。然而,由于内网通常使用私有IP地址,在没有合适的配置和设置的情况下,对外部网络是不可见的。这就引出了内网穿透技术,它允许我们在不暴露真…

从三个角度分析B端产品帮助中心的发展趋势和创新思路

随着企业级(B端)产品在市场上的快速增长,优秀的帮助中心对于提升用户体验和满意度变得尤为重要。本文将从三个维度讨论B端产品帮助中心的发展趋势和创新思路,以帮助企业构建更优秀的帮助体系。 个性化化的帮助体验 在B端产品帮助…

基于瑞芯微camera学习原创文章汇总pdf分享给大家

前面一段时间基于瑞芯微3568平台编写了camera系列文章, 一共12篇,目前更新完毕。 《瑞芯微文章合集》 camera系列文章编写前后一共花费2个月时间, 期间查阅了很多资料,做了很多实验, 根据自己的理解, …

实训笔记6.25

实训笔记6.25 6.25一、座右铭二、知识回顾2.1 JavaSE2.1.1 基本语法2.1.2 数组2.1.3 JVM内存2.1.4 面向对象2.1.5 Java常用类2.1.6 Java异常机制2.1.7 Java泛型2.1.8 Java集合2.1.9 JavaIO流2.1.10 Java注解2.1.11 Java反射机制2.1.12 Java多线程2.1.13 Java网络编程 三、Java多…

利用SpringBoot和javafx进行桌面开发

原文合集地址如下,有需要的朋友可以关注 本文地址 合集地址 众所周知,SpringBoot是一款强大的Javaweb开发程序,这得益于其构造了一个Spring容器,然后通过依赖注入和控制反转,维护起一套Java对象和实例的管理机制&…