V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
mart1nN
V2EX  ›  问与答

网络通信的问题

  •  
  •   mart1nN · 2019-03-22 00:40:36 +08:00 · 1250 次点击
    这是一个创建于 2069 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近学了网络通信原理,说 http 数据嵌在 tcp 数据包中,tcp 嵌在 ip 数据包中,最后 ip 嵌在以太网数据包。我想请问一下,为啥不是以太网数据包嵌在 ip 数据包中呢?我的理解找到因特网中某个节点总是先找到子网,再从子网中找到那台主机。那不就应该是先解析 ip 包再以太网包吗?这样的话 ip 包应该在外面是吧.....

    7 条回复    2019-03-22 20:19:23 +08:00
    cdlnls
        1
    cdlnls  
       2019-03-22 01:20:07 +08:00 via iPhone
    你说的以太网包应该是指的帧吧?

    知道 IP 还不行,还需要网卡的 mac 地址。
    ruiowe
        2
    ruiowe  
       2019-03-22 01:33:23 +08:00   ❤️ 1
    我要从广州寄一封信给北京的张三
    IP 地址写的就是 北京张三 收
    我作为一个傻白甜直接把这封信交给了我门口的路由器君
    路由器君内心是拒绝的,因为它并不知道北京张三在哪儿,但它知道广州邮政局在哪儿(广州邮局 MAC 地址)
    广州邮局表示内心是崩溃的,因为它也不知道北京张三在哪儿,但它知道北京邮局的地址( MAC 地址)
    北京邮局表示为啥受伤的总是我,鬼知道北京张三在哪儿?
    于是北京邮局广播,谁知道张三这龟儿子在哪儿? 朝阳邮局回复:给我吧,我知道!
    朝阳邮局君知道张三的地址( MAC 地址),于是把信交给了张三同学
    nfroot
        3
    nfroot  
       2019-03-22 08:15:05 +08:00
    从协议设计的时候,数据包的内容其实是在变化的,数据包经过的每个设备,都要对数据拆开看看,如果是属于我的,我就继续拆下一层,否则就不拆了。

    如果我是交换机,数据包不属于我,我就继续往下传播,只拆第二层,如果我是路由器,我最多拆到第三层,我还要修改其中的 mac 地址,重新包装一下,如果我是变态,我可能会拆到第七层。

    数据包内容(类似快递包裹你要输送的物品) 这一层数据不会变
    源和目标 IP+端口(相当于快递的源地址,目的地),源 IP 可能会变
    源和目标 MAC,每经过一个路由器都会发生变化(记录您的货物已由 XXX 快递节点接手,下一站是什么点,不过只会存一份,历史节点不存)

    因为数据包是要整个传输出去的,每次拆包和包装,都是有代价的,所以经常变化的放最底层,不经常变化的放上层。
    nfroot
        4
    nfroot  
       2019-03-22 08:23:12 +08:00
    修改次数最多,使用最多的其实是 mac 地址而不是 IP 地址,所以 IP 地址在上层而不是下层。
    goofool
        5
    goofool  
       2019-03-22 09:39:02 +08:00
    那你想想在子网里怎么就能找到那台主机
    mansurx
        6
    mansurx  
       2019-03-22 11:44:45 +08:00
    mart1nN
        7
    mart1nN  
    OP
       2019-03-22 20:19:23 +08:00
    谢谢大佬们
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2814 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:21 · PVG 23:21 · LAX 07:21 · JFK 10:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.