写给非网工的CCNA教程(8)跨LAN的通信

    前文中,我们提到的通信都是两台设备在同一个网段的情况。只要两台设备连接在一个LAN,即同一个二层交换机或者同一组级联的二层交换机上。那这些不同LAN之间的设备要怎么通信呢?

 

1 LAN与网段之间的关系

    网段是针对IP地址而言,属于OSI七层模型中的第三层,而LAN位于OSI模型中的第二层。他们的关系是一一对应的,怎么理解呢?

    如果两台设备连接的LAN不一样,往往他们的IP地址也属于不同的网段。如果两台设备的IP地址属于不同网段,往往他们连接的LAN也不一样。

    当然了,如果我们强制把两台设备配置成同网段的IP,但接入不同的LAN,是可以生效,但是两者不会互通。如果我们强制把两台设备接入同样的LAN,IP地址配成不同的网段,是可以生效的,但两者也不会互通。

 

2 如何实现跨LAN的通信

     如上图所示,我们使用路由器和三层交换机来实现跨LAN的通信。各个设备的IP地址、MAC地址、Gateway地址、对端设备接口、对端设备接口IP和MAC地址如下表所示。     

    仔细观察,可以发现设备的Gateway地址,都是同LAN下的路由器或者三层交换机接口地址,并且设备的Gateway一定是与自己在同一网段。

设备IP地址MAC地址GW地址对端设备接口

对端设备接口IP

对端设备接口MAC

PC-A192.168.10.1 /241111.1111.1111192.168.10.254RT-A: Gi0/1192.168.10.254aaaa.aaaa.aaaa
PC-B192.168.20.2 /242222.2222.2222192.168.20.254RT-A: Gi0/2192.168.20.254bbbb.bbbb.bbbb
PC-C192.168.30.3 /243333.3333.3333192.168.30.254SW: Gi0/1192.168.30.254cccc.cccc.cccc
PC-D192.168.40.4 /244444.4444.4444192.168.40.254

SW: Gi0/2

192.168.40.254dddd.dddd.dddd

 

2.1 同网段下通信与跨网段通信对比

    我们回想下,在同网段下的设备如何通信?发送方根据目标设备的IP地址查找自己路由表,发现到目标设备的Gateway为On-link,说明两者在同一网段。然后接着查找ARP表,寻找目标设备IP地址对应的MAC地址,没找到就广播,最后以目标设备MAC地址作为报文的目的MAC地址,目标设备IP地址为IP地址,把数据直接发送过去。

    那如果跨网段呢? 其实跨网段也好、同网段也罢,都不会影响到终端设备的工作机制。发送方依然是先查路由表、再查ARP表,最后封装数据发送出去。不过不同的是。在同网段的情况下, 查找路由表的结果是到目标设备的Gateway为On-link,而在不同网段的情况下,到目标设备的Gateway通常是与自己在同LAN的路由器或者三层交换机的接口地址。当然了Gateway地址与终端设备IP地址得在同一网段。否则Gateway都与自己跨网段。

    因此可以看出。终端要跨网段通信的前提是。终端设备的Gateway与自己是同网段。即同网段通信是跨网段通信的前提。

 

2.2 路由器实现跨LAN的通信

    上左图的是用路由器实现跨LAN的通信拓扑,路由器RT-A通过Gi0/1和Gi0/2口分别连到两个不同的傻瓜交换机(LAN)上,其他条件如下:

(1)PC-A的IP地址为【192.168.10.1 /24】,网关为同一个LAN上的RT-A的Gi0/1口的IP地址【192.168.10.254】,两者IP地址都属于同一网段【192.168.10.0 /24】。

(2)PC-B的IP地址为【192.168.20.2 /24】,网关为同一个LAN上的RT-A的Gi0/2口的IP地址【192.168.20.254】,两者IP地址都属于同一网段【192.168.20.0 /24】。

