计算机网络笔记(方老师408课程)(持续更新)

文章目录

  • 前言
    • 互联网概述
      • 互联网发展的三个阶段
      • 互联网标准化机构
    • 互联网的组成
      • 边缘部分的通信方式
      • 核心部分的交换方式
    • 我国计算机网络的发展
    • 计算机网络的类别
    • 计算机网络的性能
      • 速率、带宽、吞吐量
      • 时延
      • 时延带宽积
      • 往返时间RTT(Round-Trip Time)
      • 利用率
      • 非性能特征
    • 计算机网络的体系结构
      • 计算机网络体系结构的形成
      • 协议与划分层次
        • 协议
        • 分层
      • 具有五层协议的体系结构
      • 实体、协议、服务和服务访问点
      • TCP/IP的体系结构
  • 物理层
    • 基本概念
    • 数据通信的基本知识
      • 数据通信系统的模型
      • 信道与调制
      • 信道的极限容量
        • 奈氏准则
        • 香农定律
        • 两者联系与例题
    • 物理层下的传输媒介
      • 导引型传输媒体
        • 双绞线(Twisted Pair)
        • 同轴电缆
        • 光纤
      • 非导引型传输媒体
    • 信道复用技术
      • 频分复用(FDM)、时分复用(TDM)、统计时分复用(STDM)
      • 波分复用(WDM,Wawelength Division Multiplexing)
      • 码分多址复用(CDMA,Code Division Multiplexing Access)
        • CDMA特点
        • CDMA原理
        • CDMA讨论与应用
  • 数据链路层
    • 链路层概述
    • 链路层的基本问题
      • 封装成帧
        • 字节计数法
        • 字节定界符
      • 透明传输
        • 字节填充法
        • 比特填充法
        • 物理层编码违例
      • 差错控制
        • CRC冗余码
        • 链路层无差错但不能可靠传输
    • PPP协议
      • PPP协议概述
      • PPP协议的技术点
      • PPP协议工作状态
    • 使用广播信道的链路层
      • 局域网的数据链路层——以太网详解
        • 局域网的概念和问题
        • 以太网的发展和优势
        • 以太网协议与网络适配器(网卡)
      • CSMA/CD协议
        • 大致流程
        • 碰撞检测原理
        • 重传原理
        • 强化碰撞通知:人为干扰信号
        • CSMA/CD的特点
      • 使用集线器的星型拓扑
      • 以太网信道利用率分析

前言

这学期学计算机网络,但是我感觉我们学校的某位任课老师讲的不太行,听完introduction部分以后,我决定脱离学校课程,直接按照408去学习,备战考研。

我购买了408推荐参考教材《计算机网络》,是谢希仁版本的第八版,网上对应的视频不是很多,我找到了方诗虹老师的课程,他用的书就是408的。虽然方老师的任职学校并不是很好,但是就我的经历来说,408本来就没什么特别深的东西,关键在于能不能讲好,经过我的调查,方老师评价还不错,所以我就直接来听她的课,搭配书籍食用。

互联网概述

以前有三大网络,有电信网络,有线电视网络,计算机网络,现在三网合一了,计算机网络是现在这个年代里最有价值的技术,是将整个世界统合起来的关键技术,是信息的基础设施。

互联网的核心特点是连通性,资源共享,这也是他的核心价值。实现连通的基础无非就是两类设备:

  1. 节点:包括终端和传递设备。比如手机,电脑,路由器。
  2. 链路:节点之间的链接,包括有线和无线。

互联网发展的三个阶段

  1. 小型的区域互联,分组交换网,即ARPANET。
    • 在这个时期的1983年,TCP/IP协议诞生,成为计算机网络的标准协议,延续到现在。
    • 人们把TCP/IP协议标准指定的时间作为互联网的诞生时间。
  2. 三级结构互联网。
    • 这个阶段还没有商业化,之所以叫校园网,是因为局域网主要还是校园里用,实际上就是局域网。
    • 而局域网之间也并不是这种树状链接,实际上链接是错综复杂的。在这里插入图片描述
  3. ISP(Internet Service Provider)商业运行时期。
    • ISP提供接入互联网的服务,并收取一定费用。ISP一般是公家的,比如移动联通。
    • ISP结构比较复杂,但是整体上仍然是层次结构。
    • 单纯的层次结构可能会带来交换成本较大的缺陷,IXP(Internet eXchange Point)可以让地区ISP之间的交换不经过主干ISP,起到快捷通道的作用。
    • 90年代,www万维网的出现,彻底标志着世界互联的开始。
      在这里插入图片描述

互联网标准化机构

当互联网遍布全世界,就应该进行标准化了。领导机构是ISOC,其次是IAB,具体执行由两个部门去执行,一是IRTF(互联网研究部),一个是IETF(互联网工程部).

一个标准的指定也是非常麻烦的,需要公开发布草案(RFC,Request For Comments),收集反馈,验证,流程很复杂,所以最后能变成具体标准的草案很少。

在这里插入图片描述

互联网的组成

  1. 核心部分。互联网中负责链接通信的部分,主要由大量路由设备构成,是网络的网络。本质上,核心部分的功能就是“分组交换”
  2. 边缘部分。一般都是终端,就是我们使用的设备,这些设备接入互联网,只从核心部分收发数据,不会负责转发数据。

边缘部分的通信方式

两个计算机终端之间的通信,究其本质是一台主机的某个进程和另一台主机的某个进程通信。通信的方式由两种:

  1. CS(Client/Server):
    • 众多的客户机与一个服务器对应,服务器被动等待客户机的请求,一旦有客户机主动发送一个请求,服务器就进行解析处理,做出响应,返回信息。
    • 因为是一对多,所以服务器需要很强的软硬件设施。
  2. P2P(Peer to Peer):
    • 本质上仍然是CS,但是没有固定的服务器,宏观上就是平等的。
    • P2P程序是平等的地位,任何主机都可以发出请求,任何主机也可以提供服务。

核心部分的交换方式

最开始是电路交换,利用的是电话线。打电话的过程就是:

  1. 建立连接
  2. 独占链接,传输信息
  3. 断开连接

很明显,这种模式适合打电话,但是不适合传输网络信息。因为网络信息是不稳定的,可能两个人发微信,一天发不了几次,你要独占一天,是不是就很浪费?所以互联网就不能是独占的。

分组交换的分组指的是将bit分组,每一组前面打上标签用于区分,每一组就是一个包(packet)。

在这里插入图片描述

具体过程采用储存转发技术,路由器储存转发具体过程如下:

  1. 暂存收到的分组
  2. 检查分组头部
  3. 查找转发表(由路由器动态维护)
  4. 按照头部的目的地址,找到合适的接口转发出去

由此可见,每个包传输的路径都是不固定的,用户不关心你走哪个路由,反正最后能送到目的地就行。也正因此,两个包走同一条路是很正常的,这就和电路交换完全是两回事了。具体如何复用,大致有三种技术,后面会讲:

  1. 频分复用。不同包调频
  2. 时分复用。时间片轮转
  3. 统计复用

分组交换一定就好吗?整体是更好的,但是仍然有缺点。

  1. 排队延迟。储存转发,先储存再转发,如果排队太长,超过储存空间,新来的就会丢包。
  2. 不保证带宽。因为是共享的动态分配,所以谁用的多,谁用得少就难以确定(后面还有虚电路交换技术解决这个问题)
  3. 增加开销:比如一个包切得越细,头部信息占的比重就越大,这就是浪费。

报文交换介于电路交换和分组交换之间。可以理解为选定一条路径就发送n组,然后再选一条路径发送n组。

