概述:

  为什么需要介质访问控制子层(MAC)?

  介质访问控制子层(MAC)是局域网体系结构中划分的子层,多路访问链路采用共享介质连接所有站点.发送站点通过广播方式发送数据并占用整个带宽,如果有多个站点同时发送信息,就会产生冲突,而在点对点链路网络中就不会存在这样的问题,因为在点对点网络中,目的节点是唯一的,不需要寻址,双方之间的通讯也只在彼此之间产生,不会有其他用户占用这个传输介质,所以,为了解决多路通信中介质征用的问题,IEEE把这种访问共享介质的功能专门划分出了一个子层,就是介质访问控制子层(MAC).

MAC的功能:

  一是用来寻址(这里指MAC地址),寻找目的节点.

  二是用来解决网络中多个用户争抢共享信道的现象.

为什么MAC子层之上又定义了一个LLC子层(逻辑链路控制子层)?

  从MAC功能上来看,MAC并不能保证可靠数据的传输,为了做到这一点,在其之上又增加了一个LLC,用来保证数据的可靠性传输,来为网络层提供服务.

说到共享信道,先来提一下信道的分类.

  点对点信道:有两个没有经过任何中间设备的节点构成的信道.点对点信道封装的是点对点类型的数据链路层协议(PPP协议).

  广播信道:一个信道被多条链路共享,一个节点发送的数据会被多个节点收到,对应的链路就是广播链路,广播信道封装是广播型数据链路层协议(以太网协议,WLAN协议).

MAC地址是什么?

  在局域网中,MAC的作用是用来找到我们要进行通信的计算机,MAC地址分为源地址(发送发的MAC地址),和目标地址(接收方MAC地址),源地址是单播地址(也叫单播帧),目标地址可能是单播地址,也可能是多播地址,或广播地址.

  单播地址:全球唯一,每个网卡上都有自己的一个MAC地址.

MAC地址的帧格式:

如何解决介质争用?

  在局域网中解决方案有CSMA协议(载波侦听多路访问),CSMA/CD协议(带冲突检测的载波侦听多路访问),后者是前者的改进版.

  在WLAN网络中解决方案是CSMA/CA协议,也是CSMA协议的改进版.

CSMA/CD的工作过程:

  1.   发送数据帧前先监听信道,信道忙,则持续监听,直到信道空闲,信道一旦空闲则立即发送数据.
  2.   边发送边检测冲突,如果发送完毕都没有检测到冲突,则发送成功.
  3.   如果检测到冲突,则停止发送,并发送一个32位干扰信号(阻塞信号),以加强冲突信号,采用二进制指数退避算法随机延迟一段时间后,再重复以上步骤.

  流程图:

以太网(802.3)的物理层:

扩展局域网:

用网桥(bridge)连接若干局域网(LAN)可以构造一个更大的局域网,成为桥接局域网或者扩展局域网.

原来的局域网成为了扩展局域网的一部分,称为这个扩展局域网的一个网段,

百度百科是这样定义网桥的:

  网桥(Bridge)像一个聪明的中继器。中继器从一个网络电缆里接收信号, 放大它们,将其送入下一个电缆。相比较而言,网桥对从关卡上传下来的信息更敏锐一些。网桥是一种对帧进行转发的技术,根据MAC分区块,可隔离碰撞。网桥将网络的多个网段在数据链路层连接起来

802.1d协议(STP 生成树协议):

  生成树协议的设计目的是要使二级交换网络中不存在二层环路,那么什么是环路呢?

  假设现在有两个交换机B,C之间有两条链路,主机A,D分别连接B,C.主机A在某一时刻发送了一个广播包到达了交换机A,交换机A接到广播信号,会通过两条链路向交换机B发送,这样交换机B就会受到两个广播信号,收到以后他也会通过两条链路向A广播,这样就形成了一个恶性循环,也就是形成了广播风暴,造成大量的网络设备,和带宽资源的浪费.

  上面说的两条链路成为"冗余链路",在显示网络设计中大量存在,本来的设计目的是当一条链路失效以后,另一条冗余链路可以马上接管所有工作,当然实际中冗余链路会带来广播风暴隐患.

  STP的工作原理是把整个交换网络看作是一个生成树实例,称之为公共生成树(CST),STP就是把一个物理网络拓扑结构变成无欢路的逻辑拓扑结构,采用两项主要技术:一是通过选举,使得交换网络中各个交换机处于特定的角色,另一个就是把交换机之间连接的端口划分为不同的角色,使可能形成环路的交换机端口在正常工作时处于堵塞状态.