(3)RT-A的Gi0/1口IP地址为【192.168.10.254 /24】,作为PC-A的Gateway;Gi0/2口IP地址为【192.168.20.254 /24】,作为PC-B的Gateway。

    在路由器上给接口配置IP地址,命令如下(以思科路由器为例):

RT-A#show running-config interface gigabitEthernet 0/1
Building configuration...
 
Current configuration : 71 bytes
!
interface GigabitEthernet0/1
 ip address 192.168.10.254 255.255.255.0



RT-A#show running-config interface gigabitEthernet 0/2
Building configuration...
 
Current configuration : 71 bytes
!
interface GigabitEthernet0/2
 ip address 192.168.20.254 255.255.255.0

    可以发现,IP地址是直接配置在路由器的物理接口上,不过有时候我们也会把IP地址配置在虚拟子接口下(虚拟子接口是建立在物理接口上),后面文章我们再讲。

 

2.3 三层交换机实现跨LAN的通信

  上右图的是三层交换机实现跨LAN的通信拓扑,路由器SW-A通过Gi0/1和Gi0/2口分别连到两个不同的傻瓜交换机(LAN)上,其他条件如下:

(1)PC-A的IP地址为【192.168.30.3 /24】,网关为同一个LAN上的SW-A的Gi0/1口的IP地址【192.168.30.254】,两者IP地址都属于同一网段【192.168.30.0 /24】。

(2)PC-B的IP地址为【192.168.40.2 /24】,网关为同一个LAN上的SW-A的Gi0/2口的IP地址【192.168.40.254】,两者IP地址都属于同一网段【192.168.40.0 /24】。

(3)SW-A的Gi0/1口IP地址为【192.168.30.254 /24】,作为PC-A的Gateway;Gi0/2口IP地址为【192.168.40.254 /24】,作为PC-B的Gateway。

    在三层交换机上给接口配置IP地址,命令如下(以思科三层交换机为例):

SW-A#show running-config interface gigabitEthernet 0/1
Building configuration...
 
Current configuration : 81 bytes
!
interface GigabitEthernet0/1
 no switchport
 ip address 192.168.30.254 255.255.255.0



SW-A#show running-config interface gigabitEthernet 0/2
Building configuration...
 
Current configuration : 81 bytes
!
interface GigabitEthernet0/2
 no switchport
 ip address 192.168.40.254 255.255.255.0

    可以发现,三层交换机的接口配置相比路由器多了一条命令【no switchport】,目的是改变交换机的接口工作模式为路由模式(路由模式下,才可以配置IP地址),默认为交换模式(交换模式下,可以配置access vlan或者trunk vlan),路由器的接口只能工作在路由模式。

    不过一般三层交换机的接口都会采用默认的交换模式,这里只是举例说原理。至于IP地址一般是配置在interface vlan下面,后面文章会讲。

 

3 通信流程分析(PC-A到PC-B,PC-C到PC-D同理)

    其实三层交换机和路由器处理机制一样的,只是接口配置略有不同,本文就以路由器处理为例。

(1) PC-A ---> RT-A

    当我们在PC-A上配置了gw以后, 路由表会新增一条,如下所示: 最后一行就是我们配置gw以后, 新增的路由表项.

PC-A >route print -4

Network Destination   Netmask              Gateway           Interface      Metric
192.168.10.0          255.255.255.0        On-link           192.168.10.1   291
192.168.10.1          255.255.255.255      On-link           192.168.10.1   291
192.168.10.255        255.255.255.255      On-link           192.168.10.1   291
0.0.0.0               0.0.0.0              192.168.10.254    192.168.10.1   

    当PC-A要发送数据到PC-B时,先根据PC-B的地址【192.168.20.2】查找自己路由表,发现它匹配了【0.0.0.0 / 0.0.0.0】这条默认路由.对应的Gateway为【192.168.10.254】。默认路由是当没有到达目标设备的明细路由【即目标设备IP地址所在的网段的路由】时,就会走的路由,而且默认路由一定是【0.0.0.0 / 0.0.0.0】这样子。

    接下来PC-A根据Gateway地址【192.168.10.254】,查找自己的ARP表,找到Gateway对应的MAC地址【aaaa.aaaa.aaaa】,如下所示。找不到就广播, 前面讨论过, 这里不展开。

