网站管理系统哪个好,wordpress评论头像 修改,东莞关键词排名快速优化,网站后台和移动开发集线器、交换机、路由器是如何转发包的 集线器交换机MAC地址表的维护 路由器路由表中的信息路由器的包接收操作查询路由表确定输出端口找不到匹配路由时选择默认路由包的有效期通过分片功能拆分大网络包路由器发送操作中的一些特点 参考文档 集线器 集线器是一层#xff08;物… 集线器、交换机、路由器是如何转发包的 集线器交换机MAC地址表的维护 路由器路由表中的信息路由器的包接收操作查询路由表确定输出端口找不到匹配路由时选择默认路由包的有效期通过分片功能拆分大网络包路由器发送操作中的一些特点 参考文档 集线器 集线器是一层物理层设备 集线器将信号发送给所有连接在它上边的线路 集线器是什么呢 文字描述就是集线器Hub是计算机网络中的一种网络设备主要用于连接多台计算机实现数据包的广播传输。 集线器工作在OSI模型的物理层负责物理信号的传输。它将多个计算机的物理连接集中在一起形成一个共享的网络。 集线器接收到的数据包会被广播到所有连接在它上面的计算机。这意味着无论是哪台计算机发送的数据包所有计算机都会接收到这个数据包。
然而随着技术的发展集线器逐渐被交换机Switch所取代。交换机不同于集线器它在数据链路层OSI模型的第二层工作能够根据MAC地址将数据包仅发送到目标设备而不是广播到所有设备。这样交换机能够提供更高效的数据传输减少了网络中的冗余流量。
集线器内部结构如下图 在每个接口的后面装有和网卡中的PHYMAU功能相同的模块。 网卡不仅可以连接集线器因为网卡的PHYMAU模块和集线器都是一样的所以两台计算机的网卡也可以相互连接只要将一侧的发送信号线和另一侧的接收信号线连起来就可以收发数据了。
信号到达集线器的PHYMAU模块后会进入中继电路。中继电路的基本功能就是将输入的信号广播到集线器的所有端口上。当然也有一些产品具有信号整形、错误抑制等功能但基本上就是将输入的信号原封不动输出到网线接口。
接下来信号从所有接口流出到达连接在集线器上的所有设备。然后这些设备在收到信号之后会通过MAC头部中的接收方MAC地址判断是不是发送给自己的如果是就接收如果不是则忽略。这样网络包就到达指定的MAC地址的接收方了。
交换机
来一张交换机的图片。图片取自某宝某品牌 交换机端口不具有MAC地址 交换机根据MAC地址表查找MAC地址然后将信号发送到相应的端口 信号到达网线接口并有PHYMAU模块进行接收这一部分和集线器是相同的。也就是说当信号从双绞线传入时就会进入PHYMAU模块的接收部分。
接下来PHYMAU模块会将网线中的信号转换为通用格式然后传递给MAC模块。MAC模块将信号转换为数字信息然后通过包末尾的FCS校验错误如果没有问题则存放到缓冲区中如果有错误就丢弃这个包。这部分操作和网卡基本相同可以认为交换机的每个网线接口后边都是一块网卡。网线接口和后边的电路部分一起称为一个端口也就是说交换机的一个端口就相当于交换机上的一块网卡。但交换机的工作方式和网卡有一点不同。网卡本身具有MAC地址并通过该对收到的包的接收方MAC地址判定是不是发给自己的如果不是发给自己的则丢弃相对的交换机的端口不核对接收方MAC地址而是直接接收所有的包并存放到缓冲区。因此和网卡不同交换机的端口不具有MAC地址
将包放入缓冲区后接下来需要查询一下这个包的接收方MAC地址是否已经在MAC地址表中有记录。MAC地址表主要包含两个信息一个是设备的MAC地址另一个是该设备连接在交换机的哪个端口上。MAC地址和端口是一一对应的通过这张表就能够判断出收到的包应该转发到哪个端口。
MAC地址表的维护
交换机在转发包的过程中需要对MAC地址表的内容进行维护维护操作分两种。
第一种是收到包时将发送方MAC地址以及其输入端口的号码写入MAC地址表中。由于收到包的哪个端口就连着发送这个包的设备所以只要将这个包的发送方MAC地址写入地址表以后当收到发往这个地址的包时交换机就可以将它发送到正确的端口了。交换机每次收到包时都会执行这个操作因此只要某个设备发送过网络包它的MAC地址就会被记录到地址表中。
另一种是删除地址表中某条记录的操作这是为了防止设备移动时产生问题。比如我们开会时会把笔记本从工位拿到会议室这时设备就发生了移动。从交换机的角度来看就是本来连接在某个端口上的笔记本消失了。这时如果交换机收到了发往这台已经消失的笔记本的包那么它依然会把包发送到原来的端口通信就会出错因此必须想办法删除哪些已经过时的记录仪。然而交换机没办法知道这台笔记本已经从原来的端口移走了。因此地址表中的记录不能永久有效而是要在一段时间不使用后自动删除。
那么当笔记本被拿到会议室之后会议室里的交换机又会如何工作呢只要笔记本电脑连接到会议室的交换机交换机就会根据笔记本电脑发出来的包更新它的地址表。因此对于目的交换机来说不用做什么特别的措施就可以正常工作了。
如果接入到新的交换机当前笔记本又没有发送过包当需要接收包的时候怎么知道MAC地址呢 广播ARP请求获取目标设备的MAC地址一旦目标设备回应了ARP请求交换机会将其MAC地址添加到MAC表中以便将来的通信可以直接定位到目标端口。
一旦交换机知道了目标设备的MAC地址它就会将数据包定向到正确的端口而不再是广播到所有端口。这种机制使得交换机能够动态地学习和更新网络中各设备的MAC地址从而提高了网络的效率。
路由器 路由器各个端口都具有MAC地址和IP地址 网络包在到达路由器时会被转发到下一个路由器这一转发操作的工作原理和交换机类似也是通过查表判断包的转发目标。
路由器的内部结构如下图所示。其中包转发模块负责判断包的转发目的地端口模块负责包的收发操作。 路由器在转发包时首先通过端口将发过来的包接收进来这一步的工作过程取决于端口对应的通信技术。接下来转发模块会根据收到的包的IP头部中记录的接收方IP地址在路由表中进行查询以此判断转发目标。然后转发模块将包转移到转发目标对应的端口端口再按照硬件的规则将包发送出去也就是转发模块委托端口模块将包发送出去的意思。
端口模块会根据相应通信技术的规范执行包收发的操作这意味着端口模块时以实际的发送方或者接收方的身份来收发网络包得。以以太网为例路由器的端口具有MAC地址因此它能够成为以太网的发送方和接收方。端口还具有IP地址从这个意义上讲它和计算机的网卡是一样的。
路由表中的信息 路由器根据IP地址判断转发目标 路由器会忽略主机号只匹配网络号 路由器表的子网掩码列指标是在匹配网络包目标地址时需要对比的数量 在“查表判断转发目标”这一点上路由器和交换机的大体思路是类似的不过具体的工作过程有所不同。交换机是通过MAC头部中的接收方MAC地址来判断转发目标的而路由器则是根据IP头部中的IP地址来判断的。由于使用的地址不同记录转发的内容也会不同 路由表示例如上图最左侧的目的地址列记录的实接收方的信息。实际上这里的IP地址只包含表示子网的网络号部分的比特值而表示主机号部分的比特值全部为0。路由器会将接受到的网络包的接收方IP地址与路由表中的目标地址进行比较找到相应的记录。交换机在地址表中只匹配完全一致的记录而路由器则会忽略主机号部分只匹配网络号部分。
在匹配地址的过程中路由表需要知道网络号的比特数因此路由表中还有一列子网掩码。通过这个值就可以判断出网络号的比特数。 路由器还会把几个子网合并成一个子网并在路由表中只产生一条记录称之为路由聚合。 路由聚合会将几个子网合并成一个子网并在路由表中只产生一条记录。 假设现在有三个子网分别是 10.10.1.0/2410.10.2.0/24、10.10.3.0/24路由器 A 需要将包发往这 3 个子网。在这种情况下路由器 A 中原本有对应这 3 个子网的 3 条记录但是我们把这三个子网聚合成一个子网为 10.10.0.0/16这样也能够正确地进行转发但我们减少了路由表中的记录数量这就是路由聚合。经过路由聚合多个子网会被合并成一个子网子网掩码会发生变化同时目标地址列也会改成聚合后的地址。
相对地还有另外一些情况如将一个子网进行细分并注册在路由表中然后拆分成多条记录。
此外通过上述方法我们也可以将某台计算机的地址写入路由表中这时的子网掩码为 255.255.255.255也就是说地址中的全部 32 个比特都为 1。这样一来主机号部分比特全部为 0 可以表示一个子网主机号部分比特不全部为 0 可以表示某一台计算机两种情况可以用相同的规则来处理。 路由表最后一列是跃计数它表示距离目标IP地址的距离是远还是近。这个数字越小表示距离目的地越近数字越大表示距离目的地越远。
路由器的包接收操作 路由器的端口都具有MAC地址直接受与自身地址匹配的包遇到不匹配的包则直接丢弃 信号到达网线接口部分其中的PHYMAU模块和MAC模块将信号转换为数字信息然后通过包末尾的FCS进行错误校验如果没问题则检查MAC头部中的接收方MAC地址看看是不是发送给自己的包如果是就放到就收缓冲区否则就丢弃这个包。如果包的接收方MAC地址不是自己说明这个包时发送给其他设备的如果接受这个包就违反了以太网的规则。
查询路由表确定输出端口 通过路由器转发的网络包其接收方MAC地址为路由器端口的MAC地址 完成包接收操作之后路由器就会丢弃包开头的MAC头部。MAC头部的作用就是将包送达路由器其中的接收方MAC地址就是路由器端口的MAC地址。因此当包到达路由器之后MAC头部的任务就完成了于是MAC头部 就会被丢弃。
接下来路由器会根据MAC头部后方的IP头部中的内容进行包的转发操作。
根据包的接收方IP地址查询路由表中的目标地址栏以找到相匹配的记录。这个匹配不是匹配全部的32个比特而是根据子网掩码列中的值判断网络号的比特数并匹配相应数量的比特。按照这样的规则可能会匹配到多条候选记录路由器会首先寻找网络号比特数最长的一条记录。网络号的比特数越长说明主机号比特数越短也就意味着该子网内可分配的主机数越少即子网中存在的主机数量越少这一规则的目的是尽量缩小范围所以根据这条规则判断转发目标就会更加准确。
然而有时候路由表中会存在网络号长度相同的多条记录例如考虑到路由器或网线的故障而设置的备用路由就属于这种情况。这时需要根据跃点计数值来进行判断。跃点计数越小说明路由越近因此应选择越点数较小的记录。
如果在路由表中找不到匹配的记录路由器会丢弃这个包并通过ICMP消息告知发送方。
找不到匹配路由时选择默认路由 路由表中子网掩码为 0.0.0.0的记录表示“默认路由” 如果找不到目标记录路由器就直接丢弃该包那么是不是要把所有的转发目标都配置到路由器中表中呢如果转发目标就成千上万是不是都要写到路由表呢
不是路由表最后一行的作用就解决了如上问题。这一行的子网掩码为 0.0.0.0关键就在这里子网掩码 0.0.0.0的意思就是网络包接收方IP地址和路由表目标地址的匹配的比特数为0换句话说就是根本不需要匹配
包的有效期
从路由表中查找到转发目标之后网络包就会被转发给输出端口并最终发送出去但在此之前路由器还有一些工作要完成。
第一个工作就是更新IP头部中的TTLtime to live生存时间字段。TTL字段表示包的有效期包每经过一个路由器的转发这个值就会减1当这个值变成0时就表示超过了有效期这个包就会被丢弃。
这个机制是为了防止包在一个地方陷入死循环。
通过分片功能拆分大网络包
路由器的端口并不只有以太网一种也可以支持其他局域网或专线通信计数。不同的线路和局域网类型各自能传输的最大包长度也不同。一旦转发的包的长度超过了输出端口能传输的最大长度就无法直接发送这个包了。
遇到这种情况可以使用IP协议中定义分片功能对包进行拆分缩短每个包的长度。首先需要知道输出端口的MTU看看这个包能不能不分片直接发送。最大包长度是由端口类型决定的用这个最大长度减掉头部的长度就是MTU将MTU与要转发的包长度进行比较。如果MTU太小就需要将这个包按照MTU进行分片再次之前还要看一下IP头部中的标志字段确认是否可以分片。 如果查询标志字段发现不能分片那么就只能丢弃这个包并通过ICMP消息通知发送方。否则就可以按照输出端口MTU对数据进行一次拆分了。
路由器发送操作中的一些特点
路由器判断下一个转发目标的方法如下
如果路由表的网关列内容为IP地址则该地址就是下一个转发目标。如果路由器的网关列内容为空则IP头部中的接收方IP地址就是下一个转发目标
路由器也会使用ARP来查询下一个转发目标的MAC地址
参考文档
《网络是怎样连接的》 ——户根勤