路由器01_工作原理

发布时间:2024年01月06日

一、回顾交换机工作原理

交换机里面维护了一张MAC地址表,主要记录的是MAC地址和接口的对应关系。

交换机在初始状态下,MAC地址表是空的,当收到一个来自某接口的数据时,首先查看数据帧中的MAC地址表,对照自己的MAC地址表,如果不在表中,将发送方的MAC地址学习并记录到自己的MAC地址表中,并附上对应的接口(Fa0/1),再查看目的MAC地址,如果目标MAC地址也不在MAC地址表中,将数据从除接收接口(Fa0/1)外的其他所有连接接口转发出去(广播方式),此时,目的主机接收到,其他主机也会接收到 ,其他主机接收到后直接丢弃,目的主机接收到后进行回应,回应的过程中数据同样会交由交换机进行转发,目的主机这时候就变成了回应的发送主机,当交换机接收到来自目的主机的回应报文的时候(Fa0/10),同样查看发送方的MAC地址,进行学习记录,并附带对应接口(Fa0/10),再去查看目的MAC,由于已经有记录了,所以直接从记录的接口(Fa0/1)进行转发。

总结:交换机学习源MAC、广播数据帧、接收方回应后,回应使用单播直接进行转发。

二、回顾路由器相关知识

  • 网络层的功能:

路由器是属于三层(网络层)设备,进行逻辑地址(IP地址)寻址,实现不同网络之间的路径选择。

a、不同网络指网络地址不等或者内网和外网的分隔;? ???

b、内网的IP地址是无法在外网进行路由的;

去查找目的是否可以到达,如果可以到达,选择一条最优的路径,如果不能到达,直接返回给发送方一个消息。

网络层所传输的PDU(传输数据单元)是数据包(IP数据包)。

三、网络层IP数据包的格式

1、IPV4的数据包格式

字段长度含义
版本4bit标识当前使用的IP版本号(IPV4或IPV6)
首部长度4bitIP数据报文首部有一个可选字段,造成首部是可变的,所以需要一个字段去标识首部有多长。
区分服务/服务质量/优先级和服务类型8bit

为了保证更好的服务,主要是在IP层做qos;

只有在使用区分服务时,这个字段才起作用。

总长度16bit主要用来标识整个数据包(首部和数据)的总长度
标识16bitIPv4在存储器中维持了一个计数器,每差生一个数据报,计数器就加1,并将此值赋给标识字段。
标志3bit目前只有两位有意义,最低位为1标识后面还有分片数据报,为0表示已经是最后一个数据片;中间一位为1表示“不能分片”,为0才允许分片。
片位移13bit指出较长的分组在分片后,该片在原分组中的相对位置。
生存时间(TTL值)8bit数据包在路由器转发消耗时间如果小于1秒,TTL值就会减1.
协议8bit标识上层数据是使用何种协议(TCP是6,UDP是17)
首部校验和16bit校验数据报文的首部。数据报每经过一个设备,设备都要重新计算一下首部校验和,若首部未发生变化,则此结果必为0,于是保留这个数据报。该字段只检验数据报的首部,不包括数据部分。
源地址32bit发送方的IP地址
目的地址32bit接收方的IP地址
选项字段(长度可变)0~40字节用来支持排错、测量以及安全等措施,在必要时插入值为0的填充字节。
数据部分可变用来填充报文
IPV4数据报

2、IPV6的数据包格式

IPV6没有标识、标志、片偏移,它是放在了流标签里面

IPV6数据报字段

四、路由器的工作原理

1、路由

  • 从源主机到目标主机的转发过程(跨网络访问)
  • 包含两个内容:
    • 确定最佳路径(手动指定、根据动态路由协商方式)
    • 通过网络传输信息

2、路由器的工作原理

路由器里面维护了一张路由表,路由表中会有对应关系。

(1)直连路由  

R1? ? ? ?192.168.10.0? ?F0/0? ? ? ? ?192.168.50.0? ?F0/1
R2? ? ??192.168.100.0? ?F0/0? ? ? ??192.168.50.0? ?F0/1

当?192.168.10.1要和?192.168.100.1进行通信,发现目的IP和自己不在一个网络中,它会把数据交给自己直连的网关,R1会解封到第三层查看目的的IP地址是?192.168.100.1发现它的网络是?192.168.100.X网络,然后再去查看自己的路由表,发现?192.168.100.0网络不在自己的路由表中,它会反馈给PC1目标不可达。

此时我们想要它能够访问就需要在路由表中添加一条路由条目。

R1 ? ? ? ? ?192.168.100.0 F0/1

然后PC1发送数据过来,R1先解封装到第三层,查看目标IP地址所在网络,然后查看目的IP所在网络是否在自己的路由表中,如果在自己的路由表中,重新进行封装,找到对应接口转发出去。

转发到R2之后,R2同样会解封到第三层,看到源IP是192.168.10.1,目的IP是192.168.100.1,查看自己的路由表,目的IP所在网络在自己的路由表中,重新封装,然后找到对应接口进行转发。

PC2接收到数据库会进行回应,PC2作为发送方发送数据,过程同上。

(2)工作原理

接收数据包

查看目的IP地址

看目的IP地址所处IP地址在不在自己的路由表中

如果在,重新封装数据,然后在路由表中找到对应接口转发出去

如果不在,返回给发送方,目标不可达

(3)路由表

直连路由:当路由器的接口配置好对应的Ip地址并开启接口后自动生成

