概述

我们都知道路由器作为Internet的骨架,连接了整个互联网,可以说是整个网络的基石。但为什么路由器这么牛呢?是因为路由器能够在不同的网段之间进行通信,可以根据一定的规则把报文一跳一跳的转到目的地。

关于路由器如何转发报文,网络已经很多的教程,我们今天就不详细说了。今天我们要分享的路由器在转发报文的过程中,是如何处理报文的。同时我们换一个视角,假设我们是报文,看看路由器如何处理我们。

PS:我们说的路由器不是家庭用的小网关,而是用来连接不同网段的三层路由器,两者之间区别还是比较大的。

家庭网关和三层路由器

路由器对报文的处理

为了阐述报文的处理流程,我们使用简化的拓扑来描述:只使用一台路由器和两台PC,这样不仅能说明路由器如何处理报文,还能学习一下PC对报文的处理流程。

拓扑图

2台PC和一台路由器

  1. PC1配置的IP为10.1.1.2/24,网关是10.1.1.1
  2. PC2配置的IP为20.1.1.2/24,网关是20.1.1.1
  3. PC1和PC2明显不在同一个网段
  4. 路由器E0/1接口配置为PC1的网关:10.1.1.1
  5. 路由器E0/2接口配置为 PC2的网关:20.1.1.1
  6. 测试PC1和PC2之间的报文交互

访问流程

步骤1:PC1想要给PC2发送数据,要先获取网关的MAC;

  • PC1已经知道PC2的IP地址(20.1.1.2),查看这个IP地址时,发现它和自己(10.1.1.2)不在同一个网段,会把报文转发给网关处理
  • PC1已经配置好网关(10.1.1.1),所以就会尝试把报文发送给网关。但是PC1查看自己的ARP表项,发现是空的,默认情况下没有ARP表项。

默认情况下,ARP表项是空的

  • PC1只有获取网关的MAC地址才能封装报文,所以它会发送ARP Request请求网关的MAC,ARP报文如下图所示:

PC1请求网关的MAC

  • 路由器收到这个ARP Request以后,发现Target IP是自己E0/1的IP地址,就会发送ARP Reply,把自己的MAC地址发送给PC1

路由器回复的MAC

  • PC1收到ARP Reply以后,就会创建一个ARP表项,以后发送给网关的MAC都会使用这个地址来填充;

ARP表项

步骤2:PC2使用网关的MAC封装报文,发送给路由器

  • PC1使用网关的MAC填充报文,然后发送出去

PC1发送的数据报文

  • 目的MAC填充的是aa:bb:cc:00:01:10,这是网关的MAC
  • 目的IP是20.1.1.2,这个是PC2的IP地址

步骤3:路由器对报文的处理:剥掉二层MAC,重新封装

  • 路由器收到PC1发送的报文以后,会检查目的MAC地址,如果和自己的接口一样,就处理,否则丢弃;

接口MAC和收到的报文MAC对比

  • 路由器会把报文的二层信息全部剥掉,只留下三层及以上的数据;

剥掉二层信息

  • 路由器然后根据报文的目的IP地址,查找路由表,发现下一跳是出接口是E0/2;

查找路由器

  • 路由器就会使用出接口E0/2的MAC地址对之前的三层报文进行封装;

路由器E0/2MAC地址

  • 封装完成的报文:源MAC是E0/2的MAC,目的IP地址不变,高层的ICMP内容也不变;

使用E0/2的MAC重新封装报文

  • 目的MAC是PC2的MAC:路由器在发送报文给PC2之前,会发送ARP请求PC2的MAC,过程和前面类似,这里就不说了;

步骤4:PC2收到路由器发送的报文

  • PC2会先检查目的MAC地址,是否和自己网卡MAC相同,如果不相同, 则丢弃报文;

MAC地址

  • 如果相同,则上送高层处理,然后回复ICMP,回复的ICMP的源MAC是PC2自己网卡的MAC;

PC2回复的ARP Reply

  • 路由器对收到的PC2的报文的处理和PC1类似,也会重新封装二层MAC信息,然后转发给PC1;

PC1收到的ARP Reply信息

总结

通过上面的描述,我们可以看出来有2个比较重要的知识点:

  1. 知识点一:对于不在同一网段的报文,PC会包报文发送给网关,由网关来处理;
  2. 知识点二:收到报文以后,路由器会先剥掉二层信息,保留三层及以上数据;在将数据发送出去时,还会对数据进行重新封装,加上新的二层信息。

这就是从报文角度看到网络设备的处理流程,各位看完有点感觉了吗?

原文:https://www.toutiao.com/i6743053836123898375/

