TCP/IP 协议族 - IP 分组的交付和转发笔记
交付
直接交付
分组的重点和交付者在同一个网络上。只要判断一下网络地址是否相同即可。 在直接交付时,发送方通过目的 IP 地址找出目的物理地址,然后 IP 软件把目的 IP 地址和目的物理地址一起交付给数据链路层。
间接交付
间接交付的时候,发送方通过分组的目的 IP 地址和路由表查找分组应当被交付的下一个路由器的 IP 地址,再用 ARP 协议找出下一个路由器的物理地址。
转发
转发也就是把分组交付给下一跳。
当 IP 作为无连接协议时,转发的基础是 IP 数据报的目的地址。
当 IP 作为面向连接协议时,基础是附加在 IP 数据报上的标记。
转发技术
###下一跳
这种技术只在路由表中保留下一跳地址。
特定网络方法
路由表对网络设置成一个表项。
特定主机方法
为主机指定下一跳。一般用在检查路由环境下。
默认方法
使用分类编址时的转发
无子网划分的转发
一个典型的转发模块需要使用三张表(A,B,C),每个表至少要有下面三列:
- 目的网络地址
- 下一跳地址
- 接口号
转发模块按照下列步骤工作:
- 提取出分组的目的地址。
- 提取出地址的类别。
- 得到目的网络地址。
- 在对应的表里查找下一跳信息。
- 用 ARP 协议找出下一个物理地址,交付给数据链路层。
有子网划分的转发
这样的路由器都有一个掩码。
分类编址
- 提取分组目的地址。
- 如果有特定主机路由,走这个路由。
- 使用目的地址和掩码来提取子网地址。
- 使用子网地址来搜索路由表,如果不匹配就搜默认的。
- 把下一跳地址和接口号给 ARP。
无分类编址
无分类编址的路由表多了一项掩码,在查表的时候需要对着掩码检查看看是不是属于这个网络。
掩码 | 网络地址 | 下一跳 | 接口 |
---|---|---|---|
/26 | 180.80.80.80 | - | m2 |
当在表中找不到网络地址时,就通过默认路由。因为这个分组可能是发往外面的。
地址聚合
就是把地址聚合起来。。。
最长掩码匹配
路由表应该把掩码按从大到小的顺序排列,这样才能正确转发。
多级路由选择
简单地说就是把大的网络分成一个个小的网络,这样路由表项就会减少,因为一些网络不用关心其他的网络的情况。
地理区域化路由选择
把多级路由选择进一步眼神,以包括地理区域化的路由选择, 比如说划分成美洲、欧洲等等。其实也就是一种多级路由。
路由表查找算法
使用分类编址时的查找
每个路由器一般有三张表,分组到达时,找出网络对应哪张表,然后在那张表里搜索。
在无分类编址中的查找
一般是按掩码从大到小排序,然后一个个找下来。 可以用 Trie 优化。
基于标记的转发
因为在面向连接的协议中,分组都会有个标记,那么直接在路由表里找标记对应的接口就行了,很快。
MPLS
Multi-Protocol Label Switching,这个标准可以让分组携带标记,它是对 IPv4 分组的封装。
路由器的结构
构件
输入端口
输入端口执行路由器的物理层和数据链路层的功能。
输出端口
和输入端口顺序相反。
路由选择处理器
执行网络层的功能,查表。
交换结构
把分组从输入队列搬移到输出队列中。
纵横交换结构
榕树交换结构
根据接口的二进制来选路。
Batcher 榕树交换结构
因为榕树交换结构会碰撞,即使两个报文不去同一个接口。