zoukankan      html  css  js  c++  java
  • 内*数据的流转大体方式

    一、同网段设备之间的数据流向:

    数据从A设备到同网段的B设备,必须知道A和B的IP及他们的物理地址即MAC,

    通常情况下,A发往B的数据中已经包含的A的IP和MAC(源IP和MAC),以及B的IP(目的IP),缺少B的MAC(目的MAC),此时需要获取B的MAC

    而此时通过计算得知,AB位于同网段。故而,A会向B发送一个ARP请求,与A同网段的所有设备都会收到此请求,

    只有B在收到A的ARP请求后,才会将自己的MAC打包并发送给A,

    A接收到后解包并获取B的MAC,再将B的MAC打包到前述未发送的数据中,

    此时A再发送的数据被同网段的所有设备都接收到,但只有B能解析成功,完成发送。

    二、不同网段设备的数据流向:

    A向与A不同网段的B设备发送数据,此时A不知道B的MAC地址,故而无法将数据包的MAC直接拿到,

    此时,就用到了网关!!

    A计算发现与B设备不在同网段,故而会向网关发送ARP请求,获取到网关的MAC,并将MAC打包的A未发送的数据包中

    即 A设备的IP和MAC(源IP和MAC),B设备的IP和网关的MAC(目的IP和网关),发送数据

    此时网关收到A的数据后, 发现MAC是自己的,而IP是别人的,所以网关无法解析数据包

    此时网关就会将数据发给他的下一跳路由器

    下一跳路由器再经过若干转发用同样的数据将数据发送到目的设备B,完成发送。

    注意:

      在还没有出内网时,目标MAC必须写成网关的MAC地址发出去,

      当网关收到时,再把目标MAC地址改成下一跳的MAC地址发出去,同时源MAC地址要始终保持为发出端口的MAC地址,

      而源IP及目标IP不曾改变,就算到达了公网上,目标MAC仍然在不断改变着,直到最后,这个数据包到达目标IP的网络,最终通信结束!

    参考:https://blog.csdn.net/yinshitaoyuan/article/details/51794567

  • 相关阅读:
    listview 选择后高亮显示
    高德坐标转百度坐标并导航
    android scrollview listview显示不全
    java.lang.UnsatisfiedLinkError: Couldn't load vi_voslib from loader dalvik.system.PathClassLoader
    JAVA Map 和 List 排序方法
    Butter Knife 使用方法
    Volley 结合GSON或FastJson用法
    android-menudrawer 和SlidingMenu 用法
    ueditor 正在读取目录及网络链接错误
    【449】backup get weekly tweets
  • 原文地址:https://www.cnblogs.com/zhanghaibin16/p/15098782.html
Copyright © 2011-2022 走看看