IPv4 option 源路由选项提供了我们这个能力,我们可以决定,数据包如何被发往目的主机。
? 严格源路由选择让路由器必须按照IP列表中的顺序转发,如果转发下一跳不在路由器直连子网中,那么数据包将被丢弃,源主机将收到源路由失败的ICMP消息。严格源路由选项类型值为137。
? 松散源路由选项则对转发路径的要求宽松一些,只要求转发路径能按顺序经过选项中的IP地址列表,可以在列表中的两个IP地址之间经过其他路由器。松散源路由选项类型值为131。
源路由选项结构上和记录路由非常相似,内容上有一些区别:
? 源路由选项的route data区域是一般非空的,是一个由发送端指定的IP地址列表;而记录路由选项在发送前是空的。
? 源路由选项的指针(pointer)指向下一个IP地址;记录路由选项的指针指向的是一个剩余存储空间的起始位置。
数据包到达目的主机时,且指针大小比选项长度小,路由器会将指针指向的IP地址填入数据包的目的IP地址字段,将数据包出接口的IP地址填入到指针指向的位置,然后将指针加4指向下一个IP地址,然后重新发送给这个新的IP地址。然而,如果指针大小比选项长度大,说明,已经到达了列表末尾。这个主机就是最终的目的主机。
数据包含有松散源路由选项,那么数据包转发过程中,如果自己不是目的主机,则会继续转发,不对IP列表进行操作。

最终目的主机收到数据包后,将源路由选项的ip地址列表反向处理后复制到响应数据包的option选项中,实现反向路由。路由过程与上述过程相同。
下面是一个严格源路由选项的使用示例。</