TCP/IP协议分析--ARP包

在局域网中,主机通过ARP协议获取目标主机的物理地址。本文深入解析ARP包结构,包括硬件地址长度、协议地址长度、操作类型等字段,并介绍如何通过网络字节顺序转换处理ARP数据。通过运行`./eth`可以观察到ARP包的详细信息。
摘要由CSDN通过智能技术生成

当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,必须要知道对方的物理地址。如果只知道目的主机的IP地址,就必须通过ARP协议来获取其物理地址。

当链路层数据类型被标记为ARP包时,那么链路层数据段的内容就是ARP包的内容。

首先定义ARP包结构体:

//eth.h  
#ifndef  __ETH__  
#define  __ETH__  
  
typedef unsigned int   u32;  
typedef unsigned short u16;  
typedef unsigned char  u8;

/*链路层结构*/
typedef struct  
{  
    u8 destMAC[6];   //目的MAC  
    u8 sourMAC[6];   //源MAC  
    u16 type;        //类型  
    u8 data[1500];   //数据  
}ETH_HEADER; 
/*链路层数据包类型*/
typedef enum  
{  
    ARP_PACKET=0x0806,      //ARP包  
    RARP_PACKET=0x8035,     //RARP包
    IP_PACKET=0x0800        //IP包
}PACKET_TYPE;

/*ARP包结构*/
typedef struct
{
    u16 hardware;        //硬件地址类型,1表示MAC地址
    u16 protocol;        //协议地址类型,0x0800表示IP地址
    u8    mac_len;         //硬件地址的长度,对于MAC地址为6
    u8    ip_len;          //协议地址长度,对于IP地址来说有4和6,对应IPV4和IPV6
    u16    op;              //操作类型,1表示AR
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值