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

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

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

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

  • 电气特性:
    例如规定的电压范围(-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.mzph.cn/news/641827.shtml

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

相关文章

jQuery语法知识(DOM操作)

一、class 属性: .addClass()、.hasClass().removeClass()、.toggleClass() 二、DOM 插入并包裹现有内容 1、.wrap( wrappingElement): 在每个配的元素外层包上一个html元素。 …

Buildroot显示kernel logo

buildroot开机时DSI屏幕变成跟uart一样输出log,现在想显示logo 1、failed to show loader logo [ 2.467479] mmcblk1: p1 p2 p3 p4 p5 p6 p7 p8 p9 [ 2.468827] rockchip-drm display-subsystem: cant not find any loader display [ 2.468859] rockc…

Windows Service 2008 r2的安装

创建虚拟机–(操作非常简单,跟着图片的数据下一步即可) 选择自己要安装的虚拟机版本 在这里可以更改虚拟机存放的位置 这里的40个G并不会马上占用,当虚拟机里的东西到40个G的大小就不会再存储东西了 选择和自己虚拟…

春运倒计时,AR 引领铁路运输安全新风向

根据中国交通新闻网发布最新消息,今年春运全国跨区域人员流动量预计达 90 亿人次。 随着春运期间旅客数量不断创下新高,铁路运输面临着空前的挑战与压力。 图源:pixabay 聚焦铁路运输效率与旅客安全保障问题,本期行业趋势将探讨 …

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读

今天要分享的是基于BEV的多模态、多任务、端到端自动驾驶模型FusionAD,其专注于自动驾驶预测和规划任务。这项工作首次发表于2023年8月2日,性能超越了2023 CVPR最佳论文UniAD模型。论文题目是FusionAD: Multi-modality Fusion for Prediction and Planni…

记录一些随机约束的控制方法

文章目录 前言一、内嵌约束控制二、控制rand变量是否随机三、选择随机控制的变量四、控制约束块是否随机五、约束的嵌套控制总结 前言 在运用UVM验证过程中,经常会用到大量的随机,这个时候我们需要控制随机约束的打开或者关闭,来实现不同模式…

linux显示系统内存使用情况--free命令

free 命令是Linux系统中用于显示系统内存使用情况的一个常用工具。通过该命令,用户可以轻松了解系统的内存分配、使用情况以及性能状况。本文将深入介绍free命令的各个方面,并提供详细的示例。 安装与基本用法 通常来说,free命令已经预装在大…

基于Python实现人脸识别相似度对比

目录 引言背景介绍目的和意义 人脸识别的原理人脸图像获取人脸检测与定位人脸特征提取相似度计算 基于Python的人脸相似度对比实现数据集准备人脸图像预处理特征提取相似度计算 引言 背景介绍 人脸识别技术是一种通过计算机对人脸图像进行分析和处理,从而实现自动识…

2023.1.17 关于 Redis 持久化 AOF 策略详解

目录 引言 AOF 策略 实例演示一 缓冲区 重写机制 手动触发 自动触发 AOF 重写流程 实例演示二 引言 Redis 实现持久化的两大策略 RDB ——> Redis DataBase(定期备份)AOF ——> Append Only File(实时备份) 注意&…

JavaEE:多线程(2):线程状态,线程安全

目录 线程状态 线程安全 线程不安全 加锁 互斥性 可重入 死锁 死锁的解决方法 Java标准库中线程安全类 内存可见性引起的线程安全问题 等待和通知机制 线程饿死 wait notify 线程状态 就绪:线程随时可以去CPU上执行,也包含在CPU上执行的…

漏洞补丁修复之openssl版本从1.1.1q升级到1.1.1t以及python版本默认2.7.5升级到2.7.18新版本和Nginx版本升级到1.24.0

​ 一、Openssl升级 1、查看Openssl安装的版本 openssl version 2、查看Openssl路径 which openssl 3、上传openssl安装包到服务器:openssl-1.1.1t.tar.gz,并且解压,安装: mv /usr/local/openssl /usr/local/backup_openssl_1.1.1q_20240120 mkdir /usr/local/openssl tar…

强化学习:MuJoCo机器人强化学习仿真入门

声明:我们跳过mujoco环境的搭建,搭建环境不难,可自行百度 下面开始进入正题(需要有一定的python基础与xml基础): 下面进入到建立机器人模型的部分: 需要先介绍URDF模型文件和导出MJCF格式 介绍完…

K8S--安装Nginx

原文网址:K8S--安装Nginx-CSDN博客 简介 本文介绍K8S安装Nginx的方法。 1.创建Nginx目录及配置文件 mkdir -p /work/devops/k8s/app/nginx/{config,html} 在config目录下创建nginx.conf配置文件,内容如下: # events必须要有 events {wo…

PALWORLD linux centos7开服教程

开放端口8211 iptables -A INPUT -p udp -p tcp --dport 8211 -j ACCEPT iptables -A INPUT -p udp -p udp --dport 8211 -j ACCEPT yum -y install glibc.i686 libstdc.i686 screen libcurl.i686 yum install glibc-devel.i686 yum install libstdc-devel.i686 yum -y ins…

逆序对数量(归并排序做法)

先给出上一篇文章归并排序模板-CSDN博客里的归并排序模板&#xff1a; #include<iostream> using namespace std;const int N 100010;int n; int q[N], temp[N];void merge_sort(int q[], int l, int r) {if(l > r) return;int mid (lr) >> 1;merge_sort(q, …

爬虫安居客新房

一、首先看网址 后面有全部代码 https://hf.fang.anjuke.com/loupan/baohequ/p3 这种形式很好分析&#xff0c;https://hf.fang.anjuke.com/loupan/行政区域页码 xinfang_area ["feixixian", "baohequ", "shushanqu", "luyangqu",…

#GPU|LLM|AIGC#集成显卡与独立显卡|显卡在深度学习中的选择与LLM GPU推荐

区别 核心区别&#xff1a;显存&#xff0c;也被称作帧缓存。独立显卡拥有独立显存&#xff0c;而集成显卡通常是没有的&#xff0c;需要占用部分主内存来达到缓存的目的 集成显卡&#xff1a; 是集成在主板上的&#xff0c;与主处理器共享系统内存。 一般会在很多轻便薄型的…

机械臂雅可比矩阵的矢量积理解和matlab实现

雅可比矩阵的第Ji列&#xff1a; 关于一些基本概念可以参考博客&#xff0c;部分细节如下&#xff1a; 每个移动关节&#xff0c;Ji可以这样计算&#xff1a; 每个旋转关节&#xff0c;Ji这样计算&#xff1a; 有时候要求按照末端执行器坐标系{n}来执行一些位移旋转之类的…

uniapp中vue2项目导入高德地图

1、看官网新手入门链接导入原生高德地图&#xff1a; JS API 结合 Vue 使用-基础-进阶教程-地图 JS API 2.0|高德地图API (amap.com) 具体步骤&#xff1a; 第一步&#xff0c;安装插件 npm i amap/amap-jsapi-loader --save 第二步&#xff0c;在vue组件中写代码显示地图…

[数据结构]顺序表

1、顺序表的概念及结构 1.1 线性表 线性表&#xff08; linear list &#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#…