通过wireshark分析ARP协议

什么是地址解析协议:

  地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。 

实现过程:

同网段:

  在同一局域网内,如果主机A要想通过B的IP地址确定其MAC地址并和B进行数据交互,需要按照ARP协议的”广播请求和单播应答”来确定主机B的MAC地址。

  假如A表示我本机地址192.168.1.8,B表示192.168.1.2,实现过程为:

  1) A先查看自己的ARP高速缓存表中是否有B主机的MAC地址记录。

    用arp -a查看发现确实有:

    为了便于测试,我先删除:arp -ad 192.168.1.2 (要管理员权限)

  2) 如果A的ARP高速缓存表中有B的MAC地址记录,则直接通过这个MAC地址进行数据的传输。

  3) 如果A主机的ARP高速缓存中没有B主机的记录,则会向局域网的所有主机广播一个ARP请求报文,寻找B主机的MAC地址。

    现在A的arp缓存没有B的记录,ping 一下B:ping 192.168.1.2;

    打开wireshark网络分析器,过滤arp协议:

     系统向本网段发出广播,谁有192.168.1.2的mac地址呀?有的话告诉我192.168.1.8。

    具体的arp请求报文详情:

    字段说明:

    

    Hardware type----网卡类型,以太网(Ethernet)是1。我们常见的网络都是以太网,但这并不意味着只有以太网。

    Protocol type----查询中提供的网络地址的类型,IPv4是0x0800。

    Harware lenght----网卡地址长度,以太网网卡是6字节。

    Protocol lengt----查询中提供的网络地址的的长度,IPv4是4字节。

    Opcode----Operation查询包值为1,响应包值为2。

    Sender MAC address----发送者的Mac地址。

    Sender IP address----发送者的IP地址。

    Target MAC address----接收者的Mac地址,指向性查询包是MAC地址表中记录的mac,广播性查询包是00:00:00:00:00:00。(注意区分ARP头和Eth头,指向性查询包Eth头的dst mac是MAC地址表中记录的mac,而广播性查询包是ff:ff:ff:ff:ff:ff)。

    Target IP address----要查询mac地址的ip。

  4) 当B主机收到A主机广播的ARP请求后,就会直接给A主机回复一个ARP数据包。

  5) 当A主机收到B主机发送过来的请求后,将B的MAC地址写入高速缓存中,然后通过该MAC地址,A主机向B主机进行数据的传输。

 跨网段:

  A与B不在一个网段,A查询自己的路由表,知道如果想和B通信则必须通过gateway 来中转,所以会在与gateway 直连的接口(假定 Ethernet接口)上请求gateway 的MAC地址。 A主机先通过广播一个ARP请求,找到本网络中的一个路由器的MAC地址,然后将数据包直接给路由器。当路由收到数据包后,如果B主机在同网络中的话,这时通过ARP找到B主机,然后把数据包给B主机。如果B主机不和A主机发送数据的路由器在同一网络内的话,则路由器会通过ARP协议找到下一跳的路由器,然后把数据包发送到该路由上,以此类推。

猜你喜欢

转载自www.cnblogs.com/wangyi0419/p/12014504.html