一、概述

交换机(Switch),在网络通讯中属于非常重要而基础的设备,常见资料往往侧重于介绍某一点或对某个名词的解释,本文试图从用户使用的角度来理解交换和交换机,不过仅限于HCIA的层次,也就是比较浅层但希望是可以比较全面和实用。

二、交换

其实从名字看,我们就能大概知道交换机的作用是在网络中“传递”数据的,而且是默认不带限制的“传递”,但传递这个词比较偏向于一对一的传递,而交换机是多对多的传递,所以交换机这个名字就取的很好。

常见交换机一般会有很多端口,比如24口的、48口的,目的就是要尽可能多的让设备接进来实现互通。

1.一对一

假设现在有两台电脑需要通讯,我们只需要简单的“直连”即可,像下图这样。配置好PC的IP就可以直接互通了。

2.多对多

但我们工作中不可能只有两台电脑,比如一个办公室少说也有三五个人,每人一台电脑该怎么办呢。在很久很久以前其实还有方案就是“集线器”,像下图这样。

集线器的特点是每个端口收到的数据都向其他端口转发,其实对于小规模应用或者一台主发其他设备只收也是可以的。但如果网络比较大,或应用比较多,大量的PC需要互相通信,那集线器这样的东西肯定不行了。因为通信受限于端口的带宽,如果每一个信号都向所有端口转发那集线器就太忙了。

如果让你基于集线器的特性来改造你会怎么办?其实好办,我给PC都编个号(也就是MAC地址),同时让集线器”记住”各端口连的PC的MAC地址问题不就解决了吗。比如下图这样,设备如果记住了MAC地址与端口的对应关系,PC6向PC9发数据时,设备就知道只需要向E0/0/4转发即可。交换机其实就是这么个原理。

那如果单台交换机的端口不够了咋办,没关系可以串联的,比如下图这样。通过MAC地址与端口对应表,PC6如果向PC11发包就只需要走这样的路径:LSW5的E0/0/5->LSW6的E0/0/3->LSW7的E0/0/1。

那现在的问题就变成了,如何在交换机中维护这样一个MAC地址表?那就是ARP协议啦。

三、ARP协议与ARP表

考虑如下的网络结构,如果PC1想要与PC2通讯它该怎么办?

对于PC1来说它知道如下信息:

1)自己的IP

2)自己的MAC地址

3)PC2(目标)的IP

同时它还知道自己与交换机连着的。所以当PC1需要向PC2发数据而它又不知道更多信息的情况下,它可以向交换机发一个广播包“问一问”谁是PC2(通过目标IP)。我们知道广播包可以转发到网络中所有设备的所有端口,所以如果PC2真实存在的话,它一定是能收到的,像下图这样。

在PC2收到ARP广播的同时,网络中所有交换机其实也都收到了,甚至也包括了PC3,所以网络中所有的PC设备可以做如下记录:

192.168.0.11 的MAC等于5489-9893-0811

当PC2记录了上述信息后,它需要回应PC1,所以它会发一个ARP的响应报文来告知PC1自己的MAC地址,像下图这样。

如此各PC可以生成如下的ARP表:

PC1:

PC2:

PC3:

然后有一点不知道你是否注意到了,PC3的ARP表中只有PC1的MAC而没有PC2的,也就是PC1发的ARP报文是广播而PC2发的响应报文并不是广播。原因是网络中不光PC在记录MAC地址,交换机也是有记录的,因为交换机的记录它可以做到将PC2的响应报文原路送回给PC1而不需要广播。

四、ARP与MAC表

前面我们说PC1因为只知道目标IP其他啥也不知道,所以它需要发一个ARP广播到网络中问问目标你到底在不在啊,同时也将自己的MAC地址和IP告知了网络中所有设备,这其中就包括了交换机,所以各交换机可以做如下记录。

当PC2响应ARP包时,各交换机又可以添加一笔如下记录。

如此一来,除了PC机可以记录下ARP表,交换机还能记录下下图这些MAC地址表。

LSW3:

LSW2:

LSW4:

如此,依据PC机的ARP表(IP与MAC对应关系)和交换机的MAC表(端口与MAC对应关系),数据就可以在PC机间高效的传输啦。

五、报文传输

假设网络中PC机已完善了ARP表,交换机已完善了MAC表。

PC1需要向PC2发送一个消息,这个消息只需要知道IP即可,因为PC1的ARP表中有PC2的MAC地址,网卡会自动把这个信息放到报文中并传递给LSW3。LSW3收到报文后可以查询自己的MAC表,发现目的MAC来自E0/0/1,所以它会通过E0/0/1端口将报文传递出去,也就是给了LSW2。同样的LSW2查询MAC表知道要向E0/0/2传递,所以报文传递给了LSW4。LSW4查MAC表知道目标MAC就在自己的E0/0/1端口,它直接传过去就行了,于是PC2就这样收到了来自PC1的报文。

六、回顾

