ARP协议的报文格式 转自n哖苡逅

ARP协议的报文格式

结构ether_header定义了以太网帧首部;结构arphdr定义了其后的5个字段,其信息
用于在任何类型的介质上传送ARP请求和回答;ether_arp结构除了包含arphdr结构外,
还包含源主机和目的主机的地址。

定义常量

#define EPT_IP   0x0800    /* type: IP */
#define EPT_ARP   0x0806    /* type: ARP */
#define EPT_RARP 0x8035    /* type: RARP */
#define ARP_HARDWARE 0x0001    /* Dummy type for 802.3 frames */
#define ARP_REQUEST 0x0001    /* ARP request */
#define ARP_REPLY 0x0002    /* ARP reply */

定义以太网首部
typedef struct ehhdr 
{
unsigned char eh_dst[6];   /* destination ethernet addrress */
unsigned char eh_src[6];   /* source ethernet addresss */
unsigned short eh_type;   /* ethernet pachet type */
}EHHDR, *PEHHDR;

定义以太网arp字段
typedef struct arphdr
{
//arp首部
unsigned short arp_hrd;    /* format of hardware address */
unsigned short arp_pro;    /* format of protocol address */
unsigned char arp_hln;    /* length of hardware address */
unsigned char arp_pln;    /* length of protocol address */
unsigned short arp_op;     /* ARP/RARP operation */

unsigned char arp_sha[6];    /* sender hardware address */
unsigned long arp_spa;    /* sender protocol address */
unsigned char arp_tha[6];    /* target hardware address */
unsigned long arp_tpa;    /* target protocol address */
}ARPHDR, *PARPHDR;

定义整个arp报文包,总长度42字节
typedef struct arpPacket
{
EHHDR ehhdr;
ARPHDR arphdr;
} ARPPACKET, *PARPPACKET;

ARP请求包的分析:如下所示为一个ARP请求包

0000   ff   ff    ff    ff   ff   ff 00 0c f1 d4 d9 60 08 06 00 01 ...........`....
0010   08 00 06 04 00 01 00 0c f1 d4 d9 60 c0 a8 01 0f ...........`....
0020   00 00 00 00 00 00 c0 a8 01 02                              ..........
根据定义,头6个字节是以太网目的地址 ff ff ff ff ff ff 这是一个广播地址,全网下的所有终端都能接收到,紧跟着的6个字节是以太网源地址,即发送者的MAC地址( 00 0c f1 d4 d9 60 是我的MAC地址)。

帧类型0806占两个字节,到这里以太网帧头就结束了。0806指的是后面的数据是属于arp包的。

接着分析ARP包头。头两个字节是硬件类型 00 01,接着两个字节是协议类型,即ARP使用的是IP协议代号08 00硬件地址长度和协议地址长度分别是6和4。这与ARP报文格式是对应的。后面的2个字节OP指示当前包是请求包还是应答包,对应的值分别是0x0001和0x0002。原始数据里是00 01所以这是一个请求包,然后6个字节又是发送者MAC地址00 0c f1 d4 d9 60 ,后面4个字节是发送者IP地址c0 a8 01 0f ,转换成点分十进制格式即192.168.1.15,这是我的IP,接下来的6个字节留空,00 00 00 00 00 00 在arp请求包里也可以是其他数据,因为稍后IP地址为c0 a8 01 02 (192.168.1.2)会把自己的MAC地址填充进这6个字节中。
填充完后,arp包里的发送者硬件地址|目标硬件地址和以太网首部的以太网目的地址|以太网源地址正好对调。最后把这个封装好的ARP包发送出去,这样一个来回就可以让两台终端互相知道对方的IP和MAC。

ARP欺骗的3种基本方式:

1. 主机C冒充网关欺骗主机B;

2. 主机c冒充主机B欺骗网关;

3. 主机C同时欺骗主机B和网关,实现数据中转,并监听到所有主机B的数据。

PT下仿真如下:

这是使用的是Ethernet V2 MAC帧,然后封装ARP帧。另一台机器会返回:

这样两台PC都知道ip和MAC地址了。

时间: 2024-08-29 04:51:43

ARP协议的报文格式 转自n哖苡逅的相关文章

转_结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)

转自: http://blog.chinaunix.net/uid-9112803-id-3212041.html 摘要: 本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述 TCP是面向连接的可靠传输协议,两个进程互发数据之前需要建立连接,这里的连接只不过是端系统中分配的一些缓存和状态变量,中间的分组交换机不维护任何连接状态信息.连接建立整个过程如下(即三次握手协议): 首先,客户机发送一个特

ARP报文格式

