MAC地址和交换机
数据链路层主要关注三个问题:
- 这个包是发给谁的?谁应该接收?
- 大家都在发,会不会产生混乱?有没有谁先发、谁后发的规则?
- 如果发送的时候出现了错误,怎么办?
数据链路层也称为MAC(Medium Access Control)层,即媒体访问控制。控制在往媒体上发数据的时候,谁先发、谁后发的问题,防止顺序错乱,这解决了第二个问题。对于第一个问题,要用到一个物理地址也就是MAC地址来解决。
MAC地址是一个网卡的物理地址,用十六机制、6个byte表示。每张网卡的MAC地址都是唯一的,有点像身份证,是一个唯一的标识。它的唯一设计特性是为了组网的时候,不同的网卡放在一个网络里面的时候,不用担心冲突,更多的是从硬件角度理解。MAC地址的通信范围局限在一个子网里。例如,从 192.168.0.2/24 访问192.168.0.3/24 是可以用 MAC 地址的。一旦跨子网,即从192.168.0.2/24 到 192.168.1.2/24,MAC地址就不行了,需要 IP 地址起作用了。MAC数据包称为数据帧,格式一般为一个数据字段和多个首部字段组成。网络层数据报就插在数据字段中。

MAC地址上面我们已经分析过了,类型一般指IP数据包,IP里面又包含TCP、UDP、HTTP等一层一层封装。有了这个目标 MAC 地址,数据包在链路上广播,MAC 的网卡才能发现,这个包是给它的。MAC 的网卡把包收进来,然后打开 IP 包,发现 IP 地址也是自己的,再打开 TCP 包,发现端口是自己,也就是80,而 nginx 就是监听 80。于是将请求提交给 nginx,nginx 返回一个网页。然后将网页发回请求的机器。层层封装,最后到 MAC 层。返回的时候,源 MAC 就变成了目标 MAC,再返给请求的机器。至此,第二问题也解决了。
对于以太网,最后的CRC(循环冗余检测)通过XOR异或的算法,来计算整个包在发送的过程中是否出现了错误,主要针对第三个问题。
一个广播的网络里接入了N台机器,怎么知道每个MAC地址是谁呢?这里就要用到ARP协议即地址解析协议,已知IP地址可以求得MAC地址。在一个局域网里,当知道了IP地址,可以发送一个广播包,用个例子说明就是1、2、3、4步。

询问和应答报文大致如下:

交换机是MAC层的设备,它的任务是接收入链路层帧并将它们转发到出链路。交换机通过学习来记录入链和出链地址之间的关系。一台 MAC1 电脑将一个包发送给另一台 MAC2 电脑,当这个包到达交换机的时候,一开始交换机也不知道 MAC2 的电脑在哪个口,它只能将包转发给除了来的那个口之外的其他所有的口。这个时候,交换机会记住MAC1 是来自一个明确的口。以后有包的目的地址是 MAC1 的,直接发送到这个口就可以了。当交换机作为一个关卡一样,过了一段时间之后,就有了整个网络的一个结构了,这时基本上不用广播了,全部可以准确转发。由于每个机器的 IP 地址会变,所在的口也会变,因而交换机上的学习结果也就是转发表,是有一个过期时间的。
交换机是即插即用设备,它们不需要网络管理员或用户的干预。要安装交换机的网络管理员只需要将局域网网段和交换机的接口相连。同时交换机是全双工的工作方式,任何交换机口能够同时发送和接收数据帧。交换机提高了局域网的转包性能,因为它的最大聚合带宽是该交换机所有接口速率之和。
最后交换机容易和路由器弄混,路由器是使用IP地址来转发分组,是网络层的设备;而交换机是用MAC地址来转发分组,这是两者本质的区别。

