美文网首页
WireShark图解ARP协议

WireShark图解ARP协议

作者: 吃橘子的冬天 | 来源:发表于2018-03-30 18:13 被阅读49次

    图解ARP协议,首先要知道ARP是什么。

    但上来就说是什么,往往又不容易说清楚,因为每一个协议都有他的背景知识。

    背景知识

    1. TCP/IP 协议分为5层,从下往上依次为:物理层、链路层、网络层、传输层、应用层。本文重点关注第2、3层,第2层链路层,基于MAC地址转发数据帧,第3层网络层,基于IP地址转发报文;

    2. MAC(Media Access Control)地址是网卡决定的,烧录在网卡或者接口上的物理地址,具有二层意义和全球唯一性,是固定的,一般不能被改变。IP地址是网络中的主机或者三层接口在网络中的逻辑地址,在同一个网络内具有唯一性。

    动脑思考

    我们先想一个问题,我们都知道,通过IP地址能定位唯一一台机器,但它是怎么定位的呢?
    进一步说,因为我们发报文的时候只知道对方的IP地址,不知道对方的MAC地址。但是我们在物理层传输的时候又需要MAC地址才能找到那台机器。所以,它是怎么通过IP地址进而获取对方MAC地址的呢?

    所以我们猜测:它一定是通过什么东西,能够将对方的IP地址转化成对应的MAC地址。

    动手证明

    百度定义:

    有了上面的思考,我们去看看定义:

    地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议

    主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

    也就是说,虽然数据包发送时包含了完整的TCP/IP四层信息,但是IP地址只在网络间寻址才起作用,在同一个网络内,IP地址在发送端被转化为MAC地址进行寻址,而这种转化和交换的对应关系,依赖于ARP协议和MAC地址表。

    再换句话说,
    网络层协议是IP,底层协议是以太网,在局域网的范围内,通过ARP来将IP和MAC地址对应起来

    当当当,是不是与我们的思考对应起来了呢?

    WirkShark试验:

    只是一句定义还不够,因为细节性的东西我们还不了解。比如,它是如何通过ARP协议将IP地址转换成MAC地址的呢?

    因此我们需要做个小试验,如何试验呢?

    我在B机器上ping了一下A机器的IP地址,同时使用WireShark截收了报文,通过截获的Wireshark报文来图解ARP协议。

    AB机器的基本信息如下:

    #B机器:
    IP地址:10.15.2.37
    默认网关:10.15.2.1
    子网掩码:225.225.225.0
    
    #A机器:
    IP地址:10.104.0.226
    默认网关:10.104.0.254
    子网掩码:225.225.225.0
    

    OK,信息展示完毕,我们来看我们的朋友WireShark截获了什么吧。

    1号包:NBNS协议包,见WireShark图解NBNS协议,此处略
    2号包:ARP协议包

    你看,它好可爱哦,它问默认网关Who has 10.15.2.1?

    B通过ARP广播(看到标识区内Broadcast了吗,广播的意思),查询默认网关10.15.2.1的MAC地址。

    还记得刚刚我们列出的信息吗?10.15.2.1是B机器的默认网关。

    那么,问题出现了,为什么我们在B机器上ping的A的IP,B却去查询默认网关的MAC地址呢?

    
    默认网关小知识:
    网关是一个网络到另一个网络的关口,一个网络一个网关,所以它的作用就是把网络A和网络B连接起来,使之A网络中的机器能够和B网络中的机器进行通信。不仅如此,还能够转换协议,使不同协议的网络段中的机器进行通信。默认网关,顾名思义,就是默认的网关设置。这个可以手动,也可以由DHCP服务器自动设置。
    

    这是因为B根据自己的子网掩码,计算出A属于不同子网,跨子网通信需要默认网关的转发。而要和默认网关通信,就需要获得其MAC地址。

    2号包:图的内容是默认网关10.15.2.1回应了我们的B机器,告知自己的MAC地址。(忽略Source信息)

    26号包:

    B发出ping包,指定Destination IP是10.104.0.226,即A。

    27号包:

    A回复Bping包,指定Destination IP是10.15,2.37,即B。

    分析完这几个包,想必流程也就清楚了。B先把ping包交给默认网关,默认网关转发给A,A收到请求后直接回复给B,形成三角环路。

    相关文章

      网友评论

          本文标题:WireShark图解ARP协议

          本文链接:https://www.haomeiwen.com/subject/tzbicftx.html