【测开基础之计算机网络】三: 数据链路层_计算机网络,测试,测试开发_TesterAllen的博客-CSDN博客
最后发布:2020-05-21 23:59:36首发:2020-05-21 23:59:36
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
1.1 基本概念
1.1.1 数据链路层的简单模型
在这一章中,只关心数据链路层上帧的流动,不关心物理层的媒介和技术方式;
若从主机H1向主机H2发送数据,所经历的模型方式如下图
只关心数据链路层的话,如下图所示:
1.1.2 数据链路层的信道类型
-
点到点信道 :
这种信道使用一对一的点到点通信方式;
例 :好比我们拿两台电脑,用一根网线直接将两台电脑相连接,这就属于点到点
。 -
广播信道 :
这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发 。
例
:接着上面的例子,如果将两台电脑直接用集线器
进行连接,同时再接入其他电脑,那么只要其中一台电脑发消息,其他电脑都可以收到,这种就属于广播信道
。
1.1.3 链路与数据链路
-
链路(link)
是一条点到点的物理线路段,中间没有任何其他的交换节点。一条链路只是一条通路的一个组成部分。
例 :一根网线就属于链路,是一条物理链路。 -
数据链路(data link)
除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
* 现在最常用的方法是使用适配器(`网卡`)来实现这些协议的硬件和软件。
* 一般的适配器都包括了`数据链路层`和`物理层`这两层的功能。
1.1.4 帧
数据链路层传送的是
帧
-数据传送到数据链路层变成帧,由帧头帧尾来表示帧的开始和结束
-传到物理层变为比特流或波信号,通过链路进行发送
-接收端收到数据后依次反向解析
具体参考如下图:
1.2 数据链路层的三个问题
1.2.1 封装成帧
- 封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。
- 首部和尾部的一个重要作用就是进行
帧定界
。
MTU
:最大传输单元,最大不能超过1500个字节
如果再传输过程中有数据中断或丢失了,在收到数据的时候发现没有帧头或帧尾,那么计算机就会将此断数据丢弃。
1.2.2 透明传输
传输过程中可能会出现如下情况,传输的数据中包含了和帧尾结束符一样的数据,这样就可能导致数据被误认为结束了,具体见下图:
因此在传输过程中加入转义字符,发送后和接收前加入,而发送方和接收方并不知道,所以也就称之为透明传输
- 字节填充(byte stuffing)或字符填充(character stuffing)——接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
- 如果转义字符也出现数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
1.2.3 差错检测
- 在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。
- 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。
- 误码率与信噪比有很大的关系。
- 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施
循环冗余检验 CRC:计算余数来判断数据是否丢失
- 注意事项 :
-
仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受(accept) 。
“无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。
也就是说:“凡是接收端数据链路层接受的帧都没有传输差错”(有差错的帧就丢弃而不接受)。 -
要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制 。
考虑帧重复、帧丢失、帧乱序的情况
-
总结:CRC只负责无差错接收,且只是无比特差错,出错后需要上层进行重传
1.3 点到点协议PPP(Point-to-Point Protocol)
最早我们使用电话拨号上网就是这种PPP协议:
它具有身份验证,记账的功能。
- PPP协议帧格式
PPP 有一个 2 个字节的协议字段。
当协议字段为 0x0021 时,PPP 帧的信息字段就是IP 数据报。
若为 0xC021, 则信息字段是 PPP 链路控制数据。
若为 0x8021,则表示这是网络控制数据。
1.4 使用广播信道的数据链路层
1.4.1 局域网的数据链路层
局域网最主要的特点是 :
- 网络为一个单位所拥有,且地理范围和站点数目均有限。
局域网具有如下的一些主要优点 :
- 具有
广播功能
,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。 - 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
- 提高了系统的可靠性、可用性和残存性。
局域网的拓扑(也就是指物理上怎么连接的)
1.4.2 认识以太网
最初的以太网是将许多计算机都连接到一根总线上。当初认为这样的连接方法既简单又可靠,因为总线上没有有源器件。
但是这样的话很不安全(参考集线器)
1.4.3 载波监听多点接入/碰撞检测 CSMA/CD
- “
多点接入
”表示许多计算机以多点接入的方式连接在一根总线上。 - “
载波监听
”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。 - 总线上并没有什么“载波”。因此, “载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。
- “碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。
- 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。
- 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。
- 所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”。
通俗的理解,一条狭窄路上两辆车迎面互相撞在了一起,那么必然会造成运行效率,要监控发现,然后及时处理事故
1.4.4 传播时延对载波监听的影响
1.4.5 争用期
- 最先发送数据帧的站,在发送数据帧后至多经过时间 2τ(两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。
- 以太网的端到端往返时延 2τ称为
争用期
,或碰撞窗口。 - 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
- 争用期长度
* 以太网取 51.2 us 为争用期的长度。
* 对于 10 Mb/s 以太网,在争用期内可发送512 bit,即 64 字节。
* 以太网在发送数据时,若前 64 字节没有发生冲突,则后续的数据就不会发生冲突。
1.5 以太网
1.5.1 以太网的两个标准
- DIX Ethernet V2 是世界上第一个局域网产品(以太网)的规约。
- IEEE 的 802.3 标准。
- DIX Ethernet V2 标准与 IEEE 的 802.3 标准只有很小的差别,因此可以将 802.3 局域网简称为“
以太网
”。 - 严格说来,“以太网”应当是指符合 DIX Ethernet V2 标准的局域网
- DIX Ethernet V2 标准与 IEEE 的 802.3 标准只有很小的差别,因此可以将 802.3 局域网简称为“
1.5.2 以太网与数据链路层的2个子层
为了使数据链路层能更好地适应多种局域网标准,802 委员会就将局域网的数据链路层拆成两个子层:
- 逻辑链路控制 LLC (Logical Link Control)子层
- 媒体接入控制 MAC (Medium Access Control)子层。
目前使用的几乎只有MAC了
1.5.3 以太网提供的服务
- 以太网提供的服务是不可靠的交付,即尽最大努力的交付。
- 当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定。
- 如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送。
1.5.4 以太网的星型拓扑结构
传统以太网最初是使用粗同轴电缆,后来演进到使用比较便宜的细同轴电缆,最后发展为使用更便宜和更灵活的双绞线。
这种以太网采用星形拓扑,在星形的中心则增加了一种可靠性非常高的设备,叫做集线器(hub)
现在几乎没有用集线器部署网络的了
集线器原理示意图:
由图中可以看到集线器逻辑上仍然是一个总线网,就像一个多接口的转发器,工作在物理层。
1.5.5 以太网的信道利用率
一个帧从开始发送,经可能发生的碰撞后,将再重传数次,到发送成功且信道转为空闲(即再经过时间 τ 使得信道上无信号在传播)时为止,是发送一帧所需的平均时间。
要提高以太网的信道利用率,就必须减小 τ 与 T0 之比。在以太网中定义了参数 a,它是以太网单程端到端时延 与帧的发送时间 T0 之比:
a→0 表示一发生碰撞就立即可以检测出来,并立即停止发送,因而信道利用率很高。
a 越大,表明争用期所占的比例增大,每发生一次碰撞就浪费许多信道资源,使得信道利用率明显降低。
当数据率一定时,以太网的连线的长度受到限制,否则 的数值会太大。
以太网的帧长不能太短,否则 T0 的值会太小,使 a 值太大。
- 因此信道利用率在理想状况下是这样的:
在理想化
的情况下,以太网上的各站发送数据都不会产生碰撞(这显然已经不是
CSMA/CD,而是需要使用一种特殊的调度方法),即总线一旦空闲就有某一个站立即发送数据。
发送一帧占用线路的时间是 T0 + ,而帧本身的发送时间是 T0。于是我们可计算出理想情况下的极限信道利用率 Smax为:
1.6 MAC层
1.6.1 MAC层的硬件地址(MAC地址)
在咱们的计算机上都有MAC地址,又称为物理地址、硬件地址;在网卡一出厂的时候就烧录了一个全球唯一的MAC地址;
那么全球那么多生产厂家,怎么保证地址的唯一性呢?
IEEE 的注册管理机构 RA 负责向厂家分配地址字段的前三个字节(即高位 24 位)。
地址字段中的后三个字节(即低位 24 位)由厂家自行指派,称为扩展标识符,必须保证生产出的适配器没有重复地址
一个地址块可以生成2^24个不同的地址。这种 48 位地址称为 MAC-48,它的通用名称是EUI-48。
“MAC地址”实际上就是适配器地址或适配器标识符EUI-48
1.6.2 适配器检查MAC地址
适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址.
- 如果是发往本站的帧则收下,然后再进行其他的处理。否则就将此帧丢弃,不再进行其他的处理。
- “发往本站的帧”包括以下三种帧:
- 单播(unicast)帧(一对一)
- 广播(broadcast)帧(一对全体)
- 多播(multicast)帧(一对多)
1.6.3 MAC帧格式
1.7 扩展以太网
1.7.1 在物理层考虑扩展
1.7.2 在数据链路层考虑扩展
1.8 虚拟局域网
1.8.1 LAN和VLAN
先来说什么是LAN
,LAN
指的就是局域网,我们可以通过路由器接上集线器,再接计算机,形成不同网段的局域网(LAN)
1.9 参考
主体内容参考韩立刚老师主讲的《计算机网络》- 第5版 - 谢希仁
部分内容参考书本《计算机网络》- 第7版 - 谢希仁
来霍格沃兹测试开发学社,学习更多软件测试与测试开发的进阶技术,知识点涵盖web自动化测试 app自动化测试、接口自动化测试、测试框架、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,课程技术涵盖bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相关技术,全面提升测试开发工程师的技术实力
QQ交流群:484590337
公众号 TestingStudio
点击获取更多信息