设为首页收藏本站language 语言切换
查看: 29079|回复: 312
收起左侧

[分享] (新观点)《检查你是否高手》的总结,相同网络与不同网络间的通讯解释!

  [复制链接]
发表于 2012-1-19 09:55:41 | 显示全部楼层 |阅读模式
本帖最后由 狐海剑 于 2012-5-28 15:37 编辑

关于《检查你是否高手》帖子中讲述到的网络间通讯问题我再详细解释一下,希望帮到各位!
主机间的通讯分为,相同网段间的通讯和不同网段间的通讯。如何识别?首先有A和B两台主机。A主机:192.168.1.1  255.0.0.0    B主机:192.168.2.1 255.255.0.0 。
相同网段间通讯指:
1、本机IP地址与本机子网掩码进行与运算,得出网络号。
2、目标IP地址与本机子网掩码进行与运算得出网络号。
3、观察两个网络号是否相同。
4、对方主机同样进行1~3的计算
5、若双方都认为属于相同网段,则双方能通讯。
例如:192.168.1.1与255.0.0.0  得出网络号:192.0.0.0 ;192.168.2.1与255.0.0.0得出192.0.0.0;对于A主机来说,两个主机是相同网络间的通讯。

再来观察:B主机与自己的子网掩码与运算:192.168.2.1与255.255.0.0得出192.168.0.0;A主机的IP与B主机的子网掩码:192.168.1.1与255.255.0.0得出网络192.168.0.0;所以对于B主机来说两个主机也是属于相同网络间的通讯。

留意观察:A主机认为它们的网络是192.0.0.0,而B主机则认为它们的网络是192.168.0.0  这都算相同网络?没错,机器的思维就是这样。因为ARP数据报没有携带子网掩码的信息,只有源目IP地址。所以机器只能以对方的IP来和自己的子网掩码来与运算得出是否相同网络间通讯。
又因为通讯是双向的,所以两台主机都必须“各自”认为它们属于相同网段,那么数据才能往返。倘若把B主机的子网掩码改为255.255.255.0;那么B主机就认为自己的网段是192.168.2.0 而A主机的网段是192.168.1.0  ;那么B主机就认为两主机不属于相同网段。这种情况下就必须配置路由器或者网关了。

注意:之前帖子出现的问题在这里进行解释!!!!(本人水平有限,之前分析不到位,请见谅,在此感谢huqiliu发现了问题)

两主机互联的情况大致可以分为3种(之前我只说到了“相同网段”和“不同网段”);
仔细分析下有以下三种:
1、两边主机都认为相同网段间通讯
2、两边主机都认为不同网段间通讯
3、一边主机认为相同网段间通讯,而另一边认为不同网段间通讯。(新增加)

对于情况1:两台主机可以通讯是没有问题的了。

对于情况2:两台主机之间就必须要有路由器,路由器有两种用法,一是进行通常情况的网关作用,二是路由器配置成代理ARP服务器。

对于情况3:认为不同网段间通讯的主机必须设置对方的IP地址为网关,并且只有认为不同网段间通讯的一方PING另一边才能PING通!这是什么意思呢?例如A主机:192.168.1.1  255.0.0.0    B主机:192.168.2.1 255.255.255.0 。这时候A主机认为双方网络都是192.0.0.0网,B主机认为A是192.168.1.0网,B是192.168.2.0网。那么此时B就必须设置网关为192.168.1.1  然后B去PING A就能PING通。如果A先去PING B就PING不通。(PING前请先用 arp -d命令清楚ARP缓存,之前我就是忽略了这一步)。
(1)为什么A先PING B会不通呢?
ApingB B丢弃.png
如上图,B在收到A发送的ARP请求报文后,对ARP请求报文进行丢弃处理。丢弃处理也意味着B不会回应A的ARP请求。所以A和B的ARP缓存都不会有对方的MAC地址。所以通讯无法进行。B为什么进行丢弃处理呢,对于此说法网上也是争论不休,比较符合现实的解释是因为当B收到A的ARP请求报文时候,会对两台主机A和B是否属于同一网段进行判断。如果两台主机不是同一网段,则ARP报文会被丢弃。
(2)为什么B先PING A就能通呢?
PCA上的PDU信息.png ARP报文来自B主机.png
分析过程:B PING A,首先会检查A和B是否属于同一个网段,检查发现不属于同一个网段。B主机检查是否有设置网关,发现已经设置网关。B检查ARP缓存,查看是否有网关的MAC地址,结果发现没有。B向网关发送ARP请求报文,这里网关其实就是主机A。当A收到B发送来的ARP报文(上图中输入层部分的信息),检查自己和B是否属于同一个网段,结果发现网段相同,则ARP报文被顺利接收。A从ARP报文中提取B的MAC地址,并放入ARP缓存中,然后A对B发送过来的ARP报文进行应答(上图中输出层部分的信息)。B收到A发送回来的ARP应答报文,抽取A的MAC地址信息并存入自己ARP缓存之中。则现在双方都有对方的MAC地址了。自然能PING通了。
(3)为什么B PING完A,A再回来PING B就能通呢?
相信聪明的你已经发现了,当B PING A的时候,A、B双方就已经拥有对方的MAC地址了。自然能PING通了。
如果要重新进行实验,就如上文提到的,两台主机都使用ARP -d来清理ARP缓存。


