概述
计算机网络在信息时代中的作用
互联网概述
笔记本电脑、台式电脑、网络打印机、用于互联其他设备的交换机和其他设备都是一个结点,连接这些节点使用的是链路,链路分为有线链路和无线链路,两者均可用于连接结点,网络则由若干个结点和链路链接组成
多个网络可以通过路由器互相连接形成互联网,目前因特网是世界上最大的互联网
值得一提的事interner和Internet是有区别的,前者指互联网,后者指因特网
第一个分组交换网出现在1969年,名为ARPANET,1983年TCP/IP协议成为ARPANET的标准协议,当年也是因特网的诞生时间。1985年NSF建设了NSFNET,1993年NSFNET被取代,因特网运营由因特网服务者ISP来运营。1994年万维网WWW促使因特网迅猛发展,明年NSFNET停止运作同时因特网彻底商业化
因特网由ISP运行,在我们这里,ISP值得就是像电信、联通、移动这样的公司,个人只要向ISP缴纳一定的费用就可以
因特网整体是基于ISP的三层结构,第一层ISP被称为主干网,范围最小且负责国际性区域,第二层ISP负责区域性或是国家性的内容,第三层则是负责本地范围,拥有最大范围的同时基本用户、校园、企业的网络都与其直接相连
一个用户和另一个用户通信可能会经过多个ISP,同时只要连接到ISP,那么自身也可以成为一个ISP,只需要购买解调器和路由器设备,ISP下可以方便的继续添加分支和新的分层,被广泛使用,值得一提的是目前的因特网范围太大太复杂,根本无法给予准确的描述,因此上面的图只是简单的示意图
因特网的标准化工作由由ISOC制定,旗下分有更多的具体管理的具体结构,制定因特网的协议需要经过四个阶段,同时要注意,并非所有的RFC文档都是因特网标准,只有一小部分RFC文档最后才能变成因特网标准
三种数据交换方式
计算机网络中的三种数据交换方式分别是电路交换、报文交换、分组交换
传统的电话交换机接通电话线的方式需要使用大量的电话线,因此出现了电话交换机来解决相应的问题,电话交换机接通电话线的方式就是电路交换
电路交换要经过建立连接、通话、释放连接这三个步骤,该方式可以用于传输计算机数据,但是传输效率很低,一般不采用
分组交换是目前常用于计算机传输数据的方式,一般来说,发送方会对数据进行切割并构造,增加包头,包头中存有目标主机的位置的信息,一个切割好的数据就称为分组,路由器会对分组进行缓存和转发,接收方则会对分组进行接收和还原
分组交换中数据传输通过的路由路径可能不一致,同时到达的顺序也不一定和发送顺序一致
报文交换和分组交换几乎差不多,也是使用存储转发的方式,只不过报文交换对传输的数据没有大小限制,因此对结点的缓存空间有较大要求,这种传输方式目前已经被分组交换取代了
接着我们来讲讲这三种交换方式的过程,可以看到下面的图里电路交换需要建立连接和释放连接的过程,一旦连接建立,就可以传输大批量的数据,而报文交换则是按顺序一次一次在不同的路由器上执行存储转发,分组交换则是可以异步执行存储转发
下面是这三种方式的优缺点,就不具体细提了,记住即可
定义和分类
计网的定义并没有统一,但是一个计网必须互连、自治、集合这三个性质,否则其定然不是一个计网,计网所连接的硬件不限于一般的计算机,而是包括各种智能设备
计网可以根据不同的内容进行各种分类,其中我们着重讲覆盖范围
广域网WAN的覆盖范围从几十公里到几千公里,可覆盖国家、地区、几个州,所以也被称为远程网,其是因特网的核心部分,任务是给核心路由器提供远距离高速连接,互连分布在不同地区的城域网和局域网
城域网MAN的覆盖范围一般是一个城市,可跨越几个街区,作用距离为5-50公里,通常作为城市骨干网,互连大量企业、机构和校园局域网
局域网LAN一般通过微型计算机或工作站与高速通信线路相连,距离一般在1公里左右,通常由某个单位单独使用和维护,现在一个学校或企业有多个局域网,这样的网络常称为校园网或企业网
个域网可简单理解为蓝牙,也常称为无线个人区域网WPAN,一般不用于连接计算机,而是用于连接相应智能设备
若中央处理机之间的距离小于1M,则一般将其称为多处理机系统而不是计算机网络
按照拓扑结构分类,第一个是总线型网络,用单根传输线把计算机连接起来,其优点是建网容易、增减结点方便,节省线路,缺点则是重负载时效率不高,而且总线任意一处出现故障都会导致全网瘫痪
第二个是星型网络,将每个计算机用单独的线路和中央设备相连,中央设备的发展历程是从计算机到集线器到交换机或路由器,其优点是便于网络的集中控制和管理,缺点是成本高,而且中央设备对故障敏感
第三个是环型网络,将所有的计算机网络接口连接成一个环,典型例子是令牌环局域网, 环可以是单环或双环,环中信号单向传输
最后一个是网状型网络,一般每个节点至少由两条路径与其他结点相连,多用在广域网中,有点事可靠性高,缺点是控制复杂、线路成本高
值得一提的事以上四种网络拓扑还可以互连为更加复杂的网络,我们这里就不再展示了
性能指标
计网性能一般有下面八个
比特代表二进制中的1或0,是一个单位,而B代表字节,一个字节B有八个比特b,KB、MB之后一类的内容都是每次增加10个幂的B,这些都是常用的数据量单位
而速率(一般称为比特率或数据率)的常用单位为b/s,kb/s,单位每前进一次,10幂就增加三位
学到这里我们就可以解释为什么我们平时买的250G的内存实际插入之后只会显示230多了,这是因为写的是250G,但是实际其使用的事速率单位,因此250*10^9是其速率计算出的大小,而我们使用GB衡量大小,那么2^30B就是其具体的大小单位,最后得到的结果就是232.8GB
例1这题大家都会做,但是可能会因为细节问题错误,这题就告诉我们大小约到默认最低的单位是B,而速率是b,为了能准确得到答案,我们还需要将B转化为b
当然,估算时可以直接将速率和大小的M直接相约,得到的结果也不会太差
带宽用于表示网络中通信线路所能传送素具的能力,表示在单位时间内从某一点到另一点所能通过的最高数据率
信号不同的频率范围一般用赫兹Hz表示,当然赫兹也有不同的单位,注意赫兹和速率单位的表示方法其实都能表示带宽,只是两种不同的表述而已,他们其实是有密切的联系的
可以简单理解为速率表示的是实际的网速,而带宽表示最大网速(计算时可简单将信道带宽理解为发送速率)
吞吐量表示在单位时间内通过某个网络的数据量,其受网络的带宽和额定速率的限制
发送数据时,数据要需要进行组装,这里会出现发送时延,数据传播时存在传播时延,数据被处理时存在处理时延,发送时延一般由分组长度/发送速率得到,发送速率取决于网卡的发送速率、信号带宽、接口速率中最小的那位(这三位的速率最好保持一致,这样能最大发挥性能)。传播时延一般由信道长度/电磁波传输速率,不同的介质中电磁波的传输速率不同,处理时延由于比较难用公式统一计算出来因此一般都是忽略不计的
处理时延和发送时延那个占据时延的主导地位的是要分情况的,不可以一概而论,不过一般来说,数据比较大时发送时延占主导,反之则传播时延占主导
下面是前四个性能指标的总结
时延带宽积指的是时延和带宽的乘积,这里的时延指的是传播时延,抽象起来其实就是一个带宽和传播的面积
往返时间指的是一个数据发送到目标主机并从目标主机中返回确定包到发送主机上的时间,其传输过程中花在卫星链路上的时间较多
利用率指的是网络的利用率,网络利用率达到50%时,时延就会加倍,超过则会急剧增加,一般来说,拥有较大主干网的ISP通常会控制他们的信道利用率不超过一半,若超过则会扩容
丢包率则是分组丢失率,指在一定的时间范围内,传输过程中丢失的分组数量与总分组数量的比率,分组丢失主要有两种情况,一是传输过程中出现误码,被结点丢弃,二是可能是在前往一台已满的分组交换机时被丢弃,丢包率同时也反映了网络的拥塞情况
最后是总结
计网体系结构
接下来我们用四节来讲计网的体系结构
常见的计网体系结构
为了让不同的计网进行互连,由专门的研究人员研究出了OSI体系结构,这是法律上的国际标准,不过由于各种原因这个体系结构终究没有被广泛使用,目前事实上使用的国际标准是TCP/IP体系结构,这其实就是去掉了会话层和表示层并且将网络层和物理层合二为一形成的新标准,其中第二次网络层也常被称为网际层
在不同的主机里都有TCP/IP协议族,需要使用网络就必须使用TCP/IP协议族,当然不使用网络也可以使用该协议族,在路由器中也存在该协议族,不过其只有网络接口层和网际层两层
IP协议向下互连不同的网络接口(称为IP over everything),向上可以为各种网络应用层提供服务,如TCP、UDP等(称为Everything over IP),在TCP/IP协议族里存在许多协议,但是TCP和IP协议是最常用的两个,因此总称TCP/IP协议族
TCP/IP协议族里,网络接口层是不定义实际的内容,这是为了互连所有不同的网络而选择的策略,为了便于学习,我们将网络接口层划分为数据链路层和物理层,形成五层的适于教学的原理体系结构
分层的必要性
分层是为了将计网中的庞大而复杂的问题转化为若干个较小的局部问题,这样易于研究和处理
如果是两台主机直连,那么我们就只需要研究采用什么样的传输媒体、什么样的物理接口,怎样的信号传输比特0与1,这里综合起来可以表示为物理层
而对于总线型的网络,也有需要解决的问题,比如主机编址问题、比特流数据区分问题、总线协调问题等,这些问题可以全部归结为数据链路层的问题
值得一提的是总线型网络已经过时了,目前都是使用路由器来连接多个主机了都
解决了物理层和数据链路层的问题我们就可以在一个网络中进行数据传输了,但是我们的因特网是有许许多多的不同网络相互传输数据的,因此我们还需要解决网络和主机的共同编址问题和转发分组等问题。一般来说,我们使用IP地址解决共同编址问题,IP地址前三位表示IP地址,最后一位表示主机地址。
上面的这些内容可以一起归结为网络层,解决了这些问题就可以实现在不同网络和主机间传输数据
但是每个主机中又有各个进程,要实现不同网络主机间的进程通信,我们还需要解决进程之间基于网络的通信问题和出现传输错误时的处理方式,这些问题统一是运输层的问题
解决了上面的问题之后,我们就可以进行基于相应协议来进行不同网络主机间的进程通信,进行通信需要一些特定的协议来进行,如HTTP、SMTP、FTP协议,这些协议问题统称为应用层
最后我们来看看各个层解决的问题的总结
分层思想举例
我们本节来具体讲下进程通信中主机和路由器上对数据进行分层处理的过程
首先主机上的应用层要发送信息时先构建一个HTTP报文并将其交由给运输层处理(后续都是往下交付就不赘述了)
在运输层中,往HTTP报文段中增加TCP首部使其成为TCP报文段,该首部作用主要是为了区分应用进程以及实现可靠传输
网络层添加IP首部使其成为IP数据包,IP首部的作用是使其可以在互联网上传输,也就是可以被路由器转发
数据链路层数据首尾各添加一个数据报使其成为帧,其首部的作用是能够让帧在一段链路或者是一个网络上传输,能够被相应的目的主机接收,其尾部的作用是让目的主机检查所收到的帧是否有误码
物理层往比特流中增加前导码,其作用是让目的主机做好接收帧的准备,同时物理层会将从上往下封装好的数据看做是一串比特流,会将比特流转换为对应的信号发送到传输媒体,通过传输媒体到达路由器
下图里左边是路由器,右边是服务器,可以看到路由器只有三层,这也符合我们上面说的点,其对数据做的处理就是转化和拆包,比如说物理层里是将信号转换为比特流,并将其前导码拆除交由数据链路层(这实际交付的是帧),数据链路层做的则是ETH首部和尾部的拆除并交付给网络层(实际交付的是IP数据报),网络层解析IP数据报首部找到厎网络地址并查询自身路由表确定转发端口之后重新往下对数据进行封装之后传输给服务器
传输给服务器后就是一顿从下到上连续拆包并且封装新数据返回到用户端,这里不再赘述了
专业术语
注意这里的专业术语来自于OSI七层模型,但是对其他的模型也是适用的,我们首先来讲实体
关于实体值得一提的事,只要两个内容是同一层的,不管其是软件还是硬件,都属于是对等实体
协议是人为约定的进行正确通信使用的协议,实际是在网络传输中是不存在的,是我们传输者要遵守的内容
协议的三要素分别是语法、语义、同步。语法的作用是定义交换信息的格式,比如说IP数据报肯定是有对应的格式的,如下图所示,我们不需要记住其数据报的格式样子,我们能看懂就行了
语义指的是收发双方都要完成的操作,比如说客户端和服务器的通信过程中都要做七层封装和拆包(这有点像协议)
同步定义收发双方的时序关系,注意这里的时序关系不是说是同时的,比如说TCP的三次握手,这里就定义了收发双方要执行的对应事件和时间和状态变化,这其实就是同步了
两个对称实体的逻辑通信使得其可以向上一层提供服务,每一层要实现协议都依赖下层的服务同时下层的协议对其是不可见的,对等实体间使用协议联系,是水平的,上下层之间使用服务联系,是垂直的
同一系统中相邻两次交换信息的逻辑接口就是数据访问点,感觉就是下层提供服务给上层时传过去的数据中要使用的内容,而服务原语指的是上层使用下层服务时的交换命令
服务数据单元SDU简单理解就是上下层之间传输数据时使用的数据报类型,值得一提的是数据报类型有时也和使用什么协议有关,多个SDU就是PDU
本章习题
OSI模型七层和作用是必须记的,最起码七层模型和74321层的作用得记得
OSI参考模型中传输层提供端到端服务,网络层提供主机之间的逻辑通信,数据链路层及金额分组在一段链路或者是网络上的传输问题,具体内容看下图
不属于网络体系结构的是协议的内部实现细节,这些细节是我们所不需要在意的内容
TCP/IP参考模型网络层提供无连接不可靠的数据报服务,要记住这个知识点就要求我们记住TCP/IP参考模型的图
在TCP/IP体系结构中,其实在网际层中除了IP还存在ICMP,IP为其提供服务,同时PPP是存在于网络接口层的协议,用于给IP提供服务
在OSI参考模型中,对话管理由会话层实现、路由选择由网络层实现、可靠数据传输由运输层和数据链路层实现、而数据格式转换由表示层实现
传输层(运输层)直接给会话层提供服务
POP3协议提供有连接可靠的数据传输服务,其是属于运输层的协议,默认使用协议是TCP,这也能解释为什么它是这样的传输服务,因为TCP就是这样的
这里答案是C,因为路由器只有三层协议、交换机两层、而集线器只有一层,这是OSI从下到上的排序来算的
这一题的算法就是原数据/原数据+额外开销数据,但是要注意这里除去了两层,所以额外开销是20*5=100
可以使用传输层无服务连接的应用层协议是DNS,因为其是UDP这种无连接的协议给其提供服务,反之像HTTP这种就肯定是有连接的,以为是TCP这种有连接的协议给其提供服务
下面是练习哦,认真读过书的都能做对我只能说,正确答案是BACDC
接着我们来学习时延的问题解决,下面有发送时延和传播时延的计算方式,处理时延一般忽略掉
链路带宽其实就是发送速率,一般用于计算发送时延,一般来说链路带宽越高,在单位时间内能到达主机的数据就越多,链路带宽决定了发送时延,而发送时延的次数取决于分组个数,传播时延由传播速率决定,一般来说,数据量不管多少传播时延都不会有变化
下面的习题里就直接把对应参数代入就可以计算出总时延
如果将距离减少为20M,可以看到发送时延是不变的,改变的是传播时延,这是当然的,因为发送时延的计算公式里根本没有距离这一项
如果连续发送N比特信息,那么发送时延要变为n倍,传播时延没有变化,这里的一个比特信息就可以理解为公式中的一个分组
之所以传播时延不会变化,是因为每个分组是连续发送的,当第一个分组的比特在经历传播时延的时候,第二个已经在发送了,实现了时间复用,最终经历的传播时延就只有一次
在下图的主机连接中,如果有N个分组,M段链路,则总时延是N个分组的发送时延和一个分组的发送时延*(M-1)和一个链路的传播时延M,N个分组的发送时延好理解,一个分组发送时延(M-1)是因为每经过一个链路就需要使用路由器转发一次分组,每经过一段链路存在一次发送时延,最后传播时延就很好理解了
下面这题里,电路交换需要经过建立时间,发送时延和传播时延,其和就是电路交换总时延,这个很好理解,而分组交换的时延则是对着公式写,P/b是一个分组的发送时延,x/p是分组个数,后面的很好理解了就不提了
习题二就是将上面的数据p替换成p+h,由于要求最小,所以要进行求导,这牵扯到数学真的有点恶心人了
这题的解题方式,由于忽略传播时延,所以报文交换只计算发送时延就行,而分组交换则还要额外加上一个分组的发送时延,原因上面说过了
注意分组交换在发送分组时同时还可以进行分组的传播,而报文交换则必须要全部接受之后才可以继续发送
下面这题的解题方式和上面一样,就不赘述了,但是值得一提的事,Mb转化为b是10^6,同时1B等于8b,计算时都是要转化过去再计算的
物理层
物理层下有传输媒体,分为导引型传输媒体和非导引型传输媒体,前者有双绞线、同轴电缆、光纤,后者有微波通信
物理层的每个协议都有四大特性,分别是机械特性、电气特性、功能特性和过程特性,我们学习物理层的协议时应该要去理解该层协议的整体特性而不是某一个协议的具体内容
物理层考虑的事怎样连接各种计算机的传输媒体来传输比特流,服务数据链路层且对上层透明
传输媒体
本节讲导引型传输媒体,注意本节的内容不属于任何一层,如果非要说属于那一层,那只能说是物理层更下一层
传输媒体分为导引型传输媒体和非导引型传输媒体,前者有同轴电缆、双绞线、光纤、电力线,后者有无线电波、微波、红外线和可见光,其实前者就是存在具体形状和内容的传输媒体,而后者则是无形的
同轴电缆价格较贵且布线不够灵活,随着集线器出现,在局域网领域基本已经被双绞线代替了
双绞线可以分为无屏蔽和有屏蔽两种,绞合不但能抵御外界的电磁波干扰,还能减少响铃导线的电磁干扰
光纤具有很多优点,如通信容量大、传输损耗小、体积小重量轻等,不过其最大的缺点还是贵
电力线没太听懂具体是啥,反正就是一些电力猫吧,了解即可
非导引型传输媒体中,我们是选择在一个特定频段的电磁破频谱来达到发送数据,也有其具体频道对应表
值得一提的事,无线电的频谱是有管理机构的
传输方式
传输方式有串行和并行传输、同步和异步传输、单向和双向交替还有双向同时通信
串行传输指的是发送一个个数据,并行传输多条线路同时发送数据,并行传输效率更高,但是成本也高
一般来说我们远距离传输时使用串行传输,在计算机内部里我们则使用并行传输
同步传输指的是收发双方传输的字节是没有间隔的,同步传输需要收方对比特信号中间时刻进行检测来正确按时钟接收数据,时钟的误差会积累,为了避免时钟误差,有外同步和内同步两种方式,前者是在收发双方添加一条单独的时钟信号线,收方根据该信号线的节奏来接收信息,内同步指的是发送端将时钟同步信号放到发送数据里一起传输
异步传输指的是字节之间的时间间隔不固定,不过每个比特收方接收的时间还是相同的,为了告知收方要接收比特了来实现字节接收时间同步,因此字节数据首尾都要加上起始位和结束位
单向通信指的是设备传输数据时只有一条固定方向的通信通道,广播就是采用单向通信,而双向交替通信,也就是半双工的通信,指的是有两条通信方向,但是不能同时传输数据,例如对讲机就是这样的。双向同时通信指的是有两条通信方向且能同时传输数据,电话就是这样的。注意除了单向通信有一条数据之外其他都有两条数据
编码与调制
文字、图片等信息称为消息,在计算机底层中被转译为二进制的数据,其是运送消息的实体,在计网上传输需要再次将数据转化为信号,其是数据的电磁表现,由信源发出的原始电信号称为基带信号
基带信号可以分为两类,分别是数字基带信号(计算机内部CPU与内存之间传输的信号)和模拟基带信号(麦克风收到声音后产生的音频信号),基带信号需要在信道中进行传输,前面两者都可以进行编码(仅对信号波形进行变换)和调制(把信号的频率分为转化到较高频段并转化为模拟信号)且最后得到的结果都是数字和模拟信道,编码后的信号可以在数字信道中传输,例如以太网使用的曼特斯彻等编码,把信号的频率分为转化到较高频段并转化为模拟信号称为调制,调制后的模拟信号可以在模拟信道中传输,如WiFi使用补码键控等,对模拟基带信号进行编码的例子时对脉码调制PCM,而对其进行调制的例子是将语音数据加载到模拟的载波信号中传输,例如传统电话
码元指的是不用离散数值的基本波形,简单来说就是数字信号的一段规则波形就是码元,一个信号一般由两个种类的多个码元构成
值得一提的是传输媒体和信号在严格情况下不能直接划等号,对于单工传输来说,传输媒体中只包含一个信道,而对于半双工或双工传输,传输媒体中要包含两个信道,如果使用信号服用技术,一条传输媒体还可以包含多个信道
一般我们都是将数字基带信号通过编码或调制的方法在相应信道上进行传输
带传输的比特流需要进行编码,常用的编码方式由不归零编码、归零编码、曼彻斯特编码和差分曼彻斯特编码,不归零编码表示0和1时永不归零,只在01那里跳,存在同步问题,一般不使用
归零编码指的是在0和1变化时会归零一次来解决同步问题,但是其编码效率太低
曼彻斯特编码在码元中间的时刻跳变,该跳变既表示时钟,又表示数据(如往上跳变表示1,反之表示0),传统以太网使用的就是曼特斯彻编码
而差分曼特斯彻编码比曼特斯彻编码变化更少,更适合较高的传输速率,其跳变仅表示使用,码元开始处电平是否变化来表示数据,比如两个码元之间往上跳表示1,不跳表示0
下面是编码题,10BaseT以太网使用的是曼特斯彻编码,我们直接进行假设解题就行
调制的方法有多种,不过都是基本调制方法,使用该方法一个码元只能表示一个比特信息,为了使得一个码元可以表示多个比特信息,我们可以使用混合调制
频率和相位是相关的,一次只能调制频率和相位中的一个
但是相位和振幅则可以一起调制,称为正交振幅调制QAM
在QAM-16中有12种相位,可以调制出16中码元,每种码元表示四个比特,注意码元与四个比特的对应关系采用格雷码,即任意两个相邻码元只有一个比特不同
当然,你会说这一节都是在讲些什么几把?我听不懂啊,这没关系,因为我也不太懂,差不多了解下就得了,过了吧
信道的极限容量
信号在信道中传输会产生失真,这个失真的原因可能是因为码元传输速率、信号传输距离、噪声干扰或是传输媒体中质量等
奈氏准则认为码元传输速率是有上限的,理想最高的码元速率为2W,最低为1W,W是信号带宽,单位为Hz
要提高比特率,就要让每个码元多携带更多比特,当然,这也不是说越多越好,因为极限传输速率还受限于信号在信道中传输时的噪声比
值得一提的是,实际信道所能传输的最高码元速率是明显低于奈氏准则的上限值的
香农公式可以计算带宽受限且有高斯白噪声干扰的信道的极限信息传输速率,其中值得一提的是S/N如果要使用db作为度量单位的话,要经过下图等式的转换
在信道带宽一定的情况下,想要提高信息的传输速率必须采用多元制(尽可能让一个码元带上更多的比特)和提高信道中的信噪比
下面我们来做题,频率带宽简单理解为信道带宽,奈氏准则告诉我们调制速度,也就是码元传输速率和比特率有关系,而比特率和W有关系,W又在香农公式中,所以是有关系的,最后答案就是D
题目给出W是3,而相位和振幅的乘积的2次开方就是每个码元携带的比特数,也就是说香农公式的第二个内容就是单个码元携带的比特数,之后照公式求结果就行
注意在无噪声情况下奈氏准则表示的是2W,所以波特率的实际值其实是2*3K=6
传输速率=波特率*每个码元携带的信息量,这里没有提振幅,那就默认是1,那么每个码元就携带两个信息量,这里提了数据传输速率为2400bps,也就是说传输速率==2400bps,传输速率就是c,之后参照公式就行
下面就是要注意了,由于提了信噪比为30db,注意信噪比表示的S/N需要转换单位,毕竟如果不是这样的话那这题直接用不就完了,所以我们需要使用公式求出S/N=1000,然后求出最大速率之后得到其一半就是我们需要的答案
注意在无噪声情况下奈氏准则表示的是2W,接着我们用奈氏准则和香农公式各自计算出结果然后构建不等式即可求出答案
同时要注意,在无噪声情况下的2W是只针对奈氏准则的,香农公式下的W是不会因为有无噪声变化的
本章习题
这题看定义就行了,不多赘述
接口形状属于是机械特性的一种、功能特性属于是引脚功能的一种、信号电平属于是电气特性,物理地址属于数据链路层的范畴,一般我们都称为MAC地址,因为说物理地址容易让人误会是物理层的内容
下面的题目都讲过了,就不提了
这一题就要记住了,NRZ是不归零编码,也就是No Return Zero,RZ是归零编码,就是Return Zero
数据链路层
数据链路层中链路指的是两个节点间的物理线路,不过其中不能有其他交换节点,把传输时要使用的通信协议、硬件软件都加上去就是数据链路,数据链路层是以帧为单位传输和处理数据的
封装成帧的意思时数据链路层会将网络层传下来的数据进行进一步的封装,往数据的首尾加上帧头和帧尾
差错检测指的是封装成帧中会在帧尾加上使用算法计算得到的数据,收方收到数据时会同样调用该算法计算,若一致则说明没问题,反之则说明数据出现了差错
如果提供的是不可靠传输,那出错了就出错了,但是提供可靠传输时就要让发方重新发送数据直到正确接收到为止
值得一提的是我们上面的例子是使用点对点信道的数据链路层距离的,在使用广播信道的数据链路层,也就是共享式局域网中还有其他问题,最简单的问题就是剩余主机怎么知道这个帧是发送给自己的,解决方式我们都知道,就是把目标地址也加到帧上,在帧头中就存在目的地址和源地址的数据
在共享式局域网中,如果发生了数据碰撞,可以使用CSMA/CD协议,也就是载波监听、多点接入/碰撞避免来解决
值得一提的共享式局域网都不怎么用了,基本都用交换式局域网
不过无线局域网内部还是使用广播式信道,同样解决冲突的方式也是使用CSMA/CA
封装成帧
注意,对于不同的帧,其格式也是不同的,比如MAC帧和PPP帧的格式就不一样,不过帧头帧尾是一样的
帧头帧尾的重要作用是帧定界,对于PPP格式的帧来说,在帧头和帧尾中都有一个字节作为标志位提示收方的数据链路层可以接收数据了,不然物理层的一串比特流是真不知道怎么接收好
但是并不是所有帧都有标志位,比如以太网V2的MAC帧就没有,其是通过物理层添加前导码使得接收方的时钟同步,后面的1字节内容是帧开始定界符,告诉收方后面的就是帧了,可以开始接受了
同时在以太网中规定了帧间间隔为96比特时间,由于有固定的比特时间,所以MAC帧并不需要结束定界符
如果传输数据时出现了和标志位或者是帧头帧尾一样的数据,则会在其前加上一个转义字符令收方知道后面的内容虽然一样,但是只当为数据,以第一个转义字符出现时为准,这种填充方式称为字节/字符填充
而面向比特的物理链路则使用的比特填充方法,发送前先对数据进行扫描,将连续的五个1前面都加一个0,收方接收到时也先扫描,去除该0之后记录该位置就知道哪些内容是需要将其作为数据处理的了
下题很简单选A
最后值得一提的是,为了提高帧的传输效率,我们应当使得帧的数据部分尽量大些,当然,一般来说数据链路层也是有规定大小上限的,这就是最大传送单元MTU
差错检测
计网中使用差错检测码来检查传输比特时是否发生了偏差,传输错误比特所占总比特的比率称为误码率,也就是BER
可以使用奇偶校验码来检测数据是否错误,其原理是统计数据中1的个数,使用奇校验时,若为1的个数为偶数则添加一位1,反之则添加0,使用偶校验则相反(不过注意其原理其实是加上一位1使得整个数据的1的个数为奇/偶数),收方接收到之后也进行一次排除校验位的同样的计算,最后得到要添加的结果发生改变,则说明出现误码
但是这个校验很没用,因为一旦出现两个误码就检测不出来,鉴定为纯纯的垃圾,计网中基本不用
一般我们都是用循环冗余校验CRC来进行差错校验,发送方和接收方先约定一个生成的多项式
发送方的处理是先生成多项式的各项系数的比特串,然后将待发送的数据加上多项式最高次项个0,令后者除于前者,得到的余数就是要发送的校验码
而接收方的处理是将接收的数据加上余数之后除于多项式,余数为0则无误码,反之则有
下面是常用的生成的多项式,这里我们要注意的是,生成的多项式有些项是省略的,此时我们也需要将其加上,当其系数为0时就是0可以省略了,所以加上其系数0就行
这里值得一提的是,我们使用除法时其实是在做二进制的异或运算,两个数字相同就取0,反之取1,而当我们需要下放被除数时,就就比对当前的被除数和被除数谁大谁小,若除数大则补0,反之补1
我们这里是要求余数,所以我们要往被除数加上生成多项式的最高次项个0
而判断传输是否有误码时则不需要往被除数加上生成多项式的最高次项个0
最后值得一提的是检错码只能检查出错误,并不能定位和纠正错误,如果想要实现纠正错误的效果,需要使用纠错码,但是这样成本太高,不如重新发一个,所以计网一般都是使用检错码而不是纠错码
可靠传输
我们之前说过要提供可靠传输服务,那么如何实现传输服务呢?一个简单想法当然就是让收方发送一个重发提示数据让发方重新发一次,那要是发送的重发提示数据出现错误了呢?所以说这个其实很复杂的,我们这里就只做一个基础认知,不做深入学习
一般情况下有限链路的误码率比较低,因此不需要提供可靠传输,真出问题了上层会处理,但无线链路就反过来了,误码率较高,必须向上层提供可靠传输服务
注意比特差错只是传输差错中的一种,其还包括分组丢失、分组失序、分组重复这三个问题,我们这里将帧管叫分组,是因为只有数据链路层分组是帧,但是传输差错并不局限于数据链路层
- 分组丢失指的是分组数据传输时由于路由器拥挤等情况被丢弃导致的问题
- 分组失序指的是分组数据传输到目标节点中时的顺序和发送时的顺序不一致
- 分组重复指的是第一个发送的分组可能滞留在某个服务器导致发方错误重发了多的一份数据,之后两份相同的数据最后都到达了目标节点
注意IP向上提供的是无连接、不可靠的传输服务,同时其他各层可以选择是否要实现可靠传输。一般来说,可靠传输的开销比较大也比较复杂,一般要使用时必须确定应用有这个需求再实现
停止-等待协议
我们这里来介绍实现可靠传输的三种协议,我们首先介绍停止-等待协议,简称SW,注意这三种协议的实现的原理并不仅限于数据链路层,所以学习的时候推荐跳出某一层,放眼到整个计网中来这样比较好
SW协议存在确认和否认机制,当数据传输到接收方时,如果正确接收则发送ACK到发送方,发送方收到之后才能传输下一个数据,如果收到的数据有误,那么返回NAK给发送方,这样发送方会重发数据,同时发送方只有收到接收方返回的信号之后才能进行数据传送或者是重发(这个机制导致发送方的数据必须收到了接收方的确认信号之后才能进行下一步操作)
同时存在超时重传机制,如果发送方在一定时间内没有收到接收方发送的确认信号,则会重新发送一份数据给接收方,重传时间一般设定在从发送方到接收方的平均往返时间比较好
为了解决数据重复的问题,还存在确实丢失的机制,发送方发的每一个分组数据都带上序号,由于在SW协议里,发送方必须要等到接收方的确认信号才可以发送下一个数据,因此只要保证每次发送数据和上一个数据不一样就行,可以直接用一个比特01来编号足够
同时接收方发送的数据也存在编号,这个机制叫做确认迟到,用于解决发送方怎么知道传输的确认信号是处理哪个数据的问题,确认丢失的则是接收方的数据辨别问题
接收端检测到数据分组有误码时可以丢弃等待发送方重传,也可以发送NAK分组回去令其尽快重传,同时重传时间在运输层中由于端到端的往返时间难以确定,因此设置合适的重传时间并不容易
SW协议的信道利用率由发送数据的时延TD,确认信号往返时间RTT,确认信号发送时延TA三个组成,这里只有TD是目标数据,那么就可以根据此获得其信道利用率的公式,由于TA远远小于RTT和TD,因此可以忽略不计,从公式中我们可以得到了,当往返时延RTT远大于RD时,信道利用率会非常低
这题可以说是轻轻松松,同时也是我第一个自己第一次做出来的题,呜呜,真的是太不容易了,言归正传
总之只要设置TD为x/v,v表示传输速率,然后代入公式就行了
回退N帧协议
SW协议的信号利用率很低,为了解决这个问题我们可以采用流水线传输来提高信道利用率,其指的是就是在规定时间里直接传输多个数据,这样在相同时间里后者的信道利用率显然高于前者,而这就是我们这次要将的回退N帧协议,也就是GBN协议的最基本原理
GBN协议发送时现需要确定接收方的滑动窗口大小,一般来说滑动窗口最小大于1,最大不大于其构成一个分组的比特数量的二次幂-1,如果其取值为1,那么就表示是在使用SW协议,本例中我们取值为50
在发送时,发送方只允许发送滑动窗口中包含的数据,而不能发送不包含的数据,区分的方法是给每个比特加上序号,超过一个分组之后就归0,而接收方只允许一个一个比特来接收分组数据
如果没有差错,那么接收方会返回确认码,发送方收到确认码之后会让其发送窗口会往前进对于位置继续发送,同时会从缓存中删除发送过的窗口内的分组数据
在GBN协议中存在累计确认机制,也就是说接收方不一定要对收到的数据分组进行逐个确认,他可以发送ACKN来表达序号N以前的所有数据都接收到了,简单来说就是他确认到那就发送哪个数据的ACK码都行,这取决于具体实现
他的好处就是在某些情况下即使确认分组丢失,发送方也不必重传,比方说其返回一个ACK1和ACK4的确定码,ACK1丢失了但是ACK4到达了发送方,那么发送方仍然会正确让自己的窗口移动到4之后的位置
在有差错的情况下,接收方发现哪个比特有差错就丢弃该比特,无论是误码还是分组顺序有问题都会丢弃,同时丢弃几个比特就返回几个错误码,错误码的数字指定为上一次接收的分组的最后一个比特的信号上
值得一提的是,发送方是可以在收到一定量个重复确认的错误码之后直接重传的,不用等超时计时器,具体几个要看协议内部的具体实现
重传时会令窗口重新发上一次接收到的窗口的数据,也可以理解为回退,毕竟效果上就是回退到指定位置继续发送,回退的位置就是一个分组所包含的比特的数量,也就是N,这就是回退N帧协议GBN名字的由来
同时一个数据的误码会令其他码也不被接收,这就导致当通信线路质量不好时,该协议的信道利用率不比SW协议好多少
如果说W的取值超过了取值氛围,那么就会导致接收方无法分辨新旧分组,是非常致命的问题
最后是本章总结,自己看吧
最后来做一题,这题其实很简单,总之是要记住发了七个,是从0开始算实际发了八个就完了
选择重传协议
GBN协议的信道利用率在通信质量不好时也不咋地,因为只要一个比特出现了误码,其他比特也会因为序号不正确的问题被退回,为了解决该问题,可以只重传出错的比特,接收方不只是接收一个,而是将无误的比特全部接收,这就是选择重传协议,也称SR协议的基础原理
同时注意由于SR协议的特性,因此本协议中不采用累积确认,而是逐一确认
发送方的窗口定义跟GBN协议一样,但是接收方的窗口大小则必须限制在比发送窗口还要小的定义下,如果为1则为GBN协议
接收方接收几个比特就返回几个比特对于的序号的确认码回去,但如果有一个误码导致后面的接收了而前面少了一两个,那么接收方的滑动窗口也不会移动,但是收到了没序号问题的比特,哪怕后面的还没收到也会直接前进到没收到的位置,因为只要保证前面的序号是正确的就可以移动接收方的滑动窗口,同时移动之后的新比特也会迅速进行发送,这样做好处显然就是增加信道利用率
发送窗口收到确认码之后的处理也是一样的,对于已送收到确认码的序列,只要前面是正确的,那么就移动滑动窗口,如果是序号后方的收到了确认码,而前方没有,那么就只进行确认收到的标记,而不移动窗口,毕竟前面还有一个没收到
接收方会直接丢弃误码,这就导致发送方重发数据只能等到超时重发,只有等到发送方收到接收方发送的确认码之后才能不继续重发,注意这里接收方收到的确认码每一个就只能代表一位比特,而不是像之前那样由最大的比特决定前面的比特
最后我们来看看本节总结
最后我们来看做一题,还是比较简单的,就不多提了
点对点协议PPP
点对点协议PPP是目前使用最广泛的点对点数据链路层协议,用户连接ISP就是使用PPPoE协议,简称PPP协议,同时PPP协议也用于广域网链路中的路由器连接中
PPP协议在1992年就已经指定,现已经成为因特网的正式标准
PPP协议主要由三部分构成,第一部分是提供封装方法,可以用于将上层传输的数据封装成帧,第二部分是链路控制协议LCP,主要用于建立配置测试数据链路层的连接,最后是一套网络控制协议NCPs,其中的每一个协议都是为了支持不同的网络层协议,比如IP、IPX、AppleTalk协议等
PPP协议的帧头中有FACP四个字段,其中F是PPP的定界符,取值为0x7E,AC字段目前都没什么用,预留而已,P字段用于指明帧的数据部分交由哪个协议处理,0x0021、0xC021、0x8021分别表示IP、LCP和NCP
帧尾有FCS和F字段,F不多提,FCS是帧检验序列,里面的数据是用CRC计算出的校验位
其实现透明传输的方法是对数据位和其他指定数据标识相同的数据添加转义字符或比特0,具体插入哪个取决于该其是面向字节的还是面向比特的
在面向字节或比特的链路的处理中,都会按照固定的规则对数据进行处理,然后接收方对接收到的数据做反变换就可以得到帧原来的数据
PPP实现差错检测的方式是使用CRC-CCITT的公式进行计算得到最后的结果,由于直接用算法计算出结果效率太低,所以一般在数据链路层都是用查表法实现的
同时PPP提供不可靠传输服务,如果遇上误码,会直接丢弃该帧
最后我们来看看PPP协议的建立过程
媒体接入控制
如果说多个主机连接在一条线型的传输媒体中,那么如果出现两个主机同时发送数据情况,就很可能会碰撞,那么共享信道就是要着重考虑如何解决这个问题,这就是媒体接入控制MAC,其氛围静态划分信道和动态接入控制,前者还可细分为频分多址、时分多址、码分多址,后者可以细分为受控接入和随机接入,前者已经被淘汰了,我就不提了
静态划分信道的方式需要预先固定分配好信道,这类方法非常不灵活,一般用于无线网路的物理层
而随机接入指的是所有站点通过竞争所及在信道上发送数据,如果发生了冲突那就全部数据都发送失败,而随机接入这类协议要解决的问题就是如何避免冲突以及发生冲突之后如何恢复通信
现在点对点链路和链路层交换机基本都不采用共享式局域网了,都用交换式局域网,不过在无线局域网里仍然使用共享媒体技术,这是因为无线信道的广播特性
静态划分信道
静态划分信道是一种可以用于解决传输媒体中冲突的方式,复用指的是通过一条物理线路同时传输多路用户的信号,这样可以充分利用传输媒体的带宽,解决传输媒体的冲突
这里我们来介绍四种复用技术,先来介绍频分复用FDM,其指的是当多路信号传输到路由器时,复用器将每一路信号都调制到不同的频带上,最后通过分用器将信号恢复并传输到对应的目的位置上
频分复用的用户同时占用不同的频带资源并行通信
而时分复用TDM是将一个时间分为一个个时隙,一定的时隙组合称为一个TDM帧,每个TDM帧中都会分配固定的时隙给每一个主机用于通信,每一次主机拥有的通信时间和两次可以通信时间的间隔(这个间隔时间就是TDM帧的长度)都是固定的
对于时分复用而言,其下的所有用户在不同的时间都占用同样的频带宽度
波分复用WDM是将多路不同的光载波经过光调制器之后不同大小的波通过光复用器统一到一条线路中,由于进行了统一所以传输速度是前面所有的波传输速度之和,同时由于传输速度非常快,因此往往放大器和其他装置都很大,最后通过光分用器将统一的光波转化为之前的多路光载波
码分复用CDM是另一种共享信道的方法,由于其多用于多址接入,所以一般对其的名称是码分多址CDMA,同样FMD和TDM都可以用于多址接入,分别称为FDMA和TMDA
简单理解复用和多址,可以理解为前者是将单一媒体的频带资源你划分为多个子信道,而多址则是动态分配信道给用户
CMD的每个用户可以在同样的时间内使用同样的频带进行通信,各用户使用不同码型,因此不会有干扰
在CDMA中,每一个比特时间划分为m个短的间隔,称为码片,通常是64或128,我们这里设定为8,每个CDMA的一个站都会被指派一个唯一的mbit码片序列,如果其要发送比特1,则发送其自己的码片序列,若要发送比特0,则发送其码片序列的二进制反码即可
我们习惯上为了方便会将码片的1写为+1,0写为-1
码片序列挑选是有原则的,第一个原则是码片序列必须各不相同,其次是每个码片序列必须相互正交,也就是规格化内积为0(这个简单理解就是两个码片相乘的结果必须为0),下面有很多字母的公式了解就行
比如下面的习题,我们要检查其分配生会否正确,那么我们就只要看其是不是正交,将其序列转化为+1-1然后相乘之后除于码片数8,可以得到其结果不为0,也就是规格化内积不为0,那么就不符合相互正交,所以分配不正确
然后我们通过应用举例,接收站D如果想要知道其他各站发送的码片序列,只需要将接受到的数据乘以发送站的码片序列即可,结果为1则发送了比特1,-1则是比特0,为0说明没发送
下面的题就很好解决,直接拿接收的结果和ABCD站的码片序列相乘之后除于码片数得到的结果来判断即可
而下面这题要注意的是,这题的接收到的序列有十二位,记得按照ABC的顺序手动分割一下
CSMA/CD
我们上面讲了静态划分信道,现在我们来讲动态划分信道的内容,我们首先来讲CSMA/CD,也就是载波监听多址接入/碰撞检测,其主要用于解决共享式局域网中的传输信号发生碰撞,也称冲突的问题
多址接入MA指的是多个站连接在一条总线上,竞争使用总线,而载波监听CS指的是每个站发送帧之前要检测一下总线上是否有96比特的空闲时间,有则发送,反之则等待并继续检测
这个96比特时间就是发送96比特数据需要花费的时间,又称为帧间最小间隔,作用是可以使得接收方可以检测出一个帧的结束并且使其他站点都有机会公平竞争信道并发送帧
碰撞检测CD指的是一旦总线上出现冲突,那么主机会立刻停止发送,等待一段随机时间之后再发送
比如在下面的例子中,多个主机连接到一根总线上,那么就满足多址接入MA,主机B要发送数据,检测总线上有无帧间最小间隔空闲,有则发送,这是载波监听CS,之后B继续检测是否发生碰撞,无则继续发送剩下的帧,有则停止发送并退避一段时间,这就是碰撞检测CD
同时注意,CD是发生碰撞之后返回给主机主机才能检测到,不是说发送碰撞时候主机立刻就能检测到,比方说下图里碰撞发生的位置离C近,那么C就会比B更快检测到碰撞并且停止发送一段时间,同时以太网有时还会采取强化碰撞的措施,简单来说就是除了停止发送帧外还会继续发送32或48比特的认为干扰信号用于保证所有站点都能检测出碰撞
同时载波监听CS并不是说有了他就会保证没有碰撞,因为可能B和C同时进行CS发现空闲发送或者是B还没发到总线上C进行CS发现空闲,这些情况都会错误导致主机以为有空闲可以发送,最终导致冲突
// TODO 需要知道上面这一段的论述是否正确
接下来我们来讲解争用期,也就是碰撞窗口的概念,首先设定以太网中从左到右的单纯传播时延为τ(这不是t,这是tao,τ,一个符号),δ指的意义并不明确
// TODO 后续需要得知δ的意义
由于主机最多经过2τ就可以检测出本次发送是否遭受了碰撞,因此该时间就被争用期或碰撞窗口,后续我们都称为碰撞窗口
由于共享式以太网只有一条总线的特性,为了避免碰撞,因此共享式以太网不应连接太多主机,同时使用的总线不能太长,一般来说,规定总线长度不超过2.5KM
下面的例子中,如果主机A要发送一个很短的帧,那么A主机发送完毕之后就不再对帧进行碰撞检测,那么如果A发送的数据到C中发生了碰撞,那么由于A不再进行碰撞检测,那么就会导致A误认为该帧已经发送完毕因此不会重发数据,出现这个问题是因为以太网的帧长太短
为了解决这个味恩替以太网规定最小帧长为64字节,也就是512比特,这个比特时间就是碰撞窗口,如果发送的数据太少,那就要加入填充字节,最小帧长保证了主机在帧的发送完成之前就可以保证检测到该帧的发送过程中是否发生了碰撞,同时凡是长度小于64字节的帧都是由于碰撞导致的无效帧
当然,帧太长也不行,所以一般来说最大帧长也是有限制的,不同的真有不同的最大长度,不过最小长度反正都是肯定保证在64字节以上的
退避时间使用基本退避时间也就是碰撞窗口*随机数r,这里的r是一个离散集合,具体内容可以看下图
如果连续发生碰撞,那么退避时间会因为算法而不断增加,这种规律也被称为动态退避,以此来减小发生碰撞的概率,当重传16次仍不能成功发送帧时,那么就会丢弃该帧,同时向上层报告
CSMA/CD的极限信道公式在下图,其中我们是考虑理想情况,因此退避时间是假设没有的,那么根据公式,为了提高信道利用率,我们要让以太网的端到端的长度尽可能少些,发送的帧长尽可能长些(当然是在不影响正常功能的情况下)
接着我们来看看其帧发送流程,没啥值得说的,自己看吧
然后是接收帧的流程,这里要经过三次判断才会正常接收帧,分别是帧是否太短,地址是否正确,校验是否正确
接着我们来坐坐题目,注意适用于无线网络的协议是CSMA/CA协议,这个协议我们下章节会细讲,最小帧长通过争用期*数据传输速率即可求得,D通过公式就可以得知其是正确的
这一题最难的有两点,第一点是需要设出两个未知数,第二是单位转换,我们这里设置两站点的距离为d,最小帧长为l,单位分别为m和b,那么根据公式代入即可,注意km/s==1000m/s,1G==10^9b
下面这题,看似复杂,其实只要读懂题目,两分钟不用即可解决,最短碰撞时间是在两个信号在中间的时候发生碰撞,同时t=s/v,s=2km,v=2*10^5km/s,中间碰撞时间我们只用计算一个的,那么一来一回就是2km,根据公式即可得到结果为0.01ms
第二题的最久时间就是在第一个主机的信号发到第二个主机上时发生碰撞,那么一来一回就要4km,其他不变,代入上式即可求出结果
CSMA/CA
CSMA/CD协议多用于广播信道的有线局域网,而在广播信道中,多用CSMA/CD协议,这是因为碰撞检测CD在无线信道中如果要实现对硬件要求很高,而且即使实现了,因为存在隐蔽站问题,实现的意义也不大
隐蔽站问题指的是两个作用范围一定的站,都能够影响到同一个主机而两者之间不能互相影响,此时该两站就被称为隐蔽站,隐蔽站问题会导致发送主机无法检测到碰撞
802.11无线局域网一般使用CSMA/CA协议,其有碰撞避免CA功能,而且由于无线信道的误码率较高,因此一般该无线局域网还使用数据链路层的确认机制,也就是停止-等待协议来保证数据被正确接收
同时在其MAC层在定义了DCF和PCF两种不同的媒体接入控制方式,前者是默认方式,后者是可选方式,在实际使用中较少
无线局域网中所有站点必须检测到信道空闲一段时间之后才能发送帧,同时帧间间隔的长短主要取决于其要发送的帧的类型,常用的帧间间隔有SIFS和DIFS两种,前者用于分隔开一次对话的各帧,后者用于在DCF方式中发送数据帧和管理帧
然后我们来看看该协议的工作原理,可以看到其首先检测到信道空闲之后就在发送数据,这么做事因为可能有其他的站有高优先级的帧要发送,先等待DIFS帧可以让高优先级的帧先发送
发送第一个帧,目的站接收到之后又还等待SIFS时间后再发送ACK确定帧,这样做事因为一个站从接收转为发送的方式最少需要SIFS时间,这样做用于让源站进行接收方式的转换,注意如果源站一定时间内没有收到ACK,那么就会重发数据
其他站想要发送数据,那么就需要检测信道状态,信道盲则进行退避,反之则等待DIFS时间后再退避一段随机时间之后再发送数据,等待DIFS是为了让高优先级的帧先发送我们就知道了,那么为什么还要再等待一段时间呢?这样还是为了避免多个站点同时发送数据导致发生碰撞
信道检测算法不使用的情况只有检测到信道是空闲的且所发送的数据帧不是成功发送玩的上一个数据帧之后的下一个帧,其他情况简单记为都要用即可
退避算法会随机设置一个退避时间,退避时间的变久的概率随着退避次数的增加而增加,但是第六次之后就不再添加
注意退避时间会在信道处于闲状态时进行计算,反之则冻结,所有的退避时间都是同时减少的,在DIFS一类的等待时间中退避时间不计时
CSMA/CA协议可以进行信道预约和虚拟载波监听,信道预约指的是源站可以通过发送短的控制帧来向目的站进行预约来发送数据
首先源站会对目的站发送RTS帧进行预约,目的站如果确定信道空闲则会返回CTS帧,其包括这次通信的持续时间,注意RTS中也有,CTS的时间就是从RTS中拷贝过来的,在预约主机使用信道期间,其他站将无法使用使用信道,由于RTS一类的帧很短,发生碰撞的概率也很小,因此用其对信道预约往往是值得的
除了RTS和CTS帧之外,数据帧也会携带通信所需要的持续时间,这个机制称为虚拟载波监听机制,该机器能减少隐蔽站带来的碰撞问题,因为他们三个都有持续时间,那么站点要知道信道什么时候空闲就只需要监听这三中的任一个就可以了
最后来看看三道题,太简单了我就不多说了,自己看吧
MAC、IP地址与ARP协议
接下来我们介绍MAC地址、IP地址和ARP协议,MAC地址属于数据链路层,其是以太网的MAC子层所使用的地址,IP地址和ARP协议属于网际层,前者是TCP/IP体系结构所使用的地址,后者用于通过IP地址获取设备的MAC地址
值得一提的是,尽管IP地址和ARP协议属于网际层而不是属于数据链路层,我们这里还是将其放一起讲因为他们的关系非常密切,我们要理解就要一起讲
MAC地址
首先,如果直接两台主机直接通过一条传输媒体相连且无其他主机,也就是使用点对点信道,那么在数据链路层根本就不需要使用地址
而在其他网络中,就需要在数据链路层中使用地址来区分各个主机
MAC是每个主机的唯一标识,有时也被称为物理地址(但不属于物理层)或硬件地址,但严格来说MAC地址应该是网络上各个接口的唯一标识,因为每一个网络适配器都是有一个全球唯一的MAC地址,而一个主机可能会有多个网络适配器
主机发送帧时必须将源MAC地址和目标MAC地址都存放到帧中,这样好用于接收的主机得知数据是否是发给自己的,好接收
下题就很简单了,物理地址也就是MAC地址不属于物理层,所以答案选C
MAC的地址格式由组织唯一标识符OUI(这个标识符需要向IEEE申请)和网络接口标识符(由获得OUI的厂商自己分配)组成,一共有48个比特,每8个比特组成一节,称为第X字节,表示的时候一般就是将其分为六字节,每字节分两段,每段用十六进制表示,还有其他不同的表示方式,不过无非是格式有变化,本质不变
第一个字节的倒数第二位比特0表示全球管理,反之则表示本地管理,倒数第一位0则表示单播,反之表示多播,所以一共有四种类型的MAC地址,同时如果46位比特全为F,则表示其为广播地址
有个简单方法来快速发现MAC地址是否为多播地址,只要将第一字节第二个16进制数除于2,若有余数则为多播,反之则为单播
尽管说MAC地址总共有280多万亿,但是目前来说由于太多了,所以也是有可能会用完,所以IEEE推荐现在使用EUI-64的MAC地址
MAC地址的发送顺序在字节上是从第一字节到第六字节,在比特上是从b0到b7
单播MAC地址组装帧时要加上自己的MAC地址和目标MAC地址再加上数据再发送(你可能会说这个结构太简单,确实是太简单,不过我们这里主要是复习用,不用太细究这些细节),目标主机接收到帧之后将自己的MAC地址和帧的目的MAC地址进行比对,若是则接收,反之则丢弃
而对于广播MAC地址,接收到的主机检查帧的目的地址时发现其全为F,那么就位广播MAC地址,此时直接接收即可
如果是多播MAC地址,那么主机接收到帧后检查帧的第一字节的第二位十六进制数的最后一位二进制数据是1,则为多播MAC地址,此时将该MAC地址与自己的多播组列表进行比对,有一个比对成功则接收,反之则丢弃
注意给主机配置多播组列表时,不能使用共有的标准多播地址,具体可以百度查询
由于不确定阿美会不会根据MAC地址跟踪用户,因此目前很多新设备都使用随机MAC地址了
IP地址
IP地址具体来说是网际层的内容,只是因为其和MAC地址关系紧密,所以我们放一起来讲,我们本节主要讲IP地址的作用,其他内容我们放到网际层中慢慢说
IP地址是因特网上主机和路由器所使用的地址,用于表示网络编号和主机编号两部分信息,一般来说,前三位是网络编号,用于表达一个唯一网络,最后一位是表示该网络上的主机
在网络体系结构中,网络层给数据添加首部时会在其中加入IP地址,而数据链路层中的链路层首部中则会加入MAC地址
再数据包的转发过程中,IP数据报存放源主机和目的主机的IP地址且不会变化,而在帧中则会存放发送和接收主机的MAC地址信息,这个地址则会随着链路变化
可以知道此转发过程中,转发的路由器最终只知道目的主机的IP地址而不知道其MAC地址,那么要如何准确将数据传输到该主机上呢?这就是下一节ARP协议要解决的问题了
最后我们来看个题目,这题就很简单了,MAC地址直接写其发送的接收方和发送方的即可
ARP协议
ARP协议可以通过IP地址获得目的主机的MAC地址
其原理是每一个主机都存在一个ARP高速缓存,其下有IP地址和MAC地址的对应关系,当获得数据报时王高速缓存中通过IP地址寻找MAC地址
如果没有找到对于的MAC地址, 那么其会发送ARP请求报文,这是一个广播帧,内部有源主机的IP地址和MAC地址以及想要得到目的主机的MAC地址的IP地址,共享信道上的所有主机都会获得该帧,其会比对该帧请求的IP地址,不是自己的就不予理会,是自己的则将该主机的IP地址和MAC地址记录到ARP高速缓存表中并发送ARP响应以告知源主机自己的MAC地址
同样也是所有主机都会受到,收到不符合的也是直接丢弃,符合则记录
ARP高速缓存表中有两种类型的记录,一种是动态,一种是静态,前者是自动获取,生命周期默认两分钟,之所以有生命周期是因为主机的MAC地址是可能会变化的,而后者是手工设置的,不同操作系统下的生命周期不同
最后ARP只能一段网络或者是一段链路中使用,简单来说就是不同网络中的两个主机是不能得到对方的记录的
最后ARP除了请求和相应外还有其他类型的报文,而且由于其没有安全验证机制因此存在ARP欺骗问题
集线器和交换机
早起的总线型网络,也就是共享性网络,发生碰撞可能性高而且硬件还不怎么可靠,已经被淘汰了
后续出现了使用集线器连接以太网的星型以太网,其在逻辑上仍是总线网,使用CSMA/CD协议,同时集线器只工作在物理层,一般有少量的容错和网络管理能力
一个集线器和一定数量的主机可以组成冲突域,想要多个冲突域联合起来,继续网上加集线器就行
集线器在转发单播帧时会将帧转发给所有的主机,由主机判断是否要接收,而交换机则不用,其直接转发给目标主机,显然交换机要比集线器更好
交换机一般有多个接口,且是全双工的工作方式,可以同时连通多个接口的同时还无碰撞,一般工作在数据链路层,也包括物理层,主机发送帧时交换机通过使用目标MAC地址查询内部的帧交换表得知目标主机的接口位置,传到该接口位置即可,帧交换表的记录是通过自学习算法建立起来的
帧在交换机中有两种转发方式,分别是存储转发和直通交换,后者的转发效率较高,但是缺点是其不会检查帧是否有差错
对比集线器和交换机,其在广播发送上的结果虽然没区别,但是在单播上有明显优势,首先其只转发帧到目标主机,其次是不会发生碰撞
在连接出来的共享式局域网中也种不全部转发的优势也很大
广播的效果一致,说明无论是集线器还是交换机,他们的组成的共享式局域网都在一个广播域内
交换机不会发生碰撞,而集线器组成的网络会
综上,如果有两个集线器组成的网络又要连接他们,那么我们推荐还是使用交换机来相连,因为这样只扩大了广播域,也就是两个网络可以相连,但是又隔离了碰撞域,也就是不会发生冲突
下面是本章总结,值得一提的是,因为交换机真的太好了,所以集线器基本都被淘汰不用了
交换机的自学习和转发帧
交换机工作来数据链路层和物理层,其通过MAC地址在帧交换表来寻找对于的接口号来转发帧,其中帧交换表的就建立通过自学习算法建立
下面我们来讲解这个建立的过程,首先A发送B帧,那么进入1时就先登记A1,由于此时找不到符合的接口,那么其就会把数据传给所有接口,由接口自己判断是否是符合的数据,这个过程称为泛洪,转发到B中被成功接收,之后B会发送一个帧到A中,那么当其发送时就会登记B3,此时就成功登记接口,同时泛洪导致数据传入交换机2,首先进入2时登记A2,发送主机是A,而进入接口是2,因此如此登记
第二次B发送A,由于已经登记过了,所以会直接明确转发到对于接口,而对于2来说收不到所以也无法登记
第三次E发送A,2首先E3,到A之后会登记E4,之后明确转发到A
如果G和A共享一个接口的总线且G要发送数据给A时,数据从G发送还没进入到交换机中就已经被A收到了,A确定是自己的就收下,到交换机中还是老样子没登记的先登记,转发时发现要传输的接口就是发送过来的接口,出现这种情况交换机就直接丢弃该帧
同时帧交换表中的每条记录都有自己的有效时间,过期就会被清楚,这是因为MAC与交换机的接口的对应关系是会变化的
下面我们来做习题,下面这题就是依葫芦画瓢了,没啥值得提的,自己看吧
这题肯定是物理地址了,首先肯定是目的而不是源,其次我们使用的是MAC地址,MAC地址又称物理地址,所以我们这题选A
下题的转发端口指的是转发数据时发给了哪个端口,显然第一次泛洪发给了2,3,第二次有准确MAC地址所以发给了1
生成树协议STP
为了提高以太网的可靠性,往往会往以太网中添加冗余链路,但是这样方式会形成网络环路,会造成广播风暴和交换机的帧交换表震荡问题
为了解决网络环路问题,以太网交换机使用生成树协议STP,无论交换机采用何种物理连接,其都会根据算法通过阻塞一些链路来构建出逻辑上连通整个网络而又没有环路的网络,中间如果有哪个链路出了问题,那么生成树会重新生成一个,照样可以继续完成整个网络的通信
内部算法我们就不提了,不是重点,知道就行
虚拟局域网VLAN
随着以太网规模的扩大,以太网的广播域也会随着扩大,而巨大的广播域存在广播风暴等问题,会导致各主机CPU资源的浪费
如果说网络中偶尔使用广播,那好似还可以,但是偏偏网络中频繁使用广播,所以我们必须设法解决广播风暴问题
一般我们可以使用路由器来分割广播域来解决问题,但是路由器太贵了,这个不现实
因此虚拟局域网VLAN技术就应运而生,其可以将局域网中的设备划分成与物理位置无关的逻辑组,这些逻辑组相互独立,一个逻辑组的广播只会令同一个逻辑组内的主机接收到
接下来我们来讲讲其实现原理,要实现这个需要交换机支持IEEE 802.1Q帧同时交换机端口支持多个类型,前者会在帧上再插入一个4字节的VLAN标记,该标记的最后12个比特是VLAN标识符VID,VID的取值范围是1~4094,802.1Q帧由交换机处理,当接收到普通的以太网帧是插入VLAN标记令其转变为802.1Q帧,称为打标签,转发时则删除VLAN,称为去标签
交换机端口的类型有三种,分别是Access、Trunk和Hybrid,其中交换机各端口的缺省VLAN ID就是没设置时的默认ID,我们后续简称为PVID
Access端口一般用于用户计算机且只属于一个VLAN,其只接受未打标签的普通MAC帧并根据接收帧的端口的PVID进行打标签,转发时如果遇上PVID和帧VID相同的端口,则进行去标签并将该帧发送到该端口中,也就是转发该帧
比如在下面的例子里,我们要将网络分为VLAN2和VLAN3,则AB主机对于的端口的PVID为2,反之则为3,那么当D发送广播帧时,首先该帧进入交换机会被打标签,加入VLAN标记,其中VID的值和发送端口的PVID相等,也就是3,之后发送该广播时就看其他端口中的PVID是否和该帧的VID相等,若是则该帧去标签并转发到该端口中,反之则不进行该动作
Trunk端口一般用于连接交换机与交换机或路由器,该端口可以属于多个VLAN,用户可以设置端口的PVID值,默认为1
Trunk端口的发送处理方法是对于VID==PVID的帧则去标签之后再转发,反之则直接转发,而接收时对于未打标签的帧执行打标签,对已打标签的帧直接接收
比如在下面的例子中,两个交换机相连时的PVID都为1,此时A发送广播帧则会被去标签之后发送到另一边再进行打标签只是在比对PVID和VID的值,反之则直接发送过去比对PVID和VID的值
在下面的的示例中就是提醒大伙们,互联的Trunk端口的PVID值一定要相等,否则可能会造成转发错误,无法实现虚拟局域网的预期效果
Hybrid帧既可以用于交换机之间也可以用于交换机与用户之间,同时可以属于多个VLAN,可以说是兼具Access和Trunk端口的特点,其发送处理方法是如果帧的VID在端口的去标签列表中则去标签之后再转发,反之则直接转发,接收帧是和Trunk端口相同
如果我们要实现主机ABC连接在同一个交换机的不同接口中同时又要实现其不同的通信效果,那么一般来说推荐使用Hybrid端口,同时不能通信的连个该端口间应该互不拥有对方的PVID值,能通信的则拥有