您的位置:首页 > 职场人生

ARp头的解释

2010-12-30 22:07 771 查看
/* 注释:xie_minix */

/* 要了解ARP包,他的结构和一些常量你必须知道是什么意思*/

#ifndef _NET_IF_ARP_H_

#define _NET_IF_ARP_H_

/*

* 地址解释协议.

*

* 查看 RFC 826 对该协议的描述. ARP 包长度是变化的

* 头部(arphdr)结构定义了固定长度部分.

*/

struct arphdr {

u_short ar_hrd; /* 格式化的硬件地址 */

#define ARPHRD_ETHER 1 /* 以太网格式 */

#define ARPHRD_IEEE802 6 /* 令牌环网格式 */

#define ARPHRD_FRELAY 15 /* 帧中继硬件格式 */

u_short ar_pro; /* 协议地址格式 */

u_char ar_hln; /* 硬件地址长度*/

u_char ar_pln; /* 协议地址长度 */

u_short ar_op; /* 以下之一: */

#define ARPOP_REQUEST 1 /* 发出请求解释一IP地址 */

#define ARPOP_REPLY 2 /* 回应上一个请求 */

#define ARPOP_REVREQUEST 3 /* 请求一IP地址(给出硬件地址,实际上是逆向地址解释) */

#define ARPOP_REVREPLY 4 /* 回应逆向地址解释 */

#define ARPOP_INVREQUEST 8 /* 请求对方的ID */

#define ARPOP_INVREPLY 9 /* 回应对方的ID */

/*

* 下面的字段是可变长的,

* 主要是依照上面给出的定义.

*/

#ifdef COMMENT_ONLY

u_char ar_sha[]; /* 发送者硬件地址 */

u_char ar_spa[]; /* 发送者协议地址 */

u_char ar_tha[]; /* 目的方硬件地址 */

u_char ar_tpa[]; /* 目的方协议地址*/

#endif

};

/*

* ARP ioctl 请求

*/

struct arpreq {

struct sockaddr arp_pa; /* 协议地址 */

struct sockaddr arp_ha; /* 硬件地址 */

int arp_flags; /* 标识 */

};

/* arp_flags 和 at_flags 域的值 */

#define ATF_INUSE 0x01 /* 入口在使用 */

#define ATF_COM 0x02 /* 完整的入口 (enaddr 有效) */

#define ATF_PERM 0x04 /* 持久的入口 */

#define ATF_PUBL 0x08 /* 发布一入口 (回应其他主机) */

#define ATF_USETRAILERS 0x10 /* 有追踪请求 */

#ifdef _KERNEL

/*

* 该结构是以太网设备驱动程序和ARP程序所共享.

*/

struct arpcom {

/*

* ifnet 结构必须在此结构的第一个位置.

*/

struct ifnet ac_if;

u_char ac_enaddr[6]; /* 以太网硬件地址*/

int ac_multicnt; /* 多播地址列表数 */

void *ac_netgraph; /* PPPoE(ADSL)的指针 */

};

extern u_char etherbroadcastaddr[6];

#endif

#endif /* !_NET_IF_ARP_H_ */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 arp 格式