网络包之旅

两个网络

如下拓扑,aaaa代表mac地址,.10代表ip地址,123代表端口

发送过程

假如我们想把一个数据从A发D

0.一切开始之前,因为这个网络拓扑,所以在网络就绪之初,路由器拿出小本本在路由表记录下:

eth1 11.11.11.0/24
eth2 22.22.22.0/24
  1. 首先,A要给D发包,A是知道D的IP地址的

  2. A构建一个数据

DATA

L3
SRC:11.11.11.10
DST:22.22.22.40
  1. A首先要找它的网关(11.11.11.1)

  2. 于是,A就发一个ARP请求到11.11.11.1。
    请求发出,交换机swX收到消息,于是交换机拿出小本本在MAC地址表中记录下

2  aaaa.aaaa.aaaa
  1. 交换机此时还不知道谁是11.11.11.1,于是它向所有连接它的设备转发ARP请求

  2. B收到ARP请求,一看,不关我事,忽略

  3. 路由器收到ARP请求,一看,找我的,赶紧拿出小本本记录,记在ARP表

11.11.11.10  aaaa
  1. 记录之后,路由器得回复这个ARP请求,于是发送响应

  2. 交换机swX收到请求,于是拿出小本本在MAC地址表中记录下

3  ee01.ee01.ee01
  1. 交互机转发请求,这次它已经知道A是连接2口的(step4),所以只会从2口出,发给A

  2. A 收到响应,也拿出小本本在ARP表中记录下

11.11.11.1  ee01

步骤3到步骤11,只是为了找到网络出口。我们可以看到在此过程中,主机、交换机、路由器会记录一些东西,目的就是后面每次干活都来这么一次“找出口”的操作

  1. 此时A知道了网络出口,于是它把发送的数据再完善下
DATA

L3
SRC:11.11.11.10
DST:22.22.22.40

L2
SRC:aaaa.aaaa.aaaa
DST:ee01.ee01.ee01
  1. 开始发送数据,swX收到消息,看了L2的数据,一查小本本就知道要发给路由器(而不是广播)

  2. 路由器收到包,把L2去掉了,它是干L3的活的。

DATA

L3
SRC:11.11.11.10
DST:22.22.22.40

数据包终于到了路由器

  1. 路由器一看,你要到22.22.22.0/24网络去,翻出小本本一看,从eth2口出

  2. 路由器找到网络可不行,还得找到谁是22.22.22.40。
    有了上面的经验,你可能想到了,就是发送ARP请求,看看在网络内部谁响应。
    于是,路由器就开始发送一个ARP请求,说我要找22.22.22.40

  3. 交换机swY收到ARP请求,拿出小本本在MAC地址表记下

4 ee02.ee02.ee02
  1. 交换机swY广播给C和D

  2. 同理,C忽略

  3. D一看,找我的,先记录到ARP表

22.22.22.1 ee02
  1. D响应ARP请求

  2. 交换机swY收到,记录MAC地址表

5 dddd.dddd.dddd
  1. 交换机swY转发ARP响应给路由器,路由器也更新ARP表
22.22.22.40 dddd

步骤16到步骤23还是网络内部找目标,通过发送ARP请求,找到了目标主机。同时,路由器、交换机、主机也更新了他们对应的表,下次就不会这么麻烦了

  1. 路由器更新包
DATA

L3
SRC:11.11.11.10
DST:22.22.22.40

L2
SRC:ee02.ee02.ee02
DST:dddd.dddd.dddd
  1. 开始发包,交换机swY收到包,经过刚才的学习,它知道发给D

  2. D收到包,去掉L2 L3,拿到DATA

DATA

如果D要给A响应,那么将会很快,因为在数据包来的路上,各个设备都已经学习并记录了关键信息,知道从哪来到哪去

Ref

https://www.youtube.com/watch?v=rYodcvhh7b

posted @ 2023-08-09 10:39  talentzemin  阅读(393)  评论(0编辑  收藏  举报