本文总结的是网络包经过路由器的传输过程(其中也涉及到了路由器的知识和路由器与交换机的区别)。以下是个人学习总结,记录的是较为重要的部分,看完之后即可清楚路由器的相关知识。

目录

认识下路由器

路由器的基本原理

路由表中的信息

路由器的包接收操作

路由器具体是如何根据IP来确定转发目标的?(*)

找不到匹配路由时选择默认路由

包的有效期

路由器的维护

路由器的发送操作和计算机相同


网络包经由集线器和交换机后会到达路由器,并且根据情况会继续转发到网关(下一跳)

计算机的网卡除了以太网和无线局域网之外很少见到支持其他通信技术的品种,而路由器的端口模块则支持除局域网之外的多种通信技术,如 ADSL、FTTH,以及各种宽带专线等。

路由器转发的工作原理和交换机类似,也是通过查表判断包转发的目标。不过在具体的操作过程上,路由器和交换机是有区别的。因为路由器是基于 IP 设计的,而交换机是基于以太网设计的。

认识下路由器

路由器是一台设备,它有五个网口或者网卡,相当于有五只手,分别连着五个局域网。每只手的 IP 地址都和局域网的 IP 地址相同的网段,每只手都是它握住的那个局域网的网关。任何一个想发往其他局域网的包,都会到达其中一只手,被拿进来,拿下 MAC 头和 IP 头,看看,根据自己的路由算法,选择另一只手,加上 IP 头和 MAC 头,然后扔出去。

路由器的基本原理

路由器包括转发模块端口模块两部分,其中转发模块负责判断包的转发目的地,端口模块负责包的收发操作。换句话说,路由器转发模块和端口模块的关系,就相当于协议栈的 IP 模块和网卡之间的关系。路由器在转发包时,首先会通过端口将发过来的包接收进来,这一步的工作过程取决于端口对应的通信技术。对于以太网端口来说,就是按照以太网规范进行工作,而无线局域网端口则按照无线局域网的规范工作,总之,就是委托端口的硬件将包接收进来。接下来,转发模块会根据接收到的包 IP 头部中记录的接收方 IP 地址在路由表中进行查询以此判断转发目标路由器是基于IP工作的,而交换机是通过 MAC 头部中的接收方 MAC 地址来判断转发目标的)。然后,转发模块将包转移到转发目标对应的端口,端口再按照硬件的规则将包发送出去,也就是转发模块委托端口模块将包发送出去的意思。

路由器的各个端口都具有 MAC 地址和 IP 地址。

路由表中的信息

路由器的路由表和计算机的路由表的结构相同。

在 “ 查表判断转发目标 ” 这一点上 ,路由器和交换机的大体思路是类似的 , 不过具体的工作过程有所不同 。 交换机是通过 MAC 头部中的接收方 MAC 地址来判断转发目标的 , 而路由器则是根据 IP 头部中的 IP 地址 来判断的。

路由器会将接收到的网络包的接收方 IP地址与路由表中的目标地址进行比较,并找到相应的记录。交换机在地址表中只匹配完全一致的记录而路由器则会忽略主机号部分只匹配网络号部分。例如,路由器在转发包的时候只看接收方地址属于哪个区,×× 区发往这一边,×× 区发往那一边。

在匹配地址的过程中,路由器需要知道网络号的比特数,因此路由表中还有一列子网掩码,通过子网掩码就可以判断出网络号的比特数。即:路由器会忽略主机号,只匹配网络号。

路由器的包接收操作

路由器的端口有各种不同的类型,以太网端口为例,以太网端口的结构和计算机的网卡基本相同,接收包并存放到缓冲区中的过程也和网卡几乎没有区别。

首先,信号到达网线接口部分,其中的 PHY(MAU)模块和 MAC 模块将信号转换为数字信息,然后通过包末尾的 FCS 进行错误校验,如果没问题则检查 MAC 头部中的接收方 MAC 地址,看看是不是发给自己的包,如果是就放到接收缓冲区中,否则就丢弃这个包。如果包的接收方 MAC地址不是自己,说明这个包是发给其他设备的,如果接收这个包就违反了以太网的规则。

简言之:路由器的端口都具有 MAC 地址,只接收与自身地址匹配的包, 遇到不匹配的包则直接丢弃。

路由器具体是如何根据IP来确定转发目标的?(*)

完成包接收操作之后,路由器就会丢弃包开头的 MAC 头部。MAC 头部的作用就是将包送达路由器,其中的接收方 MAC 地址就是路由器端口的 MAC 地址。因此,当包到达路由器之后,MAC 头部的任务就完成了,所以会被丢弃。

接下来,路由器会根据 MAC 头部后方的 IP 头部中的内容进行包的转发操作。转发操作开始:

查询路由表确定输出端口并判断转发目标。如果在路由表中无法找到匹配的记录,路由器会丢弃这个包,并通过ICMP消息(ICMP:Internet Control Message Protocol,Internet 控制报文协议。当包传输过程中发生错误时,用来发送控制消息)告知发送方。