从电路交换,到报文交换,到分组交换,其实可以从流水线角度去理解。电路交换就是完全顺序,报文交换就是部分流水线化,分组交换就是彻底的流水线。
在这里插入图片描述
流水线虽然可以提高资源利用率,但是也会产生额外的损失,要根据情况来确定:

  1. 连续长时间大量信息,用电路交换
  2. 间断突发信息,用报文和分组交换

我国计算机网络的发展

中国计算机网络起步较晚,好在下一代网络的发展没有落后,在有一些领域还是领头的(比如5G网络)。

中国有5大ISP:

  1. 电信CHINA-NET。曾经是中国公用互联网,后来给了电信。虽然我们平时用电信的手机卡不多,但是在计算机网络大领域上,其出口带宽是最大的,是其他4个加起来的10倍。
  2. 联通UNI-NET。
  3. 移动CM-NET。
  4. 中国教育和科研计算机网CER-NET。顾名思义,China Education and Research,连接了中国各大学校,研究所。有一些内部资源只能通过这个网络接入获取。如果你是通过其他网络接入,资源获取就会受限。
  5. 中国科学技术网CST-NET。

计算机网络的类别

在这里插入图片描述
计算机网络按照作用范围,有如下类别:

  1. 个人区域网(PAN,Personal Area Network)。范围很小,大概10米,其实就是热点。
  2. 局域网(LAN,Local)。一公里左右,通常采用高速通信线路,比如一栋楼里面,一个学校里面。
  3. 城域网(MAN,Metropolitan)。一个城市
  4. 广域网(WAN,Wide)。很远,是互联网核心部分。若干广域网组成互联网

按照使用者分类:

  1. 公用网:按规定缴费的都可以使用
  2. 专用网:特定用途,比如校园网,公司网

用来把用于接入到网络的网络(AN,Access Network):

听起来有点奇怪,实际上居民是不太方便直接接入本地ISP的,需要一个路由器来中转。也就是说,AN是终端和互联网的桥梁。

在这里插入图片描述

计算机网络的性能

速率、带宽、吞吐量

香农的信息论里,bit是信息的基本单位。

速率=数据率=bit率,单位是bit/s。实际速率换算都用1000来换算:

  1. 如果是纯粹的K,M,G,比如数据量,数据的大小,那么其换算关系是 2 10 2^{10} 210
  2. 一旦带上/s这个速率的含义,比如数据率,传输速率,那么换算关系就是 1 0 3 10^3 103

区分一下速率、带宽、吞吐量

  1. 速率意如其名。通常是指额定速率,并非实际运行速率。
  2. 带宽是一个信道可以通过的理论数据率,单位也是bit/s。带宽实际上就是一种数据率,只不过可以人为控制。
  3. 吞吐量。就是实际带宽,其上限值为额定速率,受到很多因素影响,只低不高。

时延

从用户实际体验来看,用户更关心一个操作需要等待的时间延迟。严格来说,时延就是数据从网络的一端到另一端所需的时间。其组成成分很复杂:

  1. 发送时延:把所有数据发送出去到链路上需要的时间
    • =数据帧长度/发送速率
  2. 传播时延:发送出去的数据在链路上传播需要经过的时间
    • =信道长度/信号在信道上的传播速率
    • 实际传播速率也就是2/3光速(因为光纤是要不断全反射的,实际路程更远)
  3. 排队时延:数据在路由器上储存转发过程中,排队等待处理消耗的时间
    • 当网络通信量溢出排队队列时,即发生丢包现象,当100%丢包的时候,发出去什么东西都不会有回应,相当于排队的时延为无穷大。
  4. 处理时延:数据在路由器和终端设备上因为存储转发技术加工处理需要的时间

实际上,这四种时延谁更大,就不好说,有各自的改进点,只有改进瓶颈点的时候,才能带来最大的提升:

  1. 发送时延可以通过提高发送速度改进
  2. 传播时延你没办法改,和距离有关(或许改进路由算法可以减少传播距离)
  3. 排队时延和处理时延都需要提高路由器的性能来改进

在这里插入图片描述
这道题的坑点在于单位换算,数据量的换算是2进制,数据率的换算是10进制。

发送时延= 100 × 8 × 2 20 1 × 1 0 6 \dfrac{100\times 8\times 2^{20}}{1\times 10^6} 1×106100×8×220
传播时延= 1000 k m 2 × 1 0 5 k m / s \dfrac{1000km}{2\times 10^5km/s} 2×105km/s1000km,传播时延不要用2进制去换算,这和信息没关系,不要考虑二进制。

时延带宽积

在这里插入图片描述
有多种理解方式:

  1. 同一时间内,整条链路可以容纳的bit量
  2. 按照比特计数的链路长度。
  3. 从发送端发出但是尚未到达接收端的bit量

这个指标的高低不能反应性能,只是一个比较专业的特殊指标,衡量我们的链路有没有被充分利用。

往返时间RTT(Round-Trip Time)

从发送方发送完数据,到发送方收到接收方回复的时间。

简单来说就是,从发完到收到回复的间隔。

RTT的计算方式很多,本质上就是下面这个图

在这里插入图片描述
一个常用的公式: 有效数据率 = 数据长度 实际消耗总时间 = 数据长度 发送时间 + R T T 有效数据率=\dfrac{数据长度}{实际消耗总时间}=\dfrac{数据长度}{发送时间+RTT} 有效数据率=实际消耗总时间数据长度=发送时间+RTT数据长度,有效数据率代表了实际上从开始发送到对方确认收到,这个全过程的数据率。

来道例题, 100 × 8 × 2 20 100 × 8 100 + 2 \dfrac{100\times 8\times 2^{20}}{\frac{100\times 8}{100}+2} 100100×8+2100×8×220

在这里插入图片描述

利用率

  1. 信道利用率:信道有多大比例的时间是被使用的。如果总是被利用,就是100%,完全空闲就是0。

    • 利用率太低肯定不好。
    • 利用率也不是越高越好。根据排队论,当信道的利用率越来越高,时延会急剧增加。
      在这里插入图片描述
  2. 网络利用率:全网络的信道利用率的加权平均值。

非性能特征

在这里插入图片描述

计算机网络的体系结构

计算机网络体系结构的形成

计算机网络是非常复杂的系统,传输文件需要解决很多很多问题,因此ARPANET设计的时候就提出了分层方法,将复杂的通信问题划分为独立的,易于研究的局部问题。

  1. 抽象分层。并不是在物理上将网络分层,而是在问题解决的时候分层。
  2. 统一标准。互联网上的所有主机都要遵守同样的标准。
  3. 模块独立。分层要分的很清晰,解耦。熟悉程序设计的同学懂的都懂。

协议与划分层次

最开始的标准协议是ISO(国际标准化组织)提出的OSI(Open Systems Interconnection)模型。这个模型在1983年(和TCP/IP协议同时出现)形成了ISO 7498国际标准。ISO 7498模型是一个7层模型,是最开始的理想模型,但是实际上不采用这个模型。

计算机网络的体系结构的定义:

  1. 定义计算机网络的层次,即分层
  2. 定义层次内部的协议,即精准定义这个层次要实现的功能
  3. 协议只是规则,具体实现由厂商来做。

协议

协议是为了数据交换而建立的约定,有三个组成要素

  1. 语法:数据交换的格式
  2. 语义:这个格式表达的含义,要完成的功能
  3. 同步:完成一个任务需要的各种操作的时间顺序。比如A先发给B,然后B告诉A已经收到,A确定B已经确认,这种反复确认需要按照时间顺序来。

