以太网协议介绍(ARP、UDP、ICMP、IP)

news2024/11/28 12:37:19

以太网协议介绍

一、ARP协议

image-20230927174655552

请求:

image-20230928093935204

应答:

image-20230928094117392

ARP协议:

image-20230928094353878

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数据包格式:

image-20230928100413094

FCS:校验

在以太网帧头部分也包含了目的地址的mac和ip地址。

二、以太网帧格式:

image-20230928100643903

以太网通信是通过包的形式进行传输的,不像串口协议一样单位是byte。

前导码:7个字节。由7个0x55组成,0x55=0101_0101;
SFD:帧开始的界定符,长度为1个字节。固定值0xd5;
目的MAC地址:数据发送给谁,目的端的MAC地址,6个字节;
源MAC地址:谁发送的数据,6个字节;
长度or类型:如下图解析;
以太网数据格式:这个字段最低46byte,最高1500Byte,1500是最大的传输单元,单个数据包如果超过1500字节的话会被对端设备丢弃;


image-20230928101927779

image-20230928101029056

帧间隙:

image-20230928110639925

三、以太网的UDP协议

image-20230928114741852

TCP和UDP的区别

image-20230928115105059

​ osi 7层模型:实现通信的任务image-20230928115454453

对于fpga开发,只需要关注传输层,网络层、数据链路层、物理层,嵌入式开发需要关注的是应用层、表示层、会话层。

物理层:底层硬件支持,利用传输介质为数据链路层提供物理连接,实现比特流的透明传输,使数据链路层不必考虑网络的介质是什么。PHY芯片、网线、RJ45座子等;
数据链路层:定义在单个链路上如何传输数据,其功能就是将数据组合成数据块(数据)。并提共数据差错校验的功能,帧是数据链路层传输的单位。如以太网的数据帧格式;
网络层:通过IP寻址来建立两个节点之间的连接,为数据包选择路由,如IP协议层;
传输层:作用是为上层协议提供端到端(端口到端口)的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题,如:TCP/UDP;

会话层:建立和管理应用程序之间的通道
表示层:主要的功能就是定义数据传输过程中的数据格式以及加密;
应用层:计算机用户以及各种应用程序和网络之间的接口,功能说就是直接向用户提供服务,完成用户希望在网络上完成的各种工作。如文件传输服务(FTP)、超文本传输协议(HTTP)

UDP数据格式:

image-20230928135547991

四、IP协议简介

IP:internet protocol(网际协议)

IP协议是TCP/IP协议簇中的核心协议之一,也是TCP/IP协议的载体,IP协议规定了数据传输时的基本单元和格式。所有的TCP、UDP以及ICMP数据都是以IP数据报格式传输的。

IP数据报格式:

image-20230928140215148

IP首部是以4(32bit)个字节为单位,

image-20230928141746026

版本: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个字节为单位;

image-20230928144649361

image-20230928145047538

举个例子:

image-20230928145257602

以太网UDP数据格式:

image-20230928150127685

UDP首部中端口号很重要,用于表示数据来自哪里和发送到哪里。

image-20230928150221276

如果IP的检验和不正确的话,接收端将会丢掉数据包,UDP校验和大部分的接收端是不管的,所以一般置为0x00。

五、ICMP协议

ICMP(Internet control message protocol的缩写),即互联网控制消息协议。它用于TCP/IP网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈,通过这些消息,使得网络管理者可对所发生的问题做出诊断,然后适当的措施解决问题。

ICMP信息功能:

查询类报文:主要用于信息的查询和采集,比较教材传输路径上的每个路由器都是谁,本次传输的报文是否达到目的地等等。如ping功能就是这个。

差错诊断类报文:主要用于诊断网络故障,比如传输报文被丢弃的原因是什么等等。

ICMP协议包格式:

image-20230928152007534

ICMP查询报文:

image-20230928152318672

ICMP报文类型:

image-20230928152521484

	--晓凡   2023年10月2日于武汉书

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

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

相关文章

Xilinx AXI DataMover使用说明与测试

Xilinx AXI DataMover使用说明与测试 1 架构说明2 IP设置说明2.1 接口说明2.2 设置说明 3 测试说明3.1 S2MM测试3.2 MM2S测试 本文主要介绍Xilinx AXI DataMover的使用和测试方法。 1 架构说明 在Xilinx的数据传输总线中,AXI Memory Map接口和AXI Stream接口是最常…

Java Spring拦截器优化实践: 专注于API路径拦截

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

Spring IOC之AnnotationConfigApplicationContext

博主介绍:✌全网粉丝近5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus…

C进阶 -- 自定义类型