PC-A > arp -a
 
Interface: 192.168.10.1 --- 0x5
  Internet Address      Physical Address      Type
  192.168.10.254        aa-aa-aa-aa-aa-aa     dynamic  

    因此PC-A封装数据,像这样【aaaa.aaaa.aaaa】【1111.1111.1111】【192.168.20.2】【192.168.10.1】【DATA】。

    以RT-A: Gi0/1口的MAC地址为目的MAC地址,PC-A的MAC地址为源MAC地址,以PC-B的IP地址为目的IP地址,PC-A的IP地址为源IP地址,然后通过傻瓜交换机把数据给到Gateway,即路由器RT-A。

    可以看到在数据包中的目的IP地址和目的MAC地址不是同一个设备的, 怎么理解?

    这就是我们本系列文章的第一篇提到的,有了IP地址为何还要MAC地址。

    在此处可以看到通过MAC地址实现数据的LAN内部通信, 数据从PC-A到RT-A.。通过IP地址实现数据跨LAN的通信,数据从PC-A到PC-B。这两处的数据都是同一个数据,只是他们的目的MAC地址改变了而已。

(2) RT-A ---> PC-B

    当RT-A给接口Gi0/1和Gi0/2配置了IP地址以后, 会在本地生成路由表,如下所示.

caowen-c2911#show ip route

C        192.168.10.0/24   is directly connected, gi0/1
L        192.168.10.254/32 is directly connected, gi0/1
C        192.168.20.0/24   is directly connected, gi0/2
L        192.168.20.254/32 is directly connected, gi0/2

    当RT-A从Gi0/1口收到PC-A给PC-B的数据帧时,先解封装二层头部,发现目的MAC地址是自己的Gi0/1口的MAC地址,于是接受此数据帧,并把解封装后的数据包给到IP引擎,否则会丢弃。

    IP引擎收到没有二层头部的数据包(有二层头部的叫数据帧),解封装三层头部,发现目的IP地址不是自己任何一个接口的IP地址,于是把数据给到路由引擎。 如果目的IP地址是自己某一个接口的地址,说明数据包是给路由器自身的,而不是让路由器转发。那么IP引擎会把数据给到路由器的上一个层级的引擎,而不是路由引擎。   

    路由引擎根据数据包的目的IP地址192.168.20.2,查找路由表,匹配了上图中的第三条路由,发现该目的地与自己gi0/2口直连。类似于PC-A的Gateway为On-link,只是不同设备表示方式不一样,其实都是表示直连路由。

    路由器于是根据IP地址192.168.20.2【PC-B的IP地址】,查找本地的ARP表,找到PC-B的MAC地址,如下所示。 如果没有,就广播。

caowen-c2911#show ip arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.10.1            1   1111.1111.1111  ARPA   gi0/1
Internet  192.168.20.2            1   2222.2222.2222  ARPA   gi0/2

    因此RT-A会重新封装数据,像【2222.2222.2222】【bbbb.bbbb.bbbb】【192.168.20.2】【192.168.10.1】【DATA】。

    以PC-B的MAC地址为目的MAC地址,自己Gi0/2口的MAC地址为源MAC地址,PC-B的IP地址为目的IP地址,PC-A的IP地址为源IP地址封装此数据,然后通过Gi0/2口转发出去。

    可以发现数据包中的源MAC地址和源IP地址不是同一设备,目的MAC地址和目的IP地址也不是同一设备, 原因前面解释了。

    不过这里要提的是,无论数据的二层头部源和目的MAC地址如何变,源和目的IP地址都没有变,数据的源IP地址一直都是是PC-A,目的IP地址也一直都是是PC-B。这也好理解,如果源或者目的IP地址都变了,那这也就不是PC-A到PC-B的数据了。

    还有一点, 数据的源和目的MAC地址一定处于同一个LAN,也就是说MAC地址的作用范围是LAN内部,不能像IP地址一样,既可以LAN内部使用,也可以跨LAN使用。

    这一点我们本系列第一篇也说到了,MAC地址像身份证,只能在国家内部使用,IP地址像护照,可以国际上使用,当然国家内部也可以使用。

