专栏名称: 林湾村龙猫
资深后台开发
目录
相关文章推荐
始室  ·  首发 . Julie Hillman ... ·  14 小时前  
始室  ·  首发 . Julie Hillman ... ·  14 小时前  
字体设计  ·  这两个动态字体设计有些酷炫啊 ·  昨天  
庞门正道  ·  整活还得看手艺人! ·  3 天前  
ZaomeDesign  ·  每日灵感丨三月十九日 ·  2 天前  
51好读  ›  专栏  ›  林湾村龙猫

系列TCP/IP协议-ARP与RARP

林湾村龙猫  · 掘金  ·  · 2019-04-17 02:13

正文

阅读 38

系列TCP/IP协议-ARP与RARP

一、引言

在真实的网络上传输的数据帧不是IP地址来传的,是通过每一个网卡的特有的物理地址(MAC地址)来传输的。上层协议一般是只知道IP地址,不知道MAC地址的。因此需要有通过IP地址知道MAC地址的方法,这就是ARP(Addess Resolution Protocol)。   有时候知道一台机器的物理地址,而不知道该机器的IP地址(如,具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址。但是无盘机/无盘工作站,则需要采用其他方法(RARP)来获得 I P地址)。通常是某主机发送一份RARP数据包到网络上,另一主机(RARP服务器)响应该RARP数据包,告诉当前主机他的IP地址。

二、ARP与RARP数据包

图1. 完整的ARP/RARP数据帧
这是是一个完整的以太网ARP/RARP数据帧(图1中,每一域的长度单位是字节),该帧去掉了CRC校验和,前三个区域为前面介绍的链路层以太网帧格式。ARP与RARP的数据包格式是相同的,只是某些区域字段值(以太帧类型、操作数)不相同而已。除去以太帧首部外的其他域解释如下:

  • 以太帧帧类型:长度2个字节,0x0800-IP数据包,0x0806-ARP请求/应答数据包,0x8035-RARP请求/应答数据包。
  • 硬件类型(Hardware type):指明该ARP数据包的网络硬件类型,长度2个字节,0x0001-以太网。
  • 协议类型(Protocol type):指明该ARP数据包的使用协议,长度2个字节,0x0800-IP地址协议。协议类型与硬件类型共同确定后面数据存储结构,这里只是以太网ARP/RARP。
  • 硬件地址长度(Hardware Size): 指明之后的硬件地址长度,长度1个字节。0x06-以太网地址长度(6个字节),该长度的单位是字节。
  • 协议地址长度(Protocol Size):指明之后的协议地址长度,长度1个字节。0x04-IP地址长度(4个字节),该长度的单位是字节。
  • 操作码(Opcode):指明该数据包是干嘛的,长度2个字节。0x0001-ARP请求包,0x0002-ARP应答包;0x0003-RARP请求包,0x0004-RARP应答包。
  • 源以太网MAC地址(Sender MAC Address):发送端以太网物理地址,长度6个字节。
  • 源IP地址(Sender IP Address):发送端IP地址,长度4个字节。
  • 目的以太网MAC地址(Target MAC Address):目的以太网MAC地址,长度6个字节。ARP发送包初始化为0,ARP应答包为具体MAC地址;RARP发送包初始化为需要解析的MAC地址。
  • 目的IP地址(Target IP Address):目的IP地址,长度为4个字节。ARP发送包初始化为需要解析的IP地址。RARP发送包初始化为0,RARP应答包填充对应的IP地址。

ARP与RARP数据包既可以单播(以太网目的地址为具体的某个机器的MAC地址),也可以广播(以太网目的地址为全为1的MAC地址)。







请到「今天看啥」查看全文