宿舍上网的原理
学校给每个宿舍的网口分配了一个 IP。这个 IP 是校园网的 IP,完全由网管部门控制。宿舍网的 IP 地址多为 192.168.1.x。校园网的 IP 地址,假设是 10.10.x.x。
有两个办法上网:
- 让舍长再买一个网卡。这个时候舍长的电脑里就有两张网卡。一张网卡的线插到宿舍的交换机上,另一张网卡的线插到校园网的网口。而且,这张新的网卡的 IP 地址要按照学校网管部门分配的配置,不然上不了网。这种情况下需要一直开着宿舍长的电脑。
- 共同出钱买个家庭路由器。家庭路由器会有内网网口和外网网口。把外网网口的线插到校园网的网口上,将这个外网网口配置成和网管部的一样。内网网口连上你们宿舍的所有的电脑。这种情况下需要一直开着路由器。
本质上第一种方式只是让舍长的电脑变成了一个有多个口的路由器,两种方法的本质是一样的。当舍长可以上网后,需要解决其他人电脑怎么上网的问题,就需要配置网卡,DHCP 进行网卡配置,除了 IP 地址,还需要配置Gateway ,也就是网关。
MAC 头和 IP 头的细节
在任何一台机器上,当要访问另一个 IP 地址的时候,都会先判断,这个目标 IP 地址,和当前机器的 IP 地址,是否在同一个网段。怎么判断同一个网段呢?需要 CIDR
和子网掩码
。
如果是同一个网段,例如,访问室友的电脑,就没网关什么事情,直接将源地址
和目标地址
放入IP 头
中,然后通过 ARP
获得 MAC
地址,将源 MAC
和目的 MAC
放入 MAC 头
中,发出去就可以了。
如果是不同网段,例如,访问你们校园网里面的 BBS。这就需要发往默认网关 Gateway
。Gateway 的地址一定是和源 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