[转]为什么连接同一台交换机的不同网段的PC无法进行通信?
[转]为什么连接同⼀台交换机的不同⽹段的PC⽆法进⾏通信?
问题:两台不同⽹段的PC连到⼀台cisco2950(⽆三层设备),为什么不同⽹段的PC⽆法进⾏通信?PC不是要⼴播吗他们连到同⼀台交换机,另⼀台PC应该收到了ARP⼴播啊?
掌握cmd下的两个命令arp和route你就会明⽩,下⾯解释⼀下:
⾸先,第⼀题中明确告诉你⽆三层设备,也就是说你连的⽹络中不会有⽹关的存在,即使你的PC设了⼀个⽹关,但是这个⽹关也是⽆效的,同意这点吗?画个图来说:PC1--交换机--PC2。PC1假设为192.168.1.1,PC2为192.168.2.1,掩码默认。那么你在发PING请求时,应该先了解下发出的过程。
PC中有个ARP表,要知道PC上的数据到⼆层进⾏封装后是要加上⽬的MAC的(具体请看TCP/IP协议,封装过程中加的各种报⽂头),然后根据⽬的 MAC地址转发的,也就是说你的数据要想从⽹卡出去,就必须知道对⽅的MAC地址,同样⾃⼰的PC也有个MAC地址,MAC地址和IP地址⼀样,都是唯⼀的标识你⾝份的东西(IP私⽹地址例外,但在某个私⽹中它的地址也是唯⼀的,如果故意设成多台PC的IP地址⼀样,那会提⽰你有IP冲突,当然这时候也会有新的问题,⽐如问你:此时是否所有的配成相同IP地址的主机都可以正常收发数据)。
讲了点题外话,但也可以思考下:),接着回来看这个问题,那么怎么知道对⽅的MAC?答案是ARP⼴
播。⾸先PC1不知道PC2的MAC 地址,那么肯定会发ARP⼴播,假设PC1设了⽹关192.168.3.1。在CMD下⽤ARP -a命令查看本机ARP表,应该是什么都没有(如果之前PC是清空了ARP表开始做这个实验)。ARP表项格式如下:
Internet Address      Physical Address      Type
192.168.216.100      00-05-45-30-1f-58    dynamic
不难看出,这个表明确指出了IP地址及与其对应的MAC地址。⽐如现在是PING 192.168.216.100的话,那么查ARP表项时就知道了其MAC地址为00-0e-45-30-1f-58。那么接下来就可以通过查看主机路由表把ICMP报⽂从哪个接⼝(这⾥为PC设置的IP地址所在⽹卡)转发出了。
在PING时,⾸先要知道对⽅MAC,必然会来查ARP表,如果有对⽅的MAC地址,就会在封装报⽂时在⽬的MAC中加上从ARP表中知道的这个 MAC。如果不知道就会发ARP⼴播,好,这个实验关键的问题在这⾥。发ARP⼴播时,也要知道是从哪个接⼝(PC上就是⽹卡了)出去,那么这时必须知道主机路由表的情况了,主机路由表可以在CMD下⽤route print命令显⽰出来,类似于下:
电脑反应慢怎么办
===========================================================================
数字的含义Active Routes:
健忘村 电影
Network Destination        Netmask          Gateway      Interface  Metric活力城
0.0.0.0          0.0.0.0      192.168.3.1    192.168.1.1      30
127.0.0.0        255.0.0.0        127.0.0.1      127.0.0.1      1
192.168.1.0    255.255.255.0      192.168.1.1    192.168.1.1      30
192.168.1.1  255.255.255.255        127.0.0.1      127.0.0.1      30
192.168.1.255  255.255.255.255      192.168.1.1    192.168.1.1      30粉条的做法
224.0.0.0        240.0.0.0      192.168.1.1    192.168.1.1      30
255.255.255.255  255.255.255.255      192.168.1.1    192.168.1.1      1
Default Gateway:      192.168.3.1
===========================================================================
会计发展前景Persistent Routes:
None
这是PC1的主机路由表,默认⽹关为192.168.3.1,路由表中的第⼀项全0的表⽰默认路由,即只要PC发出的数据包在路由表中不到匹配的全部都从这个默认路由所在接⼝转发到默认⽹关。可以看到在这条默认路由的interface中明确指出是192.168.1.1,即192.168.1.1所在⽹卡转发到默认⽹关。那么要转发到默认⽹关,我就得知道默认⽹关的MAC地址,所以这时候⼜去查ARP表,⼀看没有⽹关的MAC,所以发ARP⼴播(从⽹卡发出去),结果可想⽽知,这个⽹关不存在,肯定得不到⽹关对应的MAC地址。⽹关都不存在,那么数据转发给谁也就不知道了,所以所有的数据都在本地终结,不向外发送。⾃然ICMP包是不会被发送的。
  从上⾯可以看出,其实数据在发送时,应该是先查路由表的,为了更好地理解,把ARP放在了前头,其实数据发送⼀到IP这层就开始看路由表,出指定的转发接⼝。最后到⼆层成帧后要知道MAC地址,就要去查ARP表了。这个实验就是先看路由表,因为不同⽹段所以是从遵循默认路由,转发到默认⽹关。但是要转发到⽹关,也必须知道⽹关MAC地址,但此实验中⽹关显然是不存在,那MAC地址也不可能知道,所以ARP⼴播数据(查PC2的MAC时发的ARP⼴播)根本没处转发,此情况下数据在本地终结不对外发送了。也就是说这个ARP⼴播根本没从你⽹卡这个门中⾛出去。
  但是有⼀个ARP⼴播是出去的,就是查⽹关的MAC时这个⼴播,即192.168.3.1这个IP所对应的MAC。只要你⼀直在PING,那么这个ARP⼴播就会⼀直从⽹卡中发送出去。
  如果有条件可以试⼀下,两台PC连⼀台⼆层交换机,然后⽤个抓包⼯具抓取ARP包,我是⽤Ethereal,⾮常不错的软件。你可以发现是只有查⽹关MAC的ARP⼴播包(即ARP请求包)从你⽹卡出去,其它的ARP包都没有从这个⽹卡进出。
  上⾯这个实验可以把默认⽹关去掉,再PING时是另⼀种结果,这个结果提⽰是⽬的主机不可达,如下:
C:\Documents and Settings\Administrator>ping 192.168.2.1 -t
Pinging 192.168.2.1 with 32 bytes of data:
Destination host unreachable.
Destination host unreachable.
为什么不是原来的Request timed out,因为这时查路由表时已经没有默认路由这项了,即路由表中不存在此数据转发的任何符合的条件存在,所以什么都不⽤⼲,直接说明要的⽬的主机我没法,我肯定是到达不了这台主机的,给出了⽬的主机不可达的提⽰。⽽设置了⽹关就不⼀样,⾄少机器知道是有个出⼝的,即知道东西是可以从我这⾥出去的,⾄少有那么条路存在。假设现在⽹关存在了,⽐如换了个三层
交换机,配上了实验中的⽹关地址。这时候ARP⼴播包肯定是可以出去的。
最后,综合上⾯所说的,按步骤来说这个ICMP报⽂下来后,查路由表,查出是从默认⽹关出去,那么得先知道⽹关MAC,所以发查⽹关对应MAC的ARP⼴播,因为得不到这个MAC,所以数据⼀直就是转发不出。这个问题其实到查⽹关MAC这⾥就已经基本打住了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。