标签:
一直以来都觉得网络是个神奇的东西,在使用的时候也很令人费解,你觉得的呢?
你是不是也有过这样的疑惑: 子网掩码干啥用的? 为什么好像怎么配置它都可以上网呢(当然现在看来有时是拼的运气)?
预备知识:
windows查看路由命令:
route print
路由主要分为:(详情参考: http://blog.csdn.net/ghostly78/article/details/480706 )
@默认路由(如果以后的路你不知该往哪走,请跟我一起走)
@直联网段的路由记录:当路由器收到发往直联网段的数据包时该如何处理,这种情况,路由记录的interface和gateway是同一个,或者是windows下的“ 在链路上”。
@本地环路:127.0.0.0这个网段内所有地址都指向自己机器,如果收到这样一个数据,应该发向哪里
@本地主机路由:当路由器收到发送给自己的数据包时将如何处理
@本地广播路由:当路由器收到发送给直联网段的本地广播时如何处理
@组播路由:当路由器收到一个组播数据包时该如何处理
@广播路由:当路由器收到一个绝对广播时该如何处理
正文讲解:
当我们给一个网卡配ip地址以后,系统会自动添加一条本网路由(当然还会添加主机路由,广播路由)。
比如,给网卡分配一个ip地址132.134.91.71/16,此时在cmd中输入route print,可以看到新增的路由的目标网络为132.134.0.0。说明132.134.开头的ip都在同一广播域。
2.再来看下一情景:
网络拓扑如下,图丑不要在意这些细节~
现在在pc1上ping pc2,整个情况如下:
@pc1首先查看是否有合适的路由,本机有一条目标网络为132.134.100的路由,但是和132.134.254不匹配,所以走默认路由(如果以后的路你不知该往哪走,就跟我走吧~)所以pc1就把数据包的目的mac设为网关132.134.100.254的mac。
@现在数据到达网关,网关一看目的ip为132.134.254.100,于是查看自身的路由表,如果有一条目标主机为132.134.254.100的主机路由,则会把该数据发往pc2;如果没有的话,网关会把该数据发送internel网络(如果是私有地址应该丢弃),该数据就再也无法到达pc2了,于是pc1上会显示主机不可达~
如果把pc1的子网掩码设置为16,情况会怎样呢?
@pc1还是先看路由表,找到一个目标网络为132.134.0.0的直联网段路由,说明两者在同一网络,于是就直接把数据传递给pc2了。
@数据到了pc2,pc2会给pc1发送响应结果。pc2先查看路由表,发现没有合适的路由(直联网段路由为132.134.254.0),于是把数据发给默认网关。
@现在数据到达网关,网关一看目的ip为132.134.100.100,于是查看自身的路由表,如果有一条目标主机为132.134.100.100的主机路由,则会把该数据发往pc1;如果没有的话,网关会把该数据发送internel网络(如果是私有地址应该丢弃),该数据就再也无法到达pc1了,所以ping的结果还是不通~
只有把pc1和pc2的子网都设置为16时,两者才能绕过网关直接通信,整个过程最核心的动作就是路由表的查询匹配!!!
先记那么多吧,希望可以抛砖引玉。这是一个神奇的东西----internel :)
思考:看了以上内容之后,会不会有这样的误解呢:子网掩码越小越好?
具体解释我还没想好,大家帮忙解答吧,哈哈
标签:
原文地址:http://my.oschina.net/uindows/blog/491804