以太网各种协议详解

article/2025/9/26 6:58:56

板子处于复位状态时,先做好一系列的准备工作。

 1、从EEROM中读取板子的MAC 地址(事先已经写在地址0xFA to 0xFF 中了)。

2、配置PHY 寄存器,并读取该寄存器的值,检查一下,此时的寄存器配置时候是合理的(全双工,自协商等)。

3、等待片刻,使以太网稳定。随后,启动DHCP 协议,获取该电路板的IP地址。其中,PC 机是服务机,板子是客户机。

4、获得板子的IP地址之后,就可以正常通信了。在发送数据之前,首先确认是否ARP(IP地址和MAC地址绑定)和ping(ICMP协议,确定网络是否链接成功)是否请求成功。如果成功,就可以传输我们真正关心的数据了。

 

以太网协议  MAC 层

 

 

前导帧 : 55

帧开始: 5D

长度或类型:0x0800 表示以IP帧 ; 0x0806 表示以ARP帧 ;

 

 

 

 

 

以太网IP协议

 

版本:4 ; 头部长:5;服务类型:00;总长: UDP data + 8 UDP header + 20 IP header; time to live :80; 协议:11--UDP/IP,10--ICMP/PINGN ;

以太网校验和:在运算的时候,先设置该处的值为0,等运算结果出来之后,再把结果添加进去。

 

以太网UDP格式

 

 UDP端口有几个特殊的:68 --BOOT客户端,同时用于DHCP ,67--BOOT 服务,同时用于DHCP; 校验和:UDP 的校验和可以设置为0,如果要计算的话,比较麻烦。

 

动态主机设置协议 DHCP

 

http://zh.wikipedia.org/wiki/%E5%8A%A8%E6%80%81%E4%B8%BB%E6%9C%BA%E8%AE%BE%E7%BD%AE%E5%8D%8F%E8%AE%AE   

 

1. DHCP的报文格式

我们来介绍一下DHCP的报文格式,如图1,

OP(1)

Htype(1)

Hlen(1)

Hops(1)

Transaction  ID(4)

Seconds(2)

Flags(2)

Ciaddr(4)

Yiaddr(4)

Siaddr(4)

Giaddr(4)

Chaddr(16)

Sname(64)

File(128)

Options(variable)

(图1   DHCP的 报文格式)

l  OP:若是client送给server的封包,设为1,反向为2;

l  Htype:硬件类别,ethernet为1;

l  Hlen:硬件长度,ethernet为6;

l  Hops:若数据包需经过router传送,每站加1,若在同一网内,为0;

l  Transaction ID:事务ID,是个随机数,用于客户和服务器之间匹配请求和相应消息;

l  Seconds:由用户指定的时间,指开始地址获取和更新进行后的时间;

l  Flags:从0-15bits,最左一bit为1时表示server将以广播方式传送封包给 client,其余尚未使用;

l  Ciaddr:用户IP地址;

l  Yiaddr:客户IP地址;

l  Siaddr:用于bootstrap过程中的IP地址;

l  Giaddr:转发代理(网关)IP地址;

l  Chaddr:client的硬件地址;

l  Sname:可选server的名称,以0x00结尾;

l  File:启动文件名;

l  Options:,厂商标识,可选的参数字段

 

