Chinaunix首页 | 论坛 | 博客
  • 博客访问: 164592
  • 博文数量: 36
  • 博客积分: 1466
  • 博客等级: 上尉
  • 技术积分: 380
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-17 17:43
文章分类

全部博文(36)

分类: 网络与安全

2016-11-02 20:57:59

之前的案例很有趣。但为什么不同网段,不同掩码,只要在一台计算机上设置一条路由就能正常连网??

如果真的要说清楚,那就比较复杂。因为涉及到 解路由表的作用,掩码的作用,还有arp协议。

先来说说掩码的作用,网上的资料太多都这样说
是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码
这种说法肯定是没有错的。但是对于不是划分子网的网络维护人员来说,只在乎两台计算机怎么通信,
而不是去关心子网能有多少台机,是否合理等。所以网上的资料很多时候看完了更让人觉得一头雾水。
其实用一句话总结子网掩码的作用就是:
根据子网掩码,决定数据包是在局域网内走,还是交给网关发送到局域网外!

举个例子:
假设同一网段下,192.168.1.0/24,
主机A地址是192.168.1.2
主机B地址是192.168.1.3
主机C的地址是183.47.248.109
两台电脑路由表都是默认设置的情况下。
A要和B通信,A的ip地址和子网掩码进行位和运算,得出的是192.168.1.0。
现在它要和B通信,同样将B的ip地址和子网掩码进行位和运算,得出的是192.168.1.0。
因为两个结果相同,所以数据包就在局域网内走。
同理,B要和A通信时,也会执行一次这样的算法。

A要和C通信,A的ip地址和子网掩码进行位和运算,得出的是192.168.1.0。
将C的IP地址和A自己的子网掩码进行位和运算,得出的是183.47.248.0。
两个运算结果不相同,所以数据包就直接扔给网关,让它发送到局域网外。


那么在同一局域网内的两台计算机(两方的ip和各自的掩码进行和运算结果相等),是如何进行通信的呢?
现在再来说说arp吧,arp协议的作用简单来说就是mac到ip地址的互相转换。
假设两台电脑重启后arp表都是空的.
A要和B通信,A就在局域网内广播数据包<谁是192.168.1.3>,
B同样广播,这样A就知道B的mac,就能发送数据包给B了。
同样,
B要和A通信,那要广播一次数据包<谁是192.168.1.2>,
A同样要广播一次回复B,。
双方都建立起arp-ip的映射表后,就可以进行正常通信。



回来上一文章的例子,为什么加了一条路由后,两个同网段,不同掩码的主机就能通信 呢?
为了方便描述,假设
10.168.170.0/24  为A主机
10.168.173.0/16    为B主机
并且还没有在A主机上加上路由“route -p add 10.168.173.0 mask 255.255.255.0 10.168.170.5

当B主机要和A通信,A和B的IP与B的掩码运算得出的结果都是10.168.0.0,所以B主机认为A主机在同一个局域网内,
并且直接通过ARP协议获得对方的MAC地址后,就认为可以进行正常的通信。

而A要和B通信,A的IP和A掩码进行和运算,得出的是10.168.170.0。B的IP和A的掩码进行和运算得出的是10.168.173.0。
结果明显不同,所以它将要发出的数据包交给了网关,如果网关能和10.168.173.0这个网段通信,A和B还是能通信的!!
(这一点相当有趣!)

route -p add 10.168.173.0 mask 255.255.255.0 10.168.170.5这条路由的作用是:
当目的IP和掩码255.255.255.0进行和运算后结果是
10.168.173.0的话,将这些数据包直接走局域网,而不交给网关。 
这样两台电脑都认为对方在局域网内,这样就能进行通信。

阅读(1080) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~