首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

以太网各种协议详解

以太网各种协议详解




板子处于复位状态时,先做好一系列的准备工作。
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%...
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的 报文格式)
OP:若是client送给server的封包,设为1,反向为2;Htype:硬件类别,ethernet为1;Hlen:硬件长度,ethernet为6;Hops:若数据包需经过router传送,每站加1,若在同一网内,为0;Transaction ID:事务ID,是个随机数,用于客户和服务器之间匹配请求和相应消息;Seconds:由用户指定的时间,指开始地址获取和更新进行后的时间;Flags:从0-15bits,最左一bit为1时表示server将以广播方式传送封包给 client,其余尚未使用;Ciaddr:用户IP地址;Yiaddr:客户IP地址;Siaddr:用于bootstrap过程中的IP地址;Giaddr:转发代理(网关)IP地址;Chaddr:client的硬件地址;Sname:可选server的名称,以0x00结尾;File:启动文件名;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租约请求,但是每一个客户网卡只能接受一个租约提供。


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报头结构)
硬件类型字段指明了发送方想知道的硬件接口类型,以太网的值为1;
协议类型字段指明了发送方提供的高层协议类型,IP为0800(16进制);硬件地址长度和协议长度指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;操作字段用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;发送方的硬件地址(0-3字节):源主机硬件地址的前3个字节;发送方的硬件地址(4-5字节):源主机硬件地址的后3个字节;发送方IP(0-1字节):源主机硬件地址的前2个字节;发送方IP(2-3字节):源主机硬件地址的后2个字节;目的硬件地址(0-1字节):目的主机硬件地址的前2个字节;目的硬件地址(2-5字节):目的主机硬件地址的后4个字节;目的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)
文章来源:weiweiliulu的专栏



记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表