报文分析6、ARP报头结构

ARP报头结构


硬件类型

协议类型

硬件地址长度

协议长度

操作类型

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

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

源IP地址(0-1字节)

源IP地址(2-3字节)

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

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

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

 

 

 

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

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

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

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

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

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

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

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

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

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

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

ARP的工作原理如下:

  • 1.   首先,每台主机都会在自己的ARP缓冲区(ARP Cache)中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。
  • 2.   当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有﹐就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。
  • 3.   网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;
  • 4.   源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

原文地址:https://www.cnblogs.com/classics/p/10417298.html

时间: 2024-10-07 23:48:49

报文分析6、ARP报头结构的相关文章

http报文分析

http报文分析 一.什么是报文 用于HTTP协议交互的信息被称为报文. 请求端(客户端)的HTTP报文叫做请求报文,响应端(服务器端)的叫做响应报文. HTTP报文本身是由多行数据构成的字符串文本. HTTP报文大致上可分为报文首部和报文主体两块,两者由最初出现的空行划分. 5. 通常,并不一定要有报文主体. 二.组成 起始行:报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况 报文头:起始行后面有零个或多个字段.每个字段都包含一个名字和一个值,为了便于解析

wcf第3步之报文分析及原生调用

最简单的调用当然是服务引用,但是我更想原生调用,所以希望能通过报文有如下研究 1.报文分析 <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-

MySQL系列:innodb源码分析之重做日志结构

在innodb的引擎实现中,为了实现事务的持久性,构建了重做日志系统.重做日志由两部分组成:内存日志缓冲区(redo log buffer)和重做日志文件.这样设计的目的显而易见,日志缓冲区是为了加快写日志的速度,而重做日志文件为日志数据提供持久化的作用.在innodb的重做日志系统中,为了更好实现日志的易恢复性.安全性和持久化性,引入了以下几个概念:LSN.log block.日志文件组.checkpoint和归档日志.以下我们分别一一来进行分析. 1.LSN 在innodb中的重做日志系统中

TCP、UDP、IP报头结构体分析

TCP数据段格式  TCP是一种可靠的.面向连接的字节流服务.源主机在传送数据前需要先和目标主机建立连接.然后,在此连接上,被编号的数据段按序收发.同时,要求对每个数据段进行确认,保证了可靠性.如果在指定的时间内没有收到目标主机对所发数据段的确认,源主机将再次发送该数据段. 下图为TCP头部结构: ●源.目标端口号字段:各占16比特.TCP协议通过使用"端口"来标识源端和目标端的应用进程.端口号可以使用0到65535之间的任何数字,但是这些端口号已经被分为公认端口.注册端口和动态/私有

报文分析4、TCP协议的头结构

TCP协议的头结构 来源端口(2字节) 目的端口(2字节) 序号(4字节) 确认序号(4字节) 头长度(4位) 保留(6位) URG ACK PSH RST SYN PIN 窗口大小(2字节) 校验和(16位) 紧急指针(16位) 选项(可选) 数据             (1)TCP源端口(Source Port):16位的源端口包含初始化通信的端口号.源端口和IP地址的作用是标识报文的返回地址. (2)TCP目的端口(Destination Port):16位的目的端口域定义传输的目的.这

报文分析5、UDP协议的头结构

UDP协议的头结构 源端口(2字节) 目的端口(2字节) 封报长度(2字节) 校验和(2字节) 数据 (1)源端口(Source Port):16位的源端口域包含初始化通信的端口号.源端口和IP地址的作用是标识报文的返回地址. (2)目的端口(Destination Port):6位的目的端口域定义传输的目的.这个端口指明报文接收计算机上的应用程序地址接口. (3)封包长度(Length):UDP头和数据的总长度. (4)校验和(Check Sum):和TCP和校验和一样,不仅对头数据进行校验,

报文分析2、IP头的结构

IP头的结构 版本(4位) 头长度(4位) 服务类型(8位) 封包总长度(16位) 封包标识(16位) 标志(3位) 片断偏移地址(13位) 存活时间(8位) 协议(8位) 校验和(16位) 来源IP地址(32位) 目的IP地址(32位) 选项(可选) 填充(可选) 数据 (1)字节和数字的存储顺序是从右到左,依次是从低位到高位,而网络存储顺序是从左到右,依次从低位到高位. (2)版本:占第一个字节的高四位.头长度:占第一个字节的低四位. (3)服务类型:前3位为优先字段权,现在已经被忽略.接着

报文分析3、ICMP协议的头结构

ICMP协议的头结构 类型(8位) 代码(8位) 校验和(8位) 类型或者代码 (1)类型:一个8位类型字段,表示ICMP数据包类型. (2)代码:一个8位代码域,表示指定类型中的一个功能.如果一个类型中只有一种功能,代码域置为0. (3)检验和:数据包中ICMP部分上的一个16位检验和. 原文地址:https://www.cnblogs.com/classics/p/10417376.html

Linux网络编程——原始套接字实例:MAC 头部报文分析

通过<Linux网络编程——原始套接字编程>得知,我们可以通过原始套接字以及 recvfrom( ) 可以获取链路层的数据包,那我们接收的链路层数据包到底长什么样的呢? 链路层封包格式 MAC 头部(有线局域网) 注意:CRC.PAD 在组包时可以忽略 链路层数据包的其中一种情况: 1 unsigned char msg[1024] = { 2 //--------------组MAC--------14------ 3 0xb8, 0x88, 0xe3, 0xe1, 0x10, 0xe6,