TCP/IP IP转发

IP协议:转发IP数据报

因特网中的转发

routing 和 forwarding 的区别

routing指整个从源到目标转发的过程,路由选择
forwarding指转发,是路由器本地的操作

IP的目标

对用户而言,构建成一个概念上的虚拟网

转发信息库(FIB)

称为:转发表、路由表
一个路由节点在发送IP分组的时候的依据

一些转发难度

进行转发决策时依据的参数
处理分组首部服务质量的需求

直接传递和非直接传递

转发过程中的两种形式

  • 直接:节点发送的目标(不一定是最终目标)与自己在同一个物理网络
  • 间接:不在同一个物理网络,转发给下一跳的路由器

1 直接传递(单一网络的传输)

1
2
3
4
1 将IP数据报封装在链路层帧中
2 目标IP地址映射成对应的物理地址
3 由网卡传输出去
4 比较网络前缀来确定连在一个网络上,然后与目标之间进行直接传递

2 间接传递

1
2
1 发送方必须指出下一跳路由器,
2 下一跳路由器继续指定,直到到达目标所在网连接的路由器

表驱动的IP转发

1
包含:目标IP与目标主机地址,到达目标的下一跳

默认路由

转发表中的一个重要路由

  • 功能:在转发表中没有找到对应的路由表项,那么任何目标地址都会与默认路由匹配
  • 作用:
1
2
3
4
1 合并多个路由的具体表项为一个
2 使得转发表变小
3 残羹网络中减少大部分表项
残羹网络:与因特网只有一条链接

特定主机路由

表项对应一个特定主机

  • 作用:本地管理网络控制
    1 便于网络管理
    2 允许网络测试
    3 出于安全的控制

IP转发算法

1
2
3
4
5
6
7
8
9
10
收到上层的IP分组,需要将其转发
1 先从分组首部将目标IP地址抽取出来
2 查找转发表
有特定主机路由:转发出去
无特定主机路由:计算出网络前缀,接3、4
目标地址与子网掩码按位与得到网络前缀,将此网络前缀与表项中目标网络地址作比较
3 本地网络?-> 本地递交
4 非本地网络?-> 查找有无表项与此网络前缀匹配
找到了-> 发往下一跳路由器
找不到-> 转发网默认路由的下一跳(若无默认路由,无法转发,报错)

转发表表项匹配方法

最长前缀匹配:
表项中的子网掩码长的优先匹配

IP地址和转发表

对于分组中字段的修改情况:
1 大部分字段不改动,例如:不改动源地址和目标地址
2 改变TTL,若TTL减一为零则丢弃,首部校验和会改变

下一跳的IP地址如何存放?

(IP地址首部不存储下一跳节点的IP地址)

  • 存储在帧的首部目标物理地址字段
1
2
3
4
1 即将被处理的IP地址交到网络接口上进行处理,
2 IP地址通过ARP映射到物理地址,此物理地址是帧首部目标的IP地址(下一跳)
3 将IP地址放到帧的数据区,构造完整的帧再将其发送出去
4 丢弃下一跳地址

节点处理到来的IP分组

链路层将分组交给IP模块

  • 对于一个主机节点:
    1 检查目标IP地址,匹配(转交高层
    2 差错情况,丢弃
  • 对于一个路由器节点:
    IP分组首部的目标地址是否和路由器接口地址匹配?
    1 匹配,转交处理(一般用于测试的环境
    2 不匹配则转发,TTL-1,若TTL大于0重新计算首部和然后封装在帧中转发出去,否则丢弃

转发表的获取、初始化、更新

1
……

参考资料:

  • INTERNETWORKING WITH TCP/IP PRINCIPLES, PROTOCOLS, AND ARCHITECTURE Vol1 (6th Edition). DOUGLASE E. COMER