以太网协议介绍(ARP、UDP、ICMP、IP)
以太网协议介绍
一、ARP协议
请求:
应答:
ARP协议:
0x0001 0x0800 6 4硬件类型:2个字节,arp协议不仅能在以太网上运行还能在其他类型的硬件上运行。以太网用1来表示;
协议类型:两字节。指的是arp协议的上层协议是什么,以太网中上层协议是IP,用0x0800表示;
硬件地址长度:1个字节。表示MAC地址的长度,即12-34-56-78-9a-ab,一共6位,所以这里填写6;
协议地址长度:一个字节。表示的是IP地址的长度。192.168.1.102,一共4个字节(byte);
OP:表示操作码,为1时表示请求,为2的时候是应答操作;
源mac地址:主机A的mac地址。长度为6字节;
源IP地址:主机A的IP地址。4个字节;
目的MAC地址:B主机的MAC地址。4个字节;
目的IP地址:B主机的IP地址。长度为6字节。注意:
A发送请求时,源地址是指A的;当B主机应答的时候源地址是指B的。即谁发送源地址就是谁,目的地址是要发送的目标地址。
以太网ARP数据包格式:
FCS:校验
在以太网帧头部分也包含了目的地址的mac和ip地址。
二、以太网帧格式:
以太网通信是通过包的形式进行传输的,不像串口协议一样单位是byte。
前导码:7个字节。由7个0x55组成,0x55=0101_0101;
SFD:帧开始的界定符,长度为1个字节。固定值0xd5;
目的MAC地址:数据发送给谁,目的端的MAC地址,6个字节;
源MAC地址:谁发送的数据,6个字节;
长度or类型:如下图解析;
以太网数据格式:这个字段最低46byte,最高1500Byte,1500是最大的传输单元,单个数据包如果超过1500字节的话会被对端设备丢弃;
帧间隙:
三、以太网的UDP协议
TCP和UDP的区别
osi 7层模型:实现通信的任务
对于fpga开发,只需要关注传输层,网络层、数据链路层、物理层,嵌入式开发需要关注的是应用层、表示层、会话层。
物理层:底层硬件支持,利用传输介质为数据链路层提供物理连接,实现比特流的透明传输,使数据链路层不必考虑网络的介质是什么。PHY芯片、网线、RJ45座子等;
数据链路层:定义在单个链路上如何传输数据,其功能就是将数据组合成数据块(数据)。并提共数据差错校验的功能,帧是数据链路层传输的单位。如以太网的数据帧格式;
网络层:通过IP寻址来建立两个节点之间的连接,为数据包选择路由,如IP协议层;
传输层:作用是为上层协议提供端到端(端口到端口)的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题,如:TCP/UDP;会话层:建立和管理应用程序之间的通道
表示层:主要的功能就是定义数据传输过程中的数据格式以及加密;
应用层:计算机用户以及各种应用程序和网络之间的接口,功能说就是直接向用户提供服务,完成用户希望在网络上完成的各种工作。如文件传输服务(FTP)、超文本传输协议(HTTP)
UDP数据格式:
四、IP协议简介
IP:internet protocol(网际协议)
IP协议是TCP/IP协议簇中的核心协议之一,也是TCP/IP协议的载体,IP协议规定了数据传输时的基本单元和格式。所有的TCP、UDP以及ICMP数据都是以IP数据报格式传输的。
IP数据报格式:
IP首部是以4(32bit)个字节为单位,
版本:IPv4 or IPv6;IPv4的地址是4个字节,即为0100,IPv6是6个字节,即0110;
首部长度:指的是IP首部一共有多少个4个字节(以4个字节为单位),如果不包含可选字段,这里就填写5,5 * 4byte = 20 byte;
服务类型:一般设置为0,表示一般的服务;
总长度:IP首部和IP数据一共多长,最大的值为65535,但是实际上传送不了那么多,因为还要考虑以太网的帧格式长度,也就是只能传输1千多;
标识:初始值为0,每发送一个UDP数据包,这个值就累加1
标志:3bit,表示如有10000个数据,但是一次传输不了那么多,用于表示分片,需要对数据包进行分片;位号表示2 1 0,位号2为保留位为0,位号1为禁止分片位(不需要分片置为1,需要分片置为0),位号0表示需要更多的分片(在位号1使能的情况下使用),一般使用值为0。一般设为:010,表示不分片;
片偏移:分片的时候才有意义,当前的数据包位于整个数据包哪一个位置,方便后面解析的时候对其进行拼接;
生存时间:防止数据被无止境的复制下去,数据每经过1次路由器,生存时间就会减1;一般设置为64或者128;
协议:如果是UDP协议的时候就是17.如下图常用国际协议编号所示;
首部校验和:下面进行讲解,IP首部校验和计算方法图;
源IP地址:发送端的IP地址;
目的IP地址:接收端的IP地址;
可选字段:也是按照4个字节为单位;
举个例子:
以太网UDP数据格式:
UDP首部中端口号很重要,用于表示数据来自哪里和发送到哪里。
如果IP的检验和不正确的话,接收端将会丢掉数据包,UDP校验和大部分的接收端是不管的,所以一般置为0x00。
五、ICMP协议
ICMP(Internet control message protocol的缩写),即互联网控制消息协议。它用于TCP/IP网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈,通过这些消息,使得网络管理者可对所发生的问题做出诊断,然后适当的措施解决问题。
ICMP信息功能:
查询类报文:主要用于信息的查询和采集,比较教材传输路径上的每个路由器都是谁,本次传输的报文是否达到目的地等等。如ping功能就是这个。
差错诊断类报文:主要用于诊断网络故障,比如传输报文被丢弃的原因是什么等等。
ICMP协议包格式:
ICMP查询报文:
ICMP报文类型:
--晓凡 2023年10月2日于武汉书
相关文章:

