深入Linux ARP协议的源码研究(linuxarp源码)
Linux ARP协议源码分析
Linux ARP协议是网络层协议,负责IPv4地址和物理地址的映射,通过IP地址计算出MAC地址。ARP有数据帧形式的封装,此数据帧主要包含物理地址,IP地址,协议类型,操作码等字段。
ARP主要功能就是维护一张数据库表,维护着网络所有主机的网络地址和MAC地址的对应关系,当主机在发送数据时,在向数据帧表附加一些发送方信息和接受方信息,然后根据接受方地址,查找ARP表,找到对应的数据帧信息后就可以发送出去了。
Linux ARP协议源码存放在net/ipv4目录下,主要包括arp.c,arp.h等文件,该全部源码文件建立了一个内核实现的ARP表,用于维护,同时也实现了ARP请求,应答,以及ARP数据包解析等功能,下面我们就来简要分析一下Linux系统ARP协议源码。
首先,arp.c文件对net/ethernet.h和net/if_arp.h文件进行include,定义了一个全局变量,表示ARPHRD_ETHER的情况,它是ARP数据帧的协议号;接着,arp.c文件实现了arp表的建立,查询,销毁等函数。
其次,arp.h文件中主要是定义了一些arp操作的函数,包括arp_create()函数,用于创建arp表;arp_lookup()函数,用来查询req_ip地址对应的mac地址;arp_update()函数,用于更新arp表;arp_destroy()函数,用于销毁arp表等。
最后,arp.h文件中定义了arphdr数据结构体,用来封装arp数据帧,该结构体定义了arp类型,硬件类型,硬件地址长度,协议类型,协议地址长度,操作码等字段。
总结来说,Linux ARP源码对ARP协议实现了有效的抽象,封装了一些ARPP操作函数,并针对硬件类型,网络地址定义了相应的数据结构,从而使Linux系统就可以执行ARP协议以及ARP表维护等任务。