(3) PC-B ---> RT-A

    PC-B从RT-A的Gi0/2口收到数据帧后,显示二层解封装,发现目的MAC地址为自己的MAC地址,于是继续三层解封装,发现目的IP地址是自己,于是交给对应引擎处理。

    处理完毕后,回复数据给PC-A,根据PC-A的IP地址192.168.10.1查找路由表,发现到PC-A的Gateway为192.168.20.254。

PC-B >route print -4

Network Destination   Netmask              Gateway           Interface      Metric
192.168.20.0          255.255.255.0        On-link           192.168.20.2   291
192.168.20.1          255.255.255.255      On-link           192.168.20.2   291
192.168.20.255        255.255.255.255      On-link           192.168.20.2   291
0.0.0.0               0.0.0.0              192.168.20.254    192.168.20.2   

    于是根据Gateway地址192.168.20.254查找ARP表,发现Gateway的MAC地址为bbbb.bbbb.bbbb。

PC-B > arp -a
 
Interface: 192.168.20.2 --- 0x5
  Internet Address      Physical Address      Type
  192.168.20.254        bb-bb-bb-bb-bb-bb     dynamic  

   因此封装数据,像这样【bbbb.bbbb.bbbb】【2222.2222.2222】【192.168.10.1】【192.168.20.2】【DATA-Reply】。 

   通过傻瓜交换机把数据给点RT-A。 

(4) RT-A ---> PC-A

    RA-A通过Gi0/2口受到回复的数据帧,而是二层解封装发现目的MAC地址为自己的Gi0/2口MAC地址,继续三层解封装发现目的IP地址为192.168.10.1,不属于自己的任何接口地址,因此把数据给路由引擎。

    RT-A路由引擎收到此数据后,根据目的IP地址192.168.10.1查找路由表,找到到此地址的目标设备是直连在自己Gi0/1口上。

caowen-c2911#show ip route

C        192.168.10.0/24   is directly connected, gi0/1
L        192.168.10.254/32 is directly connected, gi0/1
C        192.168.20.0/24   is directly connected, gi0/2
L        192.168.20.254/32 is directly connected, gi0/2

    于是根据IP地址192.168.10.1,查找ARP表,发现目的MAC地址为1111.1111.1111。

caowen-c2911#show ip arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.10.1            1   1111.1111.1111  ARPA   gi0/1
Internet  192.168.20.2            1   2222.2222.2222  ARPA   gi0/2

    因此RT-A重新封装此数据,像这样【1111.1111.1111】【aaaa.aaaa.aaaa】【192.168.10.1】【192.168.20.2】【DATA-Reply】,然后把数据从Gi0/1口发送出去。

(5)PC-A

    PC-A从傻瓜交换机收到此数据后,先是二层解封装,发现目的MAC地址是自己,接着三层解封装,发现目的IP地址也是自己,于是把数据给到相应的上层程序处理,至此通信完成。

 

4 PC-A、PC-B、PC-C、PC-D两两互通

    上一节我们讲的是连在同一台设备(路由器或者三层交换机)上的两台终端通信,那如果连在不同设备的两台终端要通信呢?

    比如PC-A和PC-C/PC-D要通信或者PC-B和PC-C/PC-D要通信呢?也就是我们要PC-A、PC-B、PC-C、PC-D两两通信呢?即全网互通的问题。

    这个问题特殊在要互相通信的终端的Gateway不在一台路由器或者三层交换机上,这牵涉到静态路由、动态路由,因此留到后面单独文章讲解。    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值