一、路由器工作原理
路由器工作在第3层,网路层,是用于分析IP报文的设备,但是路由器同时支持物理层的信号接受和转换,以及第二层数据链路层的帧的解析。
1,检查MAC
当一个帧到达路由器,路由器先检查帧头中的目的MAC是不是自己,如果是自己的接口MAC,就解包,将IP包发送到内部;(如果是广播帧,则帧中的目的MAC填写的应该是是FF FF FF FF FF FF,说明是一个ARP请求,这个稍后再说)
2,匹配路由表
去掉帧头帧尾,然后解析报文头,根据包头的"目的IP"字段,在自己的路由表中匹配目的IP的网段,如果匹配失败则丢弃,匹配成功就路由到出接口;
==路由表:==路由表是路由器内部的一张表,它来源于各网段内的mac地址和ip地址,(下图是10,20,30,40,50,60,70网段的区域网示意图,一个网段内如果有两个路由器,那么这两个路由器的接口IP地址的末尾数字,遵循左1右2,上1下2的原则)
对下图来说,20网段内的两个路由器,左边的网关地址是20.1.1.1,右边的网关地址是20.1.1.2,这个其实可以修改,只不过设置的时候有一定规律会比较好。
路由表上写着多条信息,每条信息的结构是:
C
10.1.1.0
/
24
F
0
/
0
\quad C\quad10.1.1.0/24\quad F0/0
C10.1.1.0/24F0/0
或
S
10.1.1.0
/
24
20.1.1.1
S\quad10.1.1.0/24\quad20.1.1.1
S10.1.1.0/2420.1.1.1
或
S
∗
0.0.0.0
/
0
30.1.1.2
S*\quad0.0.0.0/0\quad30.1.1.2
S∗0.0.0.0/030.1.1.2
第一条C(Connect,直连路由)
是左边路由器的路由表中摘出来的,它表示:对于最左边的路由器,网段10.1.1.0直接与F0/0接口相连。F0/0接口的ip地址位于10.1.1.0内,意思就是,如果该路由器收到的报文的目的IP是10.1.1.0内的,所以直接把报文路由到F0/0端口,处理后发送到目的IP。
第二条S(Static,静态路由):
对于中间的路由器,如果收到的报文目的IP是10.1.1.0内,那么自己就把报文发送给20.1.1.1,就是左边路由器的F0/1端口的IP地址。类似的,信息
S
70.1.1.0
/
24
60.1.1.2
S\quad70.1.1.0/24\quad60.1.1.2
S70.1.1.0/2460.1.1.2 就表示如果本路由器收到的报文的目的IP是在60网段,那么就把该报文处理后发送到60.1.1.2处,就是下面那个路由器的60网段端口处。
第三条S*(默认路由)
:这个信息是在检索完前面的C和S后,再检索S*,就是说,如果C和S都没能成功匹配,那么就按照S*指示的,把报文发送到30.1.1.2处。详细的说就是,对于中间的路由器的路由表(上图右边所示)前面的C和S已经包括了10,20,40,60,70网段,还有50和30网段没有匹配信息,而目的IP如果是30和50网段,是没有区别的,都需要把信息先发送给30.1.1.2,然后自己的任务就完成了。这样可以提高路由器的处理效率。
这里还有一个管理距离的概念,意思就是,根据这个管理距离的值,决定先匹配哪一条路由表信息,C信息的管理距离是0,最先匹配,S是1,S*是无穷大。
3,封装、发送帧
出接口需要添加新的帧头,先把出接口MAC作为源MAC,然后在ARP缓存表中,查找下一跳IP地址的MAC,如果没有,就发送ARP请求,得到回应后,记录到ARP缓存中,封装好目的MAC,并发送帧。
4,ARP
ARP(Address Resolution Protocol),是一个通过ip地址获取mac地址的协议,我们还记得,前面TCP/IP的时候提过ARP和IP都是网络层的协议,网络层还有一个ICMP也很常用。
ARP流程:
1:客户机发送
亟待更新