动态主机设置协议(Dynamic Host Configuration Protocol, DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:

· 给内部网络或网络服务供应商自动分配IP地址给用户

· 给内部网络管理员作为对所有计算机作中央管理的手段

DHCP运行分为四个基本过程,分别为请求IP租约、提供IP租约、选择IP租约和确认IP租约。

DHCPDISCOVER

UDPSrc=0.0.0.0
sPort=68 Dest=255.255.255.255 dPort=67

OP

HTYPE

HLEN

HOPS

0x01

0x01

0x06

0x00

XID

0x3903F326

SECS

FLAGS

0x0000

0x0000

CIADDR

0x00000000

YIADDR

0x00000000

SIADDR

0x00000000

GIADDR

0x00000000

CHADDR

0x00053C04

0x8D590000

0x00000000

0x00000000

192 octets of 0's. BOOTP legacy

Magic Cookie

0x63825363

DHCP Options

DHCP option 53: DHCP Discover

DHCP option 50: 192.168.1.100 requested

DHCP 发现 (DISCOVER)[编辑]

客户在物理子网上发送广播来寻找可用的服务器。网络管理员可以配置一个本地路由来转发DHCP包给另一个子网上的DHCP服务器。该客户实现生成一个目的地址为255.255.255.255或者一个子网广播地址的UDP包。

客户也可以申请它使用的最后一个IP地址(在下面的例子里为192.168.1.100)。如果该客户所在的网络中此IP仍然可用,服务器就可以准许该申请。否则,就要看该服务器是授权的还是非授权的。 授权服务器会拒绝请求,使得客户立刻申请一个新的IP。非授权服务器仅仅忽略掉请求,导致一个客户端请求的超时,于是客户端就会放弃此请求而去申请一个新的IP地址。

DHCPOFFER

UDP Src=192.168.1.1
sPort=67 Dest=255.255.255.255 dPort=68

OP

HTYPE

HLEN

HOPS

0x02

0x01

0x06

0x00

XID

0x3903F326

SECS

FLAGS

0x0000

0x0000

CIADDR

0x00000000

YIADDR

0xC0A80164

SIADDR

0x00000000

GIADDR

0x00000000

CHADDR

0x00053C04

0x8D590000

0x00000000

0x00000000

192 octets of 0's. BOOTP legacy

Magic Cookie

0x63825363

DHCP Options

DHCP option 53: DHCP Offer

DHCP option 1: 255.255.255.0 subnet mask

DHCP option 3: 192.168.1.1 router

DHCP option 51: 1 day IP lease time

DHCP option 54: 192.168.1.1 DHCP server

DHCP提供 (OFFER)[编辑]

当DHCP服务器收到一个来自客户的IP租约请求时,它会提供一个IP租约。DHCP为客户保留一个IP地址,然后通过网络广播一个DHCPOFFER消息给客户。该消息包含客户的MAC地址、服务器提供的IP地址、子网掩码、租期以及提供IP的DHCP服务器的IP。

服务器基于在CHADDR字段指定的客户硬件地址来检查配置。这里的服务器,192.168.1.1,将IP地址指定于YIADDR字段。

DHCPREQUEST

UDP Src=0.0.0.0
sPort=68 Dest=255.255.255.255 dPort=67

OP

HTYPE

HLEN

HOPS

0x01

0x01

0x06

0x00

XID

0x3903F326

SECS

FLAGS

0x0000

0x0000

CIADDR

0x00000000

YIADDR

0x00000000

SIADDR

0x00000000

GIADDR

0x00000000

CHADDR

0x00053C04

0x8D590000

0x00000000

0x00000000

192 octets of 0's. BOOTP legacy

Magic Cookie

0x63825363

DHCP Options

DHCP option 53: DHCP Request

DHCP option 50: 192.168.1.100 requested

DHCP option 54: 192.168.1.1 DHCP server.

DHCP请求 (REQUEST)[编辑]

当客户PC收到一个IP租约提供时,它必须告诉所有其他的DHCP服务器它已经接受了一个租约提供。因此,该客户会发送一个DHCPREQUEST消息,其中包含提供租约的服务器的IP。当其他DHCP服务器收到了该消息后,它们会收回所有可能已提供给客户的租约。然后它们把曾经给客户保留的那个地址重新放回到可用地址池中,这样,它们就可以为其他计算机分配这个地址。任意数量的DHCP服务器都可以响应同一个IP租约请求,但是每一个客户网卡只能接受一个租约提供。

DHCPACK

UDP Src=192.168.1.1
sPort=67 Dest=255.255.255.255 dPort=68

OP

HTYPE

HLEN

HOPS

0x02

0x01

0x06

0x00

XID

0x3903F326

SECS

FLAGS

0x0000

0x0000

CIADDR (Client IP Address)

0x00000000

YIADDR (Your IP Address)

0xC0A80164

SIADDR (Server IP Address)

0x00000000

GIADDR (Gateway IP Address switched by relay)

0x00000000

CHADDR (Client Hardware Address)

0x00053C04

0x8D590000

0x00000000

0x00000000

192 octets of 0's. BOOTP legacy

Magic Cookie

0x63825363

DHCP Options

DHCP option 53: DHCP ACK

DHCP option 1: 255.255.255.0 subnet mask

DHCP option 3: 192.168.1.1 router

DHCP option 51: 1 day IP lease time

DHCP option 54: 192.168.1.1 DHCP server

DHCP确认 (Acknowledge,ACK)[编辑]

当DHCP服务器收到来自客户的REQUEST消息后,它就开始了配置过程的最后阶段。这个响应阶段包括发送一个DHCPACK包给客户。这个包包含租期和客户可能请求的其他所有配置信息。这时候,TCP/IP配置过程就完成了。

该服务器响应请求并发送响应给客户。整个系统期望客户来根据选项来配置其网卡。

 

 

ARP协议解码详解

ARP,全称Address Resolution Protocol,中文名为地址解析协议,它工作在数据链路层,在本层和硬件接口联系,同时对上层提供服务

IP数据包常通过以太网发送以太网设备并不识别32位IP地址它们是以48位以太网地址传输以太网数据包。因此,必须把IP目的地址转换成以太网目的地址。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。ARP协议用于将网络中的IP地址解析为的硬件地址(MAC地址),以保证通信的顺利进行

硬件类型

协议类型

硬件地址长度

协议长度

操作类型

发送方的硬件地址(0-3字节)

源物理地址(4-5字节)

源IP地址(0-1字节)

源IP地址(2-3字节)

目标硬件地址(0-1字节)

目标硬件地址(2-5字节)

目标IP地址(0-3字节)

(图1 ARP/RARP报头结构)

l 硬件类型字段指明了发送方想知道的硬件接口类型,以太网的值为1;

l 协议类型字段指明了发送方提供的高层协议类型,IP为0800(16进制);

l 硬件地址长度和协议长度指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;

l 操作字段用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;

l 发送方的硬件地址(0-3字节):源主机硬件地址的前3个字节;

l 发送方的硬件地址(4-5字节):源主机硬件地址的后3个字节;

l 发送方IP(0-1字节):源主机硬件地址的前2个字节;

l 发送方IP(2-3字节):源主机硬件地址的后2个字节;

l 目的硬件地址(0-1字节):目的主机硬件地址的前2个字节;

l 目的硬件地址(2-5字节):目的主机硬件地址的后4个字节;

l 目的IP(0-3字节):目的主机的IP地址。

ICMP (PING)协议

ICMP报文包含在IP数据报中,属于IP的一个用户,IP头部就在ICMP报文的前面,所以一个ICMP报文包括IP头部、ICMP头部和ICMP报文(见图表,ICMP报文的结构和几种常见的ICMP报文格式),IP头部的Protocol值为1就说明这是一个ICMP报文,ICMP头部中的类型(Type)域用于说明ICMP报文的作用及格式,此外还有一个代码(Code)域用于详细说明某种ICMP报文的类型,所有数据都在ICMP头部后面。RFC定义了13种ICMP报文格式,具体如下:

0 响应应答(ECHO-REPLY)

8 响应请求(ECHO-REQUEST)


http://chatgpt.dhexx.cn/article/l2amXff7.shtml

相关文章

汽车通信协议系列1_通信协议类型

当前比较通用的五种协议,任何一款标准OBD2的车辆都会采用以下五种协议中的一种。以下几种按照物理层编码相关性来划分 ISO9141,ISO 14230.这类是以UART为基础的。 CAN ISO 11898(车载网络),ISO15768,SAE J…

网络协议分类

Http协议:应用层。 tcp/udp协议:传输层。udp提供不可靠通信:无流控等。 ip协议:网络层。 TCP/IP是是一套协议族,是一种说法,由早期的某标准化组织制定,规定了使用tcp和ip等一系列协议的规范。…

IP协议及分类

文章目录 TCP/IP协议IP地址分类默认子网掩码网关公有IP地址和私有IP地址 基本环境设置连网介质及设备重点 TCP/IP协议 TCP/IP通信协议是目前最完整、最被广泛支持的通信协议,它可以让不同网络架构、不同操作系统的计算机之间通信,是Internet的标准通信协…

常见的协议汇总(小白个人理解,大佬勿喷)

背景 接触了一些芯片,发现所有的芯片而言,库和API接口随着芯片,开发环境甚至开发情况,公司都有着明显的区别。基于这种情况的话,了解协议的底层个人觉得是十分必要的,同时也是找工作的必备选项。所以对常见…

常用协议类型值

Ethertype ( 十六进制 ) 协议 0x0000 - 0x05DC IEEE 802.3 长度 0x0101 – 0x01FF 实验 0x0600 XEROX NS IDP 0x0660 0x0661 DLOG 0x0800 网际协议(IP) 0x0801 X.75 Internet 0x0802 NBS Internet 0x0803 ECMA Internet 0x0804 Chao…

TCP协议格式和特点

文章目录 1.协议格式:2.协议特性:2.1 面向链接2.1.1三次握手建立连接2.1.1四次挥手断开连接相关问题和知识点:1. 握手为啥三次,挥手是四次?2. 三次握手失败两端是如何处理的?3. SYN泛洪攻击是怎么回事?4. …

典型几种协议(协议以及作用)

一 .典型协议: 传输层: 常见的协议有 TCP/UDP 协议 应用层: 常见的协议有 HTTP,FTP 协议 网络层: 常见的协议有 IP 协议,ICMP 协议,IG…

ICMP协议 详解,ICMP协议的功能及实现原理,ICMP协议报文类型。

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「专栏简介」:此文章已录入专栏《计算机网络零基础快速入门》 ICMP协议 一、工作原理二、数据报格式三、报文类型 ICMP协议是IP的…

几个的常见基础协议类型数据格式以及协议内容简介

给大家简单梳理一下几种学习中常会出现的协议格式,咋们数通就像交通,各种各样的协议规则来规范大家,制定科学的管理手段来帮助大家快速,安全的到家。 一、 HDLC协议 HDLC叫高级链路控制协议(High Level Data Link Cont…

几种常用协议介绍

几种常见协议介绍 TCP/IP协议,其实是一个协议集合,这个集合里面包含了网络通讯所需的所有协议,里面不仅有TCP(传输控制协议)、IP(网际协议),还有UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP、TFTP等许多协议,还有物联网中…

个人如何申请注册公司邮箱?企业邮箱注册申请流程详解

大部分人可能知道邮箱,但是公司邮箱是什么?企业邮箱注册申请流程?个人如何申请注册公司企业邮箱? 在一家公司实习时人事告诉我使用公司邮箱,用我名字拼音命名的,还是无限容量、单次群发500封、邮件误删可以…

手把手教你申请CCC(City Colleges of Chicago)教育邮箱

如果你还不知道edu教育邮箱的好处,那么你就out了,很多大公司的的优惠福利专门针对学生群体。比如可以利用edu邮箱获得Office365免费使用权限,可以免费扩容Onedrive至1024GB;可以获得AutoCAD、3ds Max、Maya等在内70余款软件的3年免…

工大校园邮箱申请流程

由于pycharm破解日益复制,代理服务器总是被封杀,只好老老实实合法使用,但还是要免费的方法,那就申请学生邮箱,毕竟钱不是问题,穷才是。 第一步打开这个网址,登陆一下 https://cas.bjut.edu.cn…

matlab 柱面投影,matlab练习程序(圆柱投影)

圆柱投影就是将一张二维的图像投影到三维的圆柱体上,不过在显示图像的时候依然是以二维的形式给出。 投影最重要的步骤就是计算投影变换公式,和图像旋转类似,只要得到变换公式,再依照公式进行代码编写就很容易了。 这里就不写投影…

C/C++ 图像处理(8)------图像の柱面投影算法

图像的柱面投影算法,在360环形全景应用中几乎一定会用到。而为何要用该算法,可以参考下图: 从图像中可以看到,該环形全景设备由八个摄像头环形排列而成(需注意环形全景的形态并不固定,摄像头的个数不一定是八个,甚至只有一个摄像头在一直匀速转圈也是可以的)。每个摄…

全景图(二):在Unity3D上实现360°柱面投影

在全景图(一):使用Unity完成水晶球纹理贴图 建立的工程基础之上,做修改。 步骤: 1、把上次创建好的水晶球移走,放到一个不妨碍观察的地方。 2、创建一个圆柱体,位置设为(0,1.5,0&a…

图像拼接(一):柱面投影+模板匹配+渐入渐出融合

这种拼接方法的假设前提是:待拼接的两幅图像之间的变换模型是平移模型,即两幅图像同名点位置之间只相差两个未知量: Δx 和 Δy ,自由度为2,模型收得最紧。所以只有所有图像都是用同一水平线或者同一已知倾斜角的摄像机…

2D射影儿何和变换——柱面投影,图像拼接柱面投影

引入二维空间(以下简称2D) 的射影变换 这些变换发生在用透视摄像机对平面摄像的时候. 该章偏重于入门介绍并为三维空间(以下简称3D) 几何铺路. 大多数的概念在2D 中比3D 中更容易理解和可视化. 本章介绍射影变换,包括它的特殊悄况:仿射和相似变换; 并把注意力…