为何Packet经过路由器,要传回网络层 ?

VSole2023-03-22 09:57:17

为什么数据传输经过路由器时要传回网络层 ?

今天学IP地址和硬件地址,书上有一张图。为什么每经过一个路由器,就要传回网络层,中间还有首部尾部的问题,这样做的意义是什么?

逻辑意义上是这样的,但是物理意义上不是这样的!

所谓逻辑,按照OSI参考模型,网络层需要对数据包packet完成路由(导航)功能。既然TCP/IP协议的IP层,归类于OSI参考模型的网络层(三层),所以IP层需要直接服务于自己的链路层(二层),将packet 向上递交(UP)给IP层。

这里的向上递交(二层UP到三层),有一点需要注意:只能是纯粹的IP Packet (纯三层),不能有物理层头部(一层)、链路层头部(二层)、链路层尾部(二层/FCS)。加黑部分需要物理层、链路层清除。

网络层/IP层,拿到IP Packet之后,需要履行自己的义务。比如sanity check、length check、checksum校验等合法性检查,如果不通过,直接扔进垃圾桶,错误统计+1。

如果通过以上合法性检查,查询路由表找出口,如果没找到,扔进垃圾桶,错误统计+1。

如果找到出口,网络层/IP层(三层/甲方),需要联系出口对应的链路层(二层/乙方),将IP Packet 从三层向下传递(Down)给出口的链路层(二层)。

联系之前,还需要检查链路层出口(通向下一个路由器)大门的MTU Length 是否≥Packet Length。如果不是,还需要检查Packet DF bit是否 ==1。如果是,直接扔进垃圾桶,错误统计+1,还需要向packet的源主机发送ICMP Error Code(Type 3 code 4)。如果否,需要IP层将packet拆分成多个fragment。

如果很幸运,MTU Length ≥ Packet Length,Packet可以完整发送,无需拆分。

但是联系链路层,需要告知下一跳的MAC地址(假设链路层为ethernet)。

网络层/IP层,先检查ARP cache。如果没有,需要ARP广播获取。如果有,直接就可以调用(call)链路层了,提供的信息有:

下一跳的MAC,IP Packet(内存地址)、Length等等。

链路层拿到甲方这些信息,就开始将Packet封箱(Encapsulation)打包了,添加Ethernet头部、以及尾部FCS,然后就打电话(call)自己的乙方(物理层),将包裹(Frame)扔给物理层,接下来就全是物理层的脏话了。

物理层,将链路层的01串串,编码、映射成PAM脉冲幅度信号,对载波(carrier)进行调制,最前面的是由同步信号Preamble + SFD组成的PAM脉冲信号,方便接收方检测有效的packet到达,方便接收方完成时间同步、频率同步。如果有频率offset,需要补偿。

从链路层向上递交(UP)packet时刻起,到网络层向下完成传递(Down)packet止的计算都是路由器的CPU来完成的。尽管CPU的运算速度是极快的,但是要想完成超高速(每秒几百万次packet的转发速率),臣妾(CPU)是做不到的。

怎么办?

采用专用(dedicated)硬件,来完成上文加亮(highlight)部分的计算。需要网络层/IP层将IP路由表、下一跳MAC等信息,同步给专用硬件,由硬件来完成本该网络层/IP层完成的转发(Forward)任务。这个在不同路由器平台都有自己的表达方式,在Cisco平台上称为 CEF、或者Distributed

CEF。硬件的转发能力远超CPU转发。

启用了CEF之后,Packet不会Up给网络层/IP层,除非遇到了以下情况:

  • CEF Table无法match数据包的目的IP
  • IP Packet有option选项
  • 数据包的目的IP == self(正常现象)


1说明,可能由于路由表与CEF表不同步,这会导致CPU利用率暴增导致报警,2给远程攻击路由器CPU提供了便利。

路由网络层
本作品采用《CC 协议》,转载必须注明作者和本文链接
HTTPs双向认证及解决方案Https一般采用单向认证,但是一些特殊的APP在服务端也会对证书进行再次认证,这样的认证机制我们称为HTTPs双向认证。
数据链路层在不可靠的物理介质上提供可靠的传输。与IP协议配套使用实现其功能的还有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP。ARP 是即插即用的,一个ARP表是自动建立的,不需要系统管理员来配置。
数据链路层在不可靠的物理介质上提供可靠的传输。以太网协议详解MAC地址:每一个设备都拥有唯一的MAC地址,共48位,使用十六进制表示。与IP协议配套使用实现其功能的还有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP。ARP 是即插即用的,一个ARP表是自动建立的,不需要系统管理员来配置。
数据链路层在不可靠的物理介质上提供可靠的传输。以太网协议详解MAC地址:每一个设备都拥有唯一的MAC地址,共48位,使用十六进制表示。与IP协议配套使用实现其功能的还有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP。ARP 是即插即用的,一个ARP表是自动建立的,不需要系统管理员来配置。
数据链路层在不可靠的物理介质上提供可靠的传输。以太网协议详解MAC地址:每一个设备都拥有唯一的MAC地址,共48位,使用十六进制表示。网络层网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。
数据链路层在不可靠的物理介质上提供可靠的传输。与IP协议配套使用实现其功能的还有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP。ARP 是即插即用的,一个ARP表是自动建立的,不需要系统管理员来配置。
4 位 TOS 分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。3 位标志字段:第一位保留,表示暂时没有规定该字段的意义。第二位表示禁止分片,表示如果报文长度超过 MTU,IP 模块就会丢弃该报文。16 位首部检验和:使用 CRC 进行校验,来鉴别数据报的首部是否损坏,但不检验数据部分。
值得指出的是,即使是IS-IS协议,也要流经协议栈的网络层,而网络层同样有IS-IS路由表,网络层同样要依赖于这个IS-IS路由表提供路由服务。不工作在TCP/IP协议架构之上的IS-IS,查IS-IS路由表。路由协议不能没有路由表,但是路由表可以没有路由协议。这里进程之间的通信是指进程使用TCP/IP作为通信的桥梁。需要指出的是,路由协议产生的路由表,并不都是可以进入TCP/IP的全局路由表。
为什么数据传输经过路由器时要传回网络层 ?今天学IP地址和硬件地址,书上有一张图。为什么每经过一个路由器,就
NSX-t交换路由
2022-12-28 10:33:59
但是,ip报文中,使用的却是“ip:mac”地址,因此可以推测,ip地址与交换机之间存在映射,先锁定一个较大的范围,mac地址与端口号之间存在映射,进一步锁定精确位置。
VSole
网络安全专家