路由器01_工作原理

一、回顾交换机工作原理

交换机里面维护了一张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的报文 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/604510.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在IDEA中使用git分支进行开发然后合并到Master分支,2022.1.x版本

在实际开发过程中,为了避免因为在开发中出现的问题以及方便发布版本,如果是多版本发布的情况相下,我们通常需要采用分支进行开发,这个时候,我们就需要了解git分支的相关知识点了,本篇博客也是博主在实际公司…

【MySQL】MySQL如何查询和筛选存储的JSON数据?

MySQL如何查询和筛选存储的JSON数据? 一、背景介绍二、支持的JSON数据类型三、基础数据3.1 创建表3.2 插入 JSON 数据3.3 查询 JSON 数据 四、操作函数4.1 JSON_OBJECT4.2 JSON_ARRAY4.3 JSON_EXTRACT 一、背景介绍 JSON(JavaScript Object Notation)是一种轻量级的…

每周一算法:倍增法查找位置

倍增法 倍增法(Binary Lifting),顾名思义,就是利用“以翻倍的速度增长”的思想来解决问题的一类算法,它能够使线性的处理转化为对数级的处理,大大地优化时间复杂度。这个方法在很多算法中均有应用&#xf…

【IDEA】 解决在idea中连接 Mysql8.0,驱动无法下载问题

本篇继【idea】解决sprintboot项目创建遇到的问题2-CSDN博客 目录 一、Failed to download https://download.jetbrains.com/idea/jdbc-drivers/MySQL/8/LICENSE.txt:Remote host terminated the handshake 二、no dirver files provided com.mysql.cj.jdbc.Driver 三、Serv…

STM32F407ZGT6时钟源配置

1、26M外部时钟源 1、25M外部时钟源

计算机Java项目|基于SpringBoot+Vue的图书个性化推荐系统

项目编号:L-BS-GX-10 一,环境介绍 语言环境:Java: jdk1.8 数据库:Mysql: mysql5.7 应用服务器:Tomcat: tomcat8.5.31 开发工具:IDEA或eclipse 二,项目简介 图片管理系统是一个为学生和…

【linux学习】重定向

目录 重定向标准输出、标准输入和标准错误标准输出重定向标准错误重定向将标准输出和标准错误重定向到同一个文件处理不想要的输出标准输入重定向 管道过滤器uniq-报告或者忽略文件中重复的行wc-打印行数、字数和字节数grep-打印匹配行head/tail 打印文件的开头部分/结尾部分te…

How can I be sure that I am pulling a trusted image from docker?

1、Error response from daemon: manifest for jenkins:latest not found: manifest unknown: manifest unknown 2、Error response from daemon: pull access denied for nacos, repository does not exist or may require ‘docker login’: denied: requested access to th…

[蓝桥杯学习] ST表

RMQ问题 ST 表 用状态 s[i][j] 记录区间长度为 2^j 的长度的区间的最大值 所以状态转移方程就是 st[i][j] max( st[i][j-1] , st[i(1 << (j-1))][j-1] ) 注意状态转移的方向&#xff0c;保证区间合法性&#xff08;i2^j 不能超过数组大小&#xff09; 写完这些后&am…

大数据Doris(五十一):Colocation Join介绍

文章目录 Colocation Join介绍 一、原理 二、使用方式 1、建表 2、删表

HarmonyOS 应用开发学习笔记 stateStyles:多态样式

1、 HarmoryOS Ability页面的生命周期 2、 Component自定义组件 3、HarmonyOS 应用开发学习笔记 ets组件生命周期 4、HarmonyOS 应用开发学习笔记 ets组件样式定义 Styles装饰器&#xff1a;定义组件重用样式 Extend装饰器&#xff1a;定义扩展组件样式 前面记录了ets组件样式…

Python的基础练习题之学生管理系统

需求 使用Python基础写一个基于控制台的学生管理平台&#xff0c;里面功能分别是&#xff1a;1.录入学生信息2.查找学生信息3.删除学生信息4.修改学生信息5.排序6.统计学生总人数7.显示所有学生信息&#xff0c;要求数据存储在文件里。 代码 代码资源地址可以直接下载 效果图…

DataFunSummit:2023年知识图谱在线峰会-核心PPT资料下载

一、峰会简介 AIGC&#xff0c;ChatGPT以及发布的GPT-4相信已经给大家带来足够的冲击&#xff0c;那么对于知识图谱的应用产生哪些变化和变革&#xff1f;知识图谱在其中如何发挥作用呢&#xff1f;通过LLM是否有可能辅助创建通用大规模知识图谱&#xff1f;AIGC时代下行业知识…

家里有必要买NAS吗?

完全没有必要&#xff0c;因为用旧电脑搭建NAS不仅价格实惠&#xff0c;而且非常简单&#xff0c;效果也完全不差买了的&#xff01; 并且......还环保 教程链接&#xff1a; 用旧电脑搭建NAS在您的家庭中&#xff0c;通过将旧 PC 转变为NAS服务器&#xff0c;您可以轻松搭建…

HTTP 代理原理及实现(二)

在上篇《HTTP 代理原理及实现&#xff08;一&#xff09;》里&#xff0c;我介绍了 HTTP 代理的两种形式&#xff0c;并用 Node.js 实现了一个可用的普通 / 隧道代理。普通代理可以用来承载 HTTP 流量&#xff1b;隧道代理可以用来承载任何 TCP 流量&#xff0c;包括 HTTP 和 H…

AcWing 998. 起床困难综合症

原题链接 其实上面这一堆就是想说&#xff0c;输入 n,m以及 n 个数和该数所对应的运算&#xff0c;其中运算包括有 与、或、异或 三种&#xff0c;真正的问题就是在所有不大于 m 的数&#xff08;非负数&#xff09;中&#xff0c;对给定的 n 个数都按该数所对应的运算运算一遍…

CentOS未能挂起虚拟机

问题&#xff1a; CentOS未能挂起虚拟机 解决方案&#xff1a; 1、切换到root 2、打开/etc/selinux/config 3、编辑fonfig文件SELINUXpermissive 4、重启VMware&#xff08;很重要&#xff01;&#xff01;&#xff01;简单粗暴&#xff0c;直接右上角x关机。&#xff09; …

Android 集成vendor下的模块

Android 集成vendor下的模块 &#xff0c;只需要在 PRODUCT_PACKAGES 加上对应的模块名&#xff0c;编译的时候就会执行对应模块的bp文件&#xff0c;集成到系统中 PRODUCT_PACKAGES \WallpaperPicker \Launcher3 \com.nxp.nfc Android11 Framework Vendor下自定义系统…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux系统编程第三天-Linux进程(物联技术666)

更多配套资料CSDN地址:点赞+关注,功德无量。更多配套资料,欢迎私信。 物联技术666_嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记-CSDN博客物联技术666擅长嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记,等方面的知识,物联技术666关注机器学习,arm开发,物联网,嵌入式硬件,单片机…

二叉树算法题(一)

根据二叉树创建字符串 根据二叉树创建字符串 给你二叉树的根节点 root &#xff0c;请你采用前序遍历的方式&#xff0c;将二叉树转化为一个由括号和整数组成的字符串&#xff0c;返回构造出的字符串。 空节点使用一对空括号对 "()" 表示&#xff0c;转化后需要省…