网络协议复习笔记(六)从MAC层继续出发

宿舍上网的原理

学校给每个宿舍的网口分配了一个 IP。这个 IP 是校园网的 IP,完全由网管部门控制。宿舍网的 IP 地址多为 192.168.1.x。校园网的 IP 地址,假设是 10.10.x.x。
有两个办法上网:

  1. 让舍长再买一个网卡。这个时候舍长的电脑里就有两张网卡。一张网卡的线插到宿舍的交换机上,另一张网卡的线插到校园网的网口。而且,这张新的网卡的 IP 地址要按照学校网管部门分配的配置,不然上不了网。这种情况下需要一直开着宿舍长的电脑
  2. 共同出钱买个家庭路由器。家庭路由器会有内网网口和外网网口。把外网网口的线插到校园网的网口上,将这个外网网口配置成和网管部的一样。内网网口连上你们宿舍的所有的电脑。这种情况下需要一直开着路由器

本质上第一种方式只是让舍长的电脑变成了一个有多个口的路由器,两种方法的本质是一样的。当舍长可以上网后,需要解决其他人电脑怎么上网的问题,就需要配置网卡DHCP 进行网卡配置,除了 IP 地址,还需要配置Gateway ,也就是网关

MAC 头和 IP 头的细节

在这里插入图片描述
在任何一台机器上,当要访问另一个 IP 地址的时候,都会先判断,这个目标 IP 地址,和当前机器的 IP 地址,是否在同一个网段。怎么判断同一个网段呢?需要 CIDR子网掩码
如果是同一个网段,例如,访问室友的电脑,就没网关什么事情,直接将源地址目标地址放入IP 头中,然后通过 ARP 获得 MAC 地址,将源 MAC目的 MAC 放入 MAC 头中,发出去就可以了。
如果是不同网段,例如,访问你们校园网里面的 BBS。这就需要发往默认网关 GatewayGateway 的地址一定是和源 IP 地址是一个网段的。往往不是第一个,就是第二个。例如 192.168.1.0/24 这个网段,Gateway 往往会是 192.168.1.1/24 或者 192.168.1.2/24。
发往默认网关的过程就和发往同一个网段的其他机器是一样的:将源地址和目标 IP 地址放入 IP 头中,通过 ARP 获得网关的 MAC 地址,将源 MAC 和网关的 MAC 放入 MAC 头中,发送出去。
**网关往往是一个路由器,是一个三层转发的设备。**三层设备就是把 MAC 头和 IP 头都取下来,然后根据里面的内容,看看接下来把包往哪里转发的设备。宿舍里面,网关就是舍长的电脑。一个路由器往往有多个网口,如果是一台服务器做这个事情,则就有多个网卡,其中一个网卡是和源 IP 同网段的。
路由器是一台设备,它有五个网口或者网卡,相当于有五只手,分别连着五个局域网。每只手的 IP 地址都和局域网的 IP 地址相同的网段,每只手都是它握住的那个局域网的网关。
任何一个想发往其他局域网的包,都会到达其中一只手,被拿进来,拿下 MAC 头和 IP 头,看看,根据自己的路由算法,选择另一只手,加上 IP 头和 MAC 头,然后扔出去。

静态路由

IP 头和 MAC 头加什么内容,大致可以分为两类,一个是静态路由(不变),一个是动态路由(变)

静态路由就是在路由器上,配置一条一条规则。这些规则包括:想访问 BBS 站(它肯定有个网段),从 2 号口出去,下一跳是 IP2;想访问教学视频站(它也有个自己的网段),从 3 号口出去,下一跳是 IP3,然后保存在路由器里。

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

转发网关

在这里插入图片描述
服务器 A 要访问服务器 B。首先,服务器 A 会思考,192.168.4.101 和我不是一个网段的,因而需要先发给网关。网关是 192.168.1.1。发送 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。

从 192.168.56.1 这个口发出去,发给 192.168.56.2,路由器 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 这个口出去。

发给 192.168.4.101。路由器 B 发送 ARP 获取 192.168.4.101 的 MAC 地址,然后发送包。包的内容是这样的:

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

包到达服务器 B,MAC 地址匹配,将包收进来。
可以观察到所有的包都只是MAC地址在发生改变,IP地址不变。所谓的下一跳是,通过ARP将某个 IP 要将这个 IP 地址转换为 MAC 放入 MAC 头

IP 地址在三个局域网都可见,在三个局域网之间的网段都不会冲突。在三个网段之间传输包,IP 头不改变。也就是经过的是转发网关

NAT网关

在这里插入图片描述
局域网之间没有商量过,各定各的网段,因而 IP 段冲突了。比如上图的服务器A和服务器B。
虽然在各自的局域网相同,但他们都需要在“大环境”下有对应的身份,假设服务器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:

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

核对MAC后被路由器接收,在路由器A中,要从 192.168.56.1 这个口发出去,发给 192.168.56.2。当网络包发送到中间的局域网的时候,服务器 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 这个网口,路由器 B 是一个 NAT 网关,它上面配置了,要访问国际身份 192.168.56.2 对应国内身份 192.168.1.101,于是改为访问 192.168.1.101。

从 192.168.1.1 这个口出去,包内容是这样的:

  • 源 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,转换为国内身份。

观察以上所有包可以发现,IP地址在发生改变,也就是Network Address Translation,简称 NAT。而NAT更常见,现在大家每家都有家用路由器,家里的网段都是 192.168.1.x,所以你肯定访问不了你邻居家的这个私网的 IP 地址的。

小结

  • 离开本局域网,就需要经过网关网关是路由器的一个网口
  • 路由器是一个三层设备,里面有如何寻找下一跳的规则
  • 经过路由器之后 MAC 头要变,如果 IP 不变,就是转发网关,如果 IP 变,就是NAT
发布了94 篇原创文章 · 获赞 137 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/yyhhlancelot/article/details/105691700