最近学了网络通信原理,说 http 数据嵌在 tcp 数据包中,tcp 嵌在 ip 数据包中,最后 ip 嵌在以太网数据包。我想请问一下,为啥不是以太网数据包嵌在 ip 数据包中呢?我的理解找到因特网中某个节点总是先找到子网,再从子网中找到那台主机。那不就应该是先解析 ip 包再以太网包吗?这样的话 ip 包应该在外面是吧.....
1
cdlnls 2019-03-22 01:20:07 +08:00 via iPhone
你说的以太网包应该是指的帧吧?
知道 IP 还不行,还需要网卡的 mac 地址。 |
2
ruiowe 2019-03-22 01:33:23 +08:00 1
我要从广州寄一封信给北京的张三
IP 地址写的就是 北京张三 收 我作为一个傻白甜直接把这封信交给了我门口的路由器君 路由器君内心是拒绝的,因为它并不知道北京张三在哪儿,但它知道广州邮政局在哪儿(广州邮局 MAC 地址) 广州邮局表示内心是崩溃的,因为它也不知道北京张三在哪儿,但它知道北京邮局的地址( MAC 地址) 北京邮局表示为啥受伤的总是我,鬼知道北京张三在哪儿? 于是北京邮局广播,谁知道张三这龟儿子在哪儿? 朝阳邮局回复:给我吧,我知道! 朝阳邮局君知道张三的地址( MAC 地址),于是把信交给了张三同学 |
3
nfroot 2019-03-22 08:15:05 +08:00
从协议设计的时候,数据包的内容其实是在变化的,数据包经过的每个设备,都要对数据拆开看看,如果是属于我的,我就继续拆下一层,否则就不拆了。
如果我是交换机,数据包不属于我,我就继续往下传播,只拆第二层,如果我是路由器,我最多拆到第三层,我还要修改其中的 mac 地址,重新包装一下,如果我是变态,我可能会拆到第七层。 数据包内容(类似快递包裹你要输送的物品) 这一层数据不会变 源和目标 IP+端口(相当于快递的源地址,目的地),源 IP 可能会变 源和目标 MAC,每经过一个路由器都会发生变化(记录您的货物已由 XXX 快递节点接手,下一站是什么点,不过只会存一份,历史节点不存) 因为数据包是要整个传输出去的,每次拆包和包装,都是有代价的,所以经常变化的放最底层,不经常变化的放上层。 |
4
nfroot 2019-03-22 08:23:12 +08:00
修改次数最多,使用最多的其实是 mac 地址而不是 IP 地址,所以 IP 地址在上层而不是下层。
|
5
goofool 2019-03-22 09:39:02 +08:00
那你想想在子网里怎么就能找到那台主机
|
6
mansurx 2019-03-22 11:44:45 +08:00
|
7
mart1nN OP 谢谢大佬们
|