参考资料:《趣谈网络协议》刘超
《计算机网络:自顶向下方法》原书第六版 陈鸣译
MAC地址和交换机的更多相关文章
- 交换机工作原理、MAC地址表、路由器工作原理详解
一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的.在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据 ...
- 交换机的MAC地址作用
交换机的MAC地址在交换机进行数据交换时是没有作用的,因为交换机并不对转发的数据帧进行拆包重封装. 如果只是完成数据帧交换,则可以不要MAC地址(仅指二层交换机,三层交换机完成路由功能自然每个端口得有 ...
- MAC地址表、ARP缓存表、路由表及交换机、路由器基本原理
在网上找到了这篇讲述MAC地址,ARP协议和路由表的文章,如获至宝.一篇文章把组网中的相关概念讲的明明白白. 原文是发布在51cto博客上,但不知道为什么点进去却是404.让我没想到的是这个技术论坛上 ...
- 【小菜学网络】交换机与MAC地址学习
上一小节介绍了 集线器 ,一种工作于物理层的简单网络设备.由于集线器采用广播的方式中继.转发物理信号,传输效率受到极大制约. 精准转发 为了解决集线器工作效率低下的尴尬,我们需要设计一种更高级的网络设 ...
- 以太网MAC地址组成与交换机基本知识
以太网MAC地址 MAC地址由48位二进制组成,通常分为六段,用十六进制表示,工作在数据链路层. 数据链路层功能: 链路的建立,维护与拆除 帧包装,帧传输,帧同步 帧的差错恢复 简单的流量控制 第八位 ...
- (转载)详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表
郑重声明:原文转载于http://dengqi.blog.51cto.com/5685776/1223132 向好文章致敬!!! 一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理 ...
- 网络传输中的三张表,MAC地址表、ARP缓存表以及路由表
一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的.在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据 ...
- Cisco 绑定mac地址
在Cisco中有以下三种方案可供选择,方案1和方案2实现的功能是一样的,即在具体的交换机端口上绑定特定的主机的MAC地址(网卡硬件地址),方案3是在具体的交换机端口上同时绑定特定的主机的MAC地址(网 ...
- MAC地址表、ARP缓存表以及路由表
一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的.在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据 ...
随机推荐
- maven配置错误之Unable to import maven project: See logs for details
很多朋友在初次使用maven时,都会出现这个问题. 一加载maven项目,即会报出Unable to import maven project这样的错误,哪怕是新的maven项目也不例外. 我查阅了很 ...
- [问题解决]Windows下python中pydoc命令提示“'pydoc' 不是内部或外部命令,也不是可运行的程序 或批处理文件。”
解决方法:python -m pydoc 例:python -m pydoc print
- 万级TPS亿级流水-中台账户系统架构设计
万级TPS亿级流水-中台账户系统架构设计 标签:高并发 万级TPS 亿级流水 账户系统 背景 业务模型 应用层设计 数据层设计 日切对账 背景 我们需要给所有前台业务提供统一的账户系统,用来支撑所有前 ...
- ZooKeeper开机启动的俩种方式
两种方式可以实现开机自启动 第一种:直接修改/etc/rc.d/rc.local文件 在/etc/rc.d/rc.local文件中需要输入两行, 其中export JAVA_HOME=/usr/jav ...
- 在执行jar包时如何使用调优参数
[本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 使用时去掉换行 ...
- StringEscapeUtils防止xss攻击详解
StringUtils和StringEscapeUtils这两个实用类. 1.转义防止xss攻击 1.转义可以分为下面的几种情况 第一用户输入特殊字符的时候,在提及的时候不做任何处理保持到数据库,当用 ...
- 入门大数据---Hive常用DDL操作
一.Database 1.1 查看数据列表 show databases; 1.2 使用数据库 USE database_name; 1.3 新建数据库 语法: CREATE (DATABASE|SC ...
- Spring Boot 2.x基础教程:MyBatis的多数据源配置
前两天,我们已经介绍了关于JdbcTemplate的多数据源配置以及Spring Data JPA的多数据源配置,接下来具体说说使用MyBatis时候的多数据源场景该如何配置. 添加多数据源的配置 先 ...
- 编译ts时候src目录的ts分别生成了单独的js文件
{ "compilerOptions": { "target": "es5", "outDir": "bin- ...
- express高效入门教程(1)
1.hello world 1.1.安装express // 1.进入到自己的项目目录, 我这里是express-demo cd express-demo // 2.初始化项目,生成package.j ...