路由过程是逐个数据包逐跳完成的。沿途的每台路由器会分别处理每个数据包。在每一跳,路由器都要检查每个数据包的目的 IP 地址,然后检查路由表,查找转发信息。
路由器将对数据包执行以下三种操作之一:
数据包检查
作为中间设备,路由器在网络层处理数据包。但是,到达路由器接口的数据包将封装成数据链路层(第 2 层)PDU。如图所示,该路由器首先要丢弃第 2 层封装才能检查数据包。
选择下一跳
路由器要检查数据包报头中的目的地址。如果路由表中的匹配路由显示目的网络与该路由器直接连接,则将数据包转发到该网络连接的接口。在此情况下不存在下一跳。要将数据包转发到连接的网络上,首先必须由第 2 层协议对其重新封装,然后再将它从接口转发出去。
如果与数据包的目的网络匹配的路由是远程网络,则将数据包转发到该路由指示的接口,由第 2 层协议封装,然后发送到下一跳地址。
使用默认路由
如果路由表中没有更具体的路由条目适用于抵达的数据包,则将该数据包转发到默认路由(如果存在)所指示的接口。该数据包在此接口由第 2 层协议封装,然后发送到下一跳路由器。默认路由也称为最后选用网关。.
此过程可能要发生多次,直至数据包到达其目的网络。每一跳路由器只知道下一跳的地址;它并不知道前往远程目的主机的路径的详细信息。此外,前往同一目的地址的所有数据包在每台路由器上也不一定会转发到相同的下一跳。沿途的路由器在通信发生时可能了解到新的路由并将此后的数据包转发到不同的下一跳。
默认路由的重要性在于,网关路由器不可能具有通往 Internet 上所有网络的路由。如果使用默认路由转发数据包,它最终应该到达一台路由器,它具有一条通往目的网络的具体路由。此路由器可能是该网络连接的路由器。这时,此路由器会通过本地网络将数据包转发到目的主机。
当数据包经过网际网络中的每一跳时,每台路由器都需要路由才能转发数据包。在任一台路由器处,如果路由表中找不到代表目的网络的路由,而且也不存在默认路由,则将丢弃该数据包。
IP 并未规定在特定路由器无处可发送数据包时将该数据包返回前一台路由器。这种功能会降低协议的效率并增加开销。报告此类错误要使用其它协议。