zoukankan      html  css  js  c++  java
  • ARP协议及其工作原理

    ARP 协议 ,即Address Resolution Protocal,地址解析协议.  它是通过主机IP查找对应的mac地址.  这么说不太严谨,应该是以目标IP地址为线索, 定位下一个应该接收数据《分包》的网络设备对应的MAC地址.    如果目标主机不在同一个链路上,可以通过ARP查找下一跳路由器的MAC地址.    不过ARP只适用于IPv4,不适用于IPv6 . 

    mac 地址属于数据链路层.  我们先来看下数据链路层.

    一 .数据链路层

      数据链路层的协议定义了通过媒介互连的设备之间传输的规范.    通信媒介包括双绞线电缆,同轴电缆,光纤,电波以及红外线等介质.  

    实际上,各个设备之间在数据传输时,数据链路层都是必不可少的.    众所周知, 计算机以二进制 0,1 来表示信息,然而实际的通信媒介之间处理的是电压的高低,光的闪灭,以及电波的强弱等信号.

    把这些信号与二进制的0,1进行转换的正是物理层.    

      数据链路层处理的数据也不是单纯的0,1序列,该层把它们集合为一个叫做“帧”块, 然后再进行传输. 

      数据链路层也可以被视为网络传输中的最小单位.      

    二. 数据链路相关技术

      2.1 MAC地址 

      MAC地址是用于识别数据链路层中互连的节点.  MAC地址长48比特. 在使用网卡(NIC)的情况下,MAC地址一般会被烧写到ROM中.  因此,一个网卡到MAC地址是唯一的.

      2.2 PPP定义

      指的是Point-to-Point Protocol, 是指点对点,即1对1连接的计算机协议.    相当于位于OSI参考模型的第2层的数据链路层,并且它属于纯粹的数据链路层,与物理层没有任何关系. 

    换句话说, 仅有PPP无法实现通信,还要有物理层的支持.      PPPoE(PPP over Ehernet)实现互联网的接入就是在以太网的数据中加入PPP帧进行传输的一种方式.

    三.  ARP的工作机制

      简单的说,  ARP是借助 ARP请求和ARP响应两种类型的包来确定 MAC地址的.

      主机A为了知道主机B的mac地址, 要通过《广播》发送一个ARP请求包.  这个包中 包含了主机B的IP地址, 还有主机A自己的MAC地址.    同一个链路上所有的主机或者路由器都会接收到

    主机A的广播包.  因此ARP的请求包会被这同一个链路上的主机和路由器进行解析.     如果ARP请求包中的目标IP地址与自己的IP地址一致,那么这个节点就将自己的MAC地址塞入ARP响应包

    返回给主机A.     

      也就是说,根据ARP可以动态的进行地址解析,无须事先知道MAC地址,只要有IP地址即可.   但是如果每次发送一个IP数据包都要进行一次ARP请求,会造成不必要的网络流量.   因此

    通常的做法是把获取到的MAC地址缓存一段时间,并与对应的IP做映射关系记忆.  

      记录IP地址和MAC地址对应关系的数据库叫做ARP表,  可以通过在命令行中输入arp -a 命令获取该表信息.    

      每执行一次ARP,之前缓存的对应内容都会被清除. 在清除之前都可以不需要执行ARP就可以获取到想要的MAC地址.  这样,在一定程度上也防止了ARP包在网络上被大量广播的可能性.

      

    疑问?   知道目标主机IP地址 ,为什么还要知道对方的mac地址来进行数据传输呢?  

  • 相关阅读:
    HDU1712:ACboy needs your help(分组背包模板)
    HDU1203:I NEED A OFFER!(01背包)
    HDU1171:Big Event in HDU
    POJ1014:Dividing(多重背包)
    HDU2191-悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包入门)
    hdu2159FATE(二维背包)
    POJ1201 Intervals
    C++之运算符重载
    C++之强制类型转换
    MFC WinInetHttp抓取网页代码内容
  • 原文地址:https://www.cnblogs.com/sunnydaybyday/p/15616586.html
Copyright © 2011-2022 走看看