zoukankan      html  css  js  c++  java
  • TCP/IP__IP寻址及ARP解析

    ARP解析过程中MAC地址以及IP地址的变化情况

    1.两主机要通信传送数据时,就要把应用数据封装成IP包,然后再交给下一层数据链路层继续封装成帧;之后根据MAC地址才能把数据从一台主机,准确无误的传送到另一台主机。

    隔同一广播域的交换机

       

    2.如图:当NO要和N1通信时,假如

      1)NO会先查看自己的ARP高速缓存中是否有N1的MAC地址记录。

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

      3)如果N0的ARP缓存中没有N1的MAC地址,那NO就会发送一个ARP的广播请求,其中源IP是NO 目标IP是N1;源MAC是N0  目标MAC是12个F)给同一广播域中的所有成员;

      当交换机从自己的1接口上收到这个广播包,然后它会读取这个帧的源MAC地址和目标MAC地址,由于交换机刚启动加电时,它的MAC表为空的。所以它会把NO的MAC地址与之相对应的接口1放到一张表里,这张表就是MAC地址表。

      然后它再从别的接口广播这个数据帧,当别的主机收到这个广播时,查看目标IP不是自己的,就会丢弃此包。3)如果N1接收到这个数据帧,它检查目标IP和这个的IP是一样的,就会回应这个ARP请求,把自己的IP和MAC封装成源IP和源MAC,

      N0的IP和N0的MAC地址为目标IP与目标MAC,并记录NO的MAC与IP,放进自己的ARP缓存表中。   此时,这个应答包经过交换机时,它又会检查源MAC、目标MAC,把N1的MAC和自己接口2放进MAC地址表中,再查看自己的MAC地址表,

      发现存在目标MAC与自己的1接口对应(由于刚开始有记录过N0的MAC),那它就会直接把这个应答包从接口1送出去了。

      4)主机N0收到这个包后发现目标MAC是自己,就会处理这个包。并把N1的MAC与IP放进自己的ARP缓存表中。这时主机N0就知道N1的MAC地址了,以后要发送数据,就直接把N1的IP与MAC封装进帧中进行点对点的发送了。

    隔路由器

    1.1)A主机先通过广播一个ARP请求,找到本网络中的一个路由器的MAC地址,然后将数据包直接给路由器。

      2)当路由器收到数据包后,如果路由器发现B主机在自己连接网络中的话,这时通过ARP找到B主机,然后把数据包给B主机。

      3)如果B主机不和A主机发送数据的路由器在同一网络内的话,则路由器会通过ARP协议找到下一跳的路由器,然后把数据包发送到该路由上,以此类推。

    2.MAC地址经过路由或路由主机是都是发生改变的,源发送主机是不知道目的主机的MAC地址的,但是知道IP。而IP地址一般是不会发生变化的。

    3.

       

      PC1——>PC2:

      PC1→R的G0/0:源MAC:11,目的MAC:AA

      R对上述包进行处理:剥离原源地址,以G0/1的MAC地址代替;

      剥离原目的地址,以PC2的MAC地址代替。

      即,R的G0/1→PC2:源MAC:BB,目的MAC:22

      注:过程中,源IP地址和目的IP地址均不变。

       

      R1上面E0口的MAC地址假设为AA,E1口的MAC地址假设为BB;

      R2上面E0口的MAC地址假设为CC,E1口的MAC地址假设为DD;

      PC1的MAC地址是11;PC2的MAC地址是22. 

    ARP解析

      

    1.当主机A ping 主机B之后,主机A的ARP缓存条目?

      主机A要ping主机B,首先主机A需要封装ping包,而封装ping包需要主机A和主机B的二、三层地址信息。然而主机A并不知道主机B的MAC地址,这样主机A就会向局域网发送ARP请求,以请求主机B的MAC。

      网关收到主机A的ARP请求后,发现主机B是其他网段的地址,这样网关会启用代理ARP的功能,将自己的MAC地址应答给主机A。主机A收到应答包后会对本地的ARP缓存进行更新,将应答方的IP和MAC地址存储在ARP缓存中,

      同时完成ping包的封装。网关在收到ping包后会自动完成二层地址的重定向。

      故应为。

      

    2.在以太网寻址的时候,依靠的是MAC地址。每个网段都需要寻找到自己的下一跳(gateway)以自己MAC作为源MAC,gateway的MAC作为目的MAC,然后将帧转发出去,但是数据包是不会进行变化的,

      即packet的头部信息不回发生改变。故IP包头的源、目的地址是不会变的。

  • 相关阅读:
    Css实现漂亮的滚动条样式
    清除浮动的方式有哪些?比较好的是哪一种?
    Cookie、sessionStorage、localStorage的区别
    http和https的区别?
    git 拉取分支切换分支
    css 三角形
    js中??和?.的意思
    js this指向
    tsconfig.json配置
    查看本地安装的所有npm包
  • 原文地址:https://www.cnblogs.com/xinghen1216/p/11099062.html
Copyright © 2011-2022 走看看