99、描述路由表中根据其适用的目标类型不同而存在的三种路由类型。
路由表中的三种路由类型分别为:
-
主机路由(host route)
适用于特定主机,目标地址必须与期望目标完全匹配。 -
网络路由(network route)
适用于一组地址有部分相同前缀的主机,目标地址与掩码配对,匹配掩码中置位位置上与目标相同的地址。 -
通配符路由(wildcard route)
是一种特殊的网络路由,掩码为空,能匹配所有目标,作为未知目标的默认路由。
100、什么是路由重定向?它有什么用途?
路由重定向消息是协议向路由系统发出的控制请求,用于修改现有路由表条目或创建新的路由表条目。协议通常在收到路由器的重定向消息后生成此类请求。
路由器在识别出所收到的数据包有更好的路由时会生成重定向消息。例如,若主机A通过路由器C向同一网络的主机B发送数据包,C会向A发送重定向消息,告知A应直接向B发送数据包。
在维护详尽路由信息成本过高的主机上,通配符路由条目和重定向消息的组合可用于提供简单的路由管理方案,无需使用更高级别的策略进程。重定向会改变路由的网关(前提是重定向适用于该路由的所有目标)。
101、内核的时钟节拍率对dummynet中的数据包延迟抖动有什么影响?
dummynet中数据包的抖动与内核中的时钟节拍设置直接相关。默认节拍率1000能在低至1毫秒时取得良好效果,要实现更精细的粒度需要提高内核的节拍率。
102、在网络图形(netgraph)系统中,数据包是如何在节点之间传递的?
在 netgraph
系统中,数据包在节点之间通过钩子(hooks)传递。节点可以任意连接,数据包在图中节点间的一组钩子上流动。
103、早期版本的FreeBSD将ARP条目存储在路由表中。请说明将ARP条目移至单独表中相较于之前的实现有哪两个改进之处。
- 一是移除路由表中的转发信息,消除了路由表上的锁争用,提高了系统性能;
- 二是分离设计使访问每种数据类型的API更简洁,还能轻松用硬件替换FIB。
104、PF和IPFW过滤数据包的方式有哪三个不同点?
-
结构和实现不同 :PF与IPFW功能相似,但结构和实现有别。PF最初在OpenBSD下开发,后移植到FreeBSD。
-
钩子数量和方向不同 :IPFW只有一个pfil钩子(
ipfw_check_hook()
)负责捕获数据包;PF在IPv4和IPv6的入站和出站方向都添加了钩子。 -
控制方式不同 :IPFW的
ipfw_chk()
函数决定数据包的处理方式,依据返回值和规则链;PF使用枚举值(PF_PASS
和PF_DROP
)控制数据包是否通过防火墙,还有一套原因代码解释数据包的最终处理结果。
105、描述数据包在网络代码中可能经过的三条路径。每条路径是如何以及在何处被选择的?
数据包在网络代码中的三条路径
数据包在网络代码中有三条路径:入站、出站和转发。