以太网协议介绍(ARP、UDP、ICMP、IP)
以太网协议介绍 一、ARP协议 请求: 应答: ARP协议: 0x0001 0x0800 6 4硬件类型:2个字节,arp协议不仅能在以太网上运行还能在其他类型的硬件上运行。以太网用1来表示; 协议类型:两字节。指的是a…...

【C++】STL详解(十)—— 用红黑树封装map和set
📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:C学习 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【C】STL…...

Android学习之路(17) Android Adapter详解
Adapter基础讲解 本节引言 从本节开始我们要讲的UI控件都是跟Adapter(适配器)打交道的,了解并学会使用这个Adapter很重要, Adapter是用来帮助填充数据的中间桥梁,简单点说就是:将各种数据以合适的形式显示到view上,提供 给用户看…...

实验室超声波萃取技术的原理和特点是什么?
梵英超声(fanyingsonic)实验室超声波清洗机 超声波萃取中药材的优越性源于超声波的特殊物理性质。通过压电换能器产生的快速机械振动波,超声波可减少目标萃取物与样品基体之间的作用力,从而实现固液萃取分离。 (1)加速介质质点运…...

用Python操作Word文档,看这一篇就对了!
本文主要讲解Python中操作word的思路。 一、Hello,world! 使用win32com需要安装pypiwin32 pip install pypiwin32 推荐使用python的IDLE,交互方便 1、如何新建文档 from win32com.client import Dispatchapp Dispatch(Word.Application…...

力扣 -- 879. 盈利计划(二维费用的背包问题)
解题步骤: 参考代码: 未优化的代码: class Solution { public:int profitableSchemes(int n, int minProfit, vector<int>& group, vector<int>& profit) {//计划数int lengroup.size();//每一维都多开一行空间vector&…...
虚拟机的三种网络连接模式
文章目录 桥接模式NAT模式主机模式 桥接模式 虚拟系统占用主机网段中的一个IP地址,可以正常上网 NAT模式 主机生成一个非本主机的网段的IP的网卡,同时虚拟系统中使用一个该网段的IP地质,网络数据能通过主机的网卡来代理发送出去࿰…...

SQL调优
# 插入数据 页合并 # order by优化 视频教程:34. 进阶-SQL优化-order by优化_哔哩哔哩_bilibili 在创建索引的时候,如果没有设置顺序,是会默认升序的;但phone想要倒序,则需要额外的排序 根据需要,创建联合…...
python写一个开机启动的选项
创建一个Python脚本,以便用户可以选择在开机时启动它,可以使用pyautogui库来创建一个简单的交互式界面,其中用户可以选择是否将程序添加到开机启动项中 import pyautogui import osdef add_to_startup():# 提示用户选择是否要在开机时启动程序…...

1500*A. Boredom(DP)
Problem - 455A - Codeforces Boredom - 洛谷 解析: 首先统计每个数的个数,并且统计出最大值mx。 问题转换为,从1-mx 中选择任意个数字,使其都不相邻,求最大的总和。 开始没有思路,以为直接选取偶数位和奇…...
小程序关键词排名:优化你的应用在搜索中的地位
曾经,我们沉浸在应用商店的浩瀚海洋中,寻找着那个能够满足我们需求的小程序。而今,作为开发者,你的小程序究竟能否在这个无边的数字海洋中引起更多涟漪呢?故事的开始,恰巧就在这个问题的探寻中。让我们携手…...

OpenGLES:3D立方体纹理贴图
效果展示 一.概述 前几篇博文讲解了OpenGLES绘制多种3D图形,并赋予丰富的色彩,但是在这些3D图形绘制过程中,有一点还没有涉及,就是纹理贴图。 今天这篇博文我会用如下六张图片对立方体进行纹理贴图,实现六个面都是贴…...

线程的概述
#include <pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); 功能:创建一个子线程 参数: -thread:传出参数,线程创建成功后,子线程的ID被写到…...

竞赛选题 机器视觉目标检测 - opencv 深度学习
文章目录 0 前言2 目标检测概念3 目标分类、定位、检测示例4 传统目标检测5 两类目标检测算法5.1 相关研究5.1.1 选择性搜索5.1.2 OverFeat 5.2 基于区域提名的方法5.2.1 R-CNN5.2.2 SPP-net5.2.3 Fast R-CNN 5.3 端到端的方法YOLOSSD 6 人体检测结果7 最后 0 前言 ǵ…...
python绘图系统27:matplotlib中平面坐标、极坐标和三维坐标的所有绘图函数
文章目录 绘图函数列表为DrawType添加这些绘图函数绘图类别跳转坐标系坐标源代码 绘图函数列表 下面整理了几乎所有matplotlib中的绘图函数,及其在不同坐标轴下的表现。 函数类别2Dpolar3D备注imshow图像X❌❌pcolormesh伪彩图[X,Y,]ZX,Y,Z❌plot曲线图x[,y]x[,y]…...

国庆中秋宅家自省: Python在Excel中绘图尝鲜
【一】国庆中秋: 悟 【国庆中秋】双节来临,相信各位有自己度过的方式,而我却以独特的方式度过了一个说出来不怕各位见笑的双节; 双节到来,没有太多惊喜,也没有太多的负面情绪, 只是喜欢独处,静静反省这些年走过的酸甜苦辣;生活中的许多不欢而散,不期而遇…...

计算机中的进制转换
在计算机软件中,经常需要进行进制转换,这包括二进制、八进制、十进制和十六进制之间的转换。以下是一些常见的转换方法: 二进制转十进制:这是最直接的转换,基本上不需要什么特别的算法。你只需要按照二进制的权值进行…...
Oracle统计信息问题排查常用SQL
Oracle统计信息问题排查常用SQL 对表的基本情况分析统计信息收集作业分析最近一次的统计信息收集修改触发统计信息收集的阈值 对表的基本情况分析 是否为临时表: select owner,table_name,temporary from dba_tables where table_namexxx;是否为分区表:…...
css圣杯布局和双飞翼布局
圣杯布局 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, in…...

机器学习笔记 - 深入研究spaCy库及其使用技巧
一、简述 spaCy 是一个用于 Python 中高级自然语言处理的开源库。它专为生产用途而设计,这意味着它不仅功能强大,而且快速高效。spaCy 在学术界和工业界广泛用于各种 NLP 任务,例如标记化、词性标注、命名实体识别等。 安装,这里使用阿里的源。 pip install spacy…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...

Canal环境搭建并实现和ES数据同步
作者:田超凡 日期:2025年6月7日 Canal安装,启动端口11111、8082: 安装canal-deployer服务端: https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...