|
发表于 2003-8-11 06:13:33
|
显示全部楼层
补充一下,其实这些内容在说tcp/ip的书里面有很详细的解说.
netmask与收到的封包内的地址信息进行与操作(更正楼上,不是"或"操作),运算结果不等于自己的网络地址就丢弃.
例如 192.168.1.123 AND 255.255.255.0 = 192.168.1.0 , 不是自己的网络地址192.168.0.0, 所以丢弃.
如果打开了forward功能的话(看/proc/sys/net/ipv4/ip_forward),会根据路由表作出相应传送操作,但如果连路由表也没有关于192.168.1.0的信息,结果还是丢弃.
整个tcp/ip协议组还算是"高层"的,所谓的ABC类地址都是人为划分的规矩. 操作系统中tcp/ip网络那部分软件不会反对你这样设置:机器的IP地址192.168.1.2, 网络地址192.168.0.0, netmask是255.255.0.0
看看这种情况,你有internet拨号连接,路由表会有类似这样的信息:
Network Address Netmask Gateway Address Interface Metric
0.0.0.0 0.0.0.0 81.12.34.56 ppp0 1
意思是"发往0.0.0.0/0网段的包都发往路由器81.12.34.56地址."
这时候ping 169.254.1.2(也是人为划分的内部网络地址),结果是"time out".
ping的封包会送到81.12.34.56, 作为一个国际网络的路由器,因为要遵守国际规矩,所以绝对不会有关于内部网网段的信息.
上面这个例子也说明路由信息是很重要的,假如你能操作那个81.12.34.56,人手加入169.254.0.0/16网段的路由信息,会把封包发到下一个路由器...下一个路由器不可能也被你控制吧?!!! |
|