正确答案
工作步骤如下:
(1)接收帧,并分解IP数据包,当IP数据包封装在数据链路帧中,沿某种物理网络传送到路由器的某个端口时,路由器中的数据链路层协议接收这个帧,并从中分解出IP数据包上交给IP层软件处理。
(2)IP包头合法性验证:路由器必须对IP合法性进行验证,以确保包头有意义。如果IP数据包在下列任何一个测试中失败,它将被丢弃,同时进行错误统计。
接收的链路层帧长度必须足够大,以容纳最小的合法IP数据包(20字节);
IP校验和必须正确;
IP版本号必须为4;
IP包头长度必须足够大,以容纳最小的合法IP数据包(20字节);
IP数据包总长度必须足够大,以容纳IP数据包头。
(3)IP数据包选项处理:对于记录路由选项,路由器在选项数据域中定改自己的IP地址;对于时间戳(TimeStamp)选项,写入自己的IP地址及当前以毫秒为单位的世界标准时间计算值;对于源路由选项,要先写入自己的IP地址,后面还要做进一步的处理。
(4)IP数据包本地提交和转发:当路由器收到一个IP数据包时,它必须决定这个数据包是应当本地提交还是向前转发。
(5)转发寻径:当路由器决定要转发一个IP数据包时,就要选择下一个路由器的地址。路由器根据目的网络地址检索其路由表,得到一个候选路由集合;如果这个集合为空,此IP数据包被丢弃或走默认路由;如果集合中有多个元素时,将采用某种算法去掉多余元素,而得到一个最佳的路径。
(6)转发验证:在转发IP数据包之前,路由器要有选择地进行一些验证工作。当检测到不合法的IP源地址或目的地址时,这个数据包被丢弃;非法的广播和组播数据包也将被丢弃;通过设置包过滤和访问列表功能,限制在某些方向上数据包的转发,这样可以提供一种安全措施,使得外部系统不能与内部系统在某种特定协议上进行通信,也可以限制只能在某些系统之间进行通信。这有助于防止一些安全隐患,如防止外部的主机伪装作内部主机通过路由器建立对话。
(7)TTL处理:数据包经过每个路由器都至少把此值减少1(即使消耗的时间远小于1秒)。如果TTL值减少到0,这个数据包必须被丢弃,且路由器应当发给源站点一个ICMP超时控制报文。
(8)数据包分段:当要转发的IP数据包总长度大于要输出的物理网络的MTU时,路由器要把这个数据包分段,分段的原则是要提高网络的传输效率,节省带宽,并且有利于提高传送路径上路由器的处理效率。
(9)链路层寻址:在路由器中,对应每个转发的网络地址,都有一个相应的端口值。根据这个端口值,可以得知要输出的物理网络类型,同时也得到了其MTU,找到与具体物理网络相关的驱动程序入口。路由器的IP层软件与各驱动程序之间的接口设计成统一的标准,IP层软件把IP数据包、包长、目的物理网络地址、下一站的IP地址告诉驱动程序。驱动程序把从上层收到的IP数据包封装在数据链路层的帧中,根据目的物理网络地址发送出去。如果这一端口是连接在某种共享物理媒体的局域网上,驱动程序还要利用ARP等地址解析协议把IP地址转换为物理地址。