1、总结:
java
1.如果离开本局域网,就需要经过网关,网关是路由器的一个网口。
2.路由器是一个三层设备,里面有如何寻找下一跳的规则
3.经过路由器之后 MAC 头要变,如果 IP 不变,相当于不换护照的欧洲旅游,如果 IP 变,相当于换护照的玄奘西行
3、场景引入
大学宿舍的局域网想要访问外网。
在进行网卡配置的时候,除了 IP 地址,还需要配置一个Gateway。
4、MAC 头和 IP 头的细节
java
1.一旦配置了 IP 地址和网关,往往就能够指定目标地址进行访问了。
2.在跨网关访问的时候,牵扯到MAC 地址和 IP 地址的变化
java
1.在 MAC 头里面,先是目标 MAC 地址,然后是源 MAC 地址,然后有一个协议类型,用来说明里面是IP 协议。
IP头:
java
1.IP 头里面的版本号,目前主流的还是 IPv4
2.下一层的协议,是 TCP 还是 UDP
3.最重要的就是源 IP 和目标 IP。先是源 IP 地址,然后是目标 IP 地址
5、访问流程:
java
1.在任何一台机器上,当要访问另一个 IP 地址的时候,都会先判断,这个目标 IP 地址,和当前机器的 IP
地址,是否在同一个网段。怎么判断同一个网段呢?需要 CIDR 和子网掩码。
2.如果是同一个网段,那就没网关什么事情,直接将源地址和目标地
址放入 IP 头中,然后通过 ARP 获得 MAC 地址,将源 MAC 和目的 MAC 放入 MAC 头中,发出去就可以了。
3.如果不是同一网段,这就需要发往默认网关。
4.Gateway 的地址一定是和源 IP 地址是一个网段的。往往不是第一个,就是第二个。
例如:192.168.1.0/24 这个网段,Gateway 往往会是 192.168.1.1/24 或者 192.168.1.2/24
5.1、如何发往默认网关呢?
java
1.网关和源 IP 地址是一个网段的
2.这个过程就和发往同一个网段的其他机器
是一样的:将源地址和目标 IP 地址放入 IP 头中,通过 ARP 获得网关的 MAC 地址,将源 MAC 和网关的 MAC 放入 MAC 头中,发送出去。网关所在的端口,例如 192.168.1.1/24 将网络包收进来,然后接下来怎么做,就完全看网关的了(路由算法)。
网关往往是一个路由器,是一个三层转发的设备
5.1、三层设备?
java
就是把 MAC 头和 IP头都取下来,然后根据里面的内容,看看接下来把包往哪里转发的设备。
5.2、静态路由
java
1.就是在路由器上,配置一条一条规则。
2.请求出去的时候就一条一条的匹配规则,找到符合的规则
3.根据规则从某个口抛出去,找下一跳 IPX
举例 :
想访问 BBS 站(它肯定有个网段),从 2 号口出去,下一跳是 IP2。
想访问教学视频站(它也有个自己的网段),从 3 号口出去,下一跳是 IP3,然后保存在路由器里。
6、IP 头和 MAC 头哪些变、哪些不变?
java
1.MAC 地址是一个局域网内才有效的地址。
2.因而,MAC 地址只要过网关,就必定会改变,因为已经换了局域网。
//两者主要的区别在于 IP 地址是否改变
3.不改变 IP 地址的网关,我们称为转发网关
4.改变 IP 地址的网关,我们称为NAT 网关