老郑的博客

木叶飞舞之处,火亦生生不息!

ARP协议介绍

简介

  ARP协议是某些网络接口使用的特殊协议,用来转换IP层和网络接口层使用的地址


  ARP为IP地址到对应的硬件地址之间提供映射。也就是说如果两台主机需要通信,需要知道对方的mac地址,因为IP地址相当于是逻辑地址.

  如果只知道IP地址是没办法通信的,因为主机并不知道需要把数据报发送到哪台主机上。

例子

  现在假设我们有两台主机,需要通信,IP地址分别是192.168.3.31192.168.3.32

  这两台主机需要通信的话,首先发送方会发送一份ARP请求的以太网数据帧给以太网上的所有主机,这个过程也叫做广播,目的主机接收到ARP广播,发现是在询问它的IP地址,于是发送一个ARP应答.

  下面是192.168.3.32服务器的高速缓存



  在192.168.3.32服务器上使用抓包程序进行抓包,在192.168.3.31上ping32主机


  把刚才保存的testx.cap保存下来,这里我用了writeshark打开刚才抓取到的数据报

  下图就是刚才我们抓到的数据报,首先31服务器会发送一个广播(Broadcast)询问,第二条就回应告诉31,我的ip地址就是32并且回应的报文当中,还携带着自己的mac地址.这样我们在31服务器上就在ARP缓存当中缓存了32服务器的mac地址,默认的高速缓存时间是20分钟


  接下来我们查看ARP详细报文信息




  frame里面包含的物理传输的数据帧,暂且不去关注.从以太网开始(Ethernet)

1.Destination:Broadcast
    目的地址,一个广播地址

2.Source
    源mac地址

3.Type
    数据报的类型,主要记住 一下两种就可以了
    IP数据报:0x0800
    ARP地址解析数据报:0x0806

  在看ARP数据报

1.Hardwre type
    硬件类型,这里是以太网

2.Protocol Type
    传输协议类型 IP4

3.Hardwre Size
    硬件地址长度,单位为字节,这里硬件mac地址是6字节(00:0c:29:9a:93:03)

4.Protocol size
    协议地址长度, 4字节(192.168.3.31)

5.opcode request
    操作类型,主要有四个字段
    ARP请求(值为1)
    ARP应答(值为2)
    RARP请求(值为3)
    RARP应答(值为4)

6.剩下的一个是发送mac、IP和目的主机mac地址和ip地址


ARP代理

免费ARP

  免费ARP,它是指主机发送ARP查找自己的IP地址,通常它发生在系统引导期间进行接口配置的时候

  这句话的意思就是当我主机在设置IP地址的时候,会发送一个ARP请求广播到局域网,如果局域网内没人回复就代表IP是可用的,如果有人回复,就代表IP冲突了。

  还有一个作用就是如果修改IP地址的主机正好也修改了mac地址,那么收到广播的机器,也可以更新ARP缓存的mac地址

总结

  我觉得ARP地址解析这个过程就好像是在在一个办公室内,大家相互不认识,当你老板说让你给张三(目的主机)一个东西,那你就会在办公室里喊一声谁是张三,办公室里所有人都听得到你在喊广播,因为其他人不是张三,他们不会答应你,只有张三一听原来是叫我,它就会回答我是张三(ARP应答)。然后你心里就会记下它是张三这个记下也就是ARP高速缓存

posted @ 2020-06-04 14:00  zyz1  阅读(718)  评论(0编辑  收藏  举报