协议有两种形式:

  1. 自然语言:便于人来阅读
  2. 程序代码:让计算机理解

无论如何,都不能出现二义性,要精确描述。即便如此,也不是十全十美的,很复杂。

分层

关键在于,如何分层?原则很多,下面简单列出一些:

  1. 层次适度:太少就复杂,太多就浪费资源
  2. 层次关系:每个层次都应该有自己的分工,互相独立,只对外暴露接口,但是相邻层次之间又要有自下而上的支持。注意,只有相邻层次才会交互信息,不然耦合度就又高了。
  3. 层次协议:每一个层次都要有一个共同的协议

在这里插入图片描述
听起来还挺高大上,其实我们现实中的物流就是一种网络,而且也是分层的:

在这里插入图片描述

分层既有优点也有缺点,分层的优点是便于构造大型系统,缺点自然是效率会变低,会产生额外的沟通消耗。

具有五层协议的体系结构

OSI七层很理想,最终因为赶不上商业化速度而被淘汰,实际上其层次太多,效率比较低,实际落地不太好用。

因此最开始用的其实是一个4层约定,即TCP/IP四层模型。这是一个事实上的约定,并不是严格指定的标准。这个模型的根本缺陷在于,是一个凑合用的东西,并不是严格的标准。尤其是最底层的数据链路层和物理层是混在一起的,功能混乱。

现在通用的体系结构是5层结构,相当于TCP/IP的优化版本:

在这里插入图片描述
各自的层次大概有如下功能:

  1. 应用层。
    • 任务:通过进程间的交互信息来开发互联网应用程序,为用户服务。注意是在进程间交互
    • 协议:进程间通信规则。其数据单元是报文。
    • 比如https协议,协议特别多。
  2. 传输层(运输层)
    • 任务:在两台主机的进程之间传输数据。传输数据关键的技术是复用和分用。
    • 和上一层的区别:应用层是用这个数据,而传输层是传这个数据。
    • TCP协议:面向稳定链接的,可靠数据传输服务
    • UDP协议:提供无连接的,最快的传输服务
  3. 网络层
    • 任务:为不同主机提供通信服务
      • 路由选择:通过算法为互联网中的路由器生成转发表
      • 转发:依据转发表将分组发送到下一个路由器
    • 协议:主要是IP协议,其他都是辅助。数据单位为IP数据报。
  4. 数据链路层
    • 任务:实现相邻节点之间的可靠通信
    • 协议:数据单位为帧,要做到差错检验,保证正确。
  5. 物理层
    • 任务:实现bit的传输
    • 协议:确定物理接口的规格,几根引脚,如何链接

我们可以看到,每一层都有一种数据传输单元,即PDU(Protocol Data Unit)协议数据单元,虽然两台主机不一样,但是他们的协议一样,每层的PDU封装解封规则也是一样的。

注意,物理层只是定义了物理接口的规格,实际的传输介质在物理层之下。同理,应用层之上其实还有用户。从微观的角度来说,信息的传递是非常麻烦的:

  1. 主机1发送:首先主机1要逐层封装,在物理层变成bit流传输到路由器。
  2. 多次路由:路由器不需要最上面两层,只需要顺着下面三层解析IP就可以。
  3. 主机2接收:主机2根据对等协议反向逐层解封,最后显示到应用程序中。

然而从宏观角度来说,就是我把一个信息通过路由器中转发送到另一个主机,甚至再宏观点,就是从一个主机发送到了另一个主机。其他过程对于用户来说,都是透明的(在计算机学科里,透明指的是看不见)
在这里插入图片描述

实体、协议、服务和服务访问点

  1. 实体:每一层的那个东西就是实体,没啥含义,就是习惯用法。
  2. 协议:同一层实体之间沟通的约定。
  3. 服务:下层实体给上层实体提供功能接口服务。
    • 上下层沟通需要用到交换服务原语
    • 我们接口想象成上下层之间的接触面,这个接触面就是交换服务点SAP(Service Access Point)。注意,SAP并不是存在于抽象层次中的,他只是一个概念,实际上就是功能接口,

总的来说,协议是水平的,服务是垂直的。从实际运行来讲,效果上每一层的实体都认为自己在和对等层实体通过协议交流,但是实际上实体之间是通过下层实体提供的服务来进行交流的,只是这些服务对于上层是透明的。

在这里插入图片描述

TCP/IP的体系结构

网络层IP协议非常重要,重要性好比计算机的操作系统,起到承上启下的作用。

在这里插入图片描述

物理层

基本概念

我们学习的计算机网络体系结构,都是基于TCP/IP发展而来的五层结构,物理层就是最下面的层次。然而需要注意,物理层并不参与具体的信号传输,其功能如下:

  1. 链路层将bit流传送给物理层
  2. 物理层将bit流按照传输媒体的需要进行编码,可以是光,可以是电等各种信号。
  3. 物理层将编码后的信号通过传输媒体传送到目标机器的物理层

关键在于,物理层要尽可能屏蔽掉不同传输媒体和通信手段的差异,为链路层(上层)提供一个统一的bit流传输服务。置于怎么屏蔽,就是物理层的协议,又称作规程。

实际上,物理层的任务在于定义一个从bit到传输媒体的接口,更具体一点说,是定义了DTE(数据终端设备)与数据线与DCE(数据电路终结设备)之间的接口特性:

  1. 机械特性。接口摸得着的特性,我们平时区分不同接口一般都是用机械特性区分的。

    • 物理接口的形状尺寸
    • 物理接口的引线数目与排列
    • 物理接口的固定和锁定装置
  2. 电气特性。接口支持的电路特性,比如电压范围,阻抗,速率等等。
    在这里插入图片描述

  3. 功能特性。规定某条线的某一个电气特性代表什么含义

    • 具体到接口,就是规定了每一个引脚的含义,高电平代表什么,低电平代表什么(这个特性其实就是数字信号和电器信号转换的关键点了)
    • 在这里插入图片描述
  4. 过程特性。对接口上发生的各种事件的宏观定义,规定其发生的时间顺序。
    在这里插入图片描述

数据通信的基本知识

数据通信系统的模型

三大部分:

  1. 发送端=信源+发送器
  2. 传输网络
  3. 接收端=接收器+信宿

在这里插入图片描述

信道与调制

在这里插入图片描述

这个图比较宏观清晰:

  1. 通信。在源和终点之间传输信息。
  2. 信道。传输的通道,在逻辑上叫信道,分为单工,半双工,全双工
  3. 传输的内容,按照不同层次有如下含义:
    • 信息,就是你实际要表达的意思
    • 消息,信息的载体,比如图片,语言,文字
    • 数据,消息的实体,图片实际上是一堆RGB的数值构成的,文字是由一堆字符构成的。分为数字数据和模拟数据。
    • 信号,消息的载体,分为数字信号和模拟信号。
  4. 调制。
    • 为什么需要调制。信道的通信频率是有范围限制的,最开始产生的信号叫基带信号,频率很低,甚至有直流信号,而且不同信号之间也会干扰,所以在上路前需要进行调制,把基带信号转换为可以在信道上传输的带通信号。
    • 调制有两种方法
      • 基带调制,仅仅对基带信号进行波形变化,比如用高低电平表示0和1
      • 带通调制,使用载波将基带信号的频率提高,并且变成模拟信号。

这里说一下调制和编码的区别,凡是变成模拟信号的,都叫调制,不论你原来是什么信号。对应的,凡是变成数字信号的,都叫编码。其实调制和编码的界限没有这么分明,基带调制其实也算是一种编码。

