测试开发基础 | 计算机网络篇(二):物理层与数据链路层

【摘要】 计算机网络知识是自动化测试等技术基础,也是测试面试必考题目。霍格沃兹测试学院特别策划了本系列文章,将带大家一步步夯实计算机网络的基础知识。由于物理层知识在互联网软件研发工作中用到的并不多,所以可以仅做一个简单的了解。物理层解决如何在连接计算机的各种传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的主要任务描述为:确定与传输媒体的接口的一些特性,即:机械特性:例如接口形状、大小、引线数...

计算机网络知识是自动化测试等技术基础,也是测试面试必考题目。霍格沃兹测试学院特别策划了本系列文章,将带大家一步步夯实计算机网络的基础知识。
由于物理层知识在互联网软件研发工作中用到的并不多,所以可以仅做一个简单的了解。
物理层解决如何在连接计算机的各种传输媒体上传输数据比特流,而不是指具体的传输媒体。
物理层的主要任务描述为:确定与传输媒体的接口的一些特性,即:

  • 机械特性:
    例如接口形状、大小、引线数目

  • 电气特性:
    例如规定的电压范围(-5V-+5V)

  • 功能特性:
    例如规定-5V表示0,+5V表示1

  • 过程特性:
    也称规程特性,规定建立连接时各个相关部件的工作步骤

  • 典型的数据通信模型,如下图所示:
    我们输入的文字通过计算机的网卡以0101的二进制比特流数字信号发送出去,经调制解调器转换为模拟信号,通过网络传输,再利用调制解调器转换为数字信号,最终由接收计算机的网卡接收转换显示。

  • 相关术语
    通信的目的是传送消息
    有关信道的几个基本概念
    信道一般表示向一个方向传送信息的媒体,所以咱们说平常的通信线路往往包含一条发送信息的信道和一条接收信息的信道
    生活中的实例:

  • 数字信号通过实际的信号

  • 奈氏准则
    1924 年,奈奎斯特(Nyquist)就推导出了著名的奈氏准则。他给出了在假定的理想条件下,为了避免码间串扰,码元的传输速率的上限值。
    在任何信道中,码元传输的速率是有上限的,否则就会出现码间串扰的问题,使接收端对码元的判决(即识别)成为不可能。
    单独看专业解释比较晦涩,举个实际的例子:
    好比我们正常看电影或者以前用磁带歌(暴露年龄了~现在的00后估计都不知道磁带长啥样了);正常情况下我们可以听清楚台词和歌词,那么加速快进一点,也没有问题,继续加速呢?加速非常快的时候,就好比有的电影会有场景回溯的情节,已发生的事情快速的倒放,声音就变成哇啦啦啦啦叽里呱啦(自己脑补吧),台词或歌词也就听不清了。
    也就是说信道传输速率不能无限制的快,有一个限度。

  • 信噪比和香农(Shannon)公式
    香农(Shannon)用信息论的理论推导出了带宽受限且有高斯白噪声干扰的信道的极限、无差错的信息传输速率。
    信道的极限信息传输速率 C 可表达为:
    结论:减少速度和增大功率能提高准确度

  • 奈氏准则和香农公式的应用范围

  • 导向传输媒体中,电磁波沿着固体媒体传播
    各种电缆
    光纤

  • 非导向传输媒体,指自由空间,其中的电磁波传输被称为无线传输。
    短波通信主要是靠电离层的反射,但短波信道的通信质量较差。
    微波在空间主要是直线传播:

  • 信道复用技术

  • 频分复用

  • 时分复用

  • 统计时分复用

  • 波分复用

  • 码分复用

  • 数字传输系统

  • 带宽接入技术
    若从主机H1向主机H2发送数据,所经历的模型方式如下图
    只关心数据链路层的话,如下图所示:

  • 点到点信道:
    这种信道使用一对一的点到点通信方式;好比我们拿两台电脑,用一根网线直接将两台电脑相连接,这就属于点到点。

  • 广播信道:
    这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发 。
    接着上面的例子,如果将两台电脑直接用集线器进行连接,同时再接入其他电脑,那么只要其中一台电脑发消息,其他电脑都可以收到,这种就属于广播信道。

  • 链路(link)
    是一条点到点的物理线路段,中间没有任何其他的交换节点。一条链路只是一条通路的一个组成部分。例:一根网线就属于链路,是一条物理链路。

  • 数据链路(data link)
    除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

  • 现在最常用的方法是使用适配器(网卡)来实现这些协议的硬件和软件。

  • 一般的适配器都包括了数据链路层和物理层这两层的功能。

  • 数据传送到数据链路层变成帧,由帧头帧尾来表示帧的开始和结束

  • 传到物理层变为比特流或波信号,通过链路进行发送

  • 接收端收到数据后依次反向解析
    具体参考如下图:

  • 封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。

  • 首部和尾部的一个重要作用就是进行帧定界。
    如果再传输过程中有数据中断或丢失了,在收到数据的时候发现没有帧头或帧尾,那么计算机就会将此断数据丢弃。
    传输过程中可能会出现如下情况,传输的数据中包含了和帧尾结束符一样的数据,这样就可能导致数据被误认为结束了,具体见下图:
    因此在传输过程中加入转义字符,发送后和接收前加入,而发送方和接收方并不知道,所以也就称之为透明传输

  • 字节填充(byte stuffing)或字符填充(character stuffing)——接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。

  • 如果转义字符也出现数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。

  • 在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。

  • 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。

  • 误码率与信噪比有很大的关系。

  • 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施
    循环冗余检验 CRC:计算余数来判断数据是否丢失

  • 注意事项:

  • 仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受(accept)。
    “无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。
    也就是说:“凡是接收端数据链路层接受的帧都没有传输差错”(有差错的帧就丢弃而不接受)。

  • 要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。
    考虑帧重复、帧丢失、帧乱序的情况
    总结:CRC只负责无差错接收,且只是无比特差错,出错后需要上层进行重传。
    最早我们使用电话拨号上网就是这种PPP协议:
    它具有身份验证,记账的功能。

  • PPP协议帧格式
    局域网最主要的特点是:

  • 网络为一个单位所拥有,且地理范围和站点数目均有限。
    局域网具有如下的一些主要优点:

  • 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。

  • 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。

  • 提高了系统的可靠性、可用性和残存性。
    局域网的拓扑(也就是指物理上怎么连接的):
    最初的以太网是将许多计算机都连接到一根总线上。当初认为这样的连接方法既简单又可靠,因为总线上没有有源器件。但是这样的话很不安全(参考集线器)

  • “多点接入”表示许多计算机以多点接入的方式连接在一根总线上。

  • “载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。

  • 总线上并没有什么“载波”。因此, “载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。

  • “碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。

  • 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。

  • 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。

  • 所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”。

  • 最先发送数据帧的站,在发送数据帧后至多经过时间 2τ(两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。

  • 以太网的端到端往返时延 2τ称为争用期,或碰撞窗口。

  • 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。

  • 争用期长度

  • 以太网取 51.2 us 为争用期的长度。

  • 对于 10 Mb/s 以太网,在争用期内可发送512 bit,即 64 字节。

  • 以太网在发送数据时,若前 64 字节没有发生冲突,则后续的数据就不会发生冲突。

  • DIX Ethernet V2 是世界上第一个局域网产品(以太网)的规约。

  • IEEE 的 802.3 标准。

  • DIX Ethernet V2 标准与 IEEE 的 802.3 标准只有很小的差别,因此可以将 802.3 局域网简称为“以太网”。

  • 严格说来,“以太网”应当是指符合 DIX Ethernet V2 标准的局域网
    为了使数据链路层能更好地适应多种局域网标准,802 委员会就将局域网的数据链路层拆成两个子层:

  • 逻辑链路控制 LLC (Logical Link Control)子层

  • 媒体接入控制 MAC (Medium Access Control)子层。

  • 以太网提供的服务是不可靠的交付,即尽最大努力的交付。

  • 当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定。

  • 如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送。
    传统以太网最初是使用粗同轴电缆,后来演进到使用比较便宜的细同轴电缆,最后发展为使用更便宜和更灵活的双绞线。
    这种以太网采用星形拓扑,在星形的中心则增加了一种可靠性非常高的设备,叫做集线器(hub)
    集线器原理示意图:
    由图中可以看到集线器逻辑上仍然是一个总线网,就像一个多接口的转发器,工作在物理层。
    一个帧从开始发送,经可能发生的碰撞后,将再重传数次,到发送成功且信道转为空闲(即再经过时间 τ 使得信道上无信号在传播)时为止,是发送一帧所需的平均时间。
    要提高以太网的信道利用率,就必须减小 τ 与 T0 之比。在以太网中定义了参数 a,它是以太网单程端到端时延  与帧的发送时间 T0 之比:
    a→0 表示一发生碰撞就立即可以检测出来,并立即停止发送,因而信道利用率很高。
    a 越大,表明争用期所占的比例增大,每发生一次碰撞就浪费许多信道资源,使得信道利用率明显降低。
    当数据率一定时,以太网的连线的长度受到限制,否则  的数值会太大。
    以太网的帧长不能太短,否则 T0 的值会太小,使 a 值太大。

  • 因此信道利用率在理想状况下是这样的:
    在理想化的情况下,以太网上的各站发送数据都不会产生碰撞(这显然已经不是 CSMA/CD,而是需要使用一种特殊的调度方法),即总线一旦空闲就有某一个站立即发送数据。
    发送一帧占用线路的时间是 T0 + ,而帧本身的发送时间是 T0。于是我们可计算出理想情况下的极限信道利用率 Smax为:
    IEEE 的注册管理机构 RA 负责向厂家分配地址字段的前三个字节(即高位 24 位)。
    地址字段中的后三个字节(即低位 24 位)由厂家自行指派,称为扩展标识符,必须保证生产出的适配器没有重复地址。一个地址块可以生成2^24个不同的地址。这种 48 位地址称为 MAC-48,它的通用名称是EUI-48。
    “MAC地址”实际上就是适配器地址或适配器标识符EUI-48。
    适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址.

  • 如果是发往本站的帧则收下,然后再进行其他的处理。否则就将此帧丢弃,不再进行其他的处理。

  • “发往本站的帧”包括以下三种帧:

  • 单播(unicast)帧(一对一)

  • 广播(broadcast)帧(一对全体)

  • 多播(multicast)帧(一对多)

  • 距离上的扩展:
    主机使用光纤和一对光纤调制解调器连接到集线器

  • 数量上的扩展:
    某大学有三个系,各自有一个局域网

  • 由上述我们可以发现,用集线器扩展局域网 ,虽然达到了扩大覆盖的目的,但是碰撞域增大了,总的吞吐量并未提高,因此我们就需要介绍另一位成员——网桥

  • 在数据链路层扩展局域网是使用网桥
    网桥工作在数据链路层,它根据 MAC 帧的目的地址对收到的帧进行转发。
    网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的 MAC 地址,然后再确定将该帧转发到哪一个接口

  • 使用网桥扩展以太网
    网桥使各网段成为隔离开的碰撞域

  • 使用网桥带来的好处

  • 过滤通信量。

  • 扩大了物理范围。

  • 提高了可靠性。

  • 可互连不同物理层、不同 MAC 子层和不同速率(如10 Mb/s 和 100 Mb/s 以太网)的局域网

  • 使用网桥带来的缺点

  • 存储转发增加了时延。

  • 在MAC 子层并没有流量控制功能。

  • 具有不同 MAC 子层的网段桥接在一起时时延更大。

  • 网桥只适合于用户数不太多(不超过几百个)和通信量不太大的局域网,否则有时还会因传播过多的广播信息而产生网络拥塞。这就是所谓的广播风暴。

  • 交换机
    随着网桥的接口的增加, 后来网桥和集线器合并了,计算机可以直接和交换机连接,这就是交换机。交换机就是网桥和集线器的合并升级版,能全双工,安全通信。
    交换式集线器常称为以太网交换机(switch)或第二层交换机(表明此交换机工作在数据链路层)。
    以太网交换机通常都有十几个接口。因此,以太网交换机实质上就是一个多接口的网桥,可见交换机工作在数据链路层。
    先来说什么是LAN,LAN指的就是局域网,我们可以通过路由器接上集线器,再接计算机,形成不同网段的局域网(LAN)

  • 而虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组。

  • 这些网段具有某些共同的需求。

  • 每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的工作站是属于哪一个 VLAN。

  • 虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网。

  • 虚拟局域网协议允许在以太网的帧格式中插入一个 4 字节的标识符,称为 VLAN 标记(tag),用来指明发送该帧的工作站属于哪一个虚拟局域网。

  • 跨交换机的VLAN

  • 主体内容参考韩立刚老师主讲的《计算机网络》- 第5版 - 谢希仁

  • 部分内容参考书本《计算机网络》- 第7版 - 谢希仁
    以上,期待大家一起交流探讨。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/244041.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

理解PCIE设备透传

PCIE设备透传解决的是使虚拟机直接访问PCIE设备的技术,通常情况下,为了使虚拟机能够访问Hypervisor上的资源,QEMU,KVMTOOL等虚拟机工具提供了"trap and emulate", Virtio半虚拟化等机制实现。但是这些实现都…

MySQL之数据库DDL

文章目录 MySQL数据库基本操作数据定义DDL对数据库的常用操作创建表修改表格式结构 MySQL数据库基本操作 首先我们先了解SQL的语言组成,他分为四个部分 数据定义语言(DDL)数据操纵语言(DML)数据控制语言(…

three.js从入门到精通系列教程004 - three.js透视相机(PerspectiveCamera)滚动浏览全景大图

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>three.js从入门到精通系列教程004 - three.js透视相机&#xff08;PerspectiveCamera&#xff09;滚动浏览全景大图</title><script src"js/three.js"&g…

Python 自动化办公:一键批量生成 PPT

Stata and Python 数据分析 一、导读 在实际工作中&#xff0c;经常需要批量处理Office文件&#xff0c;比如需要制作一个几十页的PPT进行产品介绍时&#xff0c;一页一页地制作不仅麻烦而且格式可能不统一。那么有什么办法可以一键生成PPT呢&#xff1f;Python提供的pptx 包…

mysql生成最近24小时整点时间临时表

文章目录 生成最近24小时整点生成最近30天生成最近12个月 生成最近24小时整点 SELECT-- 每向下推1行, i比上次减去1b.*, i.*,DATE_FORMAT( DATE_SUB( NOW(), INTERVAL ( -( i : i - 1 ) ) HOUR ), %Y-%m-%d %H:00 ) AS time FROM-- 目的是生成12行数据( SELECTa FROM( SELECT…

【Python从入门到进阶】47、Scrapy Shell的了解与应用

接上篇《46、58同城Scrapy项目案例介绍》 上一篇我们学习了58同城的Scrapy项目案例&#xff0c;并结合实际再次了项目结构以及代码逻辑的用法。本篇我们来学习Scrapy的一个终端命令行工具Scrapy Shell&#xff0c;并了解它是如何帮助我们更好的调试爬虫程序的。 一、Scrapy Sh…

CTF CRYPTO 密码学-5

题目名称&#xff1a;山岚 题目描述&#xff1a; 山岚 f5-lf5aa9gc9{-8648cbfb4f979c-c2a851d6e5-c} 解题过程&#xff1a; Step1&#xff1a;根据题目提示栅栏加密 分析 观察给出的密文发现有f、l、a、g等字符有规律的夹杂的密文中间&#xff0c;看出都是每3个字符的第1…

P9232 [蓝桥杯 2023 省 A] 更小的数

[蓝桥杯 2023 省 A] 更小的数 终于本弱一次通关了一道研究生组别的题了[普及/提高−] 一道较为简单的双指针题,但一定有更好的解法. 题目描述 小蓝有一个长度均为 n n n 且仅由数字字符 0 ∼ 9 0 \sim 9 0∼9 组成的字符串&#xff0c;下标从 0 0 0 到 n − 1 n-1 n−1&a…

k8s使用ingress实现应用的灰度发布升级

v1是1.14.0版本nginx ,实操时候升级到v2是1.20.0版本nginx&#xff0c;来测试灰度发布实现过程 一、方案&#xff1a;使用ingress实现应用的灰度发布 1、服务端&#xff1a;正常版本v1&#xff0c;灰度升级版本v2 2、客户端&#xff1a;带有请求头versionv2标识的请求访问版…

【Linux】vim 操作指令详解

Linux 1 what is vim &#xff1f;2 vim基本概念3 vim的基本操作 &#xff01;3.1 vim的快捷方式3.1.1 复制与粘贴3.1.2 撤销与剪切3.1.3 字符操作 3.2 vim的光标操作3.3 vim的文件操作 总结Thanks♪(&#xff65;ω&#xff65;)&#xff89;感谢阅读下一篇文章见&#xff01;…

Git教程学习:09 Git分支

文章目录 1 分支的简介2 分支的相关操作2.1 分支的创建2.2 分支的切换2.3 分支的合并2.4 分支推送到远程2.5 分支的删除2.6 分支的重命名 3 分支开发工作流程3.1 长期分支3.2 短期分支 1 分支的简介 几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着我们可以把我们…

使用DockerFile构建镜像与镜像上传

目录 前言&#xff1a;为什么要使用Dockerfile &#xff1f; DockerFile构建镜像 1、构建基础对象 2、Dockerfile文件结构 3、构建Dockerfile文件镜像 二、镜像上传&#xff08;阿里云&#xff09; 前言&#xff1a;为什么要使用Dockerfile &#xff1f; 首先Dockerfile …

网安防御保护防火墙初使用

要求 搭建之后 配置如下&#xff1a; 首先看要求是使用总公司部分则&#xff0c;先配置总公司的防火墙&#xff0c;注意配置总公司防火墙进入G0/0/0口的IP有个默认192.168.0.1 24&#xff0c;但是我们的云&#xff08;cloud&#xff09;上增加的端口绑定网卡IP为192.168.100.1…

React Router v6 改变页面Title

先说正事再闲聊 1、在路由表加个title字段 2、在index包裹路由 3、在App设置title 闲聊&#xff1a; 看到小黄波浪线了没 就是说默认不支持title字段了 出来的提示&#xff0c; 所以我本来是像下面这样搞的&#xff0c;就是感觉有点难维护&#xff0c;就还是用上面的方法了 …

高效工作必备神器:这款在线绘图软件完美替代Visio!

Visio是什么软件&#xff1f; Visio是微软公司开发的一款专业化的流程图绘制辅助工具&#xff0c;主要用于帮助IT和商务人员对复杂信息、系统和流程进行可视化处理、分析和交流。Visio提供了丰富的绘图功能&#xff0c;用户可以利用它创建各种类型的图表&#xff0c;包括但不限…

如何在Docker下部署MinIO存储服务通过Buckets实现文件的远程上传

&#x1f4d1;前言 本文主要是Linux下通过Docker部署MinIO存储服务实现远程上传的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#…

Linux操作系统——理解文件系统

预备知识 到目前为止&#xff0c;我们所学习到的关于文件的操作&#xff0c;全部都是基于文件被打开&#xff0c;被访问&#xff0c;访问期间比较重要的有重定向&#xff0c;缓冲区&#xff0c;一切皆文件&#xff0c;当我们访问完毕的时候需要将文件关闭&#xff0c;关闭时那…

SpringBoot:Bean生命周期自定义初始化和销毁

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java项目分享》 《RabbitMQ》《Spring》《SpringMVC》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 前言一、Bean注解指…

【服务器】安装Docker环境

目录 &#x1f33a;【前言】 &#x1f33c;1. 打开Xshell软件 &#x1f33b;2. 安装Docker环境 ①&#xff1a;下载docker.sh脚本 ②&#xff1a;列出下载的内容 ③&#xff1a;执行一下get-docker.sh文件&#xff0c;安装docker ④&#xff1a;运行docker服务 ⑤&…

linux环境开发工具---yum与vim

1.Linux软件包管理器yum 1.1什么是软件包 在学习linux过程中&#xff0c;我们常常会遇到某些指令用不了的时候&#xff0c;原因除了权限问题外&#xff0c;还有可能是你当前的linux环境并没有安装相应的软件包。而在Linux下载安装软件的办法有两个&#xff0c;一个是先下载所需…