如上面的图,假设地址为 10.10.1.101 的计算机要向地址为 192.168.1.10 的服务器发送一个包,这个包先到达图中的路由器。判断转发目标的第一步,就是根据包的接收方 IP 地址查询路由表中的目标地址栏找到相匹配的记录。这个匹配并不是匹配全部 32 个比特,而是根据子网掩码列中的值判断网络号的比特数来匹配相应数量的比特。看第 3行,子网掩码列为 255.255.255.0,就表示需要匹配从左起 24 个比特。网络包的接收方 IP 地址和路由表中的目标地址左起 24 个比特的内容都是192.168.1,因此两者是匹配的,该行记录就是候选转发目标之一。按照这样的规则可能会匹配到多条候选记录,图中第 3、4、5 行都可以匹配。其中,路由器首先寻找网络号比特数最长的一条记录(“最长匹配”原则)。网络号比特数越长,说明主机号比特数越短,也就意味着该子网内可分配的主机数量越少,即子网中可能存在的主机数量越少,这一规则的目的是尽量缩小范围,所以根据这条记录判断的转发目标就会更加准确。

第 3 行 192.168.1.0/255.255.255.0 表示一个子网,第 4 行 192.168.1.10/ 255.255.255.255 表示一台服务器。 相比服务器所属的子网来说,直接指定服务器本身的地址时范围更小,因此这里应该选择第 4 行作为转发目标 。

路由聚合概念:多个子网会被合并成一个子网,子网掩码会发生变化,同时,目标地址列也会改成聚合后的地址。这样也可以正确地进行转发。

找不到匹配路由时选择默认路由

子网掩码为 0.0.0.0一行的作用就相当于把所有目标都配置好了。子网掩码 0.0.0.0 的意思是网络包接收方 IP 地址和路由表目标地址的匹配中需要匹配的比特数为 0,换句话说,就是根本不需要匹配。只要将子网掩码设置为 0.0.0.0,那么无论任何地址都能匹配到这一条记录,这样就不会发生不知道要转发到哪里的问题了。

注意:由于匹配的比特数越长优先级越高(最长匹配原则),因此子网掩码为0.0.0.0 的记录优先级是最低的,只有当找不到其他匹配的记录时,才会选择这条记录。只要在这一条记录的网关列中填写接入互联网的路由器地址,当匹配不到其他路由时网络包就会被转发到互联网接入路由器。因此这条记录被称为默认路由,这一行配置的网关地址被称为默认网关。

在计算机的 TCP/IP 设置窗口中也有一个填写默认网关的框,意思是一样的。计算机上也有一张和路由器一样的路由表,其中默认网关的地址就是我们在设置窗口中填写的地址。

包的有效期

从路由表中查找到转发目标之后,网络包就会被转交给输出端口,并最终发送出去,但在此之前,路由器还有一些工作要完成。

第一个工作是更新 IP 头部中的 TTL(Time to Live,生存时间)字段。TTL 字段表示包的有效期,包每经过一个路由器的转发,这个值就会减 1,当这个值变成 0 时,就表示超过了有效期,这个包就会被丢弃。这个机制是为了防止包在一个地方陷入死循环。如果路由表中的转发目标都配置正确,应该不会出现这样的情况,但如果其中的信息有问题,或者由于设备故障等原因切换到备用路由时导致暂时性的路由混乱,就会出现这样的情况。发送方在发送包时会将 TTL 设为 64 或 128,也就是说包经过这么多路由器后就会失去“生命”。现在的互联网即便访问一台位于地球另一侧的服务器,最多也只需要经过几十个路由器,因此只要包被正确转发,就可以在过期之前到达目的地。

路由器的维护

对路由表进行维护的方法有几种,大体上可分为以下两类:

1,由人手动维护路由记录

2,根据路由协议机制,通过路由器之间的信息交换由路由器自行维护路由表的记录, 其中第二条中提到的路由协议有很多种,例如 RIP、OSPC、BGP 等都属于路由协议.

路由器的发送操作和计算机相同

这一步操作取决于输出端口的类型。如果是以太网端口,则按照以太网的规则将包转换为电信号发送出去;如果是 ADSL 则按照 ADSL 的规则来转换,以此类推。

以太网的包发送操作是根据以太网规则来进行的,即便设备种类不同, 规则也是相同的。也就是说,其基本过程和协议栈中的 IP 模块发送包的过程是相同的,即在包前面加上 MAC 头部,设置其中的一些字段,然后将完成的包转换成电信号并发送出去

首先,为了判断 MAC 头部中的 MAC 地址应该填写什么值,我们需要根据路由表的网关列判断对方的地址。如果网关是一个 IP 地址,则这个IP 地址就是我们要转发到的目标地址如果网关为空,则 IP 头部中的接收方 IP 地址就是要转发到的目标地址。知道对方的 IP 地址之后,接下来需要通过 ARP(地址解析协议,根据 IP 地址查询 MAC 地址的协议)根据 IP 地址查询 MAC 地址,并将查询的结果作为接收方MAC 地址。路由器也有 ARP 缓存,因此首先会在 ARP 缓存中查询,如果找不到则发送 ARP 查询请求。

