概述
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_ */ typedef struct _ARPHdr { unsigned short arp_hrd; unsigned short arp_proto; unsigned char arp_hlen; unsigned char arp_plen; unsigned short arp_op; unsigned char arp_sha[6]; unsigned char arp_spa[4]; unsigned char arp_tha[6]; unsigned char arp_tpa[4]; }ARPHdr;
最后
以上就是满意画板为你收集整理的ARP头的全部内容,希望文章能够帮你解决ARP头所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复