zoukankan      html  css  js  c++  java
  • ARP:地址解析协议

    我们假设这样一个场景:你需要和你网络中的一个设备进行通信,这个设备可能是某种服务器。你用来创建这个通信的应用已经得到了这个远程主机的ip地址,也意味着系统已经有了用来构建它想要在第三层到第7层传递数据包所需要的信息。这时它所需要的唯一的信息就是第二层包含目标主机MAC地址的数据链路层数据。

    之所以需要MAC地址,是因为网络中用于连接各个设备的交换机使用了内容寻址寄存器(CAM),这个表列出了它在每一个端口所有连接设备的MAC地址。当交换机收到了一个指定MAC地址的流量,它会使用这个表,来确定应该使用哪个端口发送流量。如果目标的MAC地址是未知的,这个传输设备会首先在它的缓存中查询这个非地址,如果没有查询到,就需要ARP协议将ip地址解析成MAC地址。

    这个计算机A会发出一个ARP请求,基本就是大家好,我的ip地址是多少,我的MAC地址是多少;我需要向B发送信息,但我不知道它的MAC地址,谁有B的MAC地址?这个消息被广播到网段中的所有设备,不是这个ip地址的设备就请丢弃这个数据。而拥有这个ip地址的设备就发送一个ARP请求,告诉A我拥有这个ip地址,我的MAC是多少。

     

    上图是wireshark所抓取的网络包,是ARP请求,这个数据包的目的地址是ff:ff:ff:ff:ff:ff,这是一个广播地址,会发送到当前网段的所有的设备,这个数据包中以太网的源地址就是我们的MAC地址。这个ARP数据包列出了发送方的ip地址和MAC地址 ,以及接收方的ip地址,但接收方的MAC地址是未知的,所以是00:00:00:00:00:00;

    上图是wireshark抓取的arp回复,显示出是reply,给出了目标设备的MAC地址。

    这就是一个简单的ARP解析协议。

    在很多不的情况下,一个设备的IP地址是可以改变的,当这样的改变发生后,网络主机中缓存的IP和MAC地址映射就不再有效了,无偿的ARP就会发送,更新交换机MAC地址和ip地址的映射缓存。

  • 相关阅读:
    从训练数据中随机抽取一打数据的好方法
    黄金坑的说明
    Chainer的初步学习
    split和strip的使用
    转载:configure执行流程(1.5.2)《深入理解Nginx》(陶辉)
    转载:编译安装Nginx(1.5.1)《深入理解Nginx》(陶辉)
    转载:编译安装Nginx(1.4)《深入理解Nginx》(陶辉)
    转载:获取Nginx源码(1.3.5)《深入理解Nginx》(陶辉)
    转载:Linux内核参数的优化(1.3.4)《深入理解Nginx》(陶辉)
    转载:磁盘目录(1.3.3)《深入理解Nginx》(陶辉)
  • 原文地址:https://www.cnblogs.com/chengliangsheng/p/3598733.html
Copyright © 2011-2022 走看看