802.1q协议(VLAN 虚拟局域网):

  

如图,如果网桥只在具有相同颜色的端口之间转发帧,就会把原来的局域网分割成多个多个相互隔离的小的局域网,称之为虚拟局域网(VLAN).

  虚拟局域网顾名思义,是一个虚拟的或者说逻辑的LAN,并不是一个物理的LAN,上面图中用的是网桥,实际更多的使用交换机,那么网桥和交换机有什么区别呢?

    这是一个网络上的一个总结:

局域网交换机的基本功能与网桥一样,具有帧转发、帧过滤和生成树算法功能。但是,交换机与网桥相比还是存在以下不同: 
  (1)交换机工作时,实际上允许许多组端口间的通道同时工作。所以,交换机的功能体现出不仅仅是一个网桥的功能,而是多个网桥功能的集合。即网桥一般分有两个端口,而交换机具有高密度的端口。 
  (2)分段能力的区别 
  由于交换机能够支持多个端口,因此可以把网络系统划分成为更多的物理网段,这样使得整个网络系统具有更高的带宽。而网桥仅仅支持两个端口,所以,网桥划分的物理网段是相当有限的。 
  (3)传输速率的区别 
  交换机与网桥数据信息的传输速率相比,交换机要快于网桥。 
  (4)数据帧转发方式的区别 
  网桥在发送数据帧前,通常要接收到完整的数据帧并执行帧检测序列FCS后,才开始转发该数据帧。交换机具有存储转发和直接转发两种帧转发方式。直接转发方式在发送数据以前,不需要在接收完整个数据帧和经过32bit循环冗余校验码CRC的计算检查后的等待时间。

其实,我们只要把一个VLAN看成一个交换机(虚拟的),许多问题就比较好理解了,因为虚拟交换机和物理交换机有相同的基本属性,同一物理交换机上的不同VLAN之间就好像只有逻辑连接,没有物理连接的不同物理交换机一样,既然没有物理连接,那么不同的VLAN肯定是不能相互通信的,即使这些VLAN的成员处于同一IP网段.

  虚拟局域网的帧头部格式:

