1.MAC(Media Access Control, 介质访问控制)地址是识别LAN节点的标识。网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的主机和接收数据的主机的地址。

2.交换机之所以能够直接对目的节点发送数据包,而不是像集线器一样以广播方式对所有节点发送数据包,最关键的技术就是交换机可以识别连在网络上的节点的网卡MAC地址,并把它们放到一个叫做MAC地址表的地方。这个MAC地址表存放于交换机的缓存中,

  并记住这些地址,这样一来当需要向目的地址发送数据时,交换机就可在MAC地址表中查找这个MAC地址的节点位置,然后直接向这个位置的节点发送。所谓MAC地址数量是指交换机的MAC地址表中可以最多存储的MAC地址数量,存储的MAC地址数量越多,

  那么数据转发的速度和效率也就就越高。

3.但是不同档次的交换机每个端口所能够支持的MAC数量不同。在交换机的每个端口,都需要足够的缓存来记忆这些MAC地址,所以Buffer(缓存)容量的大小就决定了相应交换机所能记忆的MAC地址数多少。通常交换机只要能够记忆1024个MAC地址基本上就

  可以了,而一般的交换机通常都能做到这一点,所以如果对网络规模不是很大的情况下,这参数无需太多考虑。当然越是高档的交换机能记住的MAC地址数就越多,这在选择时要视所连网络的规模而定了。

4.交换机技术在转发数据前必须知道它的每一个端口所连接的主机的MAC地址,构建出一个MAC地址表。当交换机从某个端口收到数据帧后,读取数据帧中封装的目的地MAC地址信息,然后查阅事先构建的MAC地址表,找出和目的地地址相对应的端口,

  从该端口把数据转发出去,其他端口则不受影响,这样避免了与其它端口上的数据发生碰撞。因此构建MAC地址表是交换机的首要工作。下面举例说明交换机建立地址表的过程。

5.假设主机A向主机C发送一个数据帧(每一个数据帧中都包含有源MAC地址和目的MAC地址),当该数据帧从E0端口进入交换机后,交换机通过检查数据帧中的源MAC地址字段,将该字段的值(主机A的MAC地址)放入MAC地址表中,并把它与E0端口对应起来,

  表示E0端口所连接的主机是A。此时,由于在MAC地址表中没有关于目的地MAC地址(主机C的MAC地址)的条目。交换机技术将此帧向除了E0端口以外的所有端口转发,从而保证主机C能收到该帧(这种操作叫flooding,泛洪)。

6.同理,当交换机收到主机B、C、D的数据后也会把他们的地址学习到,写入地址表中,并将相应的端口和MAC地址对应起来。最终会把所有的主机地址都学习到,构建出完整的地址表。此时,若主机A再向主机C发送一个数据帧,应用交换机技术则根据它的MAC

  地址表中的地址对应关系,将此数据帧仅从它的E2端口转发出去。从而仅使主机C接收到主机A发送给它的数据帧,不再影响其他端口。那么在主机A和主机C通信的同时其他主机(比如主机B和主机D)之间也可以通信。

7.当交换机建立起完整的MAC地址表之后,对数据帧的转发是通过查找MAC地址表得到对应的端口,从而将数据帧通过特定的端口发送出去的。但是,对于从一个端口进入的广播数据及在地址表中找不到地址条目的数据,交换机会把该数据帧从除了进入端口之外

  的所有端口转发出去。从这个角度来说,交换机互连的设备处于同一个广播域内,但它们处于不同的碰撞域内,并且处于不同区域!

8.提示这里为了解释交换机如何建立MAC地址表,假设A向C发了一个数据帧。实际情况并非如此,并不是主机间必须进行通信交换机才能学习到MAC地址。实际上是当网卡驱动加载之后交换机就学习到了主机的MAC地址。读者如果仔细观察就会发现,Windows

  系统启动过程还没完成,交换机就学习到了主机的MAC地址。

最新文章

  1. HTTP标头
  2. 移动web开发和移动app开发的区分
  3. MySQL优化的奇技淫巧之STRAIGHT_JOIN
  4. 延长Toast显示时间
  5. 《Head First设计模式》
  6. Android(java)学习笔记220:开发一个多界面的应用程序之界面间数据传递
  7. :after和:before中的content(放入icon)
  8. alpha冲刺第八天
  9. using 关键字的作用
  10. C#解决方案生成工具
  11. Ubuntu卸载软件
  12. ES6(六) --- Symbol
  13. mysql 查询优化 ~explain解读之extra解读
  14. mysql复制过程中的server-id的理解
  15. 5个Spark应用实例
  16. Android 数据存储03之SQLite
  17. [luogu2668] 斗地主
  18. SQL中的left outer join,inner join,right outer join用法详解
  19. 测试嵌入GeoGebra网页
  20. jzoj1792

热门文章

  1. 设计模式之SOLID原则
  2. 探讨EFCore如何优雅的实现读写分离
  3. OpenWRT19.07_命令行_重拨wan_重启路由
  4. 杭电1720---A+B Coming(技巧:使用%x)
  5. 【Java基础】面向对象下
  6. dubbo配置启动时检查
  7. 【RAC】Oracle 10g RAC相关启停命令,维护命令
  8. 【Not BUG】微软Winform窗体中设计上的Bug,会导致程序编译失败?不,这不是BUG!
  9. Windows+.Net Framework+svn+IIS在Jenkins上的自动化部署入门
  10. 萌新入门之python基础语法