ARP获取硬件地址

ARP协议

  在进行网络通信时,源主机中的发送程序只知道目的主机的ip地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP就应运而生
  打个比方,我们想给朋友写信,去找邮局(源主机)寄信。邮局(源主机)会派出邮递员(进程),根据地址(ip地址)和门牌号(端口)送到朋友家(目的主机)。但是你给的地址(ip)是某某小区。这时候邮局需要将某某小区翻译成什么什么大道(硬件地址)才能送到你的朋友手中。因此需要用ARP提前获取硬件地址。

ARP数据报格式

ARP获取硬件地址_第1张图片

获取硬件地址

  首先我们作为发送方,应该知道自身的IP地址和硬件地址,接收方的IP地址。ARP获取硬件地址_第2张图片
  在知道这些之后ARP会以广播的形式,将这些东西发送出去。只有当ip地址一致时,才会发送一个ARP应答。这个时候可以看作一个反向的ARP,使原本的接收端变成发送端。作为发送端我们会发送自己的ip地址和硬件地址。也就是我们原本所求的硬件地址。ARP获取硬件地址_第3张图片
  这样我们就求出了我们所需要的硬件地址

你可能感兴趣的:(linux,c,网络通信,linux)