极客时间 - 网关学习笔记整理

极客时间 - 网关学习笔记整理

在进行网卡配置的时候,除了 IP 地址,还需要配置一个Gateway的东西,这个就是网关。

如果是同一个网段,例如,你访问你旁边的兄弟的电脑,那就没网关什么事情,直接将源地址和目标地址放入 IP 头中,然后通过 ARP 获得 MAC 地址,将源 MAC 和目的 MAC 放入 MAC 头中,发出去就可以了。
如果不是同一网段,例如,你要访问你们校园网里面的 BBS,该怎么办?这就需要发往默认网关 Gateway。

###Gateway

Gateway 的地址一定是和源 IP 地址是一个网段的。往往不是第一个,就是第二个。例如 192.168.1.0/24 这个网段,Gateway 往往会是 192.168.1.1/24 或者192.168.1.2/24。

静态路由是什么?静态路由,其实就是在路由器上,配置一条一条规则。

转发网关和NAT网关

IP 头和 MAC 头哪些变、哪些不变?之前我说过,MAC 地址是一个局域网内才有效的地址。因而,MAC 地址只要过网关,就必定会改变,因为已经换了局域网。两者主要的区别在于 IP 地址是否改变。不改变 IP 地址的网关,我们称为转发网关;改变 IP 地址的网关,我们称为NAT 网关。

服务器 A 要访问服务器 B。首先,服务器 A 会思考,192.168.4.101 和我不是一个网段的,因而需要先发给网关。那网关是谁呢?已经静态配置好了,网关是 192.168.1.1。网关的 MAC 地址是多少呢?发送 ARP 获取网关的 MAC 地址,然后发送包。包的内容是这样的:

  • 源 MAC:服务器 A 的 MAC
  • 目标 MAC:192.168.1.1 这个网口的 MAC
  • 源 IP:192.168.1.101
  • 目标 IP:192.168.4.101

包到达 192.168.1.1 这个网口,发现 MAC 一致,将包收进来,开始思考往哪里转发。在路由器 A 中配置了静态路由之后,要想访问 192.168.4.0/24,要从 192.168.56.1 这个口出去,下一跳为 192.168.56.2。

于是,路由器 A 思考的时候,匹配上了这条路由,要从 192.168.56.1 这个口发出去,发给192.168.56.2,那 192.168.56.2 的 MAC 地址是多少呢?路由器 A 发送 ARP 获取192.168.56.2 的 MAC 地址,然后发送包。包的内容是这样的:

  • 源 MAC:192.168.56.1 的 MAC 地址
  • 目标 MAC:192.168.56.2 的 MAC 地址
  • 源 IP:192.168.1.101
  • 目标 IP:192.168.4.101

包到达 192.168.56.2 这个网口,发现 MAC 一致,将包收进来,开始思考往哪里转发。在路由器 B 中配置了静态路由,要想访问 192.168.4.0/24,要从 192.168.4.1 这个口出去,没有下一跳了。因为我右手这个网卡,就是这个网段的,我是最后一跳了。

整个过程中,IP 头里面的地址都是不变的。
IP 地址在三个局域网都可见,在三个局域网之间的网段都不会冲突。在三个网段之间传输包,
IP 头不改变。

首先,目标服务器 B 在国际上要有一个国际的身份,我们给它一个 192.168.56.2。在网关 B上,我们记下来,国际身份 192.168.56.2 对应国内身份 192.168.1.101。凡是要访问192.168.56.2,都转成 192.168.1.101。于是,源服务器 A 要访问目标服务器 B,要指定的目标地址为 192.168.56.2。这是它的国际身份。服务器 A 想,192.168.56.2 和我不是一个网段的,因而需要发给网关,网关是谁?已经静态配置好了,网关是 192.168.1.1,网关的 MAC 地址是多少?发送 ARP 获取网关的 MAC 地址,然后发送包。包的内容是这样的:

  • 源 MAC:服务器 A 的 MAC
  • 目标 MAC:192.168.1.1 这个网口的 MAC
  • 源 IP:192.168.1.101
  • 目标 IP:192.168.56.2
  • 包到达 192.168.1.1 这个网口,发现 MAC 一致,将包收进来,开始思考往哪里转发。

在路由器 A 中配置了静态路由:要想访问 192.168.56.2/24,要从 192.168.56.1 这个口出去,没有下一跳了,因为我右手这个网卡,就是这个网段的,我是最后一跳了。

于是,路由器 A 思考的时候,匹配上了这条路由,要从 192.168.56.1 这个口发出去,发给192.168.56.2。那 192.168.56.2 的 MAC 地址是多少呢?路由器 A 发送 ARP 获取 192.168.56.2 的 MAC 地址。

当网络包发送到中间的局域网的时候,服务器 A 也需要有个国际身份,因而在国际上,源 IP 地址也不能用 192.168.1.101,需要改成 192.168.56.1。发送包的内容是这样的:

  • 源 MAC:192.168.56.1 的 MAC 地址
  • 目标 MAC:192.168.56.2 的 MAC 地址
  • 源 IP:192.168.56.1
  • 目标 IP:192.168.56.2
  • 包到达 192.168.56.2 这个网口,发现 MAC 一致,将包收进来,开始思考往哪里转发。

路由器 B 是一个 NAT 网关,它上面配置了,要访问国际身份 192.168.56.2 对应国内身份192.168.1.101,于是改为访问 192.168.1.101。

在路由器 B 中配置了静态路由:要想访问 192.168.1.0/24,要从 192.168.1.1 这个口出去,没有下一跳了,因为我右手这个网卡,就是这个网段的,我是最后一跳了。于是,路由器 B 思考的时候,匹配上了这条路由,要从 192.168.1.1 这个口发出去,发给192.168.1.101。

那 192.168.1.101 的 MAC 地址是多少呢?路由器 B 发送 ARP 获取 192.168.1.101 的 MAC 地址,然后发送包。内容是这样的:

  • 源 MAC:192.168.1.1 的 MAC 地址
  • 目标 MAC:192.168.1.101 的 MAC 地址
  • 源 IP:192.168.56.1
  • 目标 IP:192.168.1.101
  • 包到达服务器 B,MAC 地址匹配,将包收进来。

从服务器 B 接收的包可以看出,源 IP 为服务器 A 的国际身份,因而发送返回包的时候,也发给这个国际身份,由路由器 A 做 NAT,转换为国内身份。

你可能感兴趣的:(TCP/IP)