非直连路由:需要手动配置静态路由或者使用动态路由协议学习到

3、静态路由

  • 由管理员手动配置,不灵活,而且是单向的
  • 特殊的静态路由:默认路由,路由器中找不到 目标网络的路由条目时,再去查看默认路由
    • 使用场景:一般应用于末节(末梢)网络(网络的最末端)(路由器的一端只连接一个网络)

4、动态路由

  • 通过某种动态路由协议自动去建立路由表
  • 常见的动态路由协议:RIP OSPF IS-IS BGP IGRP EIGRP?

五、路由器转发数据包的封装过程

1、案例说明GNS3

GNS3通过

?

?

?

  • 先通过no ip routing 把两台主机的路由功能关闭

    ?
    PC2#conf t                #进入全局模式
    Enter configuration commands, one per line. ?End with CNTL/Z.
    PC2(config)#no ip routing    #关闭c3640的路由模式
    PC2(config)#
  • 全局配置模式下配置PC1的IP、子网掩码和网关(PC2设置方法如是)
    PC1#conf  t
    Enter configuration commands, one per line.  End with CNTL/Z.
    PC1(config)#int f0/0
    PC1(config-if)#ip add 192.168.10.1 255.255.255.0        #设置PC的IP地址和子网掩码
    PC1(config-if)#no shut
    PC1(config-if)#exit
    PC1(config)#
    *Mar  1 00:06:28.811: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
    *Mar  1 00:06:29.811: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
    PC1(config)#ip def
    PC1(config)#ip default-ga
    PC1(config)#ip default-gateway 192.168.10.254            #设置PC的默认网关
    PC1(config)#
    
  • ?配置路由器
    路由器R1的两个端口的IP地址、子网掩码并开启路由功能。
    ?
    R1#conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    R1(config)#int f0/0
    R1(config-if)#ip add 192.168.10.254 255.255.255.0
    R1(config-if)#no shut
    R1(config-if)#exit
    *Mar  1 00:30:33.163: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
    *Mar  1 00:30:34.163: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
    R1(config-if)#int f1/0
    R1(config-if)#ip add 192.168.50.1 255.255.255.0
    R1(config-if)#no shut
    R1(config-if)#
    *Mar  1 00:31:10.939: %LINK-3-UPDOWN: Interface FastEthernet1/0, changed state to up
    *Mar  1 00:31:11.939: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet1/0, changed state to up
    R1(config-if)#
    

    路由器R2的两个端口的IP地址、子网掩码并开启路由功能

    R2#conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    R2(config)#int f0/0
    R2(config-if)#ip add 192.168.100.254 255.255.255.0
    R2(config-if)#no shut
    R2(config-if)#exit
    R2(config)#
    *Mar  1 00:35:55.247: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
    *Mar  1 00:35:56.247: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
    R2(config)#int f1/0
    R2(config-if)#ip add 192.168.50.2 255.255.255.0
    R2(config-if)#no shut
    R2(config-if)#exit
    R2(config)#
    *Mar  1 00:36:25.243: %LINK-3-UPDOWN: Interface FastEthernet1/0, changed state to up
    *Mar  1 00:36:26.247: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet1/0, changed state to up
    R2(config)#
    

2、?添加路由

  • 全局模式添加静态路由

(1)第一种方式:指定出口路由器接口

R1#
R1#conf  t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#ip route 192.168.100.0 255.255.255.0 fast
R1(config)#ip route 192.168.100.0 255.255.255.0 fastEthernet 1/0
R1(config)#

?(2)第二种方式,指定下一个路由器接口的IP地址

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#ip route 192.168.100.0 255.255.255.0 192.168.50.2
R1(config)#

?在R2上配置PC1网段的路由

R2#
R2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#ip route 192.168.10.0 255.255.255.0 192.168.50.1
R2(config)#
  • 查看路由表命令(show ip route)

?

(3)ping连通性测试?

PC1连接 PC2设备中默认发送五个数据包
当出现!代表连通,当出现...代表不通。

因为前面配置了路由,会去查找路由,查找路由有个过程,所以前面3个数据包不通

3、路由器转发数据包的封装过程

查看接口的信息并查看PC1的MAC地址

?同样去查看R1路由器、R2路由器以及PC2接口的MAC地址

PC1访问PC2

第一个报文:源IP:PC1的IP 源MAC是PC1的MAC 目的IP:PC2的IP 目的MAC、是路由器R1的MAC

当R1收到数据报文后,会解封到网络层,查看目的是否可到,如果可以到转发到对应接口,重新进行二层封装,源MAC变成R1路由器的?F1/0接口MAC 目的MAC变成R2 的F1/0接口MAC。

当R2收到数据报文后,会将数据交给对应接口,重新进行二层封装,源MAC变成R2路由器的 F0/0接口MAC, 目的MAC是PC2的MAC。

总结:路由器在转发数据包的封装过程:源IP和目的IP始终是没有发生变化的,源MAC地址和目的MAC是一直在变换的,因为路由器会重新进行二层封装。

  • 同网段传输主要是二层转发(不需要进行重新封装)
  • 跨网段传输是三层转发(需要重新进行二层封装)

六、抓包分析

ping是ICMP协议,所以直接看ICMP报文

(1)PC1到R1的报文

(2)R1到R2的报文

从Sequence Number可以看出它们是同一条报文

(3)R2到PC2的报文?

文章来源:https://blog.csdn.net/fencecat/article/details/135302241
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。