编码的方式如下:

  1. 不归零制。正电平是1,负电平是0。看似可以传递消息,但是需要搭配时钟使用,否则无法区分连续的n个0/1.
  2. 归零制。正脉冲代表1,负脉冲代表0,发出脉冲后回归0电平,因此波形里就蕴含了时钟信息。
  3. 曼彻斯特编码。位周期中心跳变,高跳低为1,低跳高为0(也可以反过来)。两个位周期之间跳不跳就看情况了,要画图就先画每一个位周期,再画周期之间的跳变。
  4. 差分曼彻斯特编码。位周期中心始终跳变,位开始时刻是否跳变代表0/1。形象化理解就是,0不会改变波形方向,1会使波形方向翻转。下图中,刚开始有个1,后面000不改变波形方向,之后1,所以翻转一下,之后两个0不影响波形方向。最后的三个1,波形就在不断翻转。

在这里插入图片描述
上面4个编码方式中最常用曼彻斯特和差分曼彻斯特,原因如下:

  1. 频率更高:曼彻斯特和差分曼彻斯特的信号频率比不归零更高。
  2. 自同步能力:曼彻斯特和差分曼彻斯特可以通过波形提取时钟频率

调制(Modulation)的基本方法就是用正弦波/余弦波来表示0/1,具体如下:

  1. 调幅(AM,amplitude):频率,初相一致,用幅度区别0/1
  2. 调频(FM,frequency):幅度,初相一致,用频率区分0/1
  3. 调相(PM,phase):频率,幅度一致,用初相区分0/1(比如0是cos,1是sin)
  4. 正交振幅调制(QAM):振幅和相位混合调制,m个振幅和n个相位可以组合成m×n个状态(与后面的码元有关系)

在这里插入图片描述

最后说一下码元这个概念:

我们前面编码的时候,每一个位周期可以代表0/1,这个位周期就是码元。那可不可以用一个码元代表多个bit呢?理论上,假设要携带3个bit,那么3个bit的组合有8种状态,因此只要一个位周期可以有8种状态,那么就可以用一个码元表达3个bit。如何实现8种状态呢?正如我们之前用正负来区分两个状态,我们可以通过电平的0-7档来实现区分8个状态。又或者使用QAM技术获得16种状态,那么将会有4个bit。

在这里插入图片描述

信道的极限容量

现在已经解决了信息调制的问题了,但是这并不意味着调制后的信号就可以无限制地通过信道进行传输,这涉及到信道的极限容量。极限容量受到很多因素印象,极限容量有两种计算方法,分别是奈氏准则和香农定律。

奈氏准则

一个低通信道中,信号的高频分量无法通过信道,如果低通信道的通频带越宽,那么可以通过的信号频率范围就大,可以传播更多码元却不会引起码间串扰(码元之间出现重叠,无法解析)。奈氏准则给出了理想情况下(没有噪声干扰的信道)

给定通频带带宽W(Hz),则码元传输速率是2W。这只是码元速率,具体到信息速率,还要乘以一个码元可以携带的bit量,所以V进制码元的公式如下:

在这里插入图片描述

在这里插入图片描述

香农定律

实际情况中,一个信道里还有噪声干扰,所以不见得能达到奈氏准则的理想速率。香农公式给出了带有噪声的信道中,实际可以达到的最高速率。

在这里插入图片描述

其中的S/N又被称作信噪比,实际上是信噪功率比。

信噪比有两种写法,一是用S/N,这是便于后续计算的,有时候会给dB单位,你需要转化成S/N值。

在这里插入图片描述

两者联系与例题

看起来,奈氏准则和香农公式没有关系,其实,当你提高码元携带的bit量时,S就会提高(信号功率提高),但是S提高的同时,N也会提高,这样反而可能会导致S/N降低。所以说奈氏准则和香农公式时两个有关联的瓶颈,奈氏准则告诉你提高码元携带bit量可以提高速度,但是香农公式又告诉你如果提高bit量会降低S/N,可能会起反效果。
在这里插入图片描述

这道题就是简单的奈氏准则。
在这里插入图片描述

这道题两个都用了。如果V=2,那么此时奈氏准则上线低于香农公式,此时V就是瓶颈,我们可以提高V到16,则奈氏准则结果为32000,此时香农公式又会成为瓶颈。

在这里插入图片描述

物理层下的传输媒介

传输媒介指的是信号实际的通路,这不是物理层的东西,物理层是抽象,而传输媒介是现实的东西,分为两种:

  1. 导引型:电磁波沿着固态媒体(铜线或者光纤)传播
  2. 非导引型:电磁波沿着自由空间传播,无线技术都是非导引的

从这一点来看,导引和非导引本质一样,都是传电磁波,只不过导引技术将电磁波收束,集中起来。

下图给出目前所有传输媒体的频谱(根据奈氏准则,频率越高,对应的带宽越大),可以看到,光纤一骑绝尘。
在这里插入图片描述

导引型传输媒体

双绞线(Twisted Pair)

原理:把两根互相绝缘的铜线绞合,只要绞合地恰当,两根铜线发射的电磁波就可以互相抵消,极大地降低信号干扰。

理论上绞合程度越高,速度越快,但是实际上绞合程度有上限,因此还诞生了其他方法,比如屏蔽,由此分为两大类:

  1. UTP:无屏蔽双绞线。便宜不用接地
  2. STP:屏蔽双绞线。贵需要接地,但是抗干扰。
    在这里插入图片描述
    把各种手段用上,双绞线的带宽也是越来越高。
    在这里插入图片描述

同轴电缆

以前的数字有线电视就是用的同轴线,抗干扰能力强,所以被广泛用于高速远距离通信。

然而呢,现在双绞线和光纤的速度都已经上来了,比价格,同轴电缆不如双绞线,比距离,同轴电缆不如光纤,所以现在同轴电缆已经基本不用了。

在这里插入图片描述

光纤

光纤的原理是,电转光,全反射传输,光转电:

  1. 发送端要有光源,通过电脉冲转换为光脉冲。
  2. 传输的过程通过玻璃的全反射来将光的损失减到最低。
  3. 接收端需要有光检测器,检测到光脉冲后还原为电脉冲

光纤有比较多的种类:

  1. 单模光纤的强度衰减很慢,支持远距离传输
  2. 多模光纤折射次数比较多,所以强度衰减快,通常是局域网连接用的多。

在这里插入图片描述
光纤有三个常用波段,因为这三个波段衰减率是最小的。因为这三个波段的线缆粗细不同,所以这三个波段不可以混合使用。
在这里插入图片描述

总的来说,光纤的性能很好,欠缺点就是布置不太方便,成本较高。

在这里插入图片描述
为了解决这些问题,光纤的线缆构造还是比较复杂的:

在这里插入图片描述

非导引型传输媒体

非导引型其实就是无线传输。分为长波,中波,短波,微波。

在这里插入图片描述
长波和中波对应海事无线电和调幅无线电,基本是直线传输,带有一点绕行能力,所以放到海上,没有遮挡比较省心。

短波比长波和中波的路径要更加直,所以是通过大气电离层的反射来进行远距离传输的。

现在主要是用微波了,微波不能绕行,而且会穿透电离层,所以微波有两种接力方法:

  1. 卫星通信
    • 同步卫星:比如GPS,北斗。时延大,保密性差,但是通信费用与距离无关,理论上3个卫星就能覆盖全球。
    • 低轨道卫星:比如星链,鸿雁通信系统。在近地轨道铺设卫星网络,速度比较快,关键是覆盖全球。
  2. 地面微波接力

