contents
下一主题: 域名系统 上一级: TCP/IP 网络问题 前一主题: 度量值

互联网控制消息协议

IP 协议有一个我们尚未讨论的配套协议。这就是互联网控制消息协议 (ICMP),它被内核网络代码用来与其他主机通信错误消息等。例如,假设您再次位于 erdos 上,并想 telnet 到 quark 上的端口 12345,但该端口上没有进程在监听。当针对此端口的第一个 TCP 数据包到达 quark 时,网络层将识别到这一点,并立即向 erdos 返回一条 ICMP 消息,声明“端口不可达”。

ICMP 理解相当多的消息,其中许多消息处理错误情况。但是,有一种非常有趣的消息称为重定向消息(Redirect message)。当路由模块检测到另一个主机将其用作网关,但实际上存在更短的路由时,就会生成此消息。例如,启动后,sophus 的路由表可能不完整,仅包含到数学网络、FDDI 主干网以及指向 Groucho 计算中心网关 (gcc1) 的默认路由的路由。因此,任何发往 quark 的数据包都将发送到 gcc1,而不是物理系网关 niels。当收到这样的数据报时,gcc1 会注意到这是一个糟糕的路由选择,并将数据包转发到 niels,同时向 sophus 返回一条 ICMP 重定向消息,告知它更优的路由。

现在,这似乎是一种非常聪明的方法,可以避免手动设置除最基本路由之外的任何路由。但是请注意,依赖动态路由方案(无论是 RIP 还是 ICMP 重定向消息)并不总是一个好主意。ICMP 重定向和 RIP 在验证某些路由信息是否真实方面几乎没有或根本没有给您选择。这使得恶意的不法之徒能够扰乱您的整个网络流量,甚至做更糟糕的事情。因此,某些版本的网络代码将影响网络路由的重定向消息视为仅针对主机路由的重定向消息。


contents
下一主题: 域名系统 上一级: TCP/IP 网络问题 前一主题: 度量值

Andrew Anderson
1996年3月7日星期四 23:22:06 EST