两种连网方式数据封装的区别<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
方式一:
两台PC,直接连接,配置不同网段的IP地址,并且默认网关都配置为自己的IP地址,ping对方,能ping通.
方式二:
还是两台PC,通过交换机连接,配置如方式一,ping 对方,也能ping通.
这两种连网方式,从数据封装的角度看,是否有什么不同?
假设两台PC分别为PC-A和PC-B,PC-A的IP地址为192.168.1.1/24,默认网关192.168.1.1,PC-B的IP地址为172.16.1.1/16,默认网关172.168.1.1
对于方式一:
PC直连,知道对方的IP地址,因此能够完成网络层对于源IP和目的IP地址的封装,在数据链路层,不知道目的MAC地址,首先会查看其ARP缓存有没有目的主机的MAC地址,因为ARP缓存是空的,此时会发送目的MAC地址是FF-FF-FF-FF-FF-FF的ARP广播,请求(假设是PC-B)的MAC地址.
这其中有一个问题,因为是不同网段,因此这个ARP请求会被默认网关应答,并以网关的MAC地址回应,而网关刚好是自己,这时数据包该如何被封装?如果说目的MAC地址封装为自己的MAC地址的话,数据包也就不会被发送出去,但是既然能ping通,说明知道了PC-B的MAC地址并在数据链路层上成功的完成了封装.这是为什么?
我的猜测是因为两台PC是物理直连,虽然说不是同一个网段的IP地址,但仍在同一个广播域内,ARP广播能够被PC-B接收,因此PC-B缓存PC-A的MAC地址,并回应PC-A,我(PC-B)的MAC地址是多少.。
第二个问题,在PC-B回应PC-A的过程中,采用的是单播发送,虽然数据包可以完成封装,但同样因为不是一个网段,PC-B会找网关,而网关也是自己,这时该怎么办?同样,从ping通可以看出,PC-B的回应,PC-A是接收到了,可是PC-B是如何发出这个回应的呢?
我想既然PC-B能够完成数据的封装,就能够将数据发送出去,因为直连的缘故,可以说是点到点的连接,也就只有PC-A能够接收此数据包,而目的地址又正是PC-A ,因此PC-A能够完成封装的过程,至此PC-A的ARP请求完成。
至于后面的ping ,同理,我想和PC-B到PC-A的回应是一样的。
试想一下,如果还是这种连接方式,在不配置网关的情况下,相互ping对方,则又会怎样?
不用说大家都知道了,是目的主机不可达(Destination host unreachable)。但是为什么会这样呢?我们可以猜测一下:
在网络层封装IP地址的时候,PC-A就知道这是另一个网段的地址,这之后有个问题,源主机即PC-A还会继续封装还是会找网关,也就是去另一个网段的路由?如果说是继续封装,在封装目的MAC地址的时候,会发送ARP广播,这样就和上面的情况一样了,数据包就能够发送出去。我们假设是去找网关,想想路由器的路由选择过程,没有网关的情况下,会丢弃数据包,并返回一个目的主机不可达的信息。那么也就是说,是因为没有网关的原因,导致了这次ping 的失败。同时也可以得出一个信息,数据包没有完成封装,而只是封装到网络层。
现在我们来推测一下另一种配置方式,即在主机上配置了网关的IP地址,但根本就没有网关的情况。还是以PC-A和PC-B为例,将PC-A的网关IP配置为192.168.1.2 ,PC-B的网关配置为172.16.1.2 ,两台PC还是采用直连的方式。
我想结果应该是请求超时(request time out)
另外还有把对方的IP地址作为自己网关的情况,即PC-A的网关是172.16.1.1 ,结果是可以ping 通。大家可以试一试。
现在来看看两台PC通过交换机连接的方式
假设两台PC分别为PC-A和PC-B,PC-A的IP地址为192.168.1.1/24,默认网关192.168.1.1,PC-B的IP地址为172.16.1.1/16,默认网关172.16.1.1
还是从网络层说起,PC-A在网络层的封装没有问题,在数据链路层封装目的MAC时,也会发送ARP广播,只不过这次通过交换机连接,交换机在接收到广播后,会缓存PC-A的MAC地址,并转发广播到其他端口,PC-B会收到并做出回应,也就是说PC-A和PC-B可以通讯。
上面另外几种配置方式,在这种连接方式下,情况是一样的。
通过上面的实验,可以看出,每一层的功能是伴随在数据的封装和解封装的过程中,同时对于这两种连接方式结果的一致,可以看出交换机对端与端连接是透明的,不会产生任何影响。
转载于:https://blog.51cto.com/scorpion/137612