信道复用技术

信道复用是为了充分利用信道,防止占着信道不传输信息的情况出现,总之要尽可能让信道忙起来。

在这里插入图片描述

频分复用(FDM)、时分复用(TDM)、统计时分复用(STDM)

频分复用FDM中,一个用户自始至终占用一个频带。以前广播申请拍照其实就是给你分一个频带。FDM便于实现,但是缺点就是,容纳的用户总量有限,毕竟频带不能一直分下去。
在这里插入图片描述
时分复用TDM中,用户按照时间片轮转来占用信道,每次占用全部频段。TDM同样面临用户容量小的问题,毕竟时间片也不能一直分下去。

在这里插入图片描述
为了解决FDM和TDM的容量缺陷,两个方法各自衍生出了一些技巧:

  1. FDMA(Frequency Division Multiple Access)频分多址技术为了解决FDM用户容量小的问题,让N个用户轮流使用M个频段,防止持续独占。
  2. TDMA(Time Division Multiple Access)时分多址技术为了解决TDM用户容量不够的问题,让N个用户轮流使用M个时间片,至于M个时间片分给N中的哪M个,就是具体实现的问题了。

实际上,TDM仍然有缺陷,你能保证N个时间片(一个TDM帧)中,每个用户都有要发送的内容吗?你能保证轮到你的时候你有东西发吗,如果没有,那是不是浪费了你的时间片。

在这里插入图片描述

因此就有一种思路:

统计时分复用(Statistic TDM):整体上按照时间片轮转,但是如果你没东西发,我就跳过你的时间片。

因此,STDM中,STDM帧长度不固定,根据用户要发的东西来确定,即按需动态分配时间间隙,这个确定的模块就是复用器。

在这里插入图片描述

波分复用(WDM,Wawelength Division Multiplexing)

电信号可以进行频率上分割,光信号同样,所以波分复用其实就是光信号的FDM。

下图中不同波长的光各自的频率也不同。
在这里插入图片描述

码分多址复用(CDMA,Code Division Multiplexing Access)

CDMA特点

以上两大类方法,其实本质上都是交错发送,没有一个是真正同时同频段的复用。码分复用(CDM)就是如此,多个不同地址用户共享的时候,叫做码分多址(CDMA)。整体思路如下:

  1. 发送端:为每一个用户分配固定码型,将自己的信号加工一下
  2. 将每个用户加工后的信号直接叠加发送
  3. 接收端:通过用户的码型,提取对应的信号

CDMA原理

方老师讲的比较细,第一次不容易理解,这篇文章讲的比较好:

码分复用原理

这篇文章里没有提到,为什么X=1就代表发送了1,X=-1代表发送了0,X=0代表没有发送?

首先明白 S x S_x Sx只可能是两种情况, S S S或者 S ‾ \overline{S} S,因此 S ⋅ ( S x + T x ) S\cdot (S_x+T_x) S(Sx+Tx)的结果就是 S ⋅ S x S\cdot S_x SSx,这个结果在有信号的情况下,不是1就是-1,对应信号1和0。在没有信号的情况下,点积结果为0,所以0结果对应无信号。

CDMA讨论与应用

CDMA的加密型比较强,很不错,缺点,我感觉就是把一个bit变成了m个bit(但是这个只是我的一个猜测,估计不是我想的这么简单,否则这效率也太低了)

CDMA考研计算可能会考,不过很简单就是了。

数据链路层

链路层概述

首先区分两个概念:

  1. 链路:两个直接相连接点之间的物理通道
  2. 数据链路=链路+协议,是两个直接相连接点之间的逻辑通道,不仅有链路,还有控制数据传输的软件协议。

从5层模型上来说:

传输媒体负责无差别传输具体的信号,物理层规定了bit-信号-bit的具体转化细节,实现了相邻节点透明传输bit。链路层的任务是在相邻的两个节点之间,通过数据链路传输

在物理层,数据是连续的bit流,在链路层,数据是分组的,每一组就是一帧,是链路层的PDU,是上层(网络层)数据报的进一步封装。

从宏观协议栈的视角来看,链路层不需要管数据bit是如何传输的,它只负责将bit分成若干帧,在2层之间进行传输。
在这里插入图片描述
虽说链路层是在链路之间进行传播,但是也不完全是不能中转,也可以经过交换机的一次中转进行广播通信。

在这里插入图片描述

链路层的基本问题

在链路层中新的问题又来了:

  1. 封装成帧:如何在连续的bit流中找到一组数据的开始和结尾
  2. 透明传输:线路上有多个设备的时候bit流应该由谁接收,如何去区分不同用户
  3. 差错控制:bit流传输错误怎么办

封装成帧

之所以要划分成帧,是为了便于检验物理层中的传输错误。如果一次性全部传输,那么出一点错就要前功尽弃,反之,我们只需要重新发送错误的帧就可以。

将bit流切分成不同的帧,关键在于帧定界,在链路层中,帧定界是通过在bit流的首尾加帧首和帧尾实现的。只有链路层首尾都加,其它层只加头部。

中间的数据报,最大不能超过MTU,其实也不能太少。
在这里插入图片描述

字节计数法

使用一个字节来描述帧的长度。只要传输没有差错,就可以良好运作。然而,一旦出现差错,将出现严重错位,导致所有帧全部混乱,所以字节计数法没有实用价值。
在这里插入图片描述

字节定界符

直接用一串特殊序列字节当做帧开始符和帧结束符。

在这里插入图片描述
假如帧中数据恰好就是SOH和EOT呢?这必然会导致定界错误,这就要在透明传输部分去解决了。

透明传输

字节填充法

发送方在发送前,首先要增加SOH和EOT,之后检查原始数据。凡是在原始数据中出现EOT,SOH,ESC,都要在其前面插入一个ESC(其实就是转义符),表示这只是原始数据而不是特殊字节。

如此,就可以保证100%排除这个问题。
在这里插入图片描述

比特填充法

使用bit序列作为帧定界符。如果在原始数据中碰到和帧定界符一样的序列,那么就插入一些bit序列打断这个帧定界符序列。

物理层编码违例

前面讨论的都是,如果原始数据中出现帧定界符怎么办?

物理层编码违例反其道而行之,直接让原始数据中不出现帧定界符。具体方式就是使用一些很特殊的序列的那个帧定界符,这些序列特殊到几乎不可能或者干脆就不会出现在中间数据中。

比如以太网帧前导码,差分曼彻斯特的不正常跳变信号等。

差错控制

上面的方式只能在理论上保证传输没有问题,但是链路是有噪声的,所以出错是必然的,有一个指标叫误码率BER(bit error rate),信噪比越高,BER越低。

差错控制解决的问题是:如果出错了,如何检测?怎么处理?有两种思路:

  1. 纠错码:找到错误位置
    • 技术难度很高
    • 通常用于频繁出错的地方,比如无线链路
  2. 检错码:确定是否出错
    • 错了就丢弃重发,对了就接收
    • 用于BER较低的链路,比如光纤,偶尔丢几个帧对效率影响不大。

纠错码太复杂,略过,我们实际上更多使用检错码,检错码在链路层里又叫帧检验序列(FCS,Frame Check Sequence),其中CRC冗余码是很经典的检错码算法,但CRC并不等同于FCS。

CRC冗余码

在这里插入图片描述

给出大致流程,注意,他这个除其实不是传统意义上的除,而是模二运算(其实就是特定规则的按位异或运算),总之,其检验流程如下:

  1. 给定k位原始数据和n+1位除数,通过CRC算法,计算出n位冗余码,将k+n位数据发送过去
  2. 接收端使用同样的除数,计算CRC结果,为0则大概率无错,非0说明出错。