计算机网络学习笔记--数据链据层之MAC子层(整理)的更多相关文章

  1. SQL反模式学习笔记22 伪键洁癖,整理数据

    目标:整理数据,使不连续的主键Id数据记录变的连续. 反模式:填充断档的数据空缺. 1.不按照顺序分配编号 在插入新行时,通过遍历表,找到的第一个未分配的主键编号分配给新行,来代替原来自动分配的伪主键 ...

  2. 学习笔记:flutter项目搭建(mac版)

    什么是flutter Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面. Flutter可以与现有的代码一起工作.在全世界,Flutter正在被越来越多的 ...

  3. 计算机网络 学习笔记-传输层:TCP协议简介

    概述: TCP传输前先要建立连接 TCP在传输层 点对点,一条TCP只能连接两个端点 可靠传输.无差错.不丢失.不重复.按顺序 全双工 字节流 TCP报文段 TCP报文段的报头前20字节是固定的,后面 ...

  4. 计算机网络学习笔记NO.2 物理层

    2.1 基本概念 2.1.1 物理层概念 物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体. 物理层主要任务:确定与传输媒体接口有关的一些特性(定义标准) 机械特性:定 ...

  5. 网络协议学习笔记(四)传输层的UDP和TCP

    概述 传输层里比较重要的两个协议,一个是 TCP,一个是 UDP.对于不从事底层开发的人员来讲,或者对于开发应用的人来讲,最常用的就是这两个协议.由于面试的时候,这两个协议经常会被放在一起问,因而我在 ...

  6. 学习笔记TF014:卷积层、激活函数、池化层、归一化层、高级层

    CNN神经网络架构至少包含一个卷积层 (tf.nn.conv2d).单层CNN检测边缘.图像识别分类,使用不同层类型支持卷积层,减少过拟合,加速训练过程,降低内存占用率. TensorFlow加速所有 ...

  7. 【深度学习笔记】(一)Mac下TensorFlow安装及环境搭建

    本文由@ray 出品,转载请注明出处.  文章链接:http://www.cnblogs.com/wolfray/p/7828903.html 在学习了一段时间台大李宏毅关于deep learning ...

  8. 计算机网络学习笔记--网络层之IP地址与子网

    IPv4地址: 我们知道在网络层(TCP/IP体系结构的网际互联层),最重要的一个协议就是IP协议,现在正处于IPv4和IPv6的过渡时期,但目前来说,IPv4仍为主流,所以主要讲Ipv4. IP地址 ...

  9. Docker学习笔记之在 Windows 和 Mac 中使用 Docker

    0x00 概述 对于开发来说,Windows 和 macOS 是更为常见和常用的系统,所以也很有必要了解在 Windows 和 macOS 中使用 Docker 的方法.很幸运的是,Docker 的官 ...

随机推荐

  1. [NodeJS] 优缺点及适用场景讨论

    概述: NodeJS宣称其目标是“旨在提供一种简单的构建可伸缩网络程序的方法”,那么它的出现是为了解决什么问题呢,它有什么优缺点以及它适用于什么场景呢? 本文就个人使用经验对这些问题进行探讨. 一. ...

  2. JSON.parse()和JSON.stringify()

    1.parse 用于从一个字符串中解析出json 对象.例如 var str='{"name":"cpf","age":"23&q ...

  3. 在 Laravel 中使用图片处理库 Integration/Image

    系统需求 PHP >= 5.3 Fileinfo Extension GD Library (>=2.0) … or … Imagick PHP extension (>=6.5.7 ...

  4. 【原】AFNetworking源码阅读(六)

    [原]AFNetworking源码阅读(六) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这一篇的想讲的,一个就是分析一下AFSecurityPolicy文件,看看AF ...

  5. MVC CodeFirst简单的创建数据库(非常详细的步骤)

       最近在学习MVC的开发,相信有过开发经验的人初学一个新的框架时候的想法跟我一样最关心的就是这个框架如何架构,每个架构如何分工,以及最最关键的就是如何与数据库通信,再下来才是学习基础的页面设计啊等 ...

  6. warensoft unity3d 更新说明

    warensoft unity3d 组件的Alpha版本已经发布了将近一年,很多网友发送了改进的Email,感谢大家的支持. Warensoft Unity3D组件将继续更新,将改进的功能如下: 1. ...

  7. mysql进阶之存储过程

    往往看别人的代码会有这样的感慨: 看不懂 理还乱 是离愁 别是一番滋味在心头 为什么要使用存储过程? 在mysql开发中使用存储过程的理由: 当希望在不同的应用程序或平台上执行相同的函数,或者封装特定 ...

  8. jquery屏幕滚动计算事件总结

    获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 : $(window).width(); 获取页面的文档高度: $(docume ...

  9. EF上下文对象线程内唯一性与优化

    在一次请求中,即一个线程内,若是用到EF数据上下文对象,就创建一个,这也加是很多人的代码中习惯在使用上下文对象时,习惯将对象建立在using中,也是为了尽早释放上下文对象, 但是如果有一个业务逻辑调用 ...

  10. iOS从零开始学习直播之1.播放

      对于直播来说,客户端主要做两件事情,推流和播放.今天先讲播放. 播放流程 1.拉流:服务器已有直播内容,从指定地址进行拉取的过程.其实就是向服务器请求数据. 2.解码:对视屏数据进行解压缩. 3. ...