选路是 IP 层最重要的一个功能之一。前面的部分已经简单的讲过路由器是通过何种规则来根据 IP 数据包的 IP 地址来选择路由。 这里就不重复了。
首先来看看一个简单的系统路由表:
对于一个给定的路由器,可以打印出五种不同的 flag:
U 表明该路由可用。
G 表明该路由是到一个网关。如果没有这个标志,说明和 Destination 是直连的,而相应的 Gateway 应该直接给出 Destination
的地址。
H 表明该路由是到一个主机,如果没有该标志,说明 Destination 是一个网络,换句话说 Destination 就应该写成一个网络号和
子网号的组合,而不包括主机号(主机号码处为0),例如 192.168.11.0
D 表明该路由是为重定向报文创建的
M 该路由已经被重定向报文修改
U 没啥可说的,G 说明这是一个网关,如果你要发数据给 Destination,IP 头应该写 Destination 的 IP 地址,而数据链路层的 MAC地址就应该是 GateWay 的 Mac 地址了;反之,如果没有 G 标志,那么数据链路层和 IP 层的地址应该是对应的。H 说明了 Destination 的 性质,如果是 H 的,则说明该地址是一个完整的地址,既有网络号又有主机号,那么再匹配的时候就既要匹配网络号,又要匹配主 机号;反 之,Destination 就代表一个网络,在匹配的时候只要匹配一下网络号就可以了。