计算机网络概念:
计算机网络:是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统
计算机网络的功能
- 数据通信
- 资源共享
- 分布式处理
- 提高可靠性
- 负载均衡
计算机网络的组成
计算机网络的分类
按分布范围分:广域网WAN、城域网MAN、局域网WAN、个人区域网PAN
按使用者分类:公用网络(中国电信)、专用网(军队网络)
按交换技术:电路交换、报文交换、分组交换
按拓扑结构分:
按传输技术分:广播式网络(共享公共通信信道)、点对点网络(使用分组存储转发和路由选择机制)
章节小结:
标准分类
RFC(Requeset For Comments)——因特网标准的形式
RFC要上升为因特网正式标准的四个阶段:
标准化相关组织
章节知识大纲:
数率即数据率,或称为数据传输率或比特率
连接在计算机网络上的主机在数字信道上传送数据位数的速率
单位是b/s,kb/s,Mb/s,Gb/s,Tb/s
形容速率时,进制为102。形容存储容量时,往往使用Byte,存储容量进制为210。
并且千兆在速率中用小写,在存储中用大写
计算机网络中,带宽用来表示网络的通信线路传送数据的能力,通常是指单位时间内从网络中的某一点到另一点所能通过的“最高数据率”。单位是“比特每秒”,b/s,kb/s,Mb/s,Gb/s.
可以通俗的理解为网络设备所支持的最高速度
这里区分链路带宽和链路传播速率:带宽指的是单位之间能往链路传输的数据量,而链路传播速率指的是数据在链路上的传播速率(往往就是2*108m/s)
表示在单位时间内通过某个网络(或信道,接口)的数据量。单位b/s,kb/s,Mb/s
吞吐量受网络的带宽或网络的额定速率的限制
指数据从网络(或链路)的一端传送到另一端所需的时间。也叫延迟或迟延。单位是s。
时延带宽积又称为以比特为单位的链路长度即“某段链路现在有多少比特”。(容量)
从发送方发送数据开始,到发送方收到接收方的确认(接收方收到数据后立即发送确认)总共经历的时延。
RT越大,在收到确认之前,可以发送的数据越多
利用率包括信道利用率和网络利用率
章节知识小结:
发送文件前要完成的工作:
- 发起通信的计算机必须将数据通信的通路进行激活
- 要告诉网络如何识别目的主机。
- 发起通信的计算机要查明目的主机是否开机,并且与网络连接正常。
- 发起通信的计算机要弄清楚,对方计算机中文件管理程序是否已经做好准备工作。
- 确保差错和意外可以解决
计算机网络的大问题分解为小问题,对应分层,于是就有了分层结构。
分层的基本原则
分层机构中常见,名称定义:
实体:第n层中的活动元素称为n层实体。同一层的实体叫对等实体
协议:对等实体数据交换的规则、标准或约定称为网络协议。[水平方向]
语法:规定传输数据的格式
语义:规定所要完成的功能–01010001111000
同步:规定各种操作的顺序
接口(访问服务点SAP): 上层使用下层服务的入口。
服务:下层为相邻上层提供的功能调用。[垂直]
分层结构中的模型
上图中每一主机分为五层,相邻层之间有接口。将每一层的数据抽出来:每一层的PCI协议+SDU服务数据单元构成PDU协议数据单元,并作为下一层的SDU服务数据单元
概念汇总:
为了解决计算机网络复杂的大问题,提出了计算机网络的分层结构。为了支持异构网络系统的互联互通,国际标准化组织(ISO)于1984年提出开放系统互连(OSI)参考模型。
OSI参考模型,计算机主机由七层结构组成。从主机A通过中间系统将数据传输给主机B,主机A对应的数据打包加工(每一层都对上一层数据增加首部,数据链路层则是加首部和尾部),主机B对应的数据拆包:
应用层:所有能和用户交互产生网络流量的程序
表示层:用于处理在两个通信系统中交换信息的表示方式(语法和语义)
功能一:数据格式转换(如数据比特流转化为图片)
功能二:数据解密解密
功能三:数据压缩和恢复
会话层:向表示层实体/用户进程提供建立连接并在连接上有序地传输数据这是会话,也是建立同步 (SYN)
功能一:建立、管理、终止会话
功能二:使用校验点可使会话在通信失效时从校验点/同步点继续恢复通信,实现数据同步
适用于传输大文件。
传输层:负责主机中两个进程的通信,即端到端的通信。传输单位是报文段或用户数据报
功能一:可靠传输、不可靠传输
功能二:差错控制
功能三:流量控制
功能四:复用分用
网络层:主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报
功能一:路由选择 最佳路径
功能二:流量控制
功能三:差错控制
功能四:拥塞控制
数据链路层:主要任务是把网络层传下来的数据报组装成帧数据链路层/链路层的传输单位是帧。
功能一:成(定义的开始和结束)1000011101010101…
功能二:差错控制 错+位错
功能三:流量控制
功能四:访问(接入)控制
物理层:主要任务是在物理媒体上实现比特流的透明传输物理层传输单位是比特
透明传输:指不管多传数据是什么样的比特组合,都应当能够在链路上传送
功能一:定义接口特性
功能二:定义传输模式
功能三:定义传输速率
功能四:比特同步
功能五:比特编码
OSI参考模型和TCP/IP参考模型相同点:都分层;基于独立的协议的概念;可以实现异构网络互联
OSI参考模型和TCP/IP参考模型不同点:
五层参考模型
五层参考模型的数据封装与解封装
章节知识思维导图:
物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。
物理层主要任务:确定与传输媒体接口有关的一些特性定义标准
机械特性
定义物理连接的特性,规定物理连接时所采用的规格,接口形状,引线数目,引脚数量个排列情况
电器特性
规定传输二进制位时,线路上信号的电压范围、阻抗匹配、传输速率和距离限制等
某网络在物理层规定,信号的电平用+10V~ +15V表示二进制0,用-10V~-15V表示二进制1,电线长度限于15m以内
功能特性
指明某条线上出现的某一电平表示何种意义,接口部件的信号线的用途
规程特性
(过程特性)定义各条物理线路的工作规程和时序关系
典型的数据通信模型
首先用户将信息输入计算机,计算机内部转化为01比特数字信号发送给调制解调器,调制解调器将模拟信号发送给广域网。通过广域网将数据传输给目的地。
如图上下的对应关系。经过分类,数据通信模型分为原系统,传输系统,目的系统。
数据通信的相关概念
数据:传送信息的实体,通常是有意义的符号序列。
信号:数据的电气/电磁的表现,是数据在传输过程中的存在形式
数字信号:代表消息的参数取值是离散的
模拟信号:代表消息的参数取值是连续的
信源:产生和发送数据的源头
信宿:接收数据的终点
信道:信号的传输媒介。一般用来表示向某一个方向转递信息的介质,因此一条通信线路往往包含一条发送信道和一条接受信道
信道分类
按传输信号分为模拟信号(传送模拟信号)和数字信号(传送数字信号)
按传输介质分为无线信道和有线信道
从通信双方信息的交互方式看,通信方式可以有三种基本方式:
数据传输方式则分为两种:串行传输和并行传输
- 串行传输:速度慢,费用低,适合长距离传输
- 并行传输:速度块,费用高,适合短距离传输
码元是指一个固定时长的信号波形(数字脉冲),其代表不同离散数值的基本波形,是数字通信中数字信号的计量单位,这个时长内的信号称为k进制码元,而该时长称为码元宽度。当码元的离散状态有M个时 (M大于2),此时码元为M进制码元。
1码元可以携带多个比特的信息量。
例如,在使用二进制编码时,只有两种不同的码元,一种代表0状态,另一种代表1状态。如果是四进制码元:也就是说有四种高低不同的状态:00,01,10,11(对应信号波形可以是1v,2v,3v,4v)
速率也叫数据率,是指数据的传输速率,表示单位时间内传输的数据量。可以用码元传输速率和信息传输速率表示
码元传输率
别名码元速率、波形速率、调制速率、符号速率等,它表示单位时间内数字通信系统所传输的码元个数(也可以是一秒传输的脉冲个数或信号变化的次数),单位是波特 (Baud)。1波特表示数字通信系统每秒传输一个码元(1Baud=1码元/秒)。这里的码元可以是多进制的,也可以是二进制的,但码元速率与进制数无关。
信息传输率
别名信息速率,比特率等。表示单位时间内数字通信系统传输的二进制码元个数(比特数)。单位是比特/秒(b/s)
关系:若一个码元携带 n bit
的信息量,则 M Baud
的码元传输速率所对应的信息传输速率为 M*n bit/s
。
带宽:表示在单位时间内从网络中的某一点到另一点所能通过的“最高数据率”,常用来表示网络的通信线路所能传输数据的能力。单位是b/s。
练习题:
如何理解最后一句话。十六进制码元系统信息传输速率是4800bit/s。如果传输四进制码元,一个码元对应两个比特。对应的码元传输速率为2400bit/s,更高!
影响失真的因素:
1.码元传输速率
2.信号传输距离
3.噪声干扰
4.传输媒体质量
其中有一种失真现象叫码间串扰
这里区分信号带宽和信道带宽
码间串扰:接收端收到的信号波形失去了码元之间清晰的界限的现象(信号带宽(码元传输速率)过大)
奈氏准则:在理想低通(无噪声,带宽受限)条件下,为了避免码间串扰,极限码元传输速率为 2W Baud,W是信道带宽,单位是Hz。
理想低通信道下的极限数据传输率 = 2 W l o g 2 V ( b / s ) W 表示带宽( H z ) V 表示几种码元 / 码元的离散电平数目 理想低通信道下的极限数据传输率=2Wlog_2^V(b/s)\\ W表示带宽(Hz)\\ V表示几种码元/码元的离散电平数目 理想低通信道下的极限数据传输率=2Wlog2V(b/s)W表示带宽(Hz)V表示几种码元/码元的离散电平数目
噪声存在于所有的电子设备和通信信道中。由于噪声随机产生,它的瞬时值有时会很大,因此噪声会使接收端对码元的判决产生错误。但是噪声的影响是相对的,若信号较强,那么噪声影响相对较小。因此,信噪比就很重要。
信噪比=信号的平均功率/噪声的平均功率,常记为S/N,并用分贝 (dB) 作为度量单位,即:
信噪比 ( d B ) = 10 l o g 10 ( S / N ) 信噪比(dB)=10log_{10}(S/N) 信噪比(dB)=10log10(S/N)
例题:
计算极限数据传输率,什么时候用奈氏准则什么时候用香农定理?如果题目中给了码元对应的V和信噪比,那么就需要用奈氏准则和香农定理来计算取其最小值。(如果题目条件只支持其中一个准则或定理,那就直接算)
基础知识储备–基带信号与带宽信号(来自信源的信号称为基带信号,金国调制的信号称为带宽信号)
信道:信号的传输媒介。一般用来表示向某一个方向传送信息的介质,因此一条通信线路往往包含条发送信道和一条接收信道。
信道分类:
按传输信号分为模拟信号(传送模拟信号)和数字信道(传送数字信号)
按传输介质分为无线信道和有线信道。
在传输距离较近时,计算机网络采用基带传输方式(近距离衰减小,从而信号内容不易发生变化)
在传输距离较远时,计算机网络采用宽带传输方式(远距离衰减大,即使信号变化大也能最后过滤出来基带信号
编码方式这里提六种:非归零编码NRZ,曼彻斯特编码,差分曼彻斯特编码,归零编码,反向不归零编码,4B/5B编码(后三种了解)
非归零编码NRZ:高1低0
编码容易实现,但是美哟检错功能,且无法判断一个码元的开始和结束,以至于收发双方难以保持同步
归零编码RZ:信号电平在一个码元之内都要恢复到零的这种编码成编码方式。
反向不归零编码:信号电平翻转表示0,信号电平不变表示1。
曼彻斯特编码
将一个码元分成两个相等的间隔前一个间隔为低电平后一个间隔为高电平表示码元1;码元0则正好相反。也可以采用相反的规定该编码的特点是在每一个码元的中间出现电平跳变,位中间的跳变既作时钟信号 (可用于同步)又作数据信号,但它所占的频带宽度是原始的基带宽度的两倍。
每一个码元都被调成两个电平,所以数据传输速率只有调制速率的1/2。(调制速率,这里回顾下,其实就是码元传输率。码元传输率,别名码元速率、波形速率、调制速率、符号速率等,它表示单位时间内数字通信系统所传输的码元个数(也可以是脉冲个数或信号变化的次数))
差分曼彻斯特编码:同1异0
常用于局域网传输,其规则是:若码元为1,则前半个码元的电平与上一个码元的后半个码元的电平相同,若为0,则相反。该编码的特点是,在每个码元的中间,都有一次电平的跳转,可以实现自同步,且抗干扰性强于曼彻斯特编码
4B/5B编码
比特流中插入额外的比特以打破一连串的0或1,就是用5个比特来编码4个比特的数据,之后再传给接收方,因此称为4B/5B。编码效率为80%。
只采用16种对应16种不同的4位码其他的16种作为控制码(的开始和结束,线路的状态信息等)或保留。
解调器的调制和解调过程数字数据调制技术在发送端将数字信号转换为模拟信号,而在接收端将模拟信号还原为数字信号,分别对应于调制解调器的调制和解调过程
某通信链路的波特率是1200Baud,采用4个相位每个相位有4种振幅的QAM调制技术,则该链路的信息传输速率是多少?
4个相位,每个相位4种振幅,对应16中码元,也就是说要4个比特位才能完整的表示出者16中信号波形,也就是一个码元对应4bit。所以信息传递速率是1200*4=4800b/s
计算机内部处理的是二进制数据,处理的都是数字音频,所以需要将模拟音频通过采样、量化转换成有限个数字表示的离散序列(即实现音频数字化)。最典型的例子就是对音频信号进行编码的PCM脉码调制,在计算机应用中,能够达到最高保真水平的就是PCM编码,被广泛用于素材保存及音乐欣赏,CD、DVD以及我们常见的 WAV文件中均有应用。它主要包括三步:抽样、量化、编码。
抽样:对模拟信号周期性扫描,把时间上连续的信号变成时间上离散的信号。为了使所得的离散信号能无失真地代表被抽样的模拟数据,要使用采样定理进行采样:
f 采样频率 ⩾ 2 f 信号最高频率 f_{采样频率}\geqslant 2f_{信号最高频率} f采样频率⩾2f信号最高频率
量化:把抽样取得的电平幅值按照一定的分级标度转化为对应的数字值,并取整数,这就把连续的电平幅值转换为离散的数字量
编码:把量化的结果转换为与之对应的二进制编码
为了实现传输的有效性,可能需要较高的频率。这种调制方式还可以使用频分复用技术,充分利用带宽资源。在电话机和本地交换机所传输的信号是采用模拟信号传输模拟数据的方式:模拟的声音数据是加载到模拟的载波信号中传输的。
章节知识小结:
传输介质也称传输媒体/传输媒介,它就是数据传输系统中在发送设备和接收设备之间的物理通路。
传输媒体并不是物理层。传输媒体在物理层的下面,因为物理层是体系结构的第一层,因此有时称传输媒体为0层。在传输媒体中传输的是信号,但传输媒体并不知道所传输的信号代表什么意思但物理层规定了电气特性,因此能够识别所传送的比特流。
双绞线是古老、又最常用的传输介质,它由两根采用一定规则并排绞合的、相互绝缘的铜导线组成(综合可以减少对相邻导线的电磁干扰)
为了进一步提高抗电磁干扰能力,可在双绞线的外面再加上一个由金属丝编织成的屏蔽层,这就是屏蔽双绞线(STP),无屏层的双线就称为==非屏蔽双绞线(UTP)。
双绞线价格便宜,是最常用的传输介质之一,在局域网和传统电话网中普遍使用。模拟传输和数字传输都可以使用双绞线,其通信距离一般为几公里到数十公里。距离太远时,对于模拟传输,要用放大器放大衰减的信号;对于数字传输,要用中继器将失真的信号整形。
司轴电缆由导体铜质芯线、绝缘层、网状编织屏蔽层和塑料外层构成。按特性阻抗数值的不同,通常将同轴电缆分为两类:50Q同轴电缆和75Q同轴电缆。其中,500同轴电缆主要用于传送基带数字信号,又称为基带同轴电缆,它在局域网中得到广泛应用;752同轴电缆主要用于传送宽带信号,又称为宽带同轴电缆,它主要用于有线电视系统。
同轴电缆Vs双绞线
由于外导体屏蔽层的作用,同轴电缆抗干扰特性比双绞线好,被广泛用于传输较高速率的数据,其传输距离更远,但价格较双绞线贵
光纤通信就是利用光导纤维(简称光纤)传递光脉冲来进行通信。有光脉冲表示1,无光脉冲表示0。而可见光的频率大约是108MHz,因此光纤通信系统的带宽远远大于目前其他各种传输媒体的带宽。
光纤在发送端有光源,可以采用发光二极管或半导体激光器,它们在电脉冲作用下能产生出光脉冲:在接收端用光电二极管做成光检测器,在检测到光脉冲时可还原出电脉冲。
光纤主要由纤芯(实心的!)和包层构成,光波通过纤芯进行传导,包层较纤芯有较低的折射率。当光线从高折射率的介质射向低折射率的介质时,其折射角将大于入射角。因此,如果入射角足够大,就会出现全反射,即光线碰到包层时候就会折射回纤芯、这个过程不断重复,光也就沿着光纤传输下去。(超低损耗,传送距离远)
光纤特点
- 传输损耗小,中继距离长,对远距离传输特别经济
- 抗电和电磁干扰性能好
- 无串音干扰,保密性好,也不易被窃听或截取数据
- 体小,重量轻
章节知识小结
诞生原因:由于存在损耗,在线路上传输的信号功率会逐渐衰减,衰减到一定程度时将造成信号失真,因此会导致接收错误。(线路上的损耗可能会导致失真)
中继器的功能:对信号进行再生和还原,对衰减的信号进行放大,保持与原数据相同,以增加信号传输的距离,延长网络的长度。(再生数字信号,对于模拟信号有放大器)
中继器的两端:两端的网络部分是网段,而不是子网,适用于完全相同的
两类网络的互连,且两个网段速率要相同。中继器只将任何电缆段上的数据发送到另一段电缆上,它仅作用于信号的电气部分,并不管数据中是否有错误数据或不适于网段的数据。
中继器两端的网段一定要是同一个协议。(中继器不会存储转发)
5-4-3规则:网络标准中都对信号的延迟范围作了具体的规定(中继器再生数字信号需要时间),因而中继器只能在规定的范围内进行,否则会网络故障(五个网段,四个物理层设备,三个计算机)
集线器的功能:对信号进行再生放大转发,对衰减的信号进行放大,接着转发到其他所有(除输入端口外)处于工作状态的端口上,以增加信号传输的距离,延长网络的长度。不具备信号的定向传送能力,是一个共享式设备(计算机将信息传输给集线器,集线器将数据处理后向连在集线器上所有计算机发送数据,各个计算机根据根据需要决定是否对计算机进行处理 )
在了解功能前,先看看这四个概念:
而传输层和网络层作为传输层的下层,需要为传输层提供这四种功能提供支持,具体来说就是:
而在数据传输过程中,网络层会将传输层提供的数据包封装成网络层数据包,在数据包中添加源IP地址和目的IP地址等信息,将其传输到链路层。链路层将网络层的数据包封装成链路层的帧,添加源MAC地址和目的MAC地址等信息,通过物理层进行传输。因此,网络层和链路层是紧密联系的,共同为传输层提供服务,保证数据的正确传输。
链路层功能:
数据链路层在物理层提供服务的基础上,向上为网络层提供服务。其主要作用是加强物理层传输原始比特流,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路
透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上正确传送。,这些数据像是透明一样。因此,链路层就“看不见”有什么妨碍数据传输的东西。
当所传数据中的比特组合恰巧与某个控制信息的比特组合相同时,就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。
封装成帧就是对网络层的IP数据报前后添加首部和尾部。这样就构成了一个数据帧。
组帧后的数据帧会传递到物理层进行传输,物理层会将数据帧转化为物理信号,通过物理介质进行传输。传输完成后,接收端物理层会将接收到的物理信号转化为数据帧,再将数据帧向上交给数据链路层进行处理。
(此处注意链路层是将网络层的IP数据包封装成帧,ip数据报作为数据链路层的帧数据部分,如果ip数据包过长,需要分段。
首部和尾部包含许多的控制信息,他们的一个重要作用:帧定界(确定的界限)。
帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。
为了提高数据传输效率,我们会尽可能的提高帧的数据部分,但不同的协议规定了帧的数据部分的最大传送单元MTU。例如以太网的MTU大小是1500字节,而FDDI的MTU大小是4352字节。这些MTU大小的规定是为了确保数据能够在该链路层协议所支持的最大帧大小范围内进行传输,同时也避免了数据过大而导致链路层传输效率低下或数据丢失的问题。
组帧的四种方法:
字符计数法、字符(节)填充法、零比特填充法、违规编码法。
字符计数法
帧首部使用一个计数字段(第一个字节,八位)来标明内字符数
但帧首部的计数字段若出错,那么后面的数据全部出错!!(连错好吧,惨的很)-----不使用
字符填充法
在数据报前后添加头部和尾部,标识帧数据部分的开始和结束
要是帧定界符比特组合和帧数据部分比特组合发生冲突?
当传送的帧是由文本文件组成的时候(文本文件的字符都是ASCll码值,我们知道ASCll码的八位二进制码没有使用完,我们可以选出的首部编码和尾部编码规避字符编码的冲突,实现透明传输,也就是无论传输内容都可以正确传输)
当传送的帧是由非ASCI码的文本文件组成时 (二进制代码的程序或图像等)采用字符填充方法如何实现透明传输(可能会将数据帧中内容识别为结束标识)
解决办法是出现标识符二义性,就添加转义字符
发送端对原始数据中的与控制字符相同的字节 前填充转义字符(八位比特组合),告诉数据链路层,后面的字节是数据而非控制字符,甭管,传输就完事。接受端则将填充转义字符去除,最后得到真实数据
零比特填充法
首部和尾部的标志符号一样,采用01111110(两个0六个1),发送端在数据部分只要出现五个1就加上一个零,接收端只要遇到五个1就删去后面的零。
- 在发送端,扫描整个信息字段,只要连续5个1,就立即填入1个0
- 在接收端收到一个帧时,先找到标志字段确定边界,再用硬件对比特流进行扫描。发现连续5个1时,就把后面的0删除。
保证了透明传输:在传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误。
违规编码
如曼彻斯特编码中先高后低代表1,先低后高代表0。违规编码可以使用先高后高,或先低后低的方式来定界帧的起始和终止
由于字节计数法中Count字段的脆弱性(其值若有差错将导致灾难性后果)及字符填充实现上的复杂性和不兼容性,目前较普遍使用的帧同步法是**零比特填充和违规编码法**。
全局性:由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的。解决办法: 提高信噪比来减少或避免干扰。(对传感器下手)
局部性:外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因。解决办法:通常利用编码技术来解决。
差错分类:
链路层为网络层提供服务:无确认无连接服务,无确认有连接服务,有确认无连接服务,有确认有连接服务。
差错控制分为==检错编码(奇偶校验码,CRC循环冗余码)和纠错编码==(海明码)
数据链路层编码和物理层的数据编码与调制不同。物理层编码针对的是单个比特,解决传输过程中比特的同步等问题,如曼彻斯特编码。而数据链路层的编码针对的是一组比特,它通过冗余码的技术实现判断一组二进制比特串在传输过程是否出现了差错。
冗余编码:
在数据发送之前,先按某种关系附加上一定的冗余位,构成一个符合某一规则的码字后再发送。当要发送的有效数据变化时,相应的冗余位也随之变化,使码字遵从不变的规则。接收端根据收到码字是否仍符合原规则,从而判断是否出错。
奇偶校验码就是将数据的比特流加上冗余码1或0,使得1个数为奇数(奇校验)或者1个数为偶数(偶校验)。也就是说接收端根据1的个数来判断是否发生错误,所以奇偶校验码的特点:只能检查出奇数个比特错误,检错能力为50%
例:要发送的数据是1101 0110 11,采用CRC校验,生成多项式是10011,那么最终发送的数据应该是?要传的数据+帧检验序列FCS
帧检验序列为要传数据和生成多项式模二除法的余数
最终要发送的数据等于要传的数据+帧检验序列FCS
接收端检错过程把收到的每一个帧都除以同样的除数,然后检查得到的余数R1,
FCS的生成以及接收端CRC检验都是由硬件实现,处理很迅速,因此不会延误数据的传输。
在数据链路层仅仅使用循环冗余检验CRC差错检测技术,只能做到对帧的无差错接收,即“凡是接收端数据链路层接受的帧,我们都能以非常接近于1(可能错)的概率认为这些帧在传输过程中没有产生差错”。接收端丢弃的帧虽然曾收到了,但是最终还是因为有差错被丢弃。“凡是接收端数据链路层接收的顿均无差错”
但是可靠传输就是数据链路层发送端发送什么,接受端就接受什么。CRC循环冗余码在数据链路层能够实现无比特差错的传输,但这还不是可靠传输,因为错误帧丢弃了
crc循环校验用的是模2除法,上面的例子你看的很清楚,但1010/1101商为1,余数是111。你如果没感觉,那你是真会了。如果有,那就是不会。==方法是位数够了就1位数不够就是0==至于计算余数就是异或
发现双比特错,纠正单比特错。工作原理:牵一发而动全身
这里先看海明不等式:(利用海明码计算最小冗余信息位个数)
2 r ≤ k + r + 1 r 为冗余信息位, k 位信息位 2^r \leq k+r+1\\ r为冗余信息位,k位信息位 2r≤k+r+1r为冗余信息位,k位信息位
如要发送数据:101101
数据位数k=6,满足不等式的最小r为4
也就是D=101101的海明码应该有6+4=10位
其中原数据6位,校验码4
假这四位校验码分别位P1、P2、P3、P4,数据从左到右位D1、…、D6。在发送的10(6+4)位比特流中在,2的次方的位置放校验码,数据流依次填充:
下面我们需要计算校验码的实际值
首先按照数据的位数写出数据位对应的二进制编码(长度按照最长的编码来,此题10需要四位,那就写出对应的4位二进制编码)
下面需要求解冗余信息位的实际值
令所有要检验的位异或=0,得到:
校验 P 1 : P 1 ⨁ D 1 ⨁ D 2 ⨁ D 4 ⨁ D 5 = 0 , 求解的: P 1 = 0 校验 P 2 : P 2 ⨁ D 1 ⨁ D 3 ⨁ D 4 ⨁ D 6 = 0 , 求解的: P 2 = 0 校验 P 3 : P 3 ⨁ D 2 ⨁ D 3 ⨁ D 4 = 0 , 求解的: P 3 = 0 校验 P 4 : P 4 ⨁ D 5 ⨁ D 6 = 0 , 求解的: P 4 = 1 / / 这里后面异或的就是前面 P i 要校验的位,如 P 1 校验 D 1 、 D 2 、 D 4 、 D 5 校验P1:P_1\bigoplus D_1\bigoplus D_2\bigoplus D_4 \bigoplus D_5 =0,求解的:P_1=0\\ 校验P2:P_2\bigoplus D_1\bigoplus D_3\bigoplus D_4 \bigoplus D_6 =0,求解的:P_2=0\\ 校验P3:P_3\bigoplus D_2\bigoplus D_3\bigoplus D_4 =0,求解的:P_3=0\\ 校验P4:P_4\bigoplus D_5\bigoplus D_6 =0,求解的:P_4=1\\ //这里后面异或的就是前面P_i要校验的位,如P_1校验D_1、D_2、D_4 、 D_5 校验P1:P1⨁D1⨁D2⨁D4⨁D5=0,求解的:P1=0校验P2:P2⨁D1⨁D3⨁D4⨁D6=0,求解的:P2=0校验P3:P3⨁D2⨁D3⨁D4=0,求解的:P3=0校验P4:P4⨁D5⨁D6=0,求解的:P4=1//这里后面异或的就是前面Pi要校验的位,如P1校验D1、D2、D4、D5
这里就求出了海明码,那么在数据链路中发生错误改如何纠错?只要将数据中校验位重新异或,其中一个不为零就是出错假设上述的海明码传输后成位:0010111101.校验就是异或:
校验 P 1 : P 1 ⨁ D 1 ⨁ D 2 ⨁ D 4 ⨁ D 5 = 1 校验 P 2 : P 2 ⨁ D 1 ⨁ D 3 ⨁ D 4 ⨁ D 6 = 0 校验 P 3 : P 3 ⨁ D 2 ⨁ D 3 ⨁ D 4 = 1 校验 P 4 : P 4 ⨁ D 5 ⨁ D 6 = 0 校验P1:P_1\bigoplus D_1\bigoplus D_2\bigoplus D_4 \bigoplus D_5 =1\\ 校验P2:P_2\bigoplus D_1\bigoplus D_3\bigoplus D_4 \bigoplus D_6 =0\\ 校验P3:P_3\bigoplus D_2\bigoplus D_3\bigoplus D_4 =1\\ 校验P4:P_4\bigoplus D_5\bigoplus D_6 =0\\ 校验P1:P1⨁D1⨁D2⨁D4⨁D5=1校验P2:P2⨁D1⨁D3⨁D4⨁D6=0校验P3:P3⨁D2⨁D3⨁D4=1校验P4:P4⨁D5⨁D6=0
二进制序列:0101,恰好对应二进制5,所以出错时第5位
总结海明码计算流程:先根据海明不等式和实际数据位数y计算出冗余信息位的个数x,得到传输的数据位数位x+y,冗余信息位放在2的整数次方的位置,接下来==计算冗余信息位的具体数值==,要求检验位和数据位异或为零。(这里的数据位只是传输的数据位的一部分,具体取出哪一位,和数据位对应号数的二进制表示,中的第检验位号的数值有关,1则取出来)
章节知识小结:
所谓的流量控制和可靠传输就是正确发送和正确接收数据
较高的发送速度和较低的接收能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。
数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的
流量控制方法:停止-等待协议和滑动窗口协议(停止-等待协议是发送窗口和接受窗口为1的特殊滑动窗口)(后面几节细讲)
什么是可靠传输?就是正确发送和正确接收。发送端发啥,接收端收啥
什么是流量控制?控制发送速率,使接收方有足够的缓冲空间来接收每一个帧。目的还是正确发送正确接收
这里总结下实现可靠传输的三个协议:停等协议,GBN后退N帧协议和SR选择重传协议:
停等协议时发送窗口和接收窗口都为1
GBN后退N帧协议发送窗口为n,但接收窗口为1(只接收当前所需要的帧)
1 ≤ W ≤ 2 n − 1 其中 N 是给帧编号所用的比特位数 1\leq W \leq 2^n-1\\ 其中N是给帧编号所用的比特位数 1≤W≤2n−1其中N是给帧编号所用的比特位数
SR选择重传协议发送窗口和接收窗口都为n,
滑动窗口最好接收窗口 W T m a x = W R m a x = 2 n − 1 其中 N 是给帧编号所用的比特位数 滑动窗口最好接收窗口\\ W_{Tmax}=W_{Rmax}=2^{n-1}\\ 其中N是给帧编号所用的比特位数 滑动窗口最好接收窗口WTmax=WRmax=2n−1其中N是给帧编号所用的比特位数
章节知识大纲:
停止-等待协议就是每发送完一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组。这里会出现数据帧丢失,确认帧丢失,确认帧迟到的情况,这些情况统一超时重传
数据在链路层叫做**帧**。网络层叫ip数据报、分组。传输层叫报文段。不同的层次不同的称呼,但本质都是传输的数据
- 为什么要有停止-等待协议?(可靠传输+流量控制)数据传输除了帧内比特出差错,底层信道还会出现丢包问题(物理线路故障,设备故障,病毒攻击,路由器信息错误等原因,会导致数据包丢失)。同时也为了为了实现流量控制。
- 研究停等协议的前提?
虽然现在常用全双工通信方式,但为了讨论问题方便,仅考虑一方发送数据(发送方),一方接收数据(接收方)。
因为是在讨论可靠传输的原理,所以并不考虑数据是在哪一个层次上传送的。(不同的书籍将停止等待协议放在不同的层次,这里按照链路层来学习)
ACK就是确认帧,发送方发送一个数据帧,接收方就回复一个确认帧。
差错分为数据帧丢失和确认帧丢失,无论哪种错误都是发送方超时重传。
数据帧丢失或帧出错(超时重传)
使用==超时计时器:每次发送一个帧就启动一个计时器。超时计时器设置重传时间(应当比平均RTT长些),超过时间未收到确认帧则,超时重传==。RTT:往返传播时延
注意:
- 发完一个帧后,必须保留它的副本(以便超时重传)
- 数据帧和确认帧必须编号。
ACK丢失(确认帧丢失)(接收方重传,接收方丢弃并回复ACK)
ACK迟到
也就是发送一个数据帧,等tm一年来等确认帧,搞不好还得超时重传,中间等的这段时间很waste time,ok?
发送方在一个发送周期内,信道利用率 = 有效地发送数据时间占整个发送周期的比率。
联系上一个图的令一个信道利用率公式,相通的(数据发送时延/发送周期,而发送时延不就是比特数除以数据传输率嘛 )
鉴于停等协议的信道利用率很低,于是就有了后面两种控制可靠传输和流量控制的方法:后退N帧协议和选择重传协议
例题:
章节知识点:
对此为了改善停等协议的弊端,出现了滑动窗口协议,根据滑动窗口对于数据帧丢失重传的方式不同,区分出GBN后退N帧协议和SR选择重传协议。
GBN后退N帧协议简述:发送方设置滑动窗口,滑动窗口内一直发送数据,只按序接收,不按序无情丢弃。采取累积确认(偶尔稍待确认)。接收方返回ACK,确认序列号最大的按序到达的帧。(可能会滑动窗口前移)
GBN协议:发送方在发送窗口中一直发送数据,只有在接受到第一个数据帧对应的确认帧,滑动窗口才前移(也就是确保最左边的数据帧接收到后才前移)
GBN发送方需要做的事
- 上层的调用(如网络层)
上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送;如果窗口已满发送方只需将数据返回给上层,暗示上层窗口已满。上层等一会再发送。 (实际实现中,发送方可以缓存这些数据,窗口不满时再发送帧)。- 收到了一个ACK
GBN协议中,对n号帧的确认采用==累积确认==的方式,表明接收方已经收到n号帧和它之前的全部帧。(也就是说不用每次收到来自发送方的帧,就回传一个确认帧,收到多个帧后再一次性确认!)- 超时重传
协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长帧时发送方的行为。就像在停等协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失。如果出现超时,发送方重传所有已发送但未被确认的帧。
GBN接收方需要做的事
- 如果正确收到n号帧,并且按序,那么接收方为n帧发送一个ACK,并将该帧中的数据部分交付给上层。(如网络层,就是一个解封装的过程)
- 其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息: expectedseqnum (下一个按序接收的帧序号)。
仔细看左右两边,对于发送方,只有收到确认帧,滑动窗口才会前移。对于接收方,只有收到当前所需的帧才会接收,否则遗弃。
注意GBN后退N帧协议中只有发送方有滑动窗口,接收方没有这个说法。接收方只接收当前所需帧,其余丢弃。
若采用==n个比特对帧编号==,那么发送窗口的尺寸W,应满足:
1 ≤ W ≤ 2 n − 1 1\leq W \leq 2^n-1 1≤W≤2n−1
因为发送窗口尺寸过大,就会使得接收方无、法区别新帧和旧帧。
GBN协议重点总结:
例题:
GBN后退n帧协议,只接收当前需要的帧,后面的帧收到也丢弃,听弱智的就。
章节知识点大纲:
GBN的弊端:累计确认–导致出现错误帧,需要等待超时重传,期间发送的数据都时作废,也就是需要批量重传,期间做的事全白给。
可不可以只重传出错的帧?
解决办法:设置单个确认,同时加大接收窗口,设置接收缓存,缓存乱序到达的帧。
什么时SR选择重传协议,就是在后退N帧协议的基础上对批量重传的改善。
SR发送方需要做的事
上层的调用
从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧。否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输。收到了一个ACK
如果收到ACK,加入该帧序号在窗口内,则SR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边第一个窗口对应的序号),则窗口向前移动到具有最小序号的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧,则发送这些帧。(只有当确认帧时对应滑动窗口最左边的帧的时候,滑动窗口才会移动)
如下,发送方接收到2号确认帧(3号早已收到确认帧),滑动窗口移动:
每个帧都有自己的定时器,一个超时事件发生后只重传一个帧
SR接受方要做的事
来者不拒 (窗口内的帧),不同于GBN协议强调按序接收
SR接收方将确认一个正确接收的帧而不管其是否按序。失序的帧将被缓存,并返回给发送方一个该帧的确认帧[收谁确认谁],直到所有(即序号更小的帧)皆被收到为止,这时才可以将一批帧按序交付给上层(网络层),然后向前移动滑动窗口
可见SR选择重传就不是累积确认了,sr选择重传只确认当前正确接收的帧
如下图,接收方收到了6号帧,5号7号都没收到,这时7号帧发送过来,由于失序。就先将7号帧存储,等到5号帧发送过来,链路层将所有帧交付给网络层,滑动窗口移动
如果收到了窗口序号外 (小于窗口下界)的帧,就返回一个ACK。(可能时发送方没有接收到确认帧,超时重传了。这时候只需要再次发送ACK确认即可)
滑动窗口可以无限大嘛?当然不行,先看下面的例子:
最后发送方都发送0号帧,但是接收方却无法分辨新帧和旧帧了
所以对于滑动窗口的长度,有规定:滑动窗口最好等于接收窗口(大了会溢出,小了没意义)
W T m a x = W R m a x = 2 n − 1 n 是帧编号所用的比特数,上面的例子 n = 2 W_{Tmax}=W_{Rmax}=2^{n-1}\\ n是帧编号所用的比特数,上面的例子n=2 WTmax=WRmax=2n−1n是帧编号所用的比特数,上面的例子n=2
SR协议对数据帧逐一确认,收一个确认一个。不像GBN协议有累计确认
这里总结下实现可靠传输的三个协议:停等协议,GBN后退N帧协议和SR选择重传协议:
停等协议时发送窗口和接收窗口都为1
GBN后退N帧协议发送窗口为n,但接收窗口为1(只接收当前所需要的帧)
1 ≤ W ≤ 2 n − 1 其中 N 是给帧编号所用的比特位数 1\leq W \leq 2^n-1\\ 其中N是给帧编号所用的比特位数 1≤W≤2n−1其中N是给帧编号所用的比特位数
SR选择重传协议发送窗口和接收窗口都为n,
滑动窗口最好接收窗口 W T m a x = W R m a x = 2 n − 1 其中 N 是给帧编号所用的比特位数 滑动窗口最好接收窗口\\ W_{Tmax}=W_{Rmax}=2^{n-1}\\ 其中N是给帧编号所用的比特位数 滑动窗口最好接收窗口WTmax=WRmax=2n−1其中N是给帧编号所用的比特位数
章节知识小结:
传输数据使用的两种链路
- 点对点链路:两个相邻节点通过一个链路相连,没有第三者。应用:PPP协议,常用于广域网
- 广播式链路:所有早期主机共享通信介质。应用:早期的总线以太网,无线局域网,常用于局域网。典型拓扑结构: 总线型、星型(逻辑总线型
介质访问控制的内容就是,采取一定的措施,使得两对节点之间的通信不会发生互相干扰的情况。
信道划分介质访问控制:将使用介质的每个设备与来自同一信道上的其他设备的通信隔离开,把时域和频域资源合理地分配给网络上的设备。
静态划分信道(信道划分介质访问控制)分为:频分多路复用FDM,时分多路复用TDM,波分多路复用,码分多路复用CDM
频分多路复用FDM–类似并行
不同用户占用不同的频率,用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。频分复用的所有用户在同样的时间占用不同的带宽(频率带宽)资源。
充分利用传输介质带宽,系统效率较高;由于技术比较成熟,实现也比较容易。
时分多路复用TDM–类似并发
将时间划分为一段段等长的时分复用帧 (TDM帧)。每一个时分复用的用户在每一个TDM帧中占用固定序号的时隙,所有用户轮流占用信道。
然而当TDM帧中只有一个用户使用时,由于每一个时分复用的用户在每一个TDM帧中占用固定序号的时隙,因此信道利用率很低。对此就有了改进的时分复用–统计时分复用STDM
每一个STDM帧中的时隙数小于连接在集中器上的用户数。各用户有了数据就随时发往集中器的输入缓存,然后集中器按顺序依次扫描输入缓存,把缓存中的输入数据放入STDM帧中,一个STDM帧满了就发出。STDM帧不是固定分配时隙,而是按需动态分配时隙。(按需分配的统计时分复用大大提高信道录用率!)
波分多路复用WDM
波分多路复用就是光的频分多路复用,在一根光纤中传输多种不同波长(频率)的光信号,由于波长(频率)不同,所以各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来。
码分多路复用CDM
码分多址(CDM)是码分复用的一种方式。1个比特分为多个码片/芯片,每一个镇店被指定一个唯一的m为的芯片序列。发送1时站点发送芯片序列,发送0时发送芯片序列的反码(通常把0写成-1)
如何不打架:多个站点同时发送数据的时候,要求各个站点芯片序列相互正交(序列相乘之和为0)
如何合并:各路数据在信道中被线性相加
如何分离:合并的数据和原站规格化内积
ALOHA协议时动态分配信道中的随机访问介质访问控制,前面的信道划分介质访问控制时静态划分信道。
纯ALOHA协议
纯ALOHA协议思想:不监听信道,不按时发送,随机重发(想发就发)
冲突如何检测?如果发生冲突,接收方在就会检测出差错,然后不予确认,发送方在一定时间内收不到就判断发生冲突。
冲突如何解决?超时后等一随机时间再重传
时隙ALOHA协议
时隙ALOHA协议的思想: 把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到下一个时间片开始时刻再发送。控制想发就发的随意性
知识点小结:这个协议很low
载波监听多路访问协议CSMA(carrier sense mutiple access)
当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大 (互相叠加)。
当一个站检测到的信号电压摆动值超过一定门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞,即发生了冲突
协议思想:发送帧之前,监听信道
坚持CSMA
坚持指的是对于监听信道忙之后的坚持。
坚持CSMA思想:如果一个主机要发送消息,那么它先监听信道。
空闲则直接传输,不必等待。
忙则一直监听,直到空闲马上传输。如果有冲突(一段时间内未收到肯定回复),则等待一个随机长的时间再监听,重复上述过程
- 优点:只要媒体空闲,站点就马上发送,避免了媒体利用率的损失
- 缺点:假如有两个或两个以上的站点有数据要发送,冲突就不可避免。
非坚持CSMA
非坚持指的是对于监听信道忙之后就不继续监听
非坚持CSMA思想: 如果一个主机要发送消息,那么它先监听信道空闲则直接传输,不必等待。
忙则等待一个随机的时间之后再进行监听
- 优点:采用随机的重发延迟时间可以减少冲突发生的可能性。
- 缺点:可能存在大家都在延迟等待过程中,使得媒体仍可能处于空闲状态,媒体使用率降低
p-坚持CSMA
p-坚持指的是对于监听信道空闲的处理。
p-坚持CSMA思想:如果一个主机要发送消息,那么它先监听信道。
空闲则以p概率直接传输,不必等待;概率1-p等待到下一个时间槽再传输(p是我们设置的,但无需了解好吧)
忙则等待一个随机的时间之后再进行监听
- 优点:既能像非坚持CSMA算法那样减少冲突,又能像1-坚持算法那样减少媒体空闲时间的这种方案
- 缺点:发生冲突后还是要坚持把数据帧发送完,造成了浪费
总结:
而CSMA协议对于碰撞的处理就引申出了CSMACD和CSMACA协议
载波监听多点接入/碰撞检测CSMA/CD (carrier sense multiple access with collision detection)–重点
当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大 (互相叠加)。
当一个站检测到的信号电压摆动值超过一定门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞,即发生了冲突
友友相信会问,为什么发送数据前监听了还是会发生冲突??
如上图,当A站点发送数据的时候,对于B站点来说,它并不知道信道上已经发送了数据,此时如果B站点发送数据时就会发送冲突,这是因为传播时延对载波监听的影响
最多是两倍的总线端到端的传播时延(二tao)就能知道站点是否和别人发送的数据碰撞。所以经过两倍的传播时延还没有检测到碰撞,就能肯定这次发送不会碰撞
两个站点如果发现冲突,马上重发,那么就会循环冲突恶性循环,一直冲突。
这里就用到截断二进制指数规避算法
基本退避时间:确定基本退避(推迟)时间为争用期2t。(2tao)
重传次数:定义参数,它等于重传次数,但k不超过10,即 k=min[重传次数,10]
。当重传次数不超过10时,k等于重传次数:当重传次数大于10时,k就不再增大而一直等于10。
重传退避时间:从离散的整数集合 [0,1,2,3,…,2k-1] 中随机取出一个数 r,重传所需要退避的时间就是 r 倍的基本退避时间,即 2rT。
当重传达16次仍不能成功时,说明网络太拥挤,认为此帧永远无法正确发出,抛弃此帧并向高层报告出错
第一次重传,k=1,r从 [0,1] 选;
重传推迟时间为0或 2t,在这两个时间中随机选一个若再次碰撞,则在第二次重传时,k=2,r从 [0,1,2,3] 选:
重传推迟时间为0或2t或4或6t,在这四个时间中随机选一个:若再次碰撞,则第三次重传时,k=3,r从 [0,1,2,3,4,5,6,7]选…
若连续多次发生冲突,就表明可能有较我的站参与争用信道使用此算法可使重传需要推迟的平均时间随重传次数的增大而增大,因而减小发生碰撞的概率,有利于整个系统的稳定
例题:例:在以太网的二进制回退算法中,在11次碰撞之后,站点会在0~ (?)
之间选择一个随机数。
答案:(0,1,3,…,1023)
扩展:争用期为512比特时间,以太网最小帧长是64个字节
以太网帧最小为64字节,也就是512比特
争用期的定义可以是发送512 bit的时间
10Mb╱s的以太网可以计算出发送一个比特的时间是
0.1us,那么争用期就是512×0.1=51.2us
同理,100Mb/s的以太网发送一个比特的时间是0.01us,争用期为512×0.01=5.12us
比特时间是以太网传输速率的倒数,即传输速率为1 Mbps时,比特时间为1微秒(μs)
A站发了一个很短的帧,但发生了碰撞,不过帧在发送完毕后才检测到发生碰撞,没法停止发送。因为发完了。。最小帧长解决的就是在发现冲突的时候,数据帧还没发完,所以就控制帧的传输时延至少两倍于信号在总线上的传播时延(就是在信号在总线上传播时延的两倍期间内,数据帧不能传输完毕)—最小帧长为了能够及时叫停冲突
以太网规定最短帧长为64B,凡是长度小于64B的都是由于冲突而异常终止的无效帧
章节知识小结:
CSMA/CD和CSMA/CA都是CSMA协议的分支,CSMA/CD中CD是对碰撞的检测,CSMA/CA中的CA是对碰撞的避免。(二者的工作范围不一样哦~)
载波监听多点接入/碰撞避免CSMA/CA (carrier sense multiple access with collision avoidance)
隐蔽站问题:A和C同时向B站发送信息,造成冲突,CSMA/CA就是解决这个问题
- 预约信道
- ACK帧
- RTS/CTS帧(可选)
CSMACD和CSMACA协议之间的区别主要是基于它们应用的网络环境和传输介质的特性。CSMACD协议适用于有线网络环境,因为有线网络具有较高的信号可靠性和较低的传输干扰。在有线网络中,冲突发生的概率较低,因此CSMACD通过冲突检测和重传策略来处理冲突是有效的。
相比之下,无线网络环境下的传输介质(如无线电波)具有更高的干扰和不可靠性。由于无线信道的特性,多个节点同时发送数据会导致冲突的发生概率较高。为了降低冲突的发生,CSMACA协议引入了RTS/CTS握手过程,通过预先协调的方式避免冲突的发生,从而提高了无线网络的传输效率和可靠性。
因此,CSMACD和CSMACA协议在应用于不同的网络环境时,根据传输介质的特性和冲突发生的概率选择了不同的工作机制,以提供更好的性能和适应性。
相同点:
CSMA/CD与CSMA/CA机制都从属于CSMA的思路,其核心是先听再说。换言之,两个在接入信道之前都须要进行监听。当发现信道空闲后,才能进行接入。
不同点:
- 传输介质不同:CSMA/CD 用于总线式以太网[有线],而CSMA/CA用于无线局域网[无线]
- 载波检测方式不同:因传输质不同,CSMA/CD与CSMA/CA的检测方式不同。CSMA/CD通过申缆中电乐的变化来检测,当数据发生碰撞时,电缆中的电压就会随着发生变化:而CSMA/CA采用能量检测(ED)、载波检测 (CS)和能量载波混合检测三种检测信道空闲的方式。3.CSMA/CD检测冲突,
- CSMA/CA避免冲突,二者出现冲突后都会进行有上限的重传。
信道划分介质访问控制 (MAC Multiple Access Control ) 协议:基于多路复用技术划分资源网
络负载重:共享信道效率高,且公平(当初网络资源分配的时候就公平)。
网络负载轻:共享信道效率低
随机访问MAC协议:用户根据意愿随机发送信息,发送信息可独占信道带宽
- 网络负载重:产生冲突开销
- 网络负载轻:共享效率高。单个节点可利用信道的全部带宽
轮询访问MAC协议/轮流协议/轮转访问MAC协议:既要不产生冲突,又要发送时占全部带宽
轮询介质访问控制(Polling Medium Access Control)是一种介质访问控制协议,用于协调多个节点在共享介质上的访问。在轮询MAC中,一个主控节点负责控制介质的访问,它按照一定的顺序依次轮询每个参与通信的节点,使每个节点有机会发送数据。
工作原理:
主节点轮流“邀请”从属节点发送数据(数据帧)
等待令牌发送数据,
令牌:一个特殊格式的MAC控制帧,不含任何信息控制信道的使用,确保同一时刻只有一个结点独占信道。令牌环网无碰撞
每个结点都可以在一定的时间内 (令牌持有时间) 获得发送数据的权利,并不是无限制地持有令牌。
问题:令牌开销,等待延迟
应用于令牌环网(物理星型拓扑,逻辑环形拓扑)采用令牌传送方式的网络常用于负载较重、通信量较大的网络中
MAC介质访问控制章节总结:
局域网(Local Area Network): 简称LAN,是指在某一区域内由多台计算机互联成的计算机组,使用广播信道。
- 特点1:覆盖的地理范围较小,只在一个相对独立的局部范围内联,如一座或集中的建筑群内。
- 特点2:使用专门铺设的传输介质(双绞线、同轴电缆)进行联网,数据传输速率高 (10Mb/s~10Gb/s)。
- 特点3:通信延迟时间短,误码率低,可靠性较高。
- 特点4:各站为平等关系,共享传输信道。
- 特点5:多采用分布式控制和广播式通信,能进行广播和组播
决定局域网的主要要素为: 网络拓扑,传输介质与介质访问控制方法。
局域网的拓扑结构
总线型拓扑胜出好吧
局域网介质访问控制:
局域网的分类
IEEE 802系列标准是IEEE 802 LAN/MAN 标准委员会制定的==局域网、城域网技术标准==(1980年2月成立)。其中最广泛使用的有以太网、令牌环、无线局域网等。这一系列标准中的每一个子标准都由委员会中的一个专门工作组负责。
IEEE 802标准所描述的局域网参考模型只对应OSI参考模型的数据链路层与物理层,它将数据链路层划分为逻辑链路层LLC子层和介质访问控制MAC子层。
章节知识小结:
有线局域网(Wired Local Area Network,简称 LAN)是一种通过物理连接传输数据的局域网技术。它使用有线传输介质(如双绞线、光纤等)来连接计算机和设备,以实现数据的传输和通信。
在有线局域网中,计算机和设备通过网络交换设备(如交换机)或集线器(Hub)等中心设备连接到局域网。这些中心设备充当数据的转发和分发点,确保数据从一个节点传输到另一个节点。
有线局域网使用一系列的标准和协议来定义物理连接、数据传输和网络通信规则。其中最常见的是以太网(Ethernet)标准,它定义了局域网中的物理层和数据链路层的协议
以太网(Ethernet)是一种常见的局域网(LAN)技术,广泛应用于各种场景,包括家庭、办公室、数据中心等。它是一种基于**CSMA/CD(Carrier Sense Multiple Access with Collision Detection载波监听多点接入碰撞检测协议)协议的有线介质访问控制技术**。提供的是一种无连接的服务,也被称为无连接不可靠服务。
以下是以太网的一些关键特点和应用领域:
总之,以太网是一种成熟且广泛应用的局域网技术,它通过CSMA/CD协议实现介质访问控制,支持高速数据传输和各种应用场景。随着技术的不断发展,以太网持续演进,提供更高的速率和更强大的功能。
所以以太网也可以称为802.3局域网
在后面的以太网MAC帧中我再深入讲解无连接不可靠服务
由于无连接和不可靠的特性,以太网对于某些应用场景可能不适合,特别是对于要求高可靠性的应用,如传输关键数据或实时通信。然而,许多应用仍然能够通过在上层协议(如TCP/IP协议栈)中实现可靠性、错误检测和纠正的机制来弥补以太网本身的不可靠性。
总的来说,以太网作为一种无连接的、不可靠的服务,适用于大多数局域网环境,提供了灵活的数据传输方式。但在特定的应用场景中,需要额外的机制来确保数据的可靠性和错误处理。
逻辑上采用总线型,物理上采用星型
有线局域网内部,如果设备之间可以直接通信,可以使用mac地址进行通信,而无需使用ip地址。但如果是跨网络与其他网络通信,就需要用到ip地址咯(而无线局域网通常都会通道ip地址,后面再细说)
适配器和MAC地址在以太网中起着重要的作用。下面是对适配器和MAC地址的解释:
适配器(Network Adapter): 适配器是计算机或设备与以太网之间的接口,也称为网络接口卡(NIC)或网卡。适配器负责将计算机内部的数据转换成以太网帧,并通过物理介质(如双绞线或光纤)将帧发送到以太网中。适配器也负责接收从以太网中传输的帧,并将其解析和传递给计算机。
MAC地址(Media Access Control Address): MAC地址是适配器在出厂时分配的唯一标识符,用于在以太网中唯一标识一个适配器。它是一个48位的地址,通常用十六进制表示,由6个字节组成。前3个字节称为组织唯一标识符(Organizationally Unique Identifier,OUI),由IEEE(Institute of Electrical and Electronics Engineers)分配给硬件制造商。后面的3个字节是由硬件制造商自行分配的,用于唯一标识适配器。
MAC地址在局域网中起着至关重要的作用。当一个以太网帧发送到局域网上时,它包含目标MAC地址和源MAC地址。交换机通过目标MAC地址来决定将帧发送给哪个接口,以实现帧的有针对性转发。源MAC地址则用于标识帧的来源。
值得注意的是,MAC地址是在数据链路层(第二层)上使用的地址,它只在局域网中起作用,不跨越路由器。当数据从一个局域网传输到另一个局域网时,会使用更高层次的地址,如IP地址。
适配器和MAC地址的配合使用,确保了数据在以太网中的正确传输和目标设备的正确识别。
mac地址48位二进制,常用6个两位的16进制数表示(相当于6个字节)
MAC地址是数据帧中的源MAC地址和目标MAC地址字段,用于唯一标识网络接口。源MAC地址表示发送数据帧的设备的MAC地址,而目标MAC地址表示数据帧的接收方设备的MAC地址。由于MAC地址在以太网中起着关键的作用,以太网数据帧通常被称为以太网MAC帧,以突出MAC地址在帧结构中的重要性
以太网MAC帧也就是以太网数据帧,是以太网传输数据的基本单位
有些地方认为帧开始定界符不属于前导码
以太网V2数据帧的最小长度为64字节(包括前导码和帧尾部的额外填充字节)。如果数据部分小于46字节,则会使用填充字节来满足最小长度要求。
需要注意的是,以太网V2数据帧是一种最常见的以太网帧格式,广泛应用于以太网环境中。但也有其他以太网帧格式存在,如IEEE 802.3帧格式,它在某些特定情况下使用。
好了,那么问题来了,以太网既然提供的是无连接不可靠传输,那为什么会有FCS帧检验序列来检错呢???
==首先这不矛盾的,以太网是一种无连接的通信协议,发送方不会等待接收方的确认或反馈。当接收方检测到数据帧中的错误,它会简单地丢弃该帧,并不会发送任何消息给发送方。==而二进制退避算法是发送方根据总线上电压的摆动值,判断是否发生碰撞冲突来决定重传。这里的二进制退避算法的重传和差错重传还是不一样的!!
这种行为是基于以太网的设计原则之一,即提供无连接不可靠的传输服务。以太网的设计目标是尽量简单和高效,以满足大规模数据通信的需求。因此,如果数据帧在传输过程中发生错误,以太网的处理方式是丢弃该帧,并不会触发重传操作。
如果在特定应用场景中需要可靠的数据传输,可以在上层协议或应用层中实现额外的机制,如TCP协议提供的确认和重传机制。
高速以太网是指以太网技术在传输速率上达到了较高的水平。在过去,以太网的传输速率相对较低,如10 Mbps(以太网)、100 Mbps(快速以太网)和1 Gbps(千兆以太网)。但随着技术的进步和需求的增长,高速以太网应运而生,提供了更高的传输速率。
以下是一些常见的高速以太网标准及其传输速率:
除了以上的标准,还有更高速的以太网标准,如400 GbE和800 GbE,它们正在逐渐发展和部署,以满足不断增长的数据传输需求和应用场景。
高速以太网的出现提供了更大的带宽和更快的数据传输速度,支持了大规模的数据传输、云计算、虚拟化、高性能计算等应用。它在现代网络中起着关键的作用,推动了数据通信的发展和创新。
章节知识小结:
无线局域网(Wireless Local Area Network,简称 WLAN)是一种无线通信技术,用于在有限范围内建立局域网连接。与传统的有线局域网相比,无线局域网通过无线信号传输数据,不需要物理连接。
无线局域网使用无线技术(如无线电波或红外线)来传输数据。它允许移动设备(如笔记本电脑、智能手机、平板电脑等)在局域网范围内无线连接到网络,并进行数据通信。无线局域网通常使用**无线接入点(Wireless Access Point,简称AP)**作为中心设备,它负责无线信号的发射和接收,以及与有线网络的连接。
无线局域网采用不同的标准和协议,最常见的是Wi-Fi(无线保真)标准。Wi-Fi标准由IEEE制定,定义了无线局域网的各个方面,包括频率、传输速率、安全性等。Wi-Fi网络可以提供高速的无线数据传输,支持多设备同时连接,并采用一系列的安全机制来保护数据的隐私和完整性
IEEE 802.11是无线局域网通用的标准,它是由IEEE所定义的无线网络通信的标准。(WIFI属于无线局域网的一种)
接收端和发送端对应基站,目的地址和源地址对应发送的手机。此处的这种地址对应的就是WDS(无线分布式系统)的帧格式,此外还有很多中格式,如下(其中AP表示基站 ):
有固定基础设施无线局域网
无固定基础设施无线局域网的自组织网络(了解就行别管)
在无线局域网(WLAN)内部通信中,使用IP地址的主要原因如下:
尽管在局域网内部通信时,可以直接使用MAC地址进行设备之间的通信,但使用IP地址提供了更大的灵活性和扩展性,以支持跨网络通信、协议一致性和网络管理。因此,无线局域网通常会使用IP地址作为通信和连接的标识符。
广域网(WAN,Wide Area Network),通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个城市或国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。
广域网的通信子网主要使用分组交换技术。广域网的通信子网可以利用公用分组交换网、卫星通信网和无线分组交换网,它将分布在不同地区的局域网或计算机系统互连起来,达到资源共享的目的。如因特网Internet)是世界范围内最大的广域网。
广域网涉及计算机网络的物理层,链路层,网络层。而局域网只涉及物理层和链路层。广域网强调的是数据共享,而局域网强调的是数据传输
PPP协议是一种点到点(一根链路两端只有两个接口)链路层协议,主要用于在全双工的同异步链路上进行点到点的数据传输。
串口和以太网口:
串口(serial):一般用于广域网,它可以做为PPP,帧中继等网络类型的连接端口,用于远距离数据传输。
以太网口(Ethernet):一般用于局域网,它可以作为以太网的连接端口,用于短距离数据传输。
数据传输方式(data transmission mode),是数据在信道上传送所采取的方式。
- 若按数据传输的顺序可以分为并行传输和串行传输;
- 若按数据传输的同步方式可分为同步传输和异步传输;
- 若按数据传输的流向和时间关系可以分为单工、半双工和全双工数据传输
点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的数据链路层协议,用户使用拨号电话接入因特网时一般都使用PPP协议
只支持全双工链路
PPP协议需要满足的要求
PPP协议无需满足的要求
PPP协议的数据帧格式如下:
PPP协议的数据帧以帧起始标志(0x7E)作为开始和结束的标识,地址、控制和协议字段指定了帧的一些控制信息,信息字段包含了上层协议的数据,而帧检验序列(FCS)用于校验帧的完整性。
信息字段是帧中实际承载数据的部分,长度可变,取决于上层协议传输的数据。帧检验序列(FCS)是使用CRC算法计算的校验值,用于检测帧在传输过程中是否发生错误。
帧结束标志(Flag)标识帧的结束,与帧起始标志(Flag)配对使用,用于标识帧的边界。
通过上述的数据帧格式,PPP协议实现了数据的封装和传输,提供了简单而可靠的点对点连接机制,支持多种网络层协议的传输。
高级数据链路控制(High-level Data Link Control或简称HDLC),是一个在同步网上传输数据、面向比特的数据链路层协议,它是由国际标准化组织SO)根据BM公司的SDLC(SvnchronousData Link Control)协议扩展开发而成的数据报文可透明传输,用于实现透明传输的“0比特插入法”易于硬件实现
采用全双工通信
所有帧采用CRC检验,对信息帧进行顺序编号,可防止漏收或重份,传输可靠性高。
主站、从站、复合站
主站的主要功能是发送命令(包括数据信息)帧、接收响应,并负责对整个链路的控制系统的初启、流程的控制、差错检测或恢复等。
从站的主要功能是接收由主站发来的命令帧,向主站发送响应帧,并且配合主站参与差错恢复等链路控制。
复合站的主要功能是既能发送,又能接收命令帧和响应帧,并且负责整个链路的控制。
三种数据操作方式:
- 正常响应方式
- 异步平衡方式
- 异步响应方式
HDLC协议的帧格式如下:
HDLC协议的帧以帧起始标志(0x7E)作为开始和结束的标识,用于帧的同步。地址字段用于标识帧的接收方,对于点对点连接,通常为单播地址。控制字段包含了一些控制信息,如传输模式(如确认/非确认模式)、帧类型(如信息帧、确认帧、控制帧)和流量控制。信息字段承载了上层协议的数据。
帧检验序列(FCS)是使用CRC算法计算的校验值,用于检测帧在传输过程中是否发生错误。FCS值在接收端进行校验,如果校验失败,则表明帧存在错误,需要进行重传或其他处理。
章节知识小结:
集线器(Hub)是一种用于在计算机网络中连接多个设备的设备。它是网络中的被动设备,主要用于物理层的信号放大和转发。
主机之间如果只通过集线器连接,一旦距离过长,失真就会变得非常严重,所以就需要扩展以太网
物理层扩展以太网:
- 通过光纤扩大网络的范围。
- 本来每一个集线器作为一个冲突域(因为同一个集线器内同一时间只允许一个数据帧再传输),但为了网络的范围,就又连接一个主干集线器。但这样冲突域就扩大了,信号传递效率变低了。如何扩大通信的范围同时不扩大冲突域呢?
答案就是使用网桥和交换机
网桥根据MAC帧的目的地址对帧进行转发和过滤。当网桥收到一个帧时,并不会向所有接口转发此帧,而是先检查此帧的目的MAC地址,然后再确定将该帧转发到哪一个接口,或者是把它丢弃(即过滤)。
网桥(Bridge)是一种在计算机网络中用于连接两个或多个局域网(LAN)的设备。它是数据链路层设备,能够接收、处理和转发数据帧。
网桥的主要功能是在不同的局域网之间实现数据的转发和交换,使得这些局域网可以互相通信。它通过学习和维护每个连接到它的网络设备的MAC地址,来建立一个转发表(也称为学习表或桥表),记录每个设备所在的接口。
当一个数据帧到达网桥时,网桥会检查目标MAC地址,并查询转发表以确定如何处理该帧。如果目标MAC地址在转发表中,则将数据帧只转发到目标接口,从而将数据帧传递给正确的目标设备。如果目标MAC地址不在转发表中,网桥会广播该数据帧到所有其他接口上,以便找到目标设备并更新转发表。
通过学习和更新转发表,网桥可以建立一个基于MAC地址的转发机制,实现局域网内的数据帧交换和局域网之间的数据转发。这种转发方式避免了数据帧在整个网络中传播,提高了网络的性能和效率。
网桥还具有以下特点和功能:
需要注意的是,随着技术的发展,网桥的功能逐渐融入到交换机(Switch)中。交换机可以看作是一种多端口的网桥,能够更高效地处理数据帧和转发数据,同时支持更多的功能和特性。因此,在现代的网络中,交换机更常见和广泛使用,而网桥的使用相对较少
透明网桥: 透明网桥是最常见和普遍使用的网桥类型。它在数据链路层上操作,通过学习和维护MAC地址表来转发数据帧。当一个数据帧到达透明网桥时,它会检查目标MAC地址,并查询MAC地址表以确定如何转发该数据帧。透明网桥在转发过程中不修改数据帧的内容,只根据MAC地址来进行转发。
透明网桥能够自动学习和更新MAC地址表,以便建立适当的转发路径,实现不同局域网之间的数据转发。它具有**自动学习、自适应拓扑和隔离冲突域**的特点。
网桥的自学习算法是指其能够学习和记忆网络中各个节点(主机)的MAC地址,并根据这些信息来进行数据包的转发。下面是网桥的自学习算法的一般步骤:
源路由网桥:在发送帧时,把详细的最佳路由信息(路由最少/时间最短) 放在的首部中(如何获得最佳路由信息,起点发送发现帧,到达终点返回路径信息)
源路由网桥: 源路由网桥是一种更早期的网桥类型,它在数据链路层上操作,并使用源路由信息来确定数据帧的转发路径。在源路由网桥中,发送端将数据帧的完整路由路径信息放入数据帧的源路由字段中。当数据帧到达源路由网桥时,网桥会根据源路由字段中的路由信息来决定如何转发数据帧。
与透明网桥不同,源路由网桥在数据帧的源端添加了路由信息,因此它能够控制数据帧的转发路径。源路由网桥的路由信息由网络管理员预先配置,并与网络拓扑相关。源路由网桥要求网络中的所有设备都支持源路由功能。
(交换机实际上是多端口的网桥)
以太网交换机的两种交换方式(通常采用存储转发)
冲突域和广播域
局域网既可以是冲突域也可以是广播域,具体取决于局域网的物理结构和网络设备的配置。在现代以太网中,随着交换机的广泛应用,通常会将局域网划分为多个广播域,以提高网络的性能和安全性
例题:
答案:4,1
深入理解交换机和集线器,集线器不能隔离冲突域(发出去的消息谁都能收,所以同一时间只能一台设备发消息,相当于导线了就,根据CSMA等协议,是不可能实现多台主机发送消息的)。交换机隔离冲突域,对于来自不同的主机的信息,交换机会根据目标MAC地址和端口的状态进行转发,以确保每个主机能够独立地进行通信。交换机的转发能力和带宽利用率高,可以实现多个主机之间的并行通信,而不会干扰其他主机之间的通信。
交换机利用MAC地址学习和转发技术,将数据帧仅发送到目标设备所连接的端口上。这意味着在交换机中,每个端口都有独立的通信路径,可以同时进行数据传输,而不会相互干扰。
因此,通过使用交换机,连接的主机可以同时发送信息,而不会出现冲突或干扰,提供了更高效的网络通信能力。
章节知识小结:
网络层是计算机网络中的一层,它主要负责在网络中传输数据包。网络层的作用是实现端到端的数据传输,并确保数据能够从源主机传输到目标主机。
以下是网络层的主要功能和作用:
总之,网络层的主要作用是在网络中负责数据包的路由选择和传输,实现端到端的通信。它提供了网络中数据传输的基本机制,为上层应用层提供可靠的数据传输服务。
分为电路交换,报文交换和分组交换
交换设备可以是链路层的网桥和交换机(链路层),也可以是网络层的路由器 (网络层设备)
电路交换:在电路交换中,建立了一条专用的物理通路,该通路在通信会话期间一直保持开放。当通信会话开始时,数据被分割为连续的数据流,并在通路上按==顺序传输。在电路交换中,通路上的资源(如带宽)被独占==,并且在通话期间无法被其他通信使用。传统的电话网络就是采用电路交换方式。然而,电路交换的资源利用率较低,因为通路在通话期间被保留,即使在无数据传输的时候也是如此。因此,在现代计算机网络中,分组交换更为常见。
网络层的电路交换虽然已经被逐渐取代,但在某些特殊场合下仍然有应用。例如,在某些军事通讯或安全通讯领域**,由于其传输质量稳定且不易被截获的特点**,还会继续采用电路交换技术。
在报文交换中,数据被整个报文(也称为消息)的形式进行传输。发送方将完整的报文发送到网络中的交换节点,交换节点在收到报文后,暂时存储起来,并根据目标地址信息将其转发到下一个交换节点,直到报文达到目标节点(具体如何转发,参照路由表,后面会讲解)。每个报文都有唯一的标识符,用于在交换节点之间进行正确的路由和转发。
与分组交换不同,报文交换中的报文在传输过程中保持完整性,并且在节点之间进行存储和转发。这意味着报文交换具有较高的可靠性,因为报文在传输过程中不会被分割或重新组装。然而,由于报文需要在节点之间存储和转发,因此报文交换方式的延迟较高,且对存储资源的需求较大。
分组交换:在分组交换中,数据被划分为较小的数据包(也称为数据分组或数据报),每个数据包都独立地在网络中传输。当数据包从源主机发送到目标主机时,它们可以通过不同的路径和中间设备(如路由器)传输。每个数据包独立选择最佳路径,并通过存储转发方式在网络中逐跳传输。在目标主机接收到所有数据包后,它们会被重新组装成完整的数据。常见的分组交换协议是互联网协议(IP)。
分组交换向下细分为数据报方式和虚电路方式
- 数据报分组交换为网络层**提供无连接服务**(无连接服务:不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同)
- 虚电路分组交换为网络层**提供连接服务**(连接服务:首先为分组的传输确定传输路径(建立连接),然后沿该路径(连接) 传输系列分组,系列分组传输路径相同,传输结束后拆除连接。)
三种交换方式比较
- 报文交换和分组交换都采用存储转发
- 传送数据量大,且传送时间远大于呼叫时,选择电路交换。电路交换传输时延最小。
- 从信道利用率看,报文交换和分组交换优于电路交换,其中分组交换时延更小。
在详细了解分组交换中的数据报方式和虚电路方式之前,先看看网络传输单元名词
应用层:报文
传输层:报文段
网络层:IP数据报,分组
报文段到网络层,封装加上IP地址,包括源地址和目的地址。封装号就叫IP数据报。如果IP数据报过大,也就是大于数据链路层的MTU最大传输单元,就需要对IP数据包切割,也就是分组
数据链路层:帧
对IP数据报或者分组加投加尾,包括MAC地址,物理地址和FCS帧检验序列
物理层:比特流
数据报的特点是无连接:不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同
各个分组携带源地址和目的地址,到达路由器,路由器根据分组的目的地址转发分组:基于路由协议/算法构建的转发表(后面会讲);分组检索转发表;每个分组独立选路
虚电路将===分组交换方式和电路交换方式结合==,以发挥两者优点。
与虚电路相对的是数据报网络(Datagram Network),在数据报网络中,每个数据包都是独立的,通过网络独立地传输,并且每个数据包都包含完整的目标地址信息。而在虚电路网络中,数据传输是建立在预先建立的逻辑路径上的,数据包沿着这个路径按序传输,不需要在每个数据包中携带完整的目标地址信息。
在建立阶段,源节点向目标节点发送请求建立连接的消息。如果目标节点接受连接请求,将会在网络中建立一条虚电路,并为该虚电路分配一个唯一的标识符。该标识符用于在数据传输阶段标识该虚电路。
在数据传输阶段,数据包沿着建立的虚电路进行传输。每个数据包都被打上虚电路标识符,并按照顺序发送。中间节点根据虚电路标识符将数据包转发到正确的下一个节点,最终到达目标节点。
虚电路:一条源主机到目的主机类似于电路的路径(逻辑连接),路径上所有结点都要维持这条虚电路的建立,都维持一张虚电路表,每一项记录了一个打开的虚电路的信息。
通信过程如下:
分组进行数据传输前先与目的主机建立联系(类似电路交换),每一个分组携带虚电路号,用于标识该分组应该走哪一条虚电路(以至于分组的数据传输线路固定)。
路由算法是计算机网络中用于确定数据包从源节点到目标节点的最佳路径的算法。路由算法的目标是在网络中选择最优路径,以最高效地传输数据
路由中的路由表决定了分组传输的路线,路由器通过路由算法计算计算最佳路由,填入路由表。所谓最佳只能是相对与某一种特定要求下得出的较为合理的选择而已
路由算法分为静态路由算法和动态路由算法
静态路由算法(非自适应路由算法)
管理员手工配置路由信息。简便、可靠,在负荷稳定、拓扑变化不大(就是指不会出现计算机突增突减的情况)的网络中运行效果很好,广泛用于高度安全性的军事网络和较小的商业网络。
特点:路由更新慢,不适用大型网络
动态路由算法(自适应路由算法)
路由器间彼此交换信息,按照路由算法优化出路由表项路由更新快,适用大型网络,及时响应链路费用或网络拓扑变化。
特点:算法复杂,增加网络负担。
动态路由算法分为全局性和分散性:
全局性动态路由算法:链路状态路由算法OSPF,所有路由器掌握完整的网络拓扑和链路费用信息
分散性动态路由算法:距离向量路由算法RIP,路由只掌握物理连接的邻居及链路费用。
路由协议是计算机网络中用于确定数据包在网络中传输路径的协议。它们定义了路由器之间的通信方式,常见的如OSPF,RIP,静态路由,BGP等。
以下是一些常见的路由协议:
由于因特网规模很大,如果公用路由表规模庞大,并且许多单位不想让外界知道自己的路由选择协议,但还想连入因特网。所以整个因特网分为很多小团体,称为**自治系统AS**。为什么要自治系统?因为可以自治啊xd(一个自治系统往往包括多个局域网)
自治系统内的路由器使用内部路由协议(如OSPF、EIGRP等)进行内部通信和路由选择。同时,自治系统之间的路由选择通过外部网关协议(如BGP)进行交换和决策。BGP允许不同的自治系统之间协商和交换路由信息,从而实现全球范围内的互联互通。
每个自治系统内部可以自主决策其路由策略,包括选择最佳路径、设置策略、优化网络性能等。这样的自治性使得不同的网络运营商、组织和企业能够独立地管理和控制其网络,从而实现更灵活和有效的网络通信和管理。
路由选择协议分为内部网关协议IGP(一个AS内使用,如RIP和OSPF)和外部网关协议EGP(AS之间使用,如GBP)
RIP规定自治系统内路由器的任务,记录路由器自身到达其他任何一个网络的最佳距离记录。而距离向量算法则提供了如何实时获取这个最佳距离的可行方法
这里先总结内部网关协议IGP中的RIP,应用于小型网络
RIP是一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单。
RIP协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录(路由表记录着从自身到其他每一个目的网络的最佳距离,即一组距离,也就是距离向量)
距离:通常为“跳数”,即**从源端口到目的端口所经过的路由器个数**(其实还要加1),经过一个路由器跳数+1。特别的,从路由器到直接连接的网络距离为1。RIP允许一条路由最多只能包含15个路由器,因此距离为16表示网络不可达(所以距离范围是1-16,16就是不可达)
所以RIP协议只适用于小互联网!!
路由到目的网络初始值为1,中间几个路由器,就加几
现在假定有了路由表(距离向量算法来获取路由表)由于网络是动态变化的,包括网络拓扑变化,故障发生等,路由表需要实时的更新自己的路由表。所以就有了定时交换路由表
RIP协议中定时交换路由表信息的目的是为了使路由器了解到网络拓扑的变化,并及时更新路由信息
路由表通过”交换“来完善表中信息,和谁交换?交换什么?多久交换?
下面详细了解路由器交换信息的过程
路由器刚开始工作时,只知道直接连接的网络的距离(距离为1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
经过若干次更新后,所有路由器最终都会知道到达本自治系统内任何一个网络的最短距离和下一跳路由器的地址,即“收敛”。
总结就是:路由器彼此之间,每个30s广播自身路由表,使用距离向量算法更新路由表,以达到收敛,获取自治系统内所有网络的可达信息
而具体如何跟新路由表?就是下面的鹅距离向量算法了
RIP报文包含路由表的全部信息
修改相邻路由器发来的RIP报文中所有表项(只会和相邻路由交换信息)
对地址为X的相邻路由器发来的RIP报文,修改此报文中的所有项目:把“下一跳”字段中的地址改为X,并把所有的“距离”字段+1。
对修改后的RIP报文中的每一个项目,进行以下步骤:
若180s还没收到相邻路由器X的更新路由表,则把X记为不可达的路由器,即把距离设置为16(不可达)
返回
习题1:
习题2:
首先各个向量的目的网络顺序的确定,是ABCDEF还是FEDCBA?根据路由器自己到自己的距离为零,确定为第一种。
其次理解延迟?也就是C到达B、D、E的跳数任然有6、3、5通过三种比对三种方式到达所有节点,找出最短距离,答案选B
了解即可
我在看这里的时候疑惑的点是:为什么会误认为,为什么会更新,路由器之间传输用户数据包时不会更新路由表的啊。所以答案只有一个上面图中的数据报是路由器的更新数据报,也就是RIP报文。第一次,R1路由器是没有Net1网络的信息的,所以对于路由器R2发来最新的RIP报文,直接将最新的路由信息加到R1中了。加下来,每次更新路由,双方都会根据最新的路由信息更新,也就是距离每次都加1,一直加
最后:
章节知识大纲:
这里总结内部网关协议中的OSPF
开放最短路径优先OSPF协议:“开放”标明OSPF协议不是受某一家厂商控制,而是公开发表的;“最短路径优先“是因为使用了Dijkstra提出的最短路径算法SPF。
OSPF最主要的特征就是使用分布式的链路状态协议。
RIP交换的是自己的路由表,OSPF交换的是所有相邻路由器的链路状态
下面是OSPF协议的简要过程:
邻居发现(Neighbor Discovery):在OSPF网络中,路由器首先通过发送Hello消息来发现与其直接相连的邻居路由器。路由器通过接收和解析Hello消息来建立邻居关系。
这里:OSPF会周期性的发送Hello消息来维护邻居关系。当网络中路由变化时,邻居关系就会中断或重新建立,从而通知其他路由器发生拓扑变化。一旦发生变化,路由器就会洪范发送此信息
邻居建立(Neighbor Establishment):一旦路由器发现了潜在的邻居,它们会交换其OSPF路由信息,并通过交换Router-LSA(Link State Advertisement)和Hello消息来验证彼此的身份和可达性。如果一切正常,邻居关系将被建立。
链路状态数据库同步(Link State Database Synchronization):一旦邻居关系建立,路由器之间开始交换链路状态信息。每个路由器将自己的链路状态信息(LSA)发送给邻居,并在接收到邻居的LSA后更新其链路状态数据库(LSDB)。通过交换LSA,所有路由器可以获得==网络拓扑图==的一致视图。
最短路径计算(Shortest Path Calculation):基于链路状态数据库中的信息,每个路由器独立地计算到达网络中各个目的地的最短路径。这使用了**Dijkstra算法或其变体**,路由器将计算出的最短路径存储在其路由表中。
SPF树构建(SPF Tree Construction):SPF树是基于OSPF的链路状态信息计算得出的最短路径树,用于确定从一个源路由器到网络中所有目的地的最短路径。SPF树以源路由器为根节点
路由表更新(Routing Table Update):根据最短路径计算的结果,每个路由器更新其路由表,将目的地与相应的下一跳路由器关联起来。这样,路由器可以根据路由表决策转发数据包。
数据包转发(Packet Forwarding):根据路由表转发数据包
这些步骤使得OSPF能够实现动态路由,提供网络中的最短路径选择,并在网络拓扑变化时自动调整路由。
只要链路状态发生变化,就会洪泛发送链路状态更新分组,告知
OSPF的设计目标之一是提供可扩展性和管理性能。在大型网络中,完整的OSPF域可能包含数百个甚至数千个路由器,这样的规模会导致链路状态数据库(LSDB)的增长和最短路径计算的复杂性增加。为了解决这个问题,OSPF引入了分区的概念。
主干区域的区域标识符为0.0.0.0,负责联通其他区域
我们通常认为他是网络层协议(有争议的)
RIP(Routing Information Protocol)和OSPF(Open Shortest Path First)是两种常见的内部网关协议(IGP),用于在IP网络中实现动态路由。以下是它们之间的一些比较:
总的来说,RIP适用于小型网络,配置简单,但可扩展性和功能有限。而OSPF适用于大型网络,提供更高级的功能、可靠性和安全性,但配置和管理复杂一些。选择使用哪种协议应该根据具体网络的规模、需求和复杂性来决定。
前面讲完了内部网关协议,这里讲外部网关协议BGP
BGP(Border Gateway Protocol)是一种用于**互联网自治系统(AS)之间进行路由选择和交换路由信息的外部网关协议**。它是互联网中最重要的路由协议之一,负责在不同自治系统之间交换路由信息,并决定最佳路径来转发数据包。
每个自治系统AS至少有一个BGP发言人,通常由自治系统AS中边界路由器来担任,所以这些BGP发言人对内使用内部网关协议,对外使用外部网关协议。
BGP 所交换的网络可达性的信息就是要到达某个网络所要经过的一系列 AS。当 BGP 发言人互相交换了网络可达性的信息后,各 BGP 发言人就根据所采用的策略从收到的路由信息中找出到达各 AS 的较好路由。(网络太大,最好很难)
BGP发言人交换路径向量:
只需要知道相邻的BGP发言人可以交换网络可达信息,而这个信息是一个路径向量
一个BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立TCP 连接,即通过TCP传送,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。
BGP的四种报文:
BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
CIDR(Classless Inter-Domain Routing)是一种用于对IPv4和IPv6地址进行路由和子网划分的方法。它取代了传统的基于网络类别的划分(如A类、B类、C类),提供了更灵活和高效的地址分配和路由表管理方式。
在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
首先回顾TCP/IP协议栈的模型(OSI参考模型是七层)
IP数组报和分组不用过多的区分,但区分还是有的,当IP数据报过大,大于数据链路层的MTU最大传输单元时,需要分组传输
IP数据报格式如下:
固定部分占用20B,可变部分有时候没有。数据部分是传输层的报文段,放在传输层去讲,这边不过多描述
IP数据包的详细:(下面没有提到的部分,接下来会讲)
下面的是IPv4的数据报格式
- 首部长度占IP数据包首部4位,表示单位时4B。4位二进制数表示范围为0~15,比如表示数值为8,那么首部长度为8*4B=32B。IP数据报首部包括固定部分和可变长度,由于固定部分为20B,所以首部长度的表示数值最小是5,
5*4B=20B
- 总长度占IP数据包首部16位,表示单位1B。总长度表示首部加数据部分的长度,最大表示IP数据报长度为65525,但实际上永远达不到这个数值,因为当IP数据报过大时需要分组
- 生存时间,以防IP数据报在路由溜圈消耗网络资源
- 协议指数据报的协议,协议名和具体的数字一一对应,如上表。记住**TCP面向连接的服务(就很6),而UDP不面向连接,数据容易遗弃(17)**记住这两个的字段值
链路层数据帧可封装数据的上限。以太网的MTU是1500字节(最小64,最大1500,不同的以太网标准会有所不同,我们考虑的是IEEE 802.1)。
数据链路层对上层的IP分组封装成帧,IP分组作为数据帧的数据部分,当年IP数据包过大就分片(前提时该数据报允许分片!)
分片说对谁分片?不是对IP数据包分片,是对IP数据包的数据部分分片!分片再加上首部,称为新的IP数据包!
- 在考虑标志的最低位MF时,应该注意DF位为0允许分片,否则毫无意义。
- 片偏移量:指出较长分组分片后,在源分组中的相对位置,以8B为单位,除了最后一个分片,每一个分片长度一定是8B的整数倍–注意这里的分片是针对数据部分,也就是数据部分需要时8B的整数倍
例题:
题目中说了允许IP数据报的最大长度为1420,IP数据报包括首部和数据部分(首部其实包括固定20字节+可变部分,这里应该是没有可变部分的)。
分片IP数据报的首部长度同于分片前IP数据报的首部,每一个IP数据报数据部分最多还能容纳1400字节长度(注意除了最后一个分片,其余数据分片需要时8B的整数倍,因为片偏移量是以8B为单位的xd。这道题1400刚好是8的整数倍,直接用就行)
IP数据包分片按照分片的最长长度。IP数据报分片的首部长度同于爸妈。第一个分片,片偏移量为0,第二个分片的片偏移量为1400/8=175,第三个分片的片偏移量为2800/8=350。
DF和MF分别是标志位,表示是否允许分片和当前分片后面是否还有分片
下面总结单位:
一种八片首饰(1总8片首4)
MTU既涉及到网络层也涉及到链路层。在网络层,MTU指的是IP数据包的大小,包括IP头和数据部分的总长度;在链路层,MTU指的是能够传输的最大帧大小,不同的网络技术和设备都有各自的MTU限制。因此,MTU既是网络层的概念,也是链路层的概念。在网络中,MTU的大小对数据传输的效率和稳定性都有很大的影响。
MTU的大小对网络传输的性能和效率有很大的影响。如果MTU设置过小,数据包的数量就会增多,网络传输效率会降低;如果MTU设置过大,则会出现分片现象,增加网络传输的延迟和数据丢失的可能性。因此,选择合适的MTU大小是保证网络传输效率和稳定性的重要因素
IP编址的历史阶段:分类的IP地址,子网的划分,构成超网(无分类编址方法)
IP地址是全世界唯一的32位/4字节标识符,标识路由器主机接口(一个电脑,可以由有线网络接口,无线网口接口等等等等,这些都需要IP地址)
IP地址由网络号和主机号构成:IP地址::{<网络号>,<主机号>}
如IP地址11011111 00000001 00000001 00000001
常用点分十进制的写法标识IP地址:223.1.1.1
路由器的每一个接口都有一个网络号的IP地址,每一个局域网都有一个特定的IP地址,网络号为特定值,主机号全1来表示(后面会讲)。下面共有6个网络,其中路由器之间的网络是无编号网络,该网络有特定的IP地址,但是没有主机,只是线路相连。如下:
IPv4地址分类最初引入是为了**支持早期互联网中不同规模的网络。它帮助定义了不同的地址范围和网络规模**。IP地址类别共分为五个类别:A、B、C、D和E类。每个类别有不同的地址范围和网络规模
ABC类IP地址网络号分别占1,2,3字节,网络类别位区分IP地址类别(可以根据IP地址点分十进制的第一个数字范围判断该IP地址是哪一类IP地址,本质还是看最前面1的个数嘛sb,大于240是E类,大于224是D类,大于192是C类,大于128是B类,剩下的A类)
- 网络号全0,表示本网络范围的主机,可以作为源地址,不能作为目的地址。–发送数据的时候不知道自己网络号,那么源IP的网络号就可以写全0
- 网路号和主机号全1,作为本网广播地址,不能作为源地址,但可以作为目的地址–路由器不转发,隔离广播域
- 网络号特定值,主机号全0表示的是一个网络。该网络内所有IP地址网络号都是一致的,也就是网络ip地址的网络号。
- 网络号特定值,主机号全1表示对特定网络上所有主机广播
总结:主机号全1就是广播分组,具体是其他网络广播地址还是本网络广播地址看网络号。主机号全0就是本网络的主机的意思
上面的6个特殊IP地址:
- 本地主机地址(网络号全0)
- 广播地址(主机号全1)
- 网络地址(主机号全0,网络号特定值)
- 环回地址(网络号127)
私有IP地址是再私有网络中使用的,不会**直接在公共互联网上路由。这些私有IP地址用于内部网络中的局域网(LAN)或本地网络**,并由网络管理员在内部网络中分配使用。可以理解为内部IP地址。不同的网络之间可以有相同的私有ip地址,他们不会发生冲突,因为他们是内部ip地址,对外无效
至于内部的IP地址如何与外部通信,就是网络地址转换NAT了
每个IP地址类别中的一部分地址段是为私有地址保留的,而其余部分则用于**公共地址或其他特定用途(特殊IP地址)**
其中网段个数就是网络个数,核心看地址范围呗就
- A类网络号1字节,对应10只有一种
- B类网络号2字节,对应31-16+1=16种
- C类网络号3字节,对应255-0+1=256种
插一句,这里王道说错了
A类地址中最大网络数目减2是因为全零代表本网络主机,全一也就是127代表环回地址。第一个网络号和最后一个可用网络号,分别就是7个二进制位出去全0和全1。每个网络最大主机数减去两个就是全零和全一,分别表示网络地址值(网络号)和广播地址(对应看上面的特殊IP地址的图即可)
B类IP地址网络号占16位,网络类别位占2位,剩余占14位,没有全零和127的情况,网络号范围全部可用!每个网络的最大主机数还是除去网络地址(网络号)和广播地址
C类地址,除去网络类别位三位,剩余网络号21位,没有全零和127的情况,网络号范围全部可用!最大主机数就是主机号除去网络号和广播地址
网络地址转换(Network Address Translation,NAT)是一种网络技术,用于将**私有IP地址转换为公共IP地址**,以实现内部网络与外部网络(如公共互联网)的通信。
NAT的主要目的是解决IPv4地址资源的短缺问题。由于IPv4地址的有限性,使用私有IP地址范围可以在内部网络中重复使用,而无需为每个设备分配唯一的公共IP地址。NAT通过在边界设备(如路由器或防火墙)上进行地址转换来实现。
以下是NAT的工作原理和主要功能:
通过使用NAT,多个设备可以共享少量的公共IP地址,并实现与外部网络的通信。NAT技术已广泛应用于家庭网络、企业网络和互联网服务提供商(ISP)等环境中。它在IPv4网络中起到了关键的作用,但在IPv6的广泛采用之后,NAT的需求将大大减少。
路由器对目的地址是私有IP地址的数据报一律不进行转发
网络地址转换NAT (Network Address Translation): 在专用网连接到因特网的==路由器上安装NAT软件==,安装了NAT软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址。
网络地址转换器内部通过网络地址转换表(NAT表来实现地址转换,WAN表示广域网,LAN是局域网)表中每一个空格前面是
==点分十进制==表示IP地址,紧接着的是端口。
首先分析局域网到广域网,局域网中存储源地址和目的地址和端口号,发送到NAT路由器,NAT路由器根据NAT路由器表,替换端口号和目标地址找到公网的主机,反过来广域网实现和局域网的数据通信也是如此。
分类IP地址的弱点:
- A、B、C类地址与实际使用场景不匹配,如C类地址包含主机数量太少不够用,而B类地址所包含的最大主机数量太多导致浪费,子网的诞生就是大大提高ip地址的利用率
- 同一网络下没有地址层次,不能在网络内部使用路由,导致管理困难。
这里不得不提学校老师说的话了:他说子网一定程度缓解了ipv4地址用尽问题(其实只是提高ip地址的利用率罢了)。不能说他说错了,只能说他说的很不准确,提高ip地址利用率这才是真作用好吧
子网划分是将一个大的IP地址空间分割成较小的子网的过程,它引入了以下作用和好处:
提高地址利用率:通过子网划分,可以将一个大的IP地址空间有效地划分成多个较小的子网。这样可以更灵活地分配IP地址,避免浪费和不必要的地址空间占用,提高地址利用率。
便于管理网络拓扑
改善网络性能:通过子网划分,可以将网络流量在不同的子网之间分散和隔离。这可以减少广播和冲突,提高网络的性能和响应速度。
等等巴拉巴拉
子网划分就是对分类IP地址中的主机号再划分
主机号至少留下两位分配,因为如果只有一位,要么零要么一,与网络号和广播地址冲突了。(主机号不能全零不能全一)
主机号是不能全0全1的,但是子网号要看是否有使用CIDR(有就行)
划分子网后,对外仍表现为一个网络(网络地址没变,还是网络号特定值,主机号全0),即本网络外看不见本单位内子网的划分。如下图三个子网,对外还是表现为一个网络
对于外部的IP地址,路由器只知道将其给那个网络,对于内部的子网应该如何传输,如何正确达到对应子网的主机呢?这就需要子网掩码
两级IP地址结构包括网络号和主机号两部分
三级IP地址结构包括网络号、子网号和主机号三部分
子网掩码有两级ip地址的子网掩码,也有三级ip地址的子网掩码。所以子网掩码就是将主机号写全0,其余全1就可以了
对于每一个IP地址,网络号和子网号全一,主机号全零(零一的位数对应IP地址中网络号和主机号的位数)
子网掩码与IP地址逐位相与,就得了子网网络地址
习题1:
不同的子网掩码可以得到相同的网络地址(这里的相同指数值相同)。 第一个子网掩码对应到网络地址有14位主机号,第二个子网掩码有13位主机号
习题2:
也就是求相应子网的广播地址,也就是主机号全一。那么关键就是求主机号和子网号,子网掩码的主机号位数根据子网掩码求解。
252对应
11111100
,也就是说主机号位2+8=10位,剩余网络号和子网号位22位,再看IP地址77对应01001101
,前面后面两位是主机号,设为全1,加上八个1就是广播地址了,最后选D(切记)
之前内部网关中说过RIP或者OSPF,其中提到过路由表(可近似认为是转发表),在学习子网掩码分组转发前,先了解路由表中记录了什么
- 目标网络:指示数据包要到达的目标网络的IP地址或网络号。
- 子网掩码:用于确定目标网络的范围,以便进行匹配。
- 下一跳:表示将数据包转发到的下一个路由器或目标的IP地址。这是数据包在网络中继续传递的下一步。
路由器转发分组的算法:(看是否能直接交付,不能再看转发表)
每一个路由器都有一个路由表,也叫转发表,注意路由表中记录的是目的网络地址和目的网络子网掩码
已知一个IP地址如何转发到目的主机?
路由器提取IP地址
判断是否能直接交付(也就是是直接相连的子网),如何判断呢,用目的IP地址和路由器所连的所有子网掩码来相与操作,如果对应上了路由器其中一个子网网络地址,就拿下!
- 间接交付指的是路由器对应的所有子网都没有目的IP地址
- 网络地址(网络号)的主机地址是全0的,所以根据子网就能计算出子网掩码哦,上图三个子网掩码都是相同的,都是255.255.255.0。可见不同子网可以有相同的子网掩码。
如果都没有对应上,就看特定主机路由,就是有IP地址搞特殊,路由表中记录一些特定ip地址,已经规划号走向的。如果有,还是拿下
到了这一步说明是间接交付,就将目的IP地址和路由器中每一行的目的网络子网掩码相于操作,如果恰好等于目的网络地址,则按照下一跳地址送出。如果还是没有通,就将分组交给默认路由,由默认路由再发给其他路由反复尝试,直到找到或者TTl生存时间到丢弃。
无分类编址(Classless Inter-Domain Routing,CIDR)是一种用于灵活划分和管理IP地址空间的寻址方案,它改进了传统的分类编址方法。
在传统的IP地址分类编址中,IP地址空间被分为A类、B类和C类地址,每个类别有固定的网络号和主机号分配规则。这种分类编址方法限制了地址空间的利用效率,并且在分配和路由方面存在一些问题。
CIDR引入了==可变长度子网掩码==(Variable Length Subnet Mask,VLSM)的概念,允许更灵活地划分IP地址空间。CIDR使用了前缀长度表示子网掩码,例如,/24表示子网掩码中连续的前24位为1,剩余位为0。CIDR中的前缀长度可以是任意值,允许对地址空间进行更细粒度的划分。
该地址块也可以写成**“\20地址块”**
如下无分类编址CIDR的IP地址:192.199.170.82/27
已知该IP地址位数为32,那么对于/27地址块,剩余5位主机号
步骤:将IP地址转化位二进制(不要傻傻全转化),27位网络前缀,也就是说前面三个字段都是网络前缀,只需要关心最后那个网络字段82:01010010
经过转化,最小IP地址192.199.170.64
。最大IP地址:192.199.170.95
将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合。
超网的作用:
超网的主要作用是简化和优化网络路由表。在传统的网络中,每个子网都需要被单独定义和管理,并在路由表中进行记录。当网络规模变大时,路由表的大小也会急剧增加,给网络设备带来了很大的负担。而超网技术可以将多个连续的子网合并为一个更大的网络,从而减少了路由表的条目数量,降低了路由器的负载和网络管理的复杂性。
通过超网技术,可以将相邻的子网组合为一个更大的网络,例如将多个相邻的子网合并为一个超网。这样做的好处是在路由表中只需要一条记录来表示整个超网,而不需要为每个子网都添加一条记录。这样可以减少路由表的条目数量,提高路由器的路由效率和网络的整体性能。
超网还可以帮助提高IP地址的利用率。传统的子网划分会导致大量IP地址的浪费,而超网技术可以将多个子网的地址空间合并为一个更大的地址空间,更有效地利用IP地址资源。
总而言之,超网是一种将多个子网合并为一个更大网络的技术,通过减少路由表的条目数量和提高IP地址的利用率,简化和优化网络的路由和管理,从而提高网络性能和效率。
方法是:将网络前缀缩短(具体的网络模糊化)
使用超网后,就需要用数据包中的目的地址和路由转发表中的网络前缀匹配,但由于构成了超网,网络前缀表示的是一个范围,可能会出现转发表中出现好几个匹配的网络前缀,这时候就需要最长网络前缀
使用CIDR时,查找路由表可能得到几个匹配结果,应选择具有最长网络前缀的路由。前缀越长,地址块越小,路由越具体。
例题一:
根据选项的目的网络,将==网络前缀==和数据报的目的地址132.19.237.5进行匹配。这道题可别以为很easy选c,选B的实际上。AB都能匹配上,但A选项地址块只有8位,小于B选项的11位。C选项22位网络前缀没有匹配上!!
例题二:
这道题就是再误分类CIDR基础上再进行子网划分。首先网络前缀24位,采用定长子网划分,根据子网掩码(主机号全0,网络号和子网号全1)可知主机号有3位,子网号5位,所以子网最大个数就是25=32,最大可分配地址:23-2=6,答案选B
由于在实际网络的链路上传输数据帧时,最终必须使用MAC地址。
ARP协议:完成主机或路由器IP地址到MAC地址的映射(IP地址由传输层解决)
ARP协议是一种用于解析IP地址和MAC地址之间映射关系的协议。它的工作流程大致如下:
当主机A要向主机B发送数据时,先检查自己的ARP缓存表,看是否有主机B的IP地址和MAC地址的对应关系。如果有,直接封装数据帧并发送。
如果没有,主机A就广播一个ARP请求报文,询问谁知道主机B的MAC地址。这个报文包含了主机A的IP地址和MAC地址,以及主机B的IP地址。
网络上的所有主机都收到这个ARP请求报文,但只有主机B会回复一个ARP应答报文,告诉主机A自己的MAC地址。这个报文包含了主机B的IP地址和MAC地址,以及主机A的IP地址。(B主机也会将A的MAC地址和IP地址存储在ARP缓存中)
主机A收到ARP应答报文后,就把主机B的IP地址和MAC地址存入自己的ARP缓存表,并根据这些信息封装数据帧并发送。
如果主机A要向一个不在同一局域网内的主机C发送数据,就需要通过网关(路由器)转发。此时,主机A会把目标IP地址设为主机C的IP地址,但把目标MAC地址设为网关的MAC地址。然后按照上述流程进行ARP请求和应答。
那么如何判断对应的ip地址是不是同一个局域网内?(路由器肯定是子网掩码啦)
- 查看两台设备的子网掩码(Subnet Mask),如果不一致,不在一个局域网。如果一致,分别计算IP地址和子网掩码的按位与运算,如果结果相同,就在同一个局域网123。
- 查看两台设备的默认网关(Default Gateway),如果相同,并且IP地址只有最后一个区间的数值不同,则在同一个局域网4。
- 使用ping命令测试两台设备之间的连通性,如果能够正常通信,就在同一个局域网。同时可以查看ping命令返回的TTL(Time To Live)值,如果是初始值(如32,64,128,255),就说明没有经过路由器转发,否则就说明经过了路由器转发25。
以上是判断两个IP地址是否在同一局域网内的常用方法125463。如果您想了解更多细节,请访问搜索结果中提供的链接。
ARP缓存的使用可以减少ARP请求和响应的频繁发送,提高网络性能。
(这里插一嘴:一个局域网可以有多个网关,但是一个主机只能有一个默认网关,默认网关与路由器的关系是,当主机要发送数据包到不同子网的目的IP地址时,就会将数据包发送到默认网关,也就是路由器,然后由路由器根据路由表转发到下一跳的设备。换句话说,默认网关、路由器IP地址和路由器管理地址,这三个是相同的)
ARP协议4种典型情况:
这里先回顾下数据在网络上的传输过程:封装和解封装的过程:
有了上面的基础,在看下面的ARP实际应用:
关于ARP协议的应用这里分为两个情况说明:本局域网数据通信和跨局域网通信。
如果是本局域网,如1号主机和3号主机数据通信,在数据链路层封装MAC帧的时候,如果ARP高速缓存中有该IP地址和MAC地址的映射,那么很简单,数据链路层直接对网络层的数据报进行加头加尾形成数据帧。但如果没有该映射关系,源IP地址主机就需要广播ARP请求分组,来获得单播ARP响应分组,获得响应的MAC地址。
如果是跨局域网通信,这里以1号主机和5号主机通信,那么ARP一般不会有目的IP地址对应的MAC地址!(除非刚上完)(ARP存有本网段内部分IP地址和MAC地址的映射关系),这时就广播ARP请求分组找默认网关,也就是路由器(与外界通信媒介),路由器返回单播ARP响应分组,数据帧响应的家上路由器的MAC地址,如下:
接着一直向后传输:(源MAC地址和目的MAC地址变,源IP地址和目的IP地址都没变)
ARP协议是自动执行的!也就是地址解析传输过程用户是不自知的,该协议夹在传输层和网络层中间
主机发送IP数据报给主机B,经过了5个路由器,请问此过程总共使用了几次ARP协议? 6
DHCP(Dynamic Host Configuration Protocol)是一种网络协议,用于自动分配IP地址和其他网络配置信息给设备,使设备能够顺利地加入和使用网络。
主机的IP地址可以通过静态获取(电脑机房的电脑),也可以动态获取(DHCP服务器分配,动态分配IP地址)。
动态主机配置协议DHCP是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP(传输层的)。
DHCP提供即插即用联网的机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许地址重用(同一个IP地址在不同的时间可以分配给不同的主机),支持移动用户加入网络,支持在用地址续租(IP地址使用时间到期可续租)。
DHCP协议过程(都是广播报文):DHCP协议流程是指DHCP客户端和DHCP服务器之间的交互过程,用于动态分配IP地址和其他网络参数[。DHCP协议流程一般分为四个阶段:
在这个过程中,DHCP客户端和服务器都使用UDP协议进行通信,客户端使用端口68,服务器使用端口673。
TCP/IP协议栈“
ICMP(Internet Control Message Protocol)是==因特网控制报文协议==,是TCP/IP协议簇中的一个重要子协议。属于网络层协议。用于在IP网络中传递控制消息和错误报告。它通常与IP协议一起使用,用于网络设备之间的通信和故障排除。
ICMP协议在网络中扮演着重要的角色,提供了错误报告、连通性测试和网络管理等功能
ICMP协议支持主机或路由器差错(或异常)报告和网络探寻,通过发送特定的ICMP报文来实现
ICMP差错报告报文数据字段:
差错IP数据报首部和前8字节作为ICMP差错报告报文的数据部分,加上首部,就得到IP数据报
不应发送ICMP差错报文的情况:
- 对ICMP差错报告报文不再发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
- 对具有组播地址(不同于广播地址是向局域网所有主机发送数据报,组播地址是一个主机有选择的向多个主机发送)的数据报都不发送ICMP差错报告报文
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。
回送请求和回答:用于测试目的主机是否可达,或者测量往返时延。类型字段为8和0。
时间戳请求和回答:用于请求目的主机或路由器的当前日期和时间,或者进行时钟同步和时间测量。类型字段为13和14。
地址掩码请求和回答:用于获取目的主机的子网掩码。类型字段为17和18。
路由器请求和通告:用于发现可用的路由器。类型字段为9和10。
ping:通过发送和接收ICMP回送请求和回答报文,测试网络的可达性,即网络上的报文能否成功到达目的地。
tracert:通过发送和接收ICMP超时报文,跟踪数据包在网络中的传输路径,即经过了哪些路由器。
如何实现?主机发送多个数据报,这些数据报的TTL不同,逐个递增,每逐个到达路径上的路由器的时候,TTL减1使得该数据包TTL为0,路由器返回一个时间超出的ICMP差错报告报文给主机
NQA:通过发送和接收ICMP报文,分析网络的质量,即网络的延迟、丢包率、抖动等指标。
差错报告:通过发送和接收ICMP差错报告报文,反馈网络中可能发生的各种问题,如目的不可达、源点抑制、重定向等。
NAT和超网是两种不同的解决IPv4地址耗尽问题的技术。
NAT(网络地址转换)通过使用一个公共IP地址和一组私有IP地址来实现地址转换。这意味着,私有IP地址可以被分配给内部网络中的每个设备,而只有一个公共IP地址用于与外部网络进行通信。当内部网络设备发送数据包时,这些数据包会被路由到网络边缘的NAT设备,该设备会将私有IP地址转换为公共IP地址,以便与外部网络通信。当外部网络向内部网络发送数据包时,数据包将被路由到NAT设备,并根据私有IP地址将数据包路由到正确的设备。NAT允许在内部网络中使用更少的公共IP地址,从而减轻了IPv4地址枯竭的压力。
超网是一种将多个子网合并为一个更大网络的技术,通过减少路由表的条目数量和提高IP地址的利用率,简化和优化网络的路由和管理,从而提高网络性能和效率。超网是一种通过更有效地使用IPv4地址空间来减轻地址短缺问题的方法。
总的来说,NAT和超网是在IPv4地址短缺问题方面采取的不同方法。NAT使用私有IP地址和公共IP地址之间的转换来实现,而超网则是通过将多个地址合并为一个更大的地址块来实现。
CIDR和NAT一定程度上缓解了IPv4的IP得知耗尽的问题,但是这些办法指标不治本,IPv6使用六个字节表示IP地址
IPv6在原来的基础上改进首部格式,快速处理转发数据报,并支持Qos(QoS(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术。)
IPv6数据包:
IPv6的数据报是指使用IPv6协议传输的数据包,它由**基本首部和有效载荷**组成2基本首部包含了一些固定的字段,如版本、优先级、流标签、下一个首部、有效载荷长度、跳限制、源有效载包含了上层协议的数据或者IPv6的扩展首部13地址和目的地址等1扩展首部0是一些可选的字段,用于提供特殊功能,如分片、路由、认证、加密等13IPv6的数据报格式如下图所示
基本首部指向下一个首部(也就是扩展首部)
跳数限制相当于TTL,当TTL为零时,丢弃IP数据报,返回ICMP差错报告报文
IPv4和IPv6的区别:
IPv6将地址从32位 (4B) 扩大到128位 (16B),更大的地址空间。
IPv6将IPv4的校验和字段彻底移除,以减少每跳的处理时间。
IPv6将IPV4的可选字段移出首部,变成了扩展首部(在有效载荷中),成为灵活的首部格式,路由器通常不对扩展首部进行检查大大提高了路由器的处理效率。
IPv6支持即插即用(即自动配置),不需要DHCP协议(DHCP协议就是供主机获取IP地址的协议)。
IPv6首部长度必须是8B的整数倍(IPv6的基本首部时固定),IPv4首部是4B的整数倍(但数据分片是8字节对齐!!片偏移量单位是8字节)
IPv6只能在主机处分片,IPv4可以在路由器和主机处分片
如果IP数据包过大,导致超出了数据链路层的MTU,IPv6会返回一个ICMP差错报告报文
IPv6使用ICMPv6:附加报文类型“分组过大”
IPv6支持资源的预分配,支持实时视像等要求,保证一定的带宽和时延的应用。
IPv6取消了协议字段(IPv4中表示数据报的协议),改成下一个首部字段。
IPv6取消了总长度字段(基本首部固定的),改用有效载荷长度字段。
IPv6取消了服务类型字段。
IPv4使用点分十进制法表示IP地址,但在IPv6中这样表示就很冗长了,多以IPv6用一个全新的方式表示
使用的方法是:冒号十六进制记法4BF5:AA12:0216:FEBCBAF:039A:BE9A:2170
用一个十六进制数表示四个二进制位,四个十六进制数为一组,每一组用冒号隔开(也就是一组表示两个字节),此外还有一种压缩形式和省略零:
- 单播地址是IPv6中最常见的地址类型,它用于在两个特定的设备之间建立点对点通信。单播地址有全球唯一的地址前缀,并且它们只被分配给一个设备。单播地址又可以分为全球单播地址和本地链路单播地址两种。
- 多播地址用于一对多通信,其中一个发件人可以向多个收件人发送同一数据包。多播地址也具有全球唯一的地址前缀,但这些地址被分配给一组设备,而不是单个设备。
- 任播地址也用于一对多通信,但不同的是数据包只被发送到“最近”的设备,而不是所有设备。任播地址在IPv6中使用较少,通常在路由器选择最优路径时使用。
双栈协议
双协议栈技术就是指在一台设备上同时启用IPV4协议栈和IPv6协议栈。这样的话,这台设备既能和IPv4网络通信,又能和IPv6网络通信。如果这台设备是一个路由器,那么这台路由器的不同接口上,分别配置了Iv4地址和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络。如果这台设备是一个计算机,那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能。
隧道技术
隧道技术的目的是通过在IPv4基础设施上创建IPv6通信链路,从而实现IPv6与IPv4之间的互联。它通过封装IPv6数据包在IPv4数据包中进行传输,使IPv6数据包能够通过IPv4网络传输到目的地。
通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载可以是不同协议的数据帧或包。隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送。
就是不同数据报格式不断封装
章节知识小结:
单播
单播用于发送数据包到单个目的地,且每发送一份单播报文都使用一个单播IP地址作为目的地址。是一种点对点传输方式。
广播
广播是指发送数据包到同一广播域或子网内的所有设备的一种数据传输方式,是一种点对多点传输方式。
组播
当网络中的某些用户需要特定数据时,组播数据发送者仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始复制和分发,是一种点对多点传输方式。
单一发送,多个接收:组播允许发送方一次发送数据包,而不需要为每个接收方生成单独的数据包
IP组播的基本过程:
在发送者和每一接收者之间需要单独的数据信道,这样网络通信压力可以说是相当的大。
组播提高了数据传送效率。减少了主干网出现拥塞的可能性。组播组中的主机可以是在同一个物理网络,也可以来自不同的物理网络(如果有组播路由器的支持)–组播路由器:运行组播协议的路由器
那么如何找到组播中特定的主机呢?IP组播地址
IP组播地址让源设备能够将分组发送给一组设备。属于多播组的设备将被分配一个组播组IP地址(一群共同需求主机的相同标识)。
IP组播地址只能作为目的地址,并且只是组播组的标识,处于组播的主机ip地址不会变的,懂吧。
设备就可以使用该组播组IP地址作为目标地址来接收来自该组播组的多播数据包。其他设备发送到该组播组IP地址的数据包将被路由器转发给该组播组中的所有成员设备。
组播地址范围为224.0.0.0~239.255.255.255(D类地址),一个D类地址表示一个组播组。只能用作分组的目标地址。源地址总是为单播地址。
组播可以在因特网上组播,进入了局域网就是硬件组播了
同单播地址一样,组播IP地址也需要相应的组播MAC地址在本地网络中实现传送帧。组播MAC地址以十六进制值 01-00-5E
打头,余下的6个十六进制位是根据IP组播组地址的最后23位(中间夹一位0!)转换得到的TCP/IP 协议使用的以太网多播地址的范围是:从01-00-5E-00-00-00到01-00-5E-7F-FF-FF
因为MAC地址是由设备制造商分配的,而不是全局唯一的。
可以看到IP地址和MAC地址有一个映射关系,IP地址的后23位映射位MAC地址,而D类IP地址的有五位没有使用到,所以可能会出现这样的情况,就是不同的IP地址(那五位不同)映射称为同一个MAC地址,称为了同一个分组,这样就是数据包传输的错误了,很严重了,对此。收到多播数据报的主机,还要在IP 层利用软件进行过滤,把不是本主机要接收的数据报丢弃
给定IP地址,映射成组播MAC地址(共48个二进制位)。前24位对应十六进制为01005E。中间加0,后面23位由IP地址映射而来。最后将48位mac地址四个一组,写成十六进制的形式。
IGMP协议,网际组管理协议
IGMP协议让路由器知道本局域网上是否有主机(的进程)参加或退出了某个组播组
路由器通过IGMP协议,决定是否需要将组播数据包传输给主机。如R4下方的主机就没有参加组播组,路由器就不会讲组播数据包给它
IGMP工作阶段:
ROUND 1:
某主机要加入组播组时,该主机向组播组的组播地址发送一个IGMP报文,声明自己要称为该组的成员本地组播路由器收到IGMP报文后,要利用组播路由选择协议把这组成员关系发给因特网上的其他组播路由器。ROUND 2:
本地组播路由器周期性探询本地局域网上的主机,以便知道这些主机是否还是组播组的成员。只要有一个主机对某个组响应,那么组播路由器就认为这个组是活跃的,如果经过几次探询后没有一个主机响应,组播路由器就认为本网络上的没有此组播组的主机,因此就不再把这组的成员关系发给其他的组播路由器
- 组播路由器知道的成员关系只是所连接的局域网中有无组播组的成员
组播路由选择协议
组播路由选择协议目的是找出以源主机为根节点的组播转发树。
构造树可以避免在路由器之间兜圈子。
对不同的多播组对应于不同的多播转发树,同一个多播组,对不同的源点也会有不同的多播转发树。组播路由选择协议常用的三种算法:(了解)
- 基于链路状态的路由选择
- 基于距离-向量的路由选择
- 协议无关的组播 (稀疏/密集)
章节知识小结:
移动IP是一种用于支持移动设备在网络中切换的协议。它允许移动设备在切换网络时保持原始IP地址,以维持持续的连接。移动IP使用家庭代理和外部代理等机制,使移动设备能够通过与原始网络中的代理通信来实现地址保留和数据转发。
设备移动,ip不动
路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。
路由器结构:
路由器整体分为:路由选择和分组转发
转发:是路由器内部由输入端口到输出端口,而路由选择是宏观上的,路由路径的选择
路由器功能:转发和路由选择
数据平面和控制平面–就是描述网络层功能的两个概念
传统路由器统一实现数据平面和控制平面,实现转发和路由选择
在传统路由器内,路由选择算法运行在每台路由器中,并且在每台路由器都中都包含转发和路由选择两种功能
具体方法:在一台路由器中的路由选择算法与其他路由器中的路由选择算法通信(通过交换路由选择报文)计算出路由表和转发表。(也就是路由器之间交换信息)
Software-Defined Networking,通过软件定义的网路。
SDN(Software-Defined Networking)是一种网络架构和管理范式。通过将网络控制平面(Control Plane)和数据转发平面(Data Plane)分离,并引入集中式的网络控制器,实现对网络的动态、灵活和集中式的管理
控制平面从路由器物理上分离。路由器仅实现转发(传统的是两个功能),远程控制器计算和分发转发表以供每台路由器所使用。
具体方法:路由器通过交换包含转发表和其他路由选择信息的报文与远程控制器通信。然后远程控制器计算和分发转发表。因为计算转发并与路由器交互的控制器是用软件实现的,所以网络是“软件定义的”–SDN。
SDN的灵活可编程性,中心话控制等等优势,使得现在越来越多大厂使用
- 网络控制应用程序的接口:SDN控制器通过“北向接口”与网络控制应用程序交互。该API允许网络控制应用程序在状态管理层之间读写网络状态
- 网络范围状态管理层:有SDN控制平面作出的最终控制决定,将要求控制器具有有关网络的主机、链路等最新状态信息。
- 通信层:SDN控制器与受控网络设备(可以理解位路由器了 )之间的通信(OpenFlow协议),包含”南向接口
假定你要在SDN控制平面中实现一新型路由选择协议你将在哪个层次中实现该协议?网络范围状态管理层.因为在这一层能获得有关网络的主机,链路,交换机和其他SDN控制设备的最新状态信息可以根据这些信息的基础上实现新型路由选择协议,并通知给控制器落地执行.
谁是从控制靠跨越南向接口发送的这些报文的接收者? 谁是跨越北向接口从控制器发送的这些报文的接收者?
- 受控网络设备(路由器)
- 网络控制应用程序
主机才有的功能,传输层为应用层提供通信服务,使用网络层的服务
面向连接的传输控制协议TCP–连接可靠
传送数据之前必须建立连接,数据传送结束后要释放连接。不提供广播或多播服务。由于TCP要提供可靠的面向连接的传输服务,因此不可避免增加了许多开销:确认、流量控制、计时器及连接管理等
TCP协议特点:可靠,面向连接,时延大,适用于大文件。
无连接的用户数据报协议UDP–无连接不可靠
传送数据之前不需要建立连接,收到UDP报文后也不需要给出任何确认。
UDP特点:不可靠,无连接,时延小,适用于小文件
IP地址找到目的主机的网络,然后,通过MAC地址找到实际的主机,再通过传输层将数据交给具体的应用,这里就会涉及复用和分用
复用:应用层所有的应用进程都可以通过传输层再传输到网络层
分用:传输层从网络层收到数据后交付指明的应用进程(端口,逻辑端口/软件端口,是传输层的SAP,标识主机的应用进程)
端口号值由本地意义,在因特网不同的计算机的相同端口号是没有联系的。端口号长度为16bit,能标识65536个端口号(0-65535)
熟知端口号:
在网络中采用发送方和接收方的套接字组合来识别端口,套接字唯一标识了网络中的一个主机和它上面的一个进程
套接字Socket=(主机IP地址,端口号)
无连接不可靠
UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。
UDP的主要特点:
UDP首部占用8字节,均分四部分。注意UDP长度指的是整个UDP长度,也就是首部加数据字段!并且UDP检验和,检错但不纠错,错则丢弃。
分用时,找不到对应的目的端口号,就丢弃报文,并给发送方发送ICMP“端口不可达”差错报告报文。
下面是伪首部和UDP数据包(UDP首部+数据部分)的结合图:(一横条四个字节)如何检错?
伪首部,用于检错。注意在发送端和接收端,都有伪首部、首部和数据部分反码求和,但发送端和接收端的首部的检验和是不一样的!!
TCP是面向连接(虚连接) 的传输层协议。打call
每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。
TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达。
可靠有序,不丢不重
TCP提供全双工通信。
发送缓存 准备发送的数据&已发送但尚未收到确认的数据
接收缓存 按序到达但尚未被接受应用程序读取的数据&不按序到达的数据
TCP面向字节流–TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流
TCP报文段包括TCP首部和TCP数据部分。填充部分是为了使得TCP字节数为4字节的整数倍(UDP也是要4字节对齐,一般填零)
序号字段seq:在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,本字段表示本报文段所发送数据的第一个字节的序号。
如上面图片,TCP协议对文件字节编号,取出123加上TCP头,则TCP首部中序号就是1
确认号ack:(假设ack=N,表示N前面的数据字节都已经接收完毕)期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则证明到序号N-1为止的所有数据都已正确收到。
接收方收到报文段,(面向连接)需要回复一个确认报文段,而其中确认号就是期望收到对方下一个报文段的第一个数据字节的序号
数据偏移(首部长度):TCP报文段的数据起始处距离TCP报文段的起始处有多远(看下面的图理解),以4B位单位,即1个数值是4B。
(因为TCP报文段包括20B的固定首部+变长的可选字段+填充)。数据偏移就是指TCP首部长度。而4B为单位是指,如数据偏移是1111,那么TCP首部就是15*4B
紧急位URG: URG=1时,标明此报文段中有紧急数据,是高优先级的数据,应尽快传送,不用在缓存里排队,配合紧急指针字段使用。(对比,紧急位是针对发送方,要尽快发送,推送位是针对接收方,要尽快上交)
确认位ACK:ACK=1时确认号有效,在连接建立后所有传送的报文段都必须把ACK置为1。
推送位PSH: PSH=1时,接收方尽快交付接收应用进程,不再等到缓存填满再向上交付。(对比,紧急位是针对发送方,要尽快发送,推送位是针对接收方,要尽快上交)
复位RST:RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输链接。
同步位SYN:SYN=1时,000000000000000就是主机连接时相互沟通的报文
终止位FIN: FIN=1时,表明此报文段发送方数据已发完,要求释放连接。
窗口:指的是发送本报文段的一方的接收窗口,即现在允许对方发送的数据量。
发送方会根据接收方的窗口大小,调整TCP报文数据部分。如接收方的确认号701,窗口大小1000,那么发送方报文段发送701-1700的数据
检验和:检验首部+数据,检验时要加上12B伪首部(类似UDP协议),第四个字段为6(协议字段)。
紧急指针: URG=1时才有意义,指出本报文段中紧急数据的字节数
选项:最大报文段长度MSS、窗口扩大、时间戳、选择确认…
TCP连接传输三个阶段
TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫服务器。
假设运行在一台主机(客户)上的一个进程想与另一台主机(服务器)上的一个进程建立一条连接,客户应用进程首先通知客户TCP,他想建立一个与服务器上某个进程之间的连接,客户中的TCP会用以下步骤与服务器中
的TCP建立一条TCP连接:三次握手
ack=x+1表示接下来希望接收到的报文段序号为x+1
SYN只有在连接请求和连接请求接收阶段才为1
第三步的seq=x+1恰好对应第二部中ack=x+1。同时也是对应第一步中seq=x,x数据包的下一个数据包的序号就是x+1
TCP(Transmission Control Protocol)是一种面向连接的传输协议,用于在网络上可靠地传输数据。TCP使用三次握手来建立连接。
TCP三次握手的目的是确保客户端和服务器之间的连接能够正常建立,并且双方都准备好进行数据传输。以下是TCP三次握手的步骤:
完成上述三个步骤后,TCP连接就正式建立。此时客户端和服务器都知道彼此已准备好进行数据传输,而且双方也都知道对方的初始序列号。
这个三次握手的过程确保了双方的通信能够可靠地建立起来。客户端和服务器之间的数据传输可以开始了。
需要注意的是,三次握手仅用于建立连接。当连接结束时,双方会使用四次挥手来终止连接,以确保数据传输的完整性和可靠性。
就是让服务器处于半连接状态,让服务器挂起,直到死机
SYN洪泛攻击发生在OSI第四层,这种方式利用TCP协议的特性,就是三次握手。攻击者发送TCP SYN,SYN是TCP三次握手中的第一个数据,而当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。这样更加会浪费服务器的资源。攻击者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了。
解决办法设置SYN cookies
TCP四次挥手,参与一条TCP连接的两个进程中任何一个都能终止该链接,连接结束后,主机的资源将被释放
之前网络层提供尽最大可能努力交付,不可靠传输。网络层不可靠就需要通过传输层解决可靠传输问题,(UDP时不可靠传输,需要应用层实现可靠传输)使用TCP协议,实现点对点面向连接的可靠服务。
所谓可靠传输就是:保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的。TCP实现可靠传输机制有四种
校验,与UDP一样,增加伪首部
序号,对文件数据字节编号
基于序号机制,引申出确认与重传
确认。就是接收方发送确认报文段指导报文段传输。接收方收到报文段后,发送确认报文段给发送方(通常是累计确认)。发送方接收到确认后才将缓存中的数据消除。如下如正确接收情况,首部确认字段为4,表示接下来需要接收报文段的第一个数据字节编号(利用确认号ack)
下面是接收失败情况456没到接收方,78接收到了。接收方回传报文段的确认号字段为4,表明希望接下来发送的报文段第一个数据字节为4,接收方再次接收到报文段后,发现78报文段在缓存中了,就给发送方发送确认号为9的报文段
重传
确认重传不分家,TCP的发送方在规定的时间内没有收到确认就要重传已发送的报文段。超时重传
重传时间:下层网络层复杂,时间不一,很难设置重传时间。
TCP采用自适应算法,动态改变重传时间RTTS(加权平均往返时间)。根据前面报文段发送的RTT(发送往返时间)利用自适应算法,计算出RTTs(加权往返时间)
但有时候等太久了,解决办法:冗余ACK(冗余确认)
发送缓存发送窗口,接收缓存接收窗口,参考链路层
通俗点就是让发送方发慢点,让接收方来得及接收
TCP利用滑动窗口机制实现流量控制,滑动窗口就是发送方维持一个滑动窗口,已知发送数据,只有收到接收方的确认窗口后,滑动窗口才会向前移动
在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,也就是接收窗口rwnd (通过接收方设置**确认报文段的窗口字段**来将rwnd通知给发送方),发送方的发送窗口取接收窗口rwnd和拥塞窗口wnd的最小值。
举例讲解:
前面说了,流量控制,接收方会设置通过确认报文的窗口字段,也就是接收窗口rwnd,来调整发送方的发送窗口大小。
首先接收方B设置接收窗口为300字节,于是发送方A的发送窗口就是1-300,也就是300字节,三个报文段。注意TCP并非采用停等协议,而是滑动窗口,采取累积确认机制,三个报文段一直发无需等待确认。
到了一定时间,接收方B累计确认,回复确认报文段,告诉接收方A,下一个希望接收201,接收窗口为300。发送方就知道201前面已收到,滑动窗口向前移动,201-500,发送方A继续发送后面的数据,由于迟迟没收到201的确认,201号对应的报文段超时重传。
接收方回复确认报文段,希望下一个接收501对应的报文段。。。。
最后A回复确认并将rwnd接收窗口设置为0,至此发送方不再发送数据。等待接收方设置接收窗口。
为了避免接收方发送的报文丢失,导致发送方在等待接收方的接收窗口,接收方在等待发送方发送的数据,为了避免这样的情况。
TCP为每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。
若持续计时器设置的时间到期,就发送一个零窗口探测报文段, 接收方收到探测报文段时给出现在的窗口值。
若窗口仍然是0,那么发送方就重新设置持续计时器。
出现拥塞的条件:用户对网络资源需求的总和>可用网络资源
网络吞吐量是指在特定时间内网络中传输的数据量。当输入数据增多时,也就是数据流量增加时,网络中需要传输更多的数据,这会导致网络中的路由器、交换机等设备处理的数据量增加,从而使得网络的负载增加。当网络的负载达到一定程度时,就可能出现网络拥塞,这会导致数据包在网络中传输的时间变长,从而降低网络的吞吐量。
对比TCP流量控制,流量控制是点对点的通信量的控制。拥塞控制,是以一种全局的控制,涉及多台主机之间的多对多的通行量的控制
注意发送窗口应该取接收窗口和拥塞窗口的最小值,但这里为了讨论方便认为接收窗口无限
快重传和快恢复是TCP协议中的一种优化拥塞控制机制。当TCP接收方接收到数据时,会向发送方发送确认(ACK)消息,通知其接收到数据的情况。如果接收方发现某个数据包丢失,它会发送一个重复确认消息,通知发送方需要重新发送这个数据包。而快重传算法就是当发送方接收到3个相同的重复确认消息时,就会立即重传这个数据包,而不必等待超时再重传。这样可以有效避免网络拥塞,加快数据传输速度,提高TCP协议的可靠性。
而快恢复算法则是为了避免发送方在重传数据包之后,由于进入慢开始状态而降低数据传输速率。在快恢复算法中,当发送方接收到3个相同的重复确认消息时,它会认为这个数据包丢失了,并将拥塞窗口减半,但是不进入慢开始状态,而是直接进入拥塞避免状态,恢复数据传输速率。这样能够快速地恢复数据传输,同时避免出现网络拥塞。
总之,快重传和快恢复算法是TCP协议中非常重要的拥塞控制机制。通过这些机制,TCP协议可以更快地恢复数据传输,避免网络拥塞,提高传输效率和可靠性。
应用层对应用程序的通信提供服务
主要使用两种模型,客户/服务器模型和P2P模型
通过域名访问网站时,域名需要通过DNS服务器将域名转换为ip地址。通过ip地址访问主机或者服务器
根(Root):根是域名系统的最高级别。根域名服务器是一组特殊的顶级域名服务器,它们存储了所有顶级域名的DNS信息。
域名按照等级可以分为:
一共有13个根域名服务器,分别从a到m命名
权限域名服务器(Authoritative DNS Server)是指负责管理特定域名的DNS服务器。当用户请求访问特定域名时,本地DNS服务器会向权限域名服务器发出查询请求,以获取该域名对应的IP地址或其他相关信息。
举个例子,假设用户要访问www.example.com这个域名,本地DNS服务器会首先查询其缓存中是否已经保存了该域名的解析结果。如果没有,它就会向example.com的权限域名服务器发送一个查询请求,请求获取www子域名的IP地址。权限域名服务器会查找自己的数据库,找到www子域名对应的IP地址,并将结果返回给本地DNS服务器。本地DNS服务器再将结果缓存起来,并将其返回给用户的计算机,使其能够访问www.example.com。
域名解析过程分为递归查询和迭代查询
反应在图中就是下图:
本地域名服务器中高速缓存存储最近访问过的域名对应的IP地址,大大提高访问域名的速度,并且本地域名服务器会定时更新
文件传输协议FTP和简单文件传送协议TFTP
提供不同种类主机系统(硬、软件体系等都可以不同) 之间的文件传输能力。
登录:ftp地址 用户名和密码
但FTP服务器也支持匿名登录。互连网中有很大一部分FTP 服务器被称为“匿名”(Anonymous)FTP 服务器。这类服务器的目的是向公众提供文件拷贝服务,不要求用户事先在该服务器进行登记注册,也不用取得FTP服务器的授权。Anonymous(匿名文件传输)能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“anonymous”登陆FTP服务,就可访问远程主机上公开的文件。
FTP使用TCP实现可靠传输
FTP服务器进程是一个运行在FTP服务器上的程序,它负责处理FTP客户端的请求并向客户端提供文件传输服务。FTP服务器进程通常会监听FTP默认端口21,当FTP客户端请求连接时,服务器进程会响应连接请求并建立一个FTP数据连接。
FTP协议默认使用21号端口作为控制连接的传输端口,控制连接用于发送命令和接收响应。FTP客户端向FTP服务器的21号端口发起连接请求时,FTP服务器会响应该请求并建立控制连接,这个连接会一直保持直到FTP会话结束。
FTP传输模式
FTP的一般工作流程:
a. 地址解析 ARP 协议执行过程: 在FTP工作过程中,当主机需要与目标主机进行通信时,首先需要获取目标主机的MAC地址。为了实现IP地址到MAC地址的映射,主机会通过发送ARP(Address Resolution Protocol)请求广播来解析目标主机的MAC地址。在捕捉的协议包中,可以观察到ARP请求和应答的过程,包括ARP请求广播、目标主机的ARP应答等。
b. FTP 控制连接建立过程: FTP使用控制连接进行命令和控制信息的传输。在FTP控制连接建立过程中,客户端和服务器之间会进行三次握手,以建立可靠的连接。在协议包中,可以观察到TCP的三次握手过程,包括客户端发送SYN,服务器回复SYN-ACK,客户端发送ACK等。
c. FTP 用户登录身份验证过程: FTP用户登录身份验证是FTP工作过程中的重要步骤。在此阶段,客户端会向服务器发送用户名和密码进行身份验证。在捕捉的协议包中,可以观察到FTP的用户登录命令(USER)、密码命令(PASS)以及服务器的响应信息,包括成功登录或登录失败等。
d. FTP 数据连接建立过程: FTP在数据传输时,通常会使用不同的数据连接。数据连接的建立可以通过主动模式(Active Mode)或被动模式(Passive Mode)进行。在协议包中,可以观察到FTP的PORT命令或PASV命令的使用,以及相应的数据连接建立过程。
e. FTP 数据传输过程: FTP的数据传输阶段涉及文件上传、下载等操作。在协议包中,可以观察到FTP的数据传输命令(如RETR、STOR)以及数据传输的数据包,包括文件的数据块。
f. FTP 连接释放过程(包括数据连接和控制连接): FTP连接释放包括控制连接和数据连接的关闭。在协议包中,可以观察到FTP的控制连接关闭过程,包括QUIT命令、服务器的响应以及TCP连接的关闭。对于数据连接的关闭,可以观察到相应的数据传输结束命令(如ABOR)和数据连接的关闭过程。
电子邮件的信息格式
电子邮件的组成结构
简述邮件发送的过程:
用户通过 用户代理 将邮件发送到 发送服务器端 ,然后 发送邮件服务器 再将邮件发送给 接收服务器端 ,接着接收方就可以通过 用户代理 将 接收方服务器 中相应的邮件取出来。期间使用到两种协议:SMTP用于发送,POP3和IMAP都用于读取邮件。
SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol version 3)都是电子邮件协议,它们都是在TCP协议的基础上进行封装的,用于在网络上传输电子邮件:
由于电子邮件传输需要保证数据的可靠性,因此SMTP和POP3协议都是基于TCP协议的,利用TCP协议的可靠传输特性来保证邮件的正确传输。
前面说过SMTP协议是建立在TCP基础上的,所以SMTP是TCP连接,端口号25,采用C/S网络模型。SMTP通信分三个阶段:连接建立,邮件传送,连接释放
SMTP的缺点:
为此诞生出了==MIME协议==,就是在SMTP协议的基础上的扩充
只存在于接收方服务器将邮件给用户代理。POP3也是TCP连接的封装,使用110端口,也是使用客户服务端模型C/S
POP3工作方式:下载并保存,下载删除(下载完就在服务器删除懂吧)
后来衍生出**网际报文存取协议IMAP**
IMAP协议比POP协议复杂。当用户Pc上的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上。
IMAP可以让用户在不同的地方使用不同的计算机随时上网阅读处理邮件,还允许只读取邮件中的某一个部分(先看正文,有WiFi的时候再下载附件)。
这个才是我们常用的哦,与用户代理有关的协议使用的是http协议
章节知识小结
HTTP协议定义了浏览器(万维网客户进程怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
浏览器通过客户提供的URL,获取服务器的IP地址,建立连接后,客户端请求资源,服务器端发送资源
非持久连接,每一次请求资源,都需要三次握手建立TCP连接。比较浪费time
持久连接,第一次请求资源后,接下来一段时间都保持连接。
持久连接又分为非流水线和流水线两种模式。非流水线类似停等协议,请求一个资源,需要等待接收到资源后才能请求获取下一个资源。而流水线类似滑动窗口协议(GBN或SR),可以同时发送多个资源请求
分为HTTP请求报文和HTTP响应报文
SSH(Secure Shell)是一种用于远程登录和安全文件传输的网络协议。它通过加密技术,提供了对网络连接的保护,确保在不安全的网络中进行安全的通信。
SSH协议的主要目的是允许用户通过网络安全地远程登录到其他计算机,并执行命令和操作,就像直接在本地计算机上一样。它建立了一个加密的通道,通过这个通道,用户可以在远程计算机上执行命令,并将数据安全地传输回本地计算机。
SSH协议具有以下特点:
FTP(File Transfer Protocol)、SFTP(SSH File Transfer Protocol)和SSH(Secure Shell)之间存在关联,但它们是不同的协议和技术。以下是它们之间的关系:
- FTP和SFTP:FTP是一种用于文件传输的协议,通常在非加密的环境下进行数据传输,不提供数据加密和身份验证。而SFTP是在SSH连接上运行的文件传输协议,它利用SSH的安全性和加密功能来保护传输的文件。SFTP提供了与FTP类似的文件传输功能,但在安全性方面更可靠,所有的数据传输都是加密的。
- SSH和SFTP:SSH是一种加密协议,用于在客户端和服务器之间建立安全的远程连接和通信。SSH提供了身份验证、加密和数据完整性保护等安全功能。SFTP是SSH协议的一个子协议,它利用SSH的安全性和加密机制来实现安全的文件传输。因此,要使用SFTP进行文件传输,需要首先建立SSH连接,然后在SSH连接上运行SFTP命令或使用SFTP客户端。
- 安全性:FTP是一种不安全的协议,数据传输和身份验证信息在传输过程中都是明文的,容易受到窃听和攻击。而SFTP和SSH提供了更高的安全性,通过加密和身份验证来保护传输的数据,防止被窃听和篡改。
总结起来,FTP是一种传统的文件传输协议,不提供加密和安全性。而SFTP是在SSH连接上运行的安全文件传输协议,利用SSH的安全性和加密功能来保护文件传输。SSH是一种用于建立安全远程连接的加密协议,提供了身份验证、加密和数据完整性保护等功能。因此,SFTP是基于SSH的安全替代方案,用于替代不安全的FTP协议。
Linux操作系统默认支持SSH(Secure Shell)连接,因为SSH是一种常用的远程登录和安全Shell协议,用于远程管理和访问Linux系统。SSH提供了安全的加密通信通道,使得用户可以通过网络连接到Linux服务器并执行命令、传输文件等操作。
相比之下,Linux操作系统本身并不内置支持FTP(File Transfer Protocol)连接。FTP是一种用于文件传输的协议,它允许用户在客户端和服务器之间进行文件传输。然而,尽管Linux操作系统本身不直接支持FTP连接,但你可以通过安装和配置FTP服务器软件(如vsftpd、ProFTPD等)来在Linux系统上搭建FTP服务器,从而支持FTP连接。