路由

目录

路由

1. 实现4台在不同网段的主机间的通信

路由器0的路由表配置方式:

路由器1的路由表配置方式:

2. 实现4台主机的相互通信

3. 相关问题

4. 路由器转发网络包的过程


路由

在不同网段之间转发数据, 需要有路由器的支持, 默认情况下, 路由器只知道跟它直连的网段, 非直连的网段需要通过静态路由、动态路由告诉它
静态路由:
    管理员手动添加路由信息
    适用于小规模网络

动态路由:
    路由器通过路由选择协议(比如RIP、OSPF)自动获取路由信息
    适用于大规模网络


1. 实现4台在不同网段的主机间的通信

连接模型:

通信流程:

路由器0的路由表配置方式:

路由表配置①:

路由表配置②:

路由表配置③:

路由表配置④:

路由表配置⑤:

路由器1的路由表配置方式:

路由表配置①:

路由表配置②:

路由表配置③:

路由表配置④:

路由表配置⑤:


2. 实现4台主机的相互通信

连接模型:

通信流程: 

路由表配置:

 

3. 相关问题

问题描述: 在某个计算机中ping不同网段的其他计算机时,  第一个数据包总是丢失


原因:
    当计算机0向计算机1发送第一个数据包时, 由于不知道计算机1的MAC地址, 所以会发送arp广播, 但是计算机0与计算机1不在同一个网段, 那么会将arp数据包发送至路由器0(网关), 路由器0根据路由表跳转到路由器1, 由于路由器1不知道目标IP的MAC地址, 所以会将数据包丢弃, 然后发送arp广播, 获取目标IP的MAC地址; 当第二次发送数据包时, 由于路由器1已经保存了目标IP的MAC地址, 所以可以直接发送过去

 

4. 路由器转发网络包的过程

a. 接收网络包; 首先,信号到达网线接口部分,其中的PHY(MAU)模块和MAC模块将信号转换为数字信息,然后通过包末尾的FCS进行错误校验,如果没问题则检查MAC头部中的接收方MAC地址,看看是不是发给自己的包,如果是就放到接收缓冲区中,否则就丢弃这个包。完成包接收操作之后,路由器就会丢弃包开头的MAC头部。MAC头部的作用就是将包送达路由器,其中的接收方MAC地址就是路由器端口的MAC地址。因此,当包到达路由器之后,MAC头部的任务就完成了,于是MAC头部就会被丢弃。

b. 查询路由表确定输出端口; 根据包的接收方IP地址查询路由表中的目标地址栏,以找到相匹配的记录。注意是根据子网掩码列中的值判断网络号的比特数,并匹配相应数量的比特。在匹配到多条候选记录时, 首先会寻找网络号比特数最长的一条记录。网络号比特数越长,说明主机号比特数越短,也就意味着该子网内可分配的主机数量越少,即子网中可能存在的主机数量越少,这一规则的目的是尽量缩小范围,所以根据这条记录判断的转发目标就会更加准确。在经过 '最长匹配' 原则进行匹配后, 如果还存在多条匹配记录, 则需要根据跃点计数的值来进行判断。跃点计数越小说明该路由越近,因此应选择跃点计数较小的记录。

c. 如果配置了默认路由则找不到匹配路由时会选择默认路由, 否则如果在路由表中无法找到匹配的记录,路由器会丢弃这个包,并通过ICMP消息告知发送方;

d. 更新包的有效期(更新TTL); TTL字段表示包的有效期,包每经过一个路由器的转发,这个值就会减1,当这个值变成0时,就表示超过了有效期,这个包就会被丢弃。这个机制是为了防止包在一个地方陷入死循环。如果路由表中的转发目标都配置正确,应该不会出现这样的情况,但如果其中的信息有问题,或者由于设备故障等原因切换到备用路由时导致暂时性的路由混乱,就会出现这样的情况。

e. 通过分片功能拆分大网络包; 由于路由器输出端口的最大包长度可能会小于输入端口。即便两个端口的最大包长度相同,也可能会因为添加了一些头部数据而导致包的实际长度发生变化。一旦转发的包长度超过了输出端口能传输的最大长度,就无法直接发送这个包了。遇到这种情况,可以使用IP协议中定义的分片功能对包进行拆分,缩短每个包的长度。首先,我们需要知道输出端口的MTU,看看这个包能不能不分片直接发送。最大包长度是由端口类型决定的,用这个最大长度减掉头部的长度就是MTU,将MTU与要转发的包长度进行比较。如果输出端口的MTU足够大,那么就可以不分片直接发送;如果输出端口的MTU太小,那么就需要将包按照这个MTU进行分片,但在此之前还需要看一下IP头部中的标志字段,确认是否可以分片;

 

 

如果查询标志字段发现不能分片,那么就只能丢弃这个包,并通过ICMP消息通知发送方。否则,就可以按照输出端口MTU对数据进行依次拆分了。在分片中,TCP头部及其后面的部分都是可分片的数据,尽管TCP头部不属于用户数据,但从IP来看也是TCP请求传输的数据的一部分。数据被拆分后,每一份数据前面会加上IP头部,其大部分内容都和原本的IP头部一模一样,但其中有部分字段需要更新,这些字段用于记录分片相关的信息。

f. 设置接收方、发送方MAC地址; 为了判断MAC头部中的MAC地址应该填写什么值,我们需要根据路由表的网关列判断对方的地址。如果网关是一个IP地址,则这个IP地址就是我们要转发到的目标地址;如果网关为空,则IP头部中的接收方IP地址就是要转发到的目标地址。知道对方的IP地址之后,接下来需要通过ARP根据IP地址查询MAC地址,并将查询的结果作为接收方MAC地址。路由器也有ARP缓存,因此首先会在ARP缓存中查询,如果找不到则发送ARP查询请求。接下来是发送方MAC地址字段,这里填写输出端口的MAC地址。还有一个以太类型字段,填写0080(十六进制)。

g. 发送网络包; 网络包完成后,接下来会将其转换成电信号并通过端口发送出去。如果以太网工作在半双工模式,需要先确认线路中没有其他信号后才能发送,如果检测到碰撞,则需要等待一段时间后重发。如果以太网工作在全双工模式,则不需要确认线路中的信号,可以直接发送。如果输出端口为以太网,则发送出去的网络包会通过交换机到达下一个路由器。由于接收方MAC地址就是下一个路由器的地址,所以交换机会根据这一地址将包传输到下一个路由器。接下来,下一个路由器会将包转发给再下一个路由器,经过层层转发之后,网络包就到达了最终的目的地。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值