注意,判错一定是错,但是判对,不一定对,万一就恰好错得整除了。理论上,n越大,误判概率就越小,但是也只能是逼近,而且n太大效率就低了,所以国际上是有一些通用的标准除数的。

这个模二运算很抽象,直接上例子:

  1. 补n位0
  2. 反复用除数运算,移位
  3. 最后剩下n位余数,就是校验码。
    在这里插入图片描述

链路层无差错但不能可靠传输

首先区分,无差错和无错误。无错误是一点都不错,无差错是以接近于1的概率无误。其次明白可靠传输的含义:发送与接受的内容是无差错的

由上可知,链路层传递的帧内部是无差错的。但是帧外部呢?不能保证。事实上,有两种差错:

  1. 比特差错:帧内部无差错
  2. 传输差错:帧丢失,重复,帧失序

真正的可靠传输,还要保证没有传输差错,比如加上帧编号,确认,重传机制,但是这是上层要做的事情了,链路层已经做的够多了。

PPP协议

Point to Point Protocol,是最早的链路层协议,也是最符合数据链路定义的协议。

本质上来说,PPP协议是一种链路层协议,其功能就是向上封装数据包成帧,向下通过同步/异步串行链路进行传输的方法。

PPP协议概述

PPP协议有如下特点:

  1. 简单。这是任何设计的原则,功能简单,集中。
  2. 向上,能承载各种网络层协议的分组
  3. 向下,能兼容各种类型的链路

PPP和广播协议的区别除了点对点以外,还有一个就是地址协商。在发送数据之前,需要进行协商,协商的内容包括资源,地址等。

PPP协议由两个子协议组成:

  1. 链路控制协议(LCP,Link Control Protocol)。
    • 用于协商,主要功能是身份验证。
  2. 网络控制协议(NCP,Network Control Protocol)
    • 是一大类协议,用于向上兼容不同网络层协议

PPP协议的技术点

  1. 封装成帧。
  2. 透明传输
  3. 差错检测

一个PPP协议帧:

  1. 左右两边有帧定界符F
  2. 地址字段A
  3. 控制字段C
  4. 协议字段,告诉你中间的信息是数据报,还是LCP内容,还是NCP内容
  5. FCS是校验码,PPP中使用CRC计算。

在这里插入图片描述

PPP协议是面向字节的,所以长度一定是整数个字节,但是具体传输不见得就是一个字节一个字节传输:

  1. 同步传输。
    • 面向bit传输,单位是帧,采用的定界符是bit序列。
    • 采用零比特填充法保证透明传输,比如定界符是0111 1110,那么一旦发现连续的5个1,就插入一个0。接收端也是,发现连续的5个1,就删掉后面的0。
    • 效率更高,光纤常用,因为光纤可以保证时钟统一。
  2. 异步传输。
    • 面向字节传输,单位是字符,采用的定界符是字节。
    • 采用字节填充法保证透明传输在这里插入图片描述

PPP协议工作状态

流程图如下,失败原因无非两个,一是设备问题导致链路无法建立,二是LCP身份验证无法通过。

一旦成功,就可以链接到网络,进行NCP协商,传输数据。
在这里插入图片描述

使用广播信道的链路层

局域网的数据链路层——以太网详解

局域网的概念和问题

PPP点对点是比较麻烦的,尤其是不适应大规模网络,而局域网就不一样了,不仅可以通过广播的方式快速访问全网,还便于扩展系统。

因此现在的网络都是采用局域网了,点对点链接只在很少的场景中使用。

局域网有三种拓扑。最开始是右上角那个总线网,之后出现了环形网,星型网。

其实这些东西都差不了太多,本质上就是总线网,只是集线器在工程上便于部署,所以现在也都是用星型网。局域网发展到了后期,集线器变成网桥,变成交换机,性能又得到了巨大提升,星型网就占据了主导地位。
在这里插入图片描述
无论是哪种拓扑,本质上都是所有机器共享一条总线信道,那么必然就会发生冲突(碰撞),解决方案就是通过信道分配:

  1. 静态分配
    • 频分复用,时分复用,波分复用,码分复用。
    • 适用于用户少且固定稳定的场景,不适合局域网这种突发情况
  2. 动态分配
    • 随机接入:用户在受控状态下随机地发送信息。
    • 受控接入:用户服从更强的控制,比如轮询(polling)

以太网的发展和优势

以太网最开始是一个3Mbps的技术,创始人积极推动技术商业化,并且变成免费开放标准,背靠IEEE,一统有线局域网江山,现在的无线局域网也是基于以太网发展起来的。

一统江山后,以太网的一个重要突破是发明了交换机,取代了网桥和集线器,性能特别好。

后面以太网的主要发展方向就是更快,不断更换线材,提高带宽,从最开始的同轴电缆,到后面的35678类双绞线,再到光纤。当以太网带宽超过千兆的时候,就是我们现在说的gigabit ethernet了,现在已经是万兆级别了。

以太网到现在也是一统江山的地位,这归功于以太网的巨大优点,除了生态好以外,就是快,极致的快,之所以快的具体原因如下:

  1. 采用较为灵活的无连接工作方式
    • 直接发帧,不用提前建立逻辑连接,不用确认身份
    • 功能精简,只消除比特差错,忽略传输差错,交给高层决定。在保证一部分可靠性的前提下,尽可能高效。
  2. 使用曼彻斯特编码
    • 不需要考虑同步问题,自带同步信息,便于广播,只管提速就行

可能有人会疑惑,以太网是不是不可以实现PPP,这算不算缺点?

其实以太网可以实现PPP协议,只需要在广播的时候附带目标mac地址,在一众收到广播信息的机器中,只有mac地址匹配的才会做出响应。

至于如何通过动态分配解决总线上的信号冲突(碰撞)问题,这就是后话了。

所以总的来说,以太网优势巨大,缺点很少。

以太网协议与网络适配器(网卡)

802.3是第一个以太网标准,当时有LLC子层和MAC(Medium Access Control)子层。现在LLC子层已经形同虚设,逐渐退出历史舞台,功能被网络层和MAC层吸收,而链路层聚焦于MAC层。

现在的网络适配器(网卡)里面已经没有LLC子层了。
在这里插入图片描述
所谓网络适配器,就是网卡。适配器集成了链路层和物理层,比如我们的有线网卡(以太网卡),又比如无线网卡,里面就有链路层和无线收发模块(物理层)。
在这里插入图片描述
适配器的功能:

  1. 进行串并行转换,向上在机器里并行通信,向下在链路中串行通信
  2. 数据缓存
  3. 向上,在操作系统中安装驱动,向下,实现以太网协议。

CSMA/CD协议

大致流程

CSMA/CD协议是一种动态分配技术,用于解决以太网冲突。

载波监听多点接入/碰撞检测 :Carrier Sense Multiple Access with Collision Detection

  1. 多点接入:一条总线,多个点同时接入,共享信道
  2. 载波监听:发送数据前和发送数据时,每个站点都要不停地检查信道。
  3. 碰撞检测:靠检测站点直连的信道电压。

总的来说,就是在多点接入的前提下,每个站不断监听,进行碰撞检测,如果发现碰撞,则先停止发送,等待一段时间后重发。

“先听后发,边听边发,冲突停止,延迟重发”

碰撞检测原理

