IP层处理过程的简单流程:
    image.png

    选路的原理
    路由表中包含的信息决定了IP层所做的所有决策。
    IP搜索路由表的几个步骤:
    1. 搜索匹配的主机地址;
    2. 搜索匹配的网络地址;
    3. 搜索默认表项(默认表项一般在路由表中被指定为一个网络表项,其网络号为0)

    选路机制:它搜索路由表并决定向哪个网络接口发送分组
    选路策略:它只是一组决定把哪些路由放入路由表的规则
    IP执行选路机制,而路由守护程序则一般提供选路策略。

    查看路由表:
    image.png

    对于一个给定的路由器,可以打印出五种不同的标志(flag):
    U 该路由可以使用。
    G 该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地是直接相连的。
    H 该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。
    如果没有设置该标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号,或者网络号与子网号的组合。
    D 该路由是由重定向报文创建的
    M 该路由已被重定向报文修改

    手动添加路由表
    image.png

    没有到达目的地的路由
    如果路由表中没有默认项,而又没有找到匹配项,这时会发生什么情况呢?
    1. 如果数据报是由本地主机产生的,那么就给发送该数据报的应用程序返回一个差错,或者是“主机不可达差错”或者是“网络不可达差错”。
    2. 如果是被转发的数据报,那么就给原始发送端发送一份ICMP主机不可达的差错报文。

    ICMP主机与网络不可达差错报文
    image.png

    ICMP重定向差错报文
    image.png

    1. 我们假定主机发送一份IP数据报给R1。这种选路决策经常发生,因为R1是该主机的默认路由。
      2. R1收到数据报并且检查它的路由表,发现R2是发送该数据报的下一站。当它把数据报发送给R2时,
      R1检测到它正在发送的接口与数据报到达接口是相同的(即主机和两个路由器所在同一个LAN上)。这样就给路由器发送重定向报文给原始发送端提供了线索。
      3. R1发送一份ICMP重定向报文给主机,告诉它以后把数据报发送给R2而不是R1

    作用:ICMP重定向一般用来让具有很少选路信息的主机逐渐建立更完善的路由表。