• 内*数据的流转大体方式


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

    数据从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

  • 相关阅读:
    bootstrap-select.js 下拉框多选后动态赋值
    vs2012 未找到与约束 ContractName Microsoft.VisualStudio.Utilities.IContentTy...
    jquery 报错 Uncaught TypeError: Illegal invocation
    火狐浏览器的RestClient,接口测试,Post提交数据
    destoon二次开发 操作数据库可运行示例
    ZendStudio13 PHP调试环境快速配置
    VR发展的最大障碍在于内容?
    优秀博文链接
    LoopMatrix
    串口输出float型数据
  • 原文地址:https://www.cnblogs.com/zhanghaibin16/p/15098782.html
Copyright © 2020-2023  润新知