🏆结构体 🍭✨🎇🎆🙅‍♀️ 🍭结构体是一些值的集合,这些值称为 成员变量。结构的每个成员可以是不同的变量。 🥇 结构体类型的声明 struct Student {int age;//成员变量 }stu;/…

Rn页面滚动显示隐藏head动画

完整代码 import { View, Text, StyleSheet, Animated } from react-native export default () > {const opacity new Animated.Value(0)const handleScroll Animated.event([{ nativeEvent: { contentOffset: { y: opacity } } }],{ useNativeDriver: true })return (&l…

LSTM+CRF模型

今天讲讲LSTM和CRF模型,LSTM(长短期记忆)是一种特殊的循环神经网络(RNN)模型,用于处理序列数据、时间序列数据和文本数据等。LSTM通过引入门控机制,解决了传统RNN模型在处理长期依赖关系时的困难…

JavaSE | 初识Java(一) | JDK \ JRE \ JVM

Java初识 Java 是一门半编译型、半解释型语言。先通过 javac 编译程序把源文件进行编译,编译后生成的 .class 文件是由字节 码组成的平台无关、面向 JVM 的文件。最后启动 java 虚拟机 来运行 .class 文件,此时 JVM 会将字节码转换成平台能够理…

【C语言深入理解指针(3)】

1. 字符指针变量 在指针的类型中我们知道有⼀种指针类型为字符指针 char* ; ⼀般使⽤: int main() {char ch w;char *pc &ch;*pc w;return 0; }还有⼀种使⽤⽅式如下: int main() {const char* pstr "hello bit.";//这⾥是把⼀个字符串放到ps…

链表经典面试题(五)

求链表的公共结点 1.题目2.详细的图示3.详细注释和代码实现 1.题目 2.详细的图示 3.详细注释和代码实现 public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {//定义两个表示长度的指针,让它们指向headA和headB//我们暂时无法知道哪…

cesium 鹰眼图1

cesium 鹰眼图1 1、实现思路 用两个cesium实体来实现一个加载3维一个加载2维,在利用“viewer.scene.preRender.addEventListener”监听事件按监听实体的移动,使两个实体保持一样 2、示例代码 <!DOCTYPE html> <html lang="en"><head><

【Linux】探访环境变量的奥秘

一、概念先知 首先我们在聊【环境变量】之前知道它是什么&#x1f447; 环境变量(environment variables)&#xff1a;一般是指在操作系统在开机的时候帮我们维护系统运行时的一些动态参数读者可以回忆一下我们在学习 Java / Python 的时候&#xff0c;你们的老师是否有让你们配…

毛玻璃员工卡片悬停效果

效果展示 页面结构组成 通过效果展示图&#xff0c;我们可以看出页面布局比较常规&#xff0c;最核心的就是卡片&#xff0c;当鼠标没有悬停在卡片上时&#xff0c;文字和头像处于半透明状态&#xff0c;当鼠标悬停在卡片上是&#xff0c;底部会展示社交图标。 CSS 知识点 b…

去雨去雪去雾算法之本地与服务器的TensorBoard使用教程

在进行去雨去雾去雪算法实验时&#xff0c;需要注意几个参数设置&#xff0c;num_workers只能设置为0&#xff0c;否则会报各种稀奇古怪的错误。 本地使用TensorBoard 此外&#xff0c;发现生成的文件是events.out.tfevents格式的&#xff0c;查询了一番得知该文件是通过Tens…

postgresql-管理表空间

postgresql-管理表空间 基本概念创建表空间用户授权移动表空间 修改表空间移动表空间位置 删除表空间 基本概念 在 PostgreSQL 中&#xff0c;表空间&#xff08;tablespace&#xff09;表示数据文件的存放目录&#xff0c;这些数据文件代表了数 据库的对象&#xff0c;例如表…

Windows历史版本下载

1、微PE工具箱&#xff08;非广告本人常用&#xff09; 常用安装Windows系统的微PE工具 地址&#xff1a;https://www.wepe.com.cn/download.html 2、Windows系统下载地址&#xff08;非微软官方&#xff09; 地址&#xff1a;MSDN, 我告诉你 - 做一个安静的工具站 下载&…

郁金香2021年游戏辅助技术中级班(六)

郁金香2021年游戏辅助技术中级班&#xff08;六&#xff09; 055-ce,xdbg调试分析接任务交任务完成任务056-C,C写代码测试接任务交任务完成任务我们再来分析一下完成任务 057-C,C写代码测试交任务完成任务 055-ce,xdbg调试分析接任务交任务完成任务 创建一个新角色&#xff0c…

猫头虎解析:深入浅出cURL命令和HTTP请求

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

Redis是否要分库的实践

Redis的分库其实没有带来任何效率上的提升&#xff0c;只是提供了一个命名空间&#xff0c;而这个命名空间可以完全通过key的设计来避开这个问题。 一个优雅的Redis的key的设计如下

【数据结构】排序之插入排序和选择排序

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;数据结构 &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、排序的概念及其分类 &#x1f4d2;1.1排序的概念 &#x1f4d2;1.2排序…