靠检测站点直连的信道电压:

  1. 在发送前,如果信道电压不变,那么说明没有站在发送信息,信道空闲。
  2. 在发送时,如果只有一个站发送数据,那么信号电压变化幅度就是一个合理值(比如5)。如果电压变化幅度超过一定限度(比如7),那么就说明至少有两个站发送数据,冲突信号叠加起来超过了5这个幅度。

似乎发送前检测一下就可以了,为什么还要在发送的过程中进行碰撞检测呢?因为监听只能监听当前设备直连的链路电压,如果还有其他设备的信号在路上(传播时延),此时就会误判空闲。

如下图,A在0发送,B在 τ − δ \tau-\delta τδ发送,两者各自经过 τ \tau τ的时间到达对方设备,在中间会发生碰撞。B在发送之前,A已经发送了,但是B的判断结果是信道空闲。

在这里插入图片描述

只有当B在发送到 τ \tau τ时刻的时候,其检测到信号波动异常,这才知道A已经发过数据了,检测到了碰撞。这类碰撞只有在发送的时候才能检测到。

而当A在发送到 2 τ − δ 2\tau-\delta 2τδ时刻的时候,其检测到信号波动异常,A检测到碰撞。

总的来说,之所以这种碰撞会出现,就是因为A的信号没有完全到达B,B误判为空闲后发送信号导致的碰撞。

怎么才能不碰撞呢?或者说怎么才能不误判呢?

那就是在 τ \tau τ时刻,一旦A的信号成功到达B,B检测到信道上有电压波动,说明有人在发送信号,B就会延迟发送信息了。其他设备也是如此,因为以太网是广播的,只要一个设备能够先抢夺到信道,其他的所有设备就都不会再发送信息了。

这里又有一个问题,一个 τ \tau τ只能保证其他设备不误判A,A自己怎么知道自己没有被误判呢?

假设A被误判,那么A将会在 2 τ − δ < 2 τ 2\tau-\delta<2\tau 2τδ<2τ的时刻检测到波动异常(其他设备信号干扰)。反之,如果A成功抢夺信道,那么从 τ \tau τ开始,其他设备就不会再发送信息,那么也就意味着,A收到其他设备信息的时刻最早也是在 2 τ 2\tau 2τ以外了。换句话说,只要A在 2 τ 2\tau 2τ内没有检测到碰撞,那么就A就可以确定自己没有被误判。

最后总结一下

  1. 在一次成功的抢占过程中:
    • τ \tau τ时刻,A事实上已经成功抢占信道,屏蔽其他设备,只不过A自己不确定。
    • 2 τ 2\tau 2τ时刻还没检测到碰撞,则A可以确定自己成功抢占信道,并继续安全地发送信息。
  2. 在一次失败的抢占过程中:
    • τ \tau τ时刻前,其他任一设备误判,发送信息,与A冲突
    • τ \tau τ时刻,其他设备得知自己冲突了,停止发送,等下次。
    • τ − 2 τ \tau-2\tau τ2τ之间某一时刻,A检测到碰撞,则停止发送,等下次。

所以A无非就是两种情况,以 2 τ 2\tau 2τ为分界点,这个点叫做争用期,或者碰撞窗口

小于这个时间收到消息(检测到异常波动),那么就是冲突了。否则就说明没冲突,而且直到A发完消息的这段时间内也一定不会冲突,因为A已经在 τ \tau τ时刻抢夺信道,将其他设备压制。争用期的意义就在于此,只要过了争用期还没出问题,就可以保证这一次发送一定不会出问题。

有时候,用 τ \tau τ来计算有点抽象,在确定链路长度和发送速率的前提下,可以计算出争用期内发送的数据(比如 2 τ = 51.2 μ 2\tau=51.2\mu 2τ=51.2μ,速率=10Mb/s的情况下,争用期数据=64B),只要A能连续发送64B数据不出问题,那么就代表其已经度过了争用期。

虽然现在的链路和速率已经发生了巨大的变化,甚至我们已经通过交换机从本跟上取代了CSMA/CD算法(交换机模式下,信道已经不是独占了),但是64B这个数字仍然做为一种判断残帧的传统延续了下来,作为最短有效帧长来使用。

重传原理

为了方式反复碰撞,重传的时间间隔一定是要有随机性的。所以采用截断二进制指数退避算法:

在这里插入图片描述
解释一下:

  1. 首先要保证随机性,给一个退避时间倍数集合,随机抽取。最后的退避时间是0(立即重发)或者是争用期整数倍。
  2. k会逐渐增长。刚开始退避时间整体比较短,可选的项目也很少,随着冲突次数越来越多,整体退避时间的可选范围也要越来越大,项目越来越多,这样就使得冲突概率越来越小。
  3. k不能无限延长,这代表了退避时间不能无限延长,所以最大就是k=10。同时,退避次数也不能无限积累,最大16次就要丢帧报错了。

强化碰撞通知:人为干扰信号

AB碰撞了,其他设备在这个时候仍然可能误判。为了防止大量不可控的误判,当A/B检测到冲突的时候,一方会广播一个干扰信号,让所有用户都知道发生了碰撞,大家都消停一下。

在这里插入图片描述

CSMA/CD的特点

  1. 半双工通信。信道独占就决定了,基础以太网只能进行半双工通信。
  2. 每个站在争用期内,存在碰撞的可能性
  3. 容量小,当机器变多,频繁碰撞会使得以太网的平均通信量远低于最高数据率。

在以太网的初期,CSMA/CD还不错,但是随着网络发展,局域网设备增加,交换机也就应运而生了。

使用集线器的星型拓扑

前面说的CSMA/CD技术是应用于早期以太网的,那个时候还是总线拓扑,用的也是同轴线,空间限制很大。

后面采用了三类双绞线(10BASE-T,10Mbps基带速度双绞线)后,空间限制变小,拓扑也变成了星型结构。在星形结构中,中间的总线变成了集线器(hub),他是个电子器件设备,还是比总线更具有可靠性。

但是注意,集线器和交换机并不相同,集线器在效果上上和总线没太大区别,还是用的CSMA/CD协议,还是半双工,还是在物理层工作。(而交换机不一样,摒弃CSMA/CD协议,是全双工,工作在链路层)

以太网信道利用率分析

首先定义以太网信道利用率= T 0 T 0 + τ \dfrac{T_0}{T_0+\tau} T0+τT0= 发送时间 占用时间 \dfrac{发送时间}{占用时间} 占用时间发送时间

可以看到,计算利用率不考虑碰撞退避时间。其中,发送时间 T 0 = L C T_0=\dfrac{L}{C} T0=CL,占用时间还需要多一个 τ \tau τ来避免冲突, τ \tau τ由链路本身的长度决定。

在这里插入图片描述
为了便于描述,定义了一个a,a越小,信道利用率越大。
在这里插入图片描述

为了降低a,可以降低 τ \tau τ或者提高 T 0 T_0 T0:

  1. 太长的链路,信息滞留在链路的时间太长,提高碰撞风险
  2. 太少太频繁的发送帧,也会提高碰撞风险

在这里插入图片描述

到目前为止,在没有交换机的情况下,以太网的信道利用率会因为冲突而降低(可能才30%左右)。本质上就是因为共享信道导致的碰撞,进而导致利用率下降,所以CSMA/CD协议虽然可以解决一时的问题,但是还是差很远,这也是交换机出现的意义。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】进程状态

文章目录 &#x1f4d6; 前言1. 父进程与子进程2. fork函数创建子进程2.1 认识fork函数&#xff1a;2.2 fork函数两个返回值的原因&#xff1a;2.3 fork函数的返回值意义&#xff1a; 3. 进程状态3.1 运行状态&#xff08;R&#xff09;&#xff1a;3.2 终止状态&#xff08;X&…

