路由器基础知识及图解 路由器是什么

之前几篇文章都在内网转悠(有兴趣的朋友可以关注作者查看作者文章) 。但是世界这么大总想去浪一浪 。网络世界里如果从内网连到外网呢 。这就要一个网关这个东西了 。先看一下下面这个命令 。
ip route add 10.168.10.0/20 via 10.173.23.1 dev eth0
熟悉的人应该知道这个命令是给路由器配置路由表的一条命令,不熟悉的人也没关系可以继续往下看 。我这里提到路由器,路由表,那网关跟路由器,路由表有啥关系呢 。先说一下路由器是一个三层的物理设备,它起到的作用就是网关的作用,所以一般我们就称一个路由器为网关,但其实路由器有好几个口,每个口连接了可以转发到的目标局域网 。路由表里定义了转发过程中到哪个局域网应该走哪个口,下一个跳转 IP 是啥 。所以这样一套设备加路由规则就满足了我们从内网连接到外网的需求 。要理解他的工作原理还得从 MAC 头和 IP 头讲起 。假设现在有一个局域网 A 内的主机 A 想访问局域网 B 内的主机 B

路由器基础知识及图解 路由器是什么


我们知道网络数据包的 MAC 头和 IP 头格式如下,请求包的每次转发都要有下面的内容,MAC 头中先是目标地址然后是源 MAC 地址,然后是协议类型,IP 头中版本类型一般是 Ipv4,TOS,LLS 等我们主要看源 IP 地址,和目标 IP 地址 。

路由器基础知识及图解 路由器是什么


那这个请求的过程应该要经历下面几个过程
【路由器基础知识及图解 路由器是什么】 1.机器 A 发送请求包之前发现目标 IP 和自己不是一个网段的,(怎么计算,就是 IP 地址和子网掩码安于与计算)然后就把请求包发个网关,请求包应该是这样
  • 目标 mac 地址:路由器 A 的 mac 地址
  • 源 mac 地址:机器 A 的 mac 地址
  • 源 ip 地址:机器 A 的 ip 地址
  • 目标 ip 地址:机器 B 的 ip 地址
2.路由器 A 接收到请求发现 MAC 地址匹配,把包收过来,发现目标 ip 地址在局域网 B,需要通过 10.1.1.1/8 转发出去 。于是下一跳转是 10.1.1.1/8 到路由器 B,请求包是这样的
  • 目标 mac 地址:路由器 B 的 mac 地址
  • 源 mac 地址:路由器 A 的 mac 地址
  • 源 ip 地址:机器 A 的 ip 地址
  • 目标 ip 地址:机器 B 的 ip 地址
3. 路由器 B 接收到请求后发现 MAC 地址匹配,于是把包拿过来,发现目标 ip 地址跟自己是同一网段的,需要跳转 。直接发送请求包是这样的
  • 目标 mac 地址:机器 B 的 mac 地址
  • 源 mac 地址:路由器 B 的 mac 地址
  • 源 ip 地址:机器 A 的 ip 地址
  • 目标 IP 地址:机器 B 的 ip 地址
4. 机器 B 接收到请求发现 Mac 地址匹配,如是把数据拿过来,响应之后,用过以上方式的回路返回给机器 A
以上这个路由方式是不是看起来挺清晰了 。在不同局域网在不同网段的时候这种方式工作起来没得问题,但是局域网之间是互不知道的 。很有可能两个局域网内的机器的 ip 完全都是一样的 。比如上面机器 A 的 ip 地址是 192.168.1.100,机器 B 的 ip 地址也是 192.158.1.100,如果通过上面的方式发送数据,看起来完全就是自己发给自己 。
这个时候要用到一种加 NAT 路由器的路由器了,其实就是路由器上加上 NAT 的功能,NAT 的全程是 Network Address Translation,翻译过来意思是网络地址装换 。他的主要转发原理是转发的时候会把源内网 IP 装换为公有 IP,这样通过公有 IP 就可以跟外网通信 。他屏保的局域网对外网的可见,这样一个局域网最少只要一个公有 IP 跟外网通信,极大缓解了 IP 资源不足的局面 。NAT 的类型主要有三种

推荐阅读