一. 关于ARP协议的基础知识
3. ARP包的填充
二。发送数据包的编程实现
1.填充数据包
.........................紧接上文............................
|
DLC Header | ||
|
字段 |
长度(Byte) |
填充值 |
|
接收方MAC |
6 |
ffffffffffff |
|
发送方MAC |
6 |
aaaaaaaaaaaa |
|
Ethertype |
2 |
0x0806 |
|
ARP Frame | ||
|
字段 |
长度(Byte) |
填充值 |
|
硬件类型 |
2 |
1 |
|
上层协议类型 |
2 |
0800 |
|
MAC地址长度 |
1 |
6 |
|
IP地址长度 |
1 |
4 |
|
操作码 |
2 |
1 |
|
发送方MAC |
6 |
aaaaaaaaaaaa |
|
发送方IP |
4 |
192.168.0.1 |
|
接收方MAC |
6 |
任意值 xxxxxxxxxxxx |
|
接收方IP |
4 |
192.168.0.99 |
|
填充数据 |
18 |
0 |
|
DLC Header | ||
|
字段 |
长度(Byte) |
填充值 |
|
接收方MAC |
6 |
bbbbbbbbbbbb |
|
发送方MAC |
6 |
aaaaaaaaaaaa |
|
Ethertype |
2 |
0x0806 |
|
ARP Frame | ||
|
字段 |
长度(Byte) |
填充值 |
|
硬件类型 |
2 |
1 |
|
上层协议类型 |
2 |
0800 |
|
MAC地址长度 |
1 |
6 |
|
IP地址长度 |
1 |
4 |
|
操作码 |
2 |
2 |
|
发送方MAC |
6 |
aaaaaaaaaaaa |
|
发送方IP |
4 |
192.168.0.1 |
|
接收方MAC |
6 |
bbbbbbbbbbbb |
|
接收方IP |
4 |
192.168.0.99 |
|
填充数据 |
18 |
0 |
二. 发送ARP包的编程实现
1. 填充数据包
上面的那些关于ARP包各个字段的表格,对应在程序里就是结构体,对应于上面的表格,于是我们需要三个下面这样的结构体
// DLC Header
typedef struct tagDLCHeader
{
unsigned char DesMAC[6]; /* destination HW addrress */
unsigned char SrcMAC[6]; /* source HW addresss */
unsigned short Ethertype; /* ethernet type */
} DLCHEADER, *PDLCHEADER;
// ARP Frame
typedef struct tagARPFrame
{
unsigned short HW_Type; /* hardware address */
unsigned short Prot_Type; /* protocol address */
unsigned char HW_Addr_Len; /* length of hardware address */
unsigned char Prot_Addr_Len; /* length of protocol address */
unsigned short Opcode; /* ARP/RARP */
unsigned char Send_HW_Addr[6]; /* sender hardware address */
unsigned long Send_Prot_Addr; /* sender protocol address */
unsigned char Targ_HW_Addr[6]; /* target hardware address */
unsigned long Targ_Prot_Addr; /* target protocol address */
unsigned char padding[18];
} ARPFRAME, *PARPFRAME;
// ARP Packet = DLC header + ARP Frame
typedef struct tagARPPacket
{
DLCHEADER dlcHeader;
ARPFRAME arpFrame;
} ARPPACKET, *PARPPACKET;
这些结构体一定能看懂吧,在程序中就是对号入座就好了
.................
------ Made In DLUT | DIP

博客介绍了ARP协议基础知识,重点讲述发送ARP包的编程实现。包括填充数据包,还给出了对应程序里的三个结构体,分别是DLC Header、ARP Frame和ARP Packet,方便在程序中对ARP包各字段进行对应操作。
73

被折叠的 条评论
为什么被折叠?



