路由器工作原理
1. 概念
1.1 路由
跨越从源主机到目的主机的一个互联网络来转发数据包的过程
1.2 路由器
路由器(Router)是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。它能够理解不同的协议,例如某个局域网使用的以太网协议,因特网使用的TCP/IP协议。这样,路由器可以分析各种不同类型网络传来的数据包的目的地址,把非TCP/IP网络的地址转换成TCP/IP地址,或者反之;再根据选定的路由算法把各数据包按最佳路线传送到指定位置。所以路由器可以把非TCP/IP网络连接到因特网上。
2. 路由器的工作原理
2.1 网络层概述
网络层位于OSI七层模型中的第三层,网络层主要实现两个端系统之间的透明的数据传输。
端系统,处在因特网的边缘部分,就是在因特网上的所有主机,这些主机又称为端系统(end system)。
网络层实现的功能:
转发:因为在互联网中有很多路由器的存在,而路由器是构成互联网的根本,路由器最重要的一个功能就是分组转发,当一个分组到达某路由器的一条输入链路时,该路由器会将分组移动到适当的输出链路。转发是在数据平面中实现的唯一功能。
在网络中存在两种平面的选择:数据平面(data plane):负责转发网络流量,如路由器交换机中的转发表(我们后面会说)。控制平面(control plane):控制网络的行为,比如网络路径的选择。
路由选择:当分组由发送方流向接收方时,网络层必须选择这些分组的路径。计算这些路径选择的算法被称为 路由选择算法(routing algorithm)。即转发是指将分组从一个输入链路转移到适当输出链路接口的路由器本地动作。而路由选择是指确定分组从源到目的地所定位的路径的选择。
路由器如何知道那些路径可以选择?
每台路由器都有一个关键的概念就是 转发表(forwarding table)。路由器通过检查数据包标头中字段的值,来定位转发表中的项来实现转发。标头中的值即对应着转发表中的值,这个值指出了分组将被转发的路由器输出链路。
例如当有一个分组1001到达路由器后,首先会再转发表中进行索引,然后由路由器选择算法分组要走的路径,每台路由器都有两种功能:转发和路由选择。
2.2 路由器组件
输入端口(input port):线路终端功能和数据链路处理功能,这两个功能实现了路由器的单个输入链路相关联的物理层和数据链路层。输入端口查找/转发功能对路由器的交换功能来说至关重要,有路由器的交换结构来决定输出端口,通过查询转发表来确定。
交换结构:交换结构(Switching fabric)就是将路由器的输入端口连接到它的输出端口。这种交换结构相当于是路由器内部的网络。
输出端口:输出端口(Output ports) 通过交换结构转发分组,并通过物理层和数据链路层的功能传输分组,因此,输出端口作为输入端口执行反向数据链接和物理层功能。
路由选择处理器:路由选择处理器(Routing processor) 在路由器内执行路由协议,维护路由表并执行网络管理功能。
2.3 路由器工作原理
路由表内容字段信息:
一条路由信息简称为一个路由条目
目标网段:路由器能到达的网段
接口:路由器本身的接口的名字
Destination:目标地
IFace 接口
Gateway 网关:下一跳是数据离开你的路由器到另外一个路由器的IP地址,这个IP地址就是对方路由器的接口IP。
路由表放在路由器的内存中,可以保存在disk中,电脑没有mac地址表,但是有路由表。
# window查看路由表
route print
arp -a
# linux查看路由表
ip route
route -n --numerical
arp -n --numerical
路由原理概述:
根据路由表做转发,默认其概况下在转发数据的时候 不修改IP包里的源ip和目的ip,但是会修改帧的源mac和目的mac,路由表里有目标网段就转发,没有就丢弃
路由表的路由类型:
1.直连路由 directly route:第一个条件:必须配置pi地址 第二个条件: 接口必须激活
2.静态路由 static route:需要管理员手工添加 而且是单向的 缺乏灵活性
3.动态路由:路由器之间互相自动学习,不需要手工配置 --》适合比较大的网络
# 配置直连路由
ip route add 192.168.1.0/24 via 192.168.2.1 dev ens33
# 配置默认路由
ip route default via 192.168.2.1 dev ens33
# 命令解析
ip route 添加路由的命令
add 路由管理的命令
192.168.1.0/24 目标网段-->目的地
via 192.168.2.1 下一跳地址为192.168.2.1
dev ens33 从ens33接口出去
# 默认路由 是特殊的静态路由 在pc机里添加网关就是添
# 加默认路由凡是不直连网络的都要加到默认路由中
# 路由的优先级:
# 1 直连路由
# 2 静态路由
# 3 动态路由
# 4 默认路由
3. 路由器的实验
3.1 ping过程解析
3.1.1 相同网段通信
ping的过程
A:192.168.10.1
B:192.168.10.2
------------------------------------------------------------------------------------------------------------
封装的角度解释:
A ping B
1. 应用层随机产生32bytes大小的数据
2. 传输层 ping命令不涉及端口号 不涉及传输层
3.网络层 ping -->icmp协议 -->request请求包 replay响应包
封装在icmp头部信息里没有源ip地址和目的ip地址,有request信息
如:源ip地址:10.1 目的ip地址:10.2
4.ip协议:源ip 目的ip
5.帧 源mac 目的mac
交换机发arp广播包,得到目的主机192.168.10.2的mac地址
6.物理层:比特流
ping 192.168.10.2
1.封装icmp数据和ip包数据
2.先拿目的ip和自己的子网掩码进行与运算得到目标网段是192.168.10.0
然后再查询自己的路由表
直连路由:192.168.10.0 ens33
默认路由:192.168.10.254
3.因为直连路由优先级高 走直连路由
4.发arp广播 得到10.2的mac地址
5.数据链路层:封装帧
6.物理层:比特流
3.1.2 不相同网段通信
ping的过程
A:192.168.20.1
B:192.168.30.1
------------------------------------------------------------------------------------------------------------
ping 192.168.30.1
1.封装icmp数据和ip包数据
2.先拿目的ip和自己的子网掩码进行与运算得到目标网段是192.168.30.0
然后再查询自己的路由表
直连路由:192.168.20.0 ens33
默认路由:192.168.20.254
ip包的封装
源ip:192.168.20.1
目的ip:192.168.30.1
3.走默认路由,下一跳地址是192.168.20.254
帧:源mac:自己 目的mac:192.168.20.254的mac
4.发arp广播 得到20.254的mac地址
5.数据链路层:封装帧
6.物理层:比特流