前文中,我们提到的通信都是两台设备在同一个网段的情况。只要两台设备连接在一个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-A 192.168.10.1 /24 1111.1111.1111 192.168.10.254 RT-A: Gi0/1 192.168.10.254 aaaa.aaaa.aaaa
PC-B 192.168.20.2 /24 2222.2222.2222 192.168.20.254 RT-A: Gi0/2 192.168.20.254 bbbb.bbbb.bbbb
PC-C 192.168.30.3 /24 3333.3333.3333 192.168.30.254 SW: Gi0/1 192.168.30.254 cccc.cccc.cccc
PC-D 192.168.40.4 /24 4444.4444.4444 192.168.40.254

SW: Gi0/2

192.168.40.254 dddd.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/1ip address 192.168.10.254 255.255.255.0RT-A#show running-config interface gigabitEthernet 0/2
Building configuration...Current configuration : 71 bytes
!
interface GigabitEthernet0/2ip 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/1no switchportip address 192.168.30.254 255.255.255.0SW-A#show running-config interface gigabitEthernet 0/2
Building configuration...Current configuration : 81 bytes
!
interface GigabitEthernet0/2no switchportip 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 -4Network 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 -aInterface: 192.168.10.1 --- 0x5Internet Address      Physical Address      Type192.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 routeC        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 -4Network 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 -aInterface: 192.168.20.2 --- 0x5Internet Address      Physical Address      Type192.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 routeC        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不在一台路由器或者三层交换机上,这牵涉到静态路由、动态路由,因此留到后面单独文章讲解。

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

  1. 通过阿里云服务器(frp内网穿透工具),实现跨局域网ModbusTcp通信

    写在开头: 本文是基于windows系统,本文实现内网穿透需要下载的工具只有frp,所用云服务器为阿里云服务器. 笔者是某211高校在读研究生.本文是基于CSDN上其他前辈的文章,由我个人总结出的经验 ...

  2. 思科新版ccna认证网工一定要知道的PIM技术概述

    思科新版ccna认证网工一定要知道的PIM技术概述PIM(Protocol Independent Multicast)称为协议无关组播.这里的协议无关指的是与单播路由协议无关,即PIM不需要维护专门 ...

  3. 思科ccna认证工程师NETCONF协议详解网工必看

    思科ccna认证工程师NETCONF协议详解网工必看,这些年随着SDN的热潮,一个诞生了十年之久的协议再一次引起了人们的重视,它就是NETCONF协议. 网络配置协议NETCONF(Network C ...

  4. CCNA和四级网工的对比

    NA是全英文考试.四级网工是中文的. NA是全球认证.四级网工的范围仅仅局限在中国大陆. NA是机试,满分1000,通过分数线为822分.四级网工是笔试,满分100,通过位数线为60%,即60分. N ...

  5. 一个网工的十年奋斗史 - 工作篇

    作者:姜汁啤酒 原文:http://gingerbeer.blog.51cto.com/625855/1960918 大家好,我是姜汁啤酒,网络技术沉迷者及从业者. 目前作为Senior Networ ...

  6. ftp协议是一种用于_______的协议_网工知识角|快速理解FTP和TFTP的区别,实用收藏...

    点上方蓝字关注公众号,坚持每天技术打卡 学网络,就在IE-LAB 国内最著名的高端网络工程师培养基地 FTP和TFTP的区别是什么 CCNA零基础入门必学 FTP(FileTransfer Proto ...

  7. 菜鸟网工工作中对Linux系统的一点体会

    2019独角兽企业重金招聘Python工程师标准>>> 又到了毕业季,看着朋友圈上学弟学妹的动态,也让我想起了去年毕业时的场景.我在大学时读的是通信工程专业,大四时为了找工作,自学了 ...

  8. 个网工获得CCNP认证后的成功求职记

    一 个获得CCNP认证的网工成功求职记 转载这篇文章出处:http://xiaoh.blog.51cto.com/498650/104740 希望它能够给我和那些正在思科认证路上行走的人一些帮助吧!! ...

  9. 三零卫士网工面试准备

    三零卫士网工面试准备 OSI七层模型(实际没有,是理论上研究的) 网络设备:交换机和路由器的区别 怎么查电脑的ip地址mac地址 nat是什么acl是什么 ACL tracert指令 ip地址段子网掩 ...

  10. 终于有华为网工整理网工10大必备软件,最新软件安装包

    工欲善其事,必先利其器.作为网络工程师,能够快速帮助我们完成项目的利器有哪些? 以下10大网工必备软件都已整理好安装包,需要的朋友可以在文末获取. 网工必备软件 1.Cisco Packet Trac ...

最新文章

  1. 系统遇到并发瓶颈时的优化方向
  2. insert into 多条数据_最全总结 | 聊聊 Python 数据处理全家桶(Sqlite篇)
  3. docker rancher搭建
  4. build muduo网络库undefined reference to问题
  5. Java高并发编程(一):并发编程的挑战
  6. Promise.all 的原理
  7. FireWork 制作android 应用程序 icon
  8. php mysqli new 连接,php mysqli 连接数据库
  9. GridView 序号 排序 正序 倒序
  10. 【kruskal】【倍增】严格次小生成树(P4180)
  11. 专业文化计算机艺考生,专业课和文化课都优秀?那艺考生的你不知道这个就损失大了...
  12. 平安证券:维持超图软件“强烈推荐”评级
  13. 【JVM】G1垃圾回收器
  14. 用getchar和%C输入字符型数据
  15. 【C++】set和multiset区别
  16. java面试题-基础篇(万字总结,带答案,面试官问烂,跳槽必备)
  17. jpg图片怎么压缩大小?简单快捷的方法教给你
  18. 6. update更新数据的4种方法
  19. 常用 vm 参数分析
  20. OpenCv打开摄像头失败问题处理cap_msmf.cpp (677) MFVideoFormat_RGB24(codec not found)

热门文章

  1. 【Scratch编程案例教学】scratch消灭砖块 scratch编程案例教学 少儿编程教案
  2. 视频消重软件大全 视频md5修改器哪个好用
  3. 如何使用linux系统下载BT?
  4. CorelDRAWX4的VBA插件开发(十四)快速定位形状
  5. BlueScreenView: 系统蓝屏分析工具
  6. 《Java高并发编程详解:多线程与架构设计》笔记(一)
  7. 如何macOS 上优雅的使用 Gaussian 09 与GaussView 6
  8. gaussian软件linux下载,Gaussian软件下载地址及安装说明
  9. 《产品结构设计》——黎恢来,笔记
  10. java突击面试章程