接下来是发送方 MAC 地址字段,这里填写ben输出端口的 MAC 地址。 还有一个以太类型字段,填写 0080(十六进制)。 网络包完成后,接下来会将其转换成电信号并通过端口发送出去

黄昏时偷来你的肋骨酿酒,百年后醉得有血有肉

[重要笔记]路由器的包转发操作(全面认识路由器)相关推荐

  1. (计算机网络)路由器数据包转发

    Q: Quidway路由器在执行数据包转发时,下列哪些项没有发生变化(假定没有使用地址转换技术): A: 原端口号 目的端口号 原网络地址 目的网络地址 原MAC地址 目的MAC地址 Result: ...

  2. 路由器上端口转发_如何在路由器上转发端口

    路由器上端口转发 Although modern routers handle most functions automatically, some applications will require ...

  3. linux路由器静态无法转发,静态路由之路由器两种转发模式

    如上图所示,配置如下: R1#show run Building configuration... Current configuration : 941 bytes ! version 12.4 s ...

  4. python获取路由器数据包pppoe_利用PPPOE获取路由器中宽带账号密码

    pppoe工作原理 PPPoE协议的工作流程包含发现和会话两个阶段,发现阶段是无状态的,目的是获得PPPoE终结端(在局端的ADSL设备上)的以太网MAC地址,并建立一个唯一的PPPoE SESSIO ...

  5. 路由个数据包转发简介

    第一章: 网络的核心是路由器, 路由器的作用就是将各个网络彼此连接起来.因此,路由器需要负责不同网络之间的数据包传送.网际通信的效率取决于路由器的性能,即取决于路由器是否能以最有效的方式转发数据包. ...

  6. 如何理解路由器的包转发率

    [提问]:请教CISCO2600路由器包转发率是以多大的包为单位计算的啊? [解答]在描述交换机性能时有很多指标,比如,交换容量(Gbps).背板带宽(Gbps).吞吐率或包转发率(Mpps)等等.一 ...

  7. netgear路由器解包打包

    netgear路由器解包打包过程 环境搭建 路由器解包 路由器打包 环境搭建 首先需要配置环境,配置的环境如下: binwalk 用于解包 qemu 用于打包后的调试,防止路由器变砖 firmware ...

  8. 路由器下一跳地址怎么判断_路由器的功能及工作原理

    路由器定义 路由器是互联网的枢纽,是连接Internet中各局域网.广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送数据 作用在网络层中,提供了路由和转发两种机制 路由: ...

  9. 路由器 交换机 命令符操作 网络设备的文件管理与基本调试

            这系列文章为计算机网络理论的学习笔记,学习笔记基于老师给的的PPT.他人学习笔记和维基百科.百度百科等一系列权威资料.学习笔记仅个人学习用,便于记录和复习,无广泛传播之意,若有侵权,请 ...

最新文章

  1. 中超赛程来100wan点in_不干了:中超球队改名“硬重启”,球迷组织绝望解散
  2. linux 功能测试宏 POSIX_C_SOURCE
  3. html ajax提交表单实例,Ajax提交表单并接收json实例代码
  4. php act index漏洞,浅析PHP程序中的目录遍历漏洞
  5. 2018-05-05(在小程序中使用图标)
  6. 计算机报名忻州考点,2020山西省考忻州考区考点安排
  7. 设计模式之模板方法和策略模式的区别(一)
  8. LeetCode —— 1554. 只有一个不同字符的字符串(Python)
  9. C#的发展历程第五 - C# 7开始进入快速迭代道路
  10. Android 驱动(13)---Makefile, Kconfig和.config关联关系
  11. 你听过或见过最无耻的一句话是什么?
  12. gulpfile.js不断更新中...
  13. 精益创业(LeanStartup)
  14. 网络通信原理_互联网通信协议
  15. redis的基本命令
  16. 设计模式六大原则(3):里氏替换原则
  17. js简单实现根据身份证号码识别性别年龄生日
  18. Idea 使用YapiUpload上传接口到Yapi
  19. ArcGIS地理数据库简介
  20. 用手机怎么连接服务器?如何用手机远程连接服务器?

热门文章

  1. Micro LED将引领小间距显示的未来。
  2. cad怎么选择一个对象打散vba_CADVBA中的选择集过滤.doc
  3. 浏览器的input禁用输入法
  4. 电脑死机的原因和防止方法
  5. 有关java的演讲稿_有关超级演说家励志的演讲稿
  6. “寒江独钓”错误列表
  7. java switch是什么意思_java switch语句详解
  8. Unity 检测手机性能,区分高中低端机型(URP)
  9. 小企业仓库管理软件设计开发
  10. 华硕发布全球首款8G内存手机ZenFone VR