简单描述
如果目的主机与源主机是点对点,同一个共享网络上(以太网或令牌环网)。那么IP数据将会直接发送到目的主机上。否则就发到默认路由上,由路由器来转发
路由表
IP从TCP UDP,ICMP,IGMP或1个网络接口获取数据报并进行发送。IP层在内存中有一张路由表,当接收到数据报时会先搜索路由表。看下数据报的首部目的IP是不是本机的IP地址或者IP广播地址。是的话在根据首部中写明的协议类型指定相应的协议模块处理。如果不是则有两种情况。本机的IP层被设置成具有路由功能的时候,则进行转发。如果没有此功能,则丢弃该数据报
路由表内容
- 目的IP地址,可以是一个网络地址
- 下一站(下一跳)路由器的IP地址,或者直接连接的IP地址。下一站路由器不是最终目的。但可以通过它将数据报传送至目的地址
- 标志 包含两部分,
1. 表示目的IP是主机地址还是网络地址
2. 表示下一站是路由器还是直连接口 - 指定网络接口
IP路由选择过程
获取IP数据报之后:
- 搜索路由表,寻找能与目的IP地址(看标志)相匹配的表目(网络号和主机号均要匹配)。如果找到就讲数据报发送至该表目中指名的下一站路由或直连接口
- 搜索路由表,寻找能与目的IP相匹配的网络号,然后将数据报发送至该匹配的表目中指名的下一站路由或直连接口,需要考虑子网掩码。
- 如果这两种都无法找到相匹配的表目,则寻找路由表中被标为默认的表目,将数据报丢过去
- 如果也没有默认表目,一般是生成差错报文返回给源主机(“主机不可达”或“网络不可达”)
举例
目的IP主机140.252.13.,33,
目的网络 140.252.13.0
源IP主机收到上层协议发过来的发送数据报请求。发现目的IP与本机IP处在1个直连的网络上。那么将会将数据直接发送过去。
另一个例子
源主机IP:140.252.13.35(主机名bsdi)
目的IP: 192.48.96.9
顺序:
- bsdi搜索路由表发现没有与之匹配的IP地址和网络地址。则发送至默认表目的下一站主机(140.252.13.33)(主机名sun,被设置成具有路由功能)
- sun发现该数据报的目的IP也与自己的路由表目不匹配,然后就丢给默认表目的下一站主机(140.252.1.183)(主机名netb,被设置成具有路由功能)采用SLIP协议传输
- netb发现该数据报目的IP与自己的路由表的表目都不匹配。依然是丢给默认表目的下一站路由器(这次是路由器了,140.252.1.4)
- 路由器搜索路由表。依然没有匹配的,就丢给默认表目(140.252.104.2)
总结
- 大多数情况下都是使用默认路由表目
- 目的IP不会发生变化,所有的路由决策都基于该目的IP
- 链路层的目的IP地址始终是下一站的链路层地址,SLIP没有该地址
- 以太网地址通过ARP转换