高压水泥注浆泵:不同子网通信

来源:百度文库 编辑:中财网 时间:2024/05/05 17:49:15

下面奔今天的主题首先介绍一下,网关的作用,因为实现中要借助网关。
路由器是三层的设备,主要协议为IP。三层设备主要负责寻址,通过查看自已通过各种动态路由协议或静态指定的路由表,来确定数据包的传送方向,路由器就像是站在十字路口的一个交警,如果有司机(数据包)不知道目的地就问这个交警,这个交警从大脑的数据库中检索到,这个司机要去的目的地,然后再确定到达目的应走哪个路口。而计算机中有与OSI七层相对应的模块,当应用层发出网络请求后经由表示层、会话层、传输层(具体功能不在本文范围,请参看其它资料),要送到网络层加封网络层信息即IP地址,同时也要进行寻址(路由)。但大部分的计算机是不支持路由协议的,既使和路由器相连也不会学习到任何路由信息。这就要行手工指定了。这就是网关的作用,设上网关就相当于在电脑中加入了一条这样的路由条目(在命今提示符下输入 route print 查看,特别注意,没有网关是没有这个条目的)。这里假定为网关为192.168.1.1 网卡IP为:192.168.1.123):
Network Destination        Netmask          Gateway         Interface       Metric
      0.0.0.0               0.0.0.0        192.168.1.1      192.168.1.123      20

这是一条默认路由,意思是当在route print看到这张表上找不到去网目的地的路由条目时,将数据包发往网关192.168.1.1,interface为到达网关的本地接口,这里是192.168.1.123所在接口的链路上。(有这张表的前题是:你的网卡必须是处在UP状态,既线缆接好的状态下才能看到)。除上边那个条目外应该还有很多条目,还必须说的一个条目是你的直连路由条目,或说你的网卡IP地址所在子网的路由(这条路由是系统自动生成的):
Network Destination        Netmask          Gateway         Interface       Metric
    192.168.0.0         255.255.255.0    192.168.1.123    192.168.1.123     20
意思是 到达你网卡IP所在子网 192.168.0.0/24(这里没划子网,就是主网号了)的数据包,都将会发到你的本地接口上 既192.168.1.123所在接口连接的链路上(Gateway和Interface为什么一样,没有一个很好的解释我这样认为:interface永远都是本机上的某一接口,而gateway可能是本机上的某接口,也可能是到达目标网络的下一跳地址,根据具体的情况而定。当Gateway是本机接口的IP说明此路由只有一跳,无须中间路由)。

当PCA要给PCB发送数据时,首先应用程序产生数据,经由上层协议送到网络层,网络层要完成他的使命,首先封装源IP地址192.168.1.111,再封装上目的IP地址192.168.1.222,下一部就要进行路由了,这时就用到了计算机中的那张路由表。查表结果:去往192.168.0.0/24 (直连路由,同网段的)应发到192.168.1.123接口上。之后,还要引入一个新概念,就是arp表,就是由arp协议(address resolution protocol)产生的表。Arp是网络层的协议,直接封装在EthernetⅡ类型的以太网帧里的。作用是请求 某IP地址所对应的以太网MAC地址。然后型成一张表,以便缓存此地址,下次直接再用。在这个例子中已经确定,此数据包是发给PCB的,检查目的和源IP地址,是在同一网段的,这时arp启动,发送request包(把arp包中的opcode位置0X0001),包里的部分内容为
Sender MAC address 00:00:00:00:00:01 Sender IP address 192.168.1.111
Target MAC address 00:00:00:00:00:00 Target IP address 192.168.1.222
意思是:谁的IP是192.168.1.222,请把你的MAC地址告诉192.168.1.111
然后PCB 发reply包(opcode位置0X0002)给源主机,部发内容如下:
Sender MAC address 00:00:00:00:00:02 Sender IP address 192.168.1.222
Target MAC address 00:00:00:00:00:01 Target IP address 192.168.1.111
意思是 我PCB 192.168.1.222 的mac地址是00:00:00:00:00:02
这样源主机就知道了目的主机的MAC地址,数据包封装的二层MAC目的地址为00:00:00:00:00:02
然后发到链路上,数据包就会顺利到达,与此同时对方会学到PCA的mac(通信是双向的吗),双方互相知道对方的MAC。
还以上面图为例,现在假定PCB的IP为192.168.0.222 (不在同一网段)看看如何通信,实践告诉我们IP不在同一网段的计算机之间是不能通过二层交换机进行通信的,那么是为什么呢,有了上面的基础就不难分析出来。PCA要发往PCB的数据包在进行路由时,检查发目的IP没有和自已网卡IP在同一网段,也就不会有去往192.168.0.222/24的路由条目,这时就有两种情况了,1、有网关,有网关就有默认路由,此时又有两种情况如果网关IP和本地主机在同一网段arp协议就会请求网关的IP所对应的mac,如果不在同一网段,arp协议不会启动这是协议规定。(正好符合这个例子)2、没有网关,自然没有默认路由。这样数据包就没有去处,丢弃数据包。至此原因找以了,不能通信的原因在于,没有路由条目,无法获知对方的mac地址。怎么解决一下呢,只要在本地主机有条路由能指向目的主机,且有目的主机的mac地址,当然通信是双向的目的主机也要有到源主机的路由和MAC的,这样就能实现通信了,
下面看看实现方法如下图:

在pcA上用arp -s 192.168.0.222 00-00-00-00-00-02 来加入一条静态的IP to mac 映射表。网关设上192.168.0.222。其实加入网关就是在电脑上加入一条默认路由
(也可以用route add 192.168.0.0 mask 255.255.255.0 192.168.111加上一条路由)即
Network    Destination       Netmask Gateway       Interface         Metric
0.0.0.0       0.0.0.0          192.168.0.222       192.168.1.111        1
Pc2 上用arp -s 192.168.1.111 00-00-00-00-00-01 加入一条静太的映射。
网关为192.168.1.111。默认路由为
Network     Destination       Netmask Gateway         Interface       Metric
0.0.0.0       0.0.0.0          192.168.1.111       192.168.0.222        1
此前的数据通信过程就成了这样
PcA用层发出向pc2的通信,数据经由表示层、会话层、传输层后,要送到网络层加封网络层信息即IP地址,源IP和目的IP不在同一网段(为没有直连路由),用默认路由进行发送,默认路由网关为192.168.0.222,查arp表有192.168.0.222所对应的mac地址(静态指定的)这样数据包就会被PCB接收,PCB也执行同样的过程,这样双方就能通信了。好的大功告成了。
总结
这篇文章技术含量不高,但对通信细节要有明确了解,且还要有清晰的思路来让读者看懂。为了适应大多数人,所以写的比较啰唆,仅适用于初学者。在实现过程中,最后解释的不清析,或说不够准确,还要写一篇文章来解释一下。请关注。(此文有什么不足之处请留言指出)