本篇我们了解了交换机的工作原理,以及与交换功能密切相关的ARP协议、ARP表、MAC地址表。

常用命令:

PC机查询ARP表:arp -a

交换机查询MAC表:display mac-address

HCIA 交换机原理与ARP协议相关推荐

  1. ARP协议详解,ARP协议执行原理、ARP协议如何根据IP地址寻找Mac地址?

    「作者主页」:士别三日wyx 「作者简介」:CSDN top200.阿里云博客专家.华为云享专家.网络安全领域优质创作者 ARP协议 一.什么是ARP协议 1. Mac地址 2. 网络层的数据 3. ...

  2. dhcp服务器1(dhcp原理,arp协议原理)

    一.dhcp工作原理 dhcp(Dynamic Host configuration Protocol,动态主机配置协议 )是一个局域网的 网络协议,它主要是通过客户端发送广播数据包给整个物理网段内的 ...

  3. 计算机网络——ARP协议(地址解析)原理

    摘要 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的 ...

  4. TCP/IP协议基本概括+ARP协议详解+DNS协议详解---Linux学习笔记

    TCP/IP协议的体系结构: TCP/IP协议族四层模型和OSI七层模型 上层协议使用下层协议的服务,下层协议给上层协议提供一个接口. 四层模型中各个层次的作用和特点 上图说明: 最底层是数据链路层, ...

  5. 计网--- ARP 协议

    ARP 协议 一. ARP 协议 ①. ARP协议介绍 ②. ARP分组的格式 ③. ARP 的工作原理 一. ARP 协议 ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题. ...

  6. ARP工作原理以及ARP欺骗、中间人攻击

    目录 什么是ARP?ARP的作用是什么? ARP的工作原理? ARP欺骗? ARP欺骗.中间人攻击实验? 什么是ARP?ARP的作用是什么? ARP即地址解析协议,属于网络层,作用是根据已知的IP地址 ...

  7. 图解ARP协议(四)代理ARP原理与实践(“善意的欺骗”)

    一.代理ARP概述 我:当电脑要访问互联网上的服务器,目标MAC是什么? 很多小伙伴在刚学习网络协议的时候,经常这样直接回应:不就是服务器的MAC嘛! 这时我会反问:那电脑怎么拿到这个服务器的MAC地 ...

  8. 图解ARP协议(二)ARP攻击原理与实践

    一.ARP攻击概述 在上篇文章里,我给大家普及了ARP协议的基本原理,包括ARP请求应答.数据包结构以及协议分层标准,今天我们继续讨论大家最感兴趣的话题:ARP攻击原理是什么?通过ARP攻击可以做什么 ...

  9. 物理层(网线)、数据链路层(交换机)、网络层(IP协议、ARP协议、ICMP协议、路由器)、VLAN(虚拟局域网)、HSRP协议、ACL、NAT

    文章目录 物理层(Physic Layer) 数据链路层(2层 Data Link Layer) 1.帧结构: 2.帧格式: 3.工作在数据链路层的设备: 交换机/网卡 4.交换机基本的工作原理:MA ...

最新文章

  1. Python生物信息学⑥绘制热图及火山图
  2. 算法在ros中应用_烟火检测算法——中伟视界人工智能算法AI在智慧工地、石油中的应用_腾讯新闻...
  3. 使用openssl给web站点颁发证书
  4. python创建csv文件并写入-Python 将数据写入文件(txt、csv、excel)
  5. python前段管理3
  6. struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo
  7. 信用卡逾期不还是否要坐牢?看法律是怎么规定的
  8. 萨义德与巴伦博依姆关于音乐和文学的对话
  9. jquery数组(操作数组元素)
  10. php中可以实现分支,PHP中的分支及循环语句
  11. 分布式session的6种解决方案
  12. ssm框架中前台html如何接受后台的数据_计算机毕业设计中实现java后台的微信小程序...
  13. 《精通javascript》几个简单的函数(二)
  14. python工作流界面_python 版工作流设计
  15. SeaWeedFS安装以及部署,以及master模式和filer模式的介绍
  16. 架构师应该具备什么技能
  17. 南京大学生租房补贴申领必看
  18. 【武忠祥高等数学基础课笔记】定积分
  19. 安卓手机如何一键去水印
  20. 如何用java实现一个p2p种子搜索(3)-dht协议实现

热门文章

  1. 每日C语言代码(The fourth day)——冒泡排序与地址传递
  2. 信号与系统_第1章 信号与系统
  3. python语言最早的可用版本诞生于几几年_python语言公开发行版本诞生于哪年
  4. 软 RAID 和硬 RAID的比较概览
  5. 软键盘弹起后顶起EditText的完美解决方案
  6. mysql插入时间少八个小时
  7. Eclipse – 建構 Android 的開發環境
  8. [转] 好玩的电子琴(附琴谱)
  9. 【FatFs】手动移植FatFs,将SRAM虚拟U盘
  10. 浙江大学 PTA 递归实现顺序输出整数