假设你是一个报文,看路由器会如何处理你相关推荐

  1. 一个报文的路由器之旅_报文的交换和寻址转发

    从"交换"谈起 数据是通过接口板接收和发送,通信线缆都要插接到接口板的接口上.那么,把某一 个接口来的数据包送到另一个接口发出去,这两个接口需要连起来.但实际上,数据 包可能从任意 ...

  2. 一个报文的路由器之旅_【NE探秘】一个报文的路由器之旅

    什么是二层桥接转发? 二层所指的是数据链路层.二层桥接转发,是指数据帧在数据链路层是怎样被转发的. 数据链路层有很多不同的网络类型,Token ring(令牌环网).Ethernet.FDDI(光纤网 ...

  3. 计算机网络原理fin,一个动画看懂网络原理之TCP建立和释放过程

    一个动画看懂网络原理之TCP建立和释放过程 一.TCP的概念 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议.T ...

  4. 计算机网络中的网桥,一个动画看懂网络原理之网桥的工作原理

    一个动画看懂网络原理之网桥的工作原理 一.网桥是干什么的 网桥工作在OSI参考模型数据链路层的两端口或多端口二层网络设备,是用来连接不同网段的存储转发设备.使用网桥能扩展网络的距离或范围,还可以提高网 ...

  5. 计算机网络中 中继器的作用是,一个动画看懂网络原理之中继器工作过程

    一个动画看懂网络原理之中继器工作过程 我们在学习计算机网络技术时,涉及到网络设备时,书本上往往在介绍网卡之后,就会给大家介绍中继器,那么中继器是什么,它的作用是什么,它的工作过程又是怎样的,下面就这些 ...

  6. 一个框架看懂优化算法之异同 SGD/AdaGrad/Adam

    Adam那么棒,为什么还对SGD念念不忘 (1) -- 一个框架看懂优化算法 机器学习界有一群炼丹师,他们每天的日常是: 拿来药材(数据),架起八卦炉(模型),点着六味真火(优化算法),就摇着蒲扇等着 ...

  7. 假设你有一个多层感知机网络(MLP),输入层有10个节点、一个单隐层共50个神经元,最后是一个3个神经元的输出层。请问网络的结构是什么样子的使用数学形式进行描述?

    假设你有一个多层感知机网络(MLP),输入层有10个节点.一个单隐层共50个神经元,最后是一个3个神经元的输出层.请问网络的结构是什么样子的使用数学形式进行描述? 输入矩阵X的形状是什么? 隐藏层的权 ...

  8. 从一个案例看系统优化

    10月27日,由子衿技术团队首席架构师白鳝(徐戟)老师在"DBA+南京群"进行了一次关于"从一个案例看系统优化"的线上主题分享.小编特别整理出其中精华内容,供大 ...

  9. 假设你有一个数组,其中第i 个元素是第i天给定股票的价格。设计算法以找到最大利润。你可以根据需要完成尽可能多的交易(即,多次买入并卖出一股股票)。注意:您不能同时进行多笔交易(即,您必须在再次购买之前

      假设你有一个数组,其中第i 个元素是第i天给定股票的价格.设计算法以找到最大利润.你可以根据需要完成尽可能多的交易(即,多次买入并卖出一股股票).注意:您不能同时进行多笔交易(即,您必须在再次购买 ...

最新文章

  1. Response.Redirect 打开新窗口的两种方法
  2. cxGRID能否对模板进行保存
  3. Python组合数据类型:序列sequence,列表list、元组tuple
  4. 数商云:B2C商城网站建设功能框架大解析
  5. 盘点2016年炙手可热的TV BOX电视盒子
  6. 如何用adb连接android手机
  7. ajax blockUI
  8. pytorch中F.avg_pool1d()和F.avg_pool2d()
  9. 代码规范 任重而道远
  10. java博饼_java博饼游戏( 完善中。。。。。。。。。。。)
  11. python中index什么意思_Python中index()和seek()的用法(详解)
  12. 一些基本的Oracle命令
  13. 建站分享:调整WordPress自带标签云参数
  14. 20200107笔记
  15. 《自控力》第八章读书笔记
  16. 人工智能浪潮中,AI如何为企业降本增效?
  17. 如何使用抽象类和抽象方法
  18. 突然不能从主机向虚拟机上拷贝文件了
  19. 雷达导引头伺服系统的建模与仿真
  20. 50个BBS经典签名

热门文章

  1. Forgotten Artefacts开启预售
  2. Python开发环境安装详解
  3. fortify中Race Condition会设置可能导致争用条件的回调。
  4. 农村污水治理工作的必要性有哪些?
  5. AutoHotkey制作自己的Launchy --- 我的运行窗口
  6. MySQL入门基础教程
  7. 学计算机应用不会打字怎么办,电脑不能打字是怎么回事【 解决方案】
  8. 你不知道的 ,MySQL中的七种SQL JOINS的实现,满外连接
  9. 两部电梯的测试用例设计
  10. Cesium 可视域分析(未改源码)