ARP/RARP报文格式 地址解析协议ARP(Address Resolution Protocol)是用来将IP地址解析为MAC地址的协议. 报文格式 字段 长度(bit) 含义 Ethernet Address of destination 48比特 目的以太网地址.发送ARP请求时,为广播的MAC地址,0xFF.FF.FF.FF.FF.FF. Ethernet Address of sender 48比特 源以太网地址. Frame Type 16比特 表示后面数据的类型.对于ARP请求或

ARP协议工作原理

ARP协议可以完成任意网络地址到任意物理地址的转化,本次主要讲解IP网络地址到以太网(MAC地址)地址的转化.ARP的工作原理:主机向自己所在的网络广播一个ARP请求,该请求包含目标机器的网络地址.该网络中的其他机器都会收到这个ARP请求,但只有包含目标网络地址的机器会回应这个ARP请求,并且回应的信息中包含目标的物理地址. 以太网ARP请求/应答报文详解 以太网ARP请求/应答报文格式如下图所示: 硬件类型 协议类型 硬件地址长度 协议地址长度 操作 发送端以太网地址 发送端IP地址 目的端以

网络工程:2.1.ARP协议与PC间通信

ARP协议功能:通过解析网路层IPV4地址来找寻数据链路层MAC地址的一个网络传输协议 ARP协议格式 每台带ARP协议设备表格式  1.PC间正常通信原则一(双方PC能相互访问) ① 需求:1.1.1.2与1.1.1.3正常通信(本机无其他设备ARP信息) 1) 结果:小明正确的把自己的MAC填进题目中并提交回去(通信成功) 最终请求协议如下: 最终应答协议如下: 最终1.1.1.2点ARP表如下 主机 IP地址 MAC地址 A 1.1.1.2 0C:3E...... B 1.1.1.3 QW

http报文格式和post, get方式区别与误区(很不错哦)

自己动手学TCP/IP–http协议(http报文格式) - 推酷  http://www.tuicool.com/articles/Urieea HTTP(HyperText Transport Protocol,超文本传送协议) HTTP请求报文 http请求数据包的格式:头部(request line + header)+  数据(data) 头部和数据包体通过一个 空行 来隔开,头部的格式主要包括 请求行+请求头部 .如下图 请求行 请求行由请求 方法字段 . URL字段 和 HTTP协

TCP报文格式

TCP(Transmission Control Protocol)传输控制协议是一种面向连接的.可靠的.基于字节流的传输层协议 TCP报文格式: 源端口号(2字节): d5 df(54751) 目的端口号(2字节): 22 b8(8888) TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接 序号(4字节): 37 59 56 75 用来标识TCP发端向TCP收端发送的数据字节流 确认序号(4字节): 由于该报文为SYN报文,ACK标志为0,故没有确认序号

ARP地址解析协议<四>——ARP地址规格参数和通用地址及报文格式

1.ARP的基本操作: 就是本地网络中的一对请求和响应的传输. 理解:源(要发送IP数据报的设备)发送一个包含目的地(接收数据报的一方)信息的广播,目的地则使用单播向该源发回一个响应,告诉源那个目的地的MAC地址. 2.ARP报文类型: 首先,在ARP中发送了2种不同的报文,分别是,从源到目的地和从目的地到源.发送方是发送报文,目标方是接收报文.发送方和目标方的身份对每个报文都不一样,根据具体的情况而定. 3.发送方和目标方的身份是如何用于请求和回答的呢? 首先,再先介绍4个关键词: 请求.回答

ARP协议(2)ARP协议格式详解

一.协议格式 ARP协议的格式如下: 分两大块来讲解: 1.红色框起来的是:以太网的首部,共14字节. 这部分是你不管发送什么以太网协议的数据包,它都是需要的,而且是必须的.各字段的说明: 字段 所占字节数 说明 以太网目的地址 6 要向哪台主机发送信息,主机的MAC地址 以太网源地址 6 信息是从哪台机器发送出来的,主机的MAC地址 帧类型 2 表示这是什么类型的数据包.如果是RAP的话,该值为:0x0806 2.蓝色框起来的部分,这就是ARP协议的格式(请求/应答) 字段 所占字节数 说明

网络协议、报文、格式与数据结构

网络通信协议本质上是一个数据结构的描述: 所有的报文格式都在描述:1)报文有哪些要素构成:2)报文的内容如何组织. 时序描述的是报文出现的先后顺序. http://www.cnblogs.com/feng9exe/p/6825169.html 三要素 网络通信协议由三个要素组成. 语义,解释控制信息每个部分的意义.它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应. 语法,用户数据与控制信息的结构与格式,以及数据出现的顺序. 时序,对事件发生顺序的详细说明. 可以形象地把这三个要素描