FPGA基于SFP光口实现10G万兆网UDP通信 10G Ethernet Subsystem替代网络PHY芯片 提供工程源码和技术支持

目录 1、前言2、我这里已有的UDP方案3、详细设计方案4、vivado工程详解5、上板调试验证并演示6、福利&#xff1a;工程代码的获取 1、前言 目前网上的fpga实现udp基本生态如下&#xff1a; 1&#xff1a;verilog编写的udp收发器&#xff0c;但不带ping功能&#xff0c;这样的代…

Spring AOP核心概念与操作示例

AOP 核心概念 还记得我们Spring有两个核心的概念嘛&#xff1f;一个是IOC/DI&#xff0c;另一个是AOP咯。 先来认识两个概念&#xff1a; AOP(Aspect Oriented Programming)面向切面编程&#xff1b;作用&#xff1a;在不惊动原始设计的基础上为其进行功能增强&#xff0c;类…

《springboot实战》第六章 实现自定义全局异常处理

前言 springboot实现自定义全局异常处理&#xff0c;以及统一返回数据。 1、分析 首先&#xff0c;实现全局异常的流程 从图中可以看到&#xff0c;实现全局异常会需要这样几个类&#xff1a; 自定义异常接口类自定义异常枚举类自定义异常类自定义异常处理类自定义全局响应…

ROS学习第十二节——话题通信控制小乌龟

1.基操一下 首先打开小乌龟程序和键盘控制程序 rosrun turtlesim turtlesim_node rosrun turtlesim turtle_teleop_key 查看话题列表 rostopic list 打开计算图查看具体是那个话题在起作用 rqt_graph 从上图可以看到两个节点之间的话题是 /turtle1/cmd_vel 使用以下命令获…

linux及openEuler破解root密码

第一步&#xff1a;开机的时候按键盘的字母 E 键&#xff0c; 进入引导模式 第二步&#xff1a;进入引导模式 &#xff1a;找到linux这一行&#xff0c;按键盘上的end 键&#xff0c;跳转到行尾&#xff0c;输入&#xff1a; init/bin/sh 修改完后&#xff0c;按键盘上的 ctr…

哪种无线耳机音质最好?盘点2023四款好音质蓝牙耳机

随着蓝牙技术的发展&#xff0c;近几年人们对于蓝牙耳机的需求也在不断增加。但&#xff0c;蓝牙耳机自始至终都是用来听的&#xff0c;所以音质对于一款蓝牙耳机来说还是很重要的。下面&#xff0c;我来给大家推荐四款好音质蓝牙耳机&#xff0c;可以当个参考。 一、南卡小音舱…

JavaEE-轻松了解网络原理之TCP协议

目录 TCP协议TCP协议数据格式TCP原理确认应答超时重传连接管理三次握手四次挥手 滑动窗口流量控制拥塞控制延迟应答捎带应答面向字节流异常问题 TCP协议 TCP&#xff0c;即Transmission Control Protocol&#xff0c;传输控制协议. TCP协议数据格式 16位源端口号与16位目的端…

Doris(8):数据导入(Load)之Insert Into

Insert Into 语句的使用方式和 MySQL 等数据库中 Insert Into 语句的使用方式类似。但在 Doris 中&#xff0c;所有的数据写入都是一个独立的导入作业。所以这里将 Insert Into 也作为一种导入方式介绍。 主要的 Insert Into 命令包含以下两种&#xff1b; INSERT INTO tbl S…

微服务 - Redis缓存 · 数据结构 · 持久化 · 分布式 · 高并发

一、分布式解决 Session 的问题 在单站点中&#xff0c;可以将在线用户信息存储在Session中&#xff0c;随时变更获取信息&#xff1b;在多站点分布式集群如何做到Session共享呢&#xff1f;架设一个Session服务&#xff0c;供多服务使用。 频繁使用的数据存在DB端&#xff0…

如何使用镭速保护云存储数据安全

近年来&#xff0c;随着云计算的发展&#xff0c;远程系统上的数据存储变的越来越重要。云存储是一个以数据存储和管理为核心的云计算系统&#xff0c;给我们提供了一种全新的数据信息存储模式。但是&#xff0c;可以从全球任何地方访问和检索相同的数据。所需要的只是一个简单…

protobuf序列化原理、安装与应用

目录 protobuf序列化 protobuf的原理 protobuf 的安装 编译message文件 应用protobuf protobuf序列化 protobuf是一种比json和xml等序列化工具更加轻量和高效的结构化数据存储格式&#xff0c;性能比json和xml真的强很多&#xff0c;毕竟google出品。 官网&#xff1a;https:…

第八章 法律关系

目录 第一节 法律关系的概念 一、法律关系的定义与特征 二、法律关系的种类 &#xff08;一&#xff09;纵向&#xff08;隶属&#xff09;的法律关系和横向&#xff08;平权&#xff09;的法律关系 &#xff08;二&#xff09;单向&#xff08;单务&#xff09;法律关系、双…

Dear ImGui结合CMake实现基于GLFW和OpenGL3的入门级hello world代码

Dear ImGui结合CMake实现基于GLFW和OpenGL3的入门级hello world代码 如需转载请标明出处&#xff1a;https://blog.csdn.net/itas109 技术交流&#xff1a;129518033 环境&#xff1a; OS: windows 10 / Ubuntu 22.04 imgui: 1.89.5 glw: 3.3.8前言 Dear ImGui 是一个 用于…

outlook邮箱pc/mac客户端下载 含最新版

新的 Outlook for Windows or mac 为 Outlook 应用带来了最新功能、智能辅助功能和新的新式简化设计。 你可以根据自己的风格定制它&#xff0c;并使用新的 Outlook for Windows/mac 执行更多操作&#xff01; 览版&#xff0c;与我们一起开始旅程&#xff0c;并帮助我们塑造新…

leetcode142. 环形链表 II

给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数…

python 打包新方案

首先是打包一个最简单的python 代码使用 pyinstaller import os #直接读取文件获得python.exe 路径 # 待执行python路径 with open("path_run.txt","r",encoding"utf-8") as f:python_exe,pyf.readlines() os.system("{} {}".format(p…

什么牌子的蓝牙耳机音质最好?盘点2023音质最好的蓝牙耳机

近几年&#xff0c;蓝牙耳机在日常生活中的出现频率越来越高&#xff0c;不管是运动、听歌、追剧、玩游戏等等都能看到蓝牙耳机的身影。接下来&#xff0c;我来给大家盘点几款音质好的蓝牙耳机&#xff0c;感兴趣的朋友可以了解一下。 一、南卡小音舱Lite2蓝牙耳机 参考价&…

服务器版本的表白墙

目录 1.步骤 2.提供两个接口: 3.流程 4.代码 1.前端代码 2.sql创建表 3.后端代码 MessageServlet.java DBUtil.java 1.步骤 1.约定前后端交互的接口 2.开发服务器代码 a.编写servlet处理前端发来的请求 b.编写数据库代码,存储获取关键的数据 3.开发客户端代码 a.基于…

zabbix搭建

1.环境 本实验使用一台centos7主机&#xff0c;关闭了firewalld和selinux服务&#xff0c;zabbix版本为5.0版本&#xff0c;mysql使用版本为5.7版本 若要搭建6.0以上版本的zabbix&#xff0c;则需要使用mysql 8.0以上的版本 其它版本的zabbix可参考zabbix官网:Download and…
最新文章