原理:IP选路时,优先匹配主机IP地址,然后匹配网络号地址,最后才用默认路由转发。


此处转帖,表述更清晰 两主机互通信的原贴   http://blog.csdn.net/lichengiggs/article/details/669444


  

最后最后,大家要用机器的角度来思考问题。机器获取信息只能依靠数据,例如主机不能获取到对方的子网掩码,所以对于主机来说,它并不能获取到192.168.0.0和192.0.0.0属于不同网络间通讯,而只能以自己的掩码来计算网络号。
哈哈,这个问题其实很有趣,大家若有问题,欢迎讨论,互相指教!!!!


该贴已经同步到 狐海剑的微博




点评

经典: 5.0 牛X: 5.0
期待: 5.0
不错 以前还真没有注意到 学习了  发表于 2012-4-10 09:43
不错 以前还真没有注意到 学习了  发表于 2012-4-10 09:43
经典: 5 牛X: 5 期待: 5
  发表于 2012-4-8 12:33

评分

参与人数 10鸿鹄币 +57 收起 理由
Juispan + 1 很给力!
虎Tiger虎 + 1 真的学习到了!
糨糊 + 10 哎呦 不错哦 都没发现
bl2000b + 5 很给力!
zc123zc123 + 5 很给力!
chuleizhou + 5 赞一个!
linjun21978 + 5 赞一个!
yao + 5 赞一个!
琴魂醉 + 10 赞一个!
sotwoyouare + 10 很给力!

查看全部评分

发表于 2012-1-19 10:52:24 | 显示全部楼层
沙发 2012-1-19 10:52:24 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2012-1-19 10:52:55 | 显示全部楼层
只能说A的子网要包括了B的子网
板凳 2012-1-19 10:52:55 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2012-1-19 11:02:26 | 显示全部楼层
地板 2012-1-19 11:02:26 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2012-1-19 11:07:10 | 显示全部楼层
写的很好,
5# 2012-1-19 11:07:10 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2012-1-19 11:25:59 | 显示全部楼层
B主机掩码为255.255.255.0的时候,不通。
6# 2012-1-19 11:25:59 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2012-1-19 11:26:19 | 显示全部楼层
本帖最后由 Loveju 于 2012-1-19 11:41 编辑

行了。
7# 2012-1-19 11:26:19 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-1-19 11:39:51 | 显示全部楼层
Loveju 发表于 2012-1-19 11:26
配了网关也不行。

配对方的IP地址为网关是可以的。你再检查清楚配置吧。
8# 2012-1-19 11:39:51 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-1-19 12:46:33 | 显示全部楼层
9# 2012-1-19 12:46:33 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-1-19 16:13:22 | 显示全部楼层
10# 2012-1-19 16:13:22 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2012-1-19 22:13:18 | 显示全部楼层
B主机掩码为255.255.255.0是不通的,楼主试下ping之前把A主机的arp表清一下,我试过是通不了的
11# 2012-1-19 22:13:18 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2012-1-20 11:21:03 | 显示全部楼层
12# 2012-1-20 11:21:03 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2012-1-20 21:18:25 | 显示全部楼层
今天拿真机实验了一下,发下可以通,看来是模拟器的问题!
13# 2012-1-20 21:18:25 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-1-20 21:37:50 | 显示全部楼层
huqiliu 发表于 2012-1-20 21:18
今天拿真机实验了一下,发下可以通,看来是模拟器的问题!

我也觉得是模拟器问题啊,因为我按协议一层一层分析都分析不出来为什么不通
14# 2012-1-20 21:37:50 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2012-1-22 17:27:09 | 显示全部楼层
准备趁着过年时间充裕备考
15# 2012-1-22 17:27:09 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-2-24 19:04 , Processed in 0.070346 second(s), 24 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表