B站链接:https://www.bilibili.com/video/BV1c4411d7jb?p=1
关于其中各种协议的实现可看:经典实验整理总结
Network
)由若干结点(Node)和连接这些结点的链路(Link)组成i
的internet
是通用名词,互连的网络都叫internet
】因特网服务提供者(
Internet Service Provider
)
普通用户如何接入因特网?
通过
ISP
接入因特网。ISP
可以从因特网管理机构申请到成块的IP
地址,同时拥有通信线路以及路由器等连网设备,任何机构和个人只要向ISP
交纳规定的费用,就可以从ISP
得到所需要的IP
地址。互联网上的主机都必须有IP
地址才能通信
基于ISP的三层结构的因特网
层数越小覆盖越多
电话问世后,人们发现所有电话之间都两两相连是不现实的。因此可以用一个中间设备将讲话接入,根据需要进行转发
电话交换机接通电话线的方式称为电路交换
从通信资源分配角度来看,交换(Switch
)就是按照某种方式动态地分配传输线路的资源
报文交换与分组交换类似,不过对报文没有限制大小,现如今多使用分组交换。
纵坐标为时间,分组交换相对报文交换分的更小,可以减少时延,防止过长时间占用线路以及方便排错
一些互相连接的、自治的计算机的集合
按交换技术:①电路交换网络 ②报文交换网络 ③分组交换网络
按使用者:①公用网 ②专用网
按传输介质:①有线网络 ②无线网络
按覆盖范围:①广域网WAN ②城域网MAN ③局域网LAN ④个域网PAN
按拓扑结构:①总线型网络 ②星型网络 ③环型网络 ④网状型网络
性能指标可以从不同的方面来度量计算机网络的性能
连接在计算机网络上的主机在数字信道上传送比特的速率,也称为比特率或数据率
常用数据率单位
计算机中的数据量单位,也是信息论中信息量的单位。一个比特就是二进制数字中的一个
1
或0
.
常用数据量
带宽在模拟信号系统中的意义
信号所包含的各种不同频率成分所占据的频率范围
单位:
Hz(kHz,MHz,GHz)
带宽在计算机网络中的意义
用来表示网络的通信线路所能传送数据的能力,因此网络带宽表示在单位时间内从网络中的某一点到另一点所能通过的"最高数据率"
单位:
b/s(kb/s,Mb/s,Gb/s,Tb/s)
一条通信线路的"频带宽度"越宽,其所传输数据的"最高数据率"也越高
吞吐量表示在单位时间内通过某个网络(或信道、接口)的数据量。
吞吐量被经常用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络。
吞吐量受网络的带宽或额定速率的限制
在处理过程中所需要的时间
在许多情况下,因特网上的信息不仅仅单方向传输,而是双向交互
我们有时很需要知道双向交互一次所需要的时间
因此,往返时间RTT(Round-Trip Time)
也是一个重要的性能指标
信道利用率:用来表示某信道有百分之几的时间是被利用的(有数据通过)
网络利用率:全网络的信道利用率的加权平均
根据排队论,当某信道的利用率增大时,该信道引起的时延也会迅速增加。因此信道利用率不是越高越好
如果令 D 0 D_0 D0表示网络空闲时的时延,D表示网络当前的时延,那么在适当的假定条件下,可以用下面的简单公式来表示D
、 D 0 D_0 D0和利用率U之间的关系
D = D 0 1 − U D=\dfrac{D_0}{1-U} D=1−UD0
当网络利用率U
到50%
时,时延急剧增大。
当网络利用率接近100%
时,时延趋于无穷大
但是也不能使信道利用率过低,这回使宝贵的通信资源被浪费
因此一些拥有较大主干网的ISP
通常会控制它们的信道利用率不超过50%
。如果超过了,就要准备扩容,增大线路带宽
丢包率即分组丢失率,是指在一定的时间范围内,传输过程中丢失的分组数量与总分组数量的比率
具体可分为:接口丢包率、结点丢包率、链路丢包率、路径丢包率、网络丢包率等
丢包率是网络运维人员非常关心的一个网络性能指标,但对于普通用户来说往往并不关心这个指标,因为他们意识不到丢包
分组丢失的两种情况
丢包率反映了网络的拥塞情况
0
1%~4%
5%~15%
在平常编程时,我们总是喜欢利用不同的类实现不同的功能,最后进行整合实现真正的功能。这样的好处是让结构更加清晰,维护也更加简单。计算机网络分层同理,在计算机网络上实现不同进程的通信需要解决众多问题,分层便于维护与管理。
当我们利用浏览器发送网页请求到服务器并发生响应的过程中,数据会怎么变化呢?
浏览器发送
HTTP协议
的规定构建一个HTTP请求报文(请求要干什么)。应用层将HTTP请求
的报文交给运输层处理HTTP请求
报文添加一个TCP首部(区分应用进程),使之成为TCP报文段
。运输层将TCP报文段
交给网络层处理TCP报文段
添加一个IP首部(使之可以在互联网上传输),使之成为IP数据报
。网络层将IP数据报
交付给数据链路层处理IP数据报
添加一个首部(让其能在一段链路上传输,能被相应主机接收)和一个尾部(让目的主机检查所接收到的帧是否有误码),使之成为帧。数据链路层将帧交给物理层路由器转发
IP数据报
首部,从中提取目的网络地址,然后查找自身路由表,确定转发端口。接着数据链路层封装,物理层再封装,将比特流变成信号发送出去。服务器接收
IP数据报
后,去除IP首部
,将其交付给运输层**(交付的实际是TCP报文)**TCP报文
后,从中得知是与哪个端口上的进程通信,去除TCP头部
后,交付给应用层**(交付的实际是HTTP请求报文)**HTTP请求
报文后,将其解析给对应进程,并执行相关操作,返回HTTP响应报文任何可发送或接收信息的硬件或者软件进程
对等实体:收发双方相同层次中的实体
控制两个对等实体进行逻辑通信【这种通信实际上不存在,只是便于我们考虑问题】的规则的集合
三要素
(就像手机为我们提供服务,但是我们并不知道具体是如何实现的)
服务访问点:在同一系统中相邻两层的实体交换信息的逻辑接口(就像Web里的request域,后端前端都能取到),用于区分不同的服务类型
服务原语:上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令称为服务原语
协议数据单元PDU(横向):对等层次之间传送的数据包称为该层的协议数据单元
服务数据单元SDU(竖向):同一系统内,层与层之间交换的数据报称为服务数据单元
多个SDU可用合成为一个PDU;一个SDU页可以划分为几个PDU
考虑怎样才能在连接各种计算机的传输媒体上传输数据比特流
物理层为数据链路层屏蔽了各种传输媒体的差异,使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体是什么
有摸得到的实物进行传导信号的方式
电缆各层都是同轴心的,因此称同轴电缆
基带同轴电缆(50 Ω \Omega Ω):数字传输,过去用于局域网
宽带同轴电缆(75 Ω \Omega Ω):模拟传输,目前主要用于有线电视
同轴电缆价格较贵且布线不够灵活和方便,随着集线器的出现,在局域网领域基本上都是采用双绞线作为传输媒体
把两根互相绝缘的铜导线并排放在一起,然后按照一定规则绞合起来就构成了双绞线,这是一种古老且常用的传输媒体
常用绞合线类别、带宽和典型应用
无屏蔽双绞线
UTP
电缆
作用:①抵御部分来自外界的电磁波干扰 ②减少相邻导线的电磁干扰
屏蔽双绞线
STP
电缆,其与UTP
相比增加了金属丝编织的屏蔽层,提高了抗电磁干扰能力
光纤很细,因此必须将其做成结实的光缆。一根光缆少则一根光纤,多则可包括数百根
如果全反射一直进行,则光就会沿着光纤一直传输下去。
实际上只要入射角大于某个临界角度就可以发生全反射,因此多条不同角度的光可以在光线里一起传输,这种光纤称作多模光纤
若光纤直径减小到只有一个光的波长,则光纤就像一根波导一样,可使光线一直向前传播,而不会产生多次反射,这样的光纤称作单模光纤
1.31
微米波长附近,材料色散和波导色散大小相等符号相反,两者正好抵消50
微米,62.5
微米9
微米125
微米25000~30000GHz
的带宽)传导信号的东西摸不到
低频和中频频段用地面波传播;高频和甚高频靠电离层(地球上方
100~500
千米高空的带电离子层)反射
微波会穿透电离层进入宇宙,因此其不能通过电离层反射到很远的地方
微波是直线传播的,而地球表面是个曲面,因此传播距离受到限制,一般只有
50KM
左右;如果采用100
米高的天线塔,则传播距离可增大到100
公里。
为实现远距离通信,必须在一个微波通信信道的两个终端之间建立若干个中继站,中继站把前一阵送来的信号经过放大后再发送到下一站
在地球站之间,利用位于约
36000KM
高空的人造同步地球卫星作为中继器的一种微波接力,其最大特点是通信距离远,传播时延大(约250~300ms
)。低轨道卫星通信系统也已经正在部署
4Mb/s~16Mb/s
)即光源作为信号源,前景好,暂时未被大范围应用
串行传输是指数据是
1
个比特1
个比特依次发送的,发送端与接收端之间只用1
条数据传输线即可
并行传输是指一次发送n
个比特而不是一个比特,在发送端和接收端之间要有n
条传输线路
在计算机网络中,数据在传输线路上的传输时串行传输;而计算机内部(如CPU和内存)多使用并行传输
数据块以稳定的比特流形式传输,字节之间没有间隔。接收端在每个比特信号的中间时刻(有区分
0,1
的标志)进行检测,以判别接收到的是比特0
还是1
。
由于不同设备的时钟频率存在一定差异,不可能完全相同,在传输大量数据的过程中,所产生的判别时刻的累计误差会导致接收端对比特信号的判别错位。因此需要采取方法使双方的时钟保持同步
以字节为独立的传输单位,字节间的时间间隔不是固定的,接收端仅在每个字节的起始处对字节内的比特实现同步,为此通常传送前要在每个字节前后加上起始位和结束位。
单工需要一条信道;其他的需要两条(一个方向一条)
message
)包括文字、图片、音频和视频1
和0
变换成相应电信号发送到网线,即信号。信号需要在信道中进行传输,信道可分为数字信道和模拟信道
如果使用信道复用技术,传输媒体里可以有多个信道
在不改变信号性质的前提下,仅对基带信号的波形进行变换,称为编码。编码后产生的信号还是数字信号,可以在数字信道中传输
把基带信号的频率范围搬移到较高的频段,并转换为模拟信号,称为调制。调制后产生的信号还是模拟信号,可以在模拟信道中传输
正电平代表比特
1
,负电平代表比特0
。在整个码元时间内,电平不会出现零电平
这种编码方式如何区分连续几个相同电平呢?
这要求发送方发送和接收方接收严格同步,这就需要额外一根传输线来传输时钟信号。接收方按照时钟节拍逐个接收码元。但是对于计算机网络,多的线不如拿来传输数据,因此由于存在同步问题,计算机中的数据传输不使用不归零编码
每个码元传输结束后信号都要"归零",所以接收方只要在信号归零后进行采样即可,不需要单独的时钟信号。
实际上,归零编码相当于把时钟信号用"归零"方式编码在了数据之内,这称为"自同步"信号
归零编码中的大部分数据带宽都用来传输"归零"而浪费掉了(编码效率低)
码元的中间时刻既表示时钟,又表示数据。根据正负跳变来区分比特
具体如何根据跳变实现同步?
第一次数据跳变的时间记录下来【即半个码元的时间】,此后每过一个码元的时间就进行检测,根据跳变方向决定数据为
0
还是1
。
①跳变仅表示时钟 ②码元开始处电平是否发生变化表示数据。
比曼彻斯特变化少,更适合较高的传输速率
如上一个码元对应一个比特,如何能让1个码元包含多个比特呢?
可以使用混合调制。正弦信号 A sin ω ( x + φ ω ) A\sin \omega(x+\dfrac{\varphi}{\omega}) Asinω(x+ωφ),相位和频率是相关的,因此二者不可同时做修改
通常情况下,相位和振幅可以结合起来其一调制,称为正交振幅调制QAM
QAM-16
12
种相位1
或2
种振幅可选16
种码元(波形),即16
个形状可以用4
个二进制位排列组合表示,所以一个码元可以对应4比特
4
个比特的对应关系要采用格雷码【任意两个相邻码元只有一位不同】通信质量较差的信道在传输信号的过程中会发生严重失真(无法识别原信号)【码间串扰】
失真因素
物理层发出去的信号需要通过数据链路层才知道是否到达目的地;才知道比特流的分界线
数据链路层为数据加上帧首和帧尾使之成为帧的过程
Maximum Transfer Unit
)透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样(即保证接收方接到的数据是完整的数据)
面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输
帧头帧尾有标志位用来划分一个个帧,如果帧内部恰好也出现了标志位,则在第一次扫描时在标志位前面加一个转义字符帮助区分哪个是真正的帧头。考虑到转义字符也可能在帧内部出现,因此在转义字符前也加转义字符。接收方接到消息后但凡看到转义字符开头就会去掉转义字符并且对其后一个字符不做特殊处理
面向比特的物理链路使用比特填充的方法实现透明传输
零比特填充:在发送前,对帧的数据部分进行扫描,每
5
个连续的比特1
后就插入1
个比特0
,防止其与首部尾部的标志位混淆。接收方接收时将每5
个连续的比特1
后面的0
剔除即可
实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:
1
可能变成0
,0
可能变成1
。这叫比特差错在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(
Big Error Rate
)使用差错检测码(如
Mac
帧尾的FCS
)来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一
在待发送的数据后面添加
1
位奇偶校验位,使整个数据(包括所添加的校验位在内)中"1
"的个数为奇数(奇校验)或为偶数(偶校验)
比如发送数据001
0
,使其成为0001
,1
的个数为奇数。如果传输过程中发生了1
位误码,则1
的个数会变成偶数,据此判断是否发生误码;但是若发生了2
个误码,1
的个数依然为奇数,因此检查不出来1
,使其成为1001
,1
的个数为偶数,其他情况与奇校验类似如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码
如果有偶数个位发生误码,则奇偶性不发生变化,不能检查出误码(漏检)
除法内的相减实际是做异或运算,因此没有小的减不了大的这个说法
不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做
可靠传输:想办法实现发送端发送什么,接收端就收到什么
发送方发送数据
DATA
,接收方接收时进行差错检测
①如果没有出现误码,则接收信息并返回**ACK
确认分组给发送方,发送方收到ACK
后,一次通信结束
②如果出现误码,则丢弃信息并返回NAK
**拒绝分组给发送方,发送方收到NAK
后,重传DATA
,直至出现步骤①
的情况
如果DATA
传送过程中丢失了,即接收端一直等DATA
,发送端一直等ACK
,造成死锁,如何解决呢?
可以引入超时重传机制。可以在发送端设置一计时器
(大约发送接收的平均时间)
,当发送端在这个时间内没有收到ACK或NAK
时,就会判断DATA
丢失,从而再次发送DATA
,打破死锁
如果ACK
发送中丢失了,即接收方收不到ACK
就将数据重新发送,而数据实际上接收方已经有了,因此重复接收,并返回ACK
,造成错误,怎么办?
可以对每次发的
DATA
都加上序号,这样接收端就可以判断当前的数据是否有接收过,从而决定其去留
如果发送端发送DATA 0
,如果ACK
由于某些原因使其到达接收端的时间变长了,那么根据超时重传,DATA 0
会再次发送,而此时ACK
到达,则发送方会认为这是后一次DATA 0
的确认分组,于是马上发送DATA 1
。而第二次发送的DATA 0
此时返回ACK
,发送方误以为是DATA 1
的ACK
,因此又会发送DATA2
,而实际上DATA 1
的是否误码等情况还不知道,因此出现了错误,这种情况怎么办?
可以为
ACK
加上编号。则每个ACK
的相互作用就不会互串了。【对于数据链路层点对点信道,往返时间比较固定,不会出现确认迟到的情况,因此可以不给确认分组编号】
相对停止-等待协议多个窗口的概念
接收窗口尺寸只能等于1
,因此接收方只能按序接收正确到达的数据分组
ACK n
表示发送过来的分组x<=n的都收到了与回退
N
帧相比,接收窗口允许多个,且发送窗口最大情况有所变化
ACK
帧的部分不会超时重传数据链路层协议,用于规定帧格式
面向字节的异步链路采用插入转义字符的字节填充法
PPP
帧的标志字段取值为7E(16进制)
,如果数据中出现7E
则需要在数据前插入转义字符7D(16
进制),并将原来的7E减20(16
进制),所以7E
在数据中最终会变成7D5E
7D
前再加一个转义字符7D
,并将数据的7D
减20(16进制)
,于是转义字符7D
在数据中最终会变成7D5D
ASCII
码控制字符【数值小于20(16进制)的字符】,则在该字符前插入一个7D,同时将该字符的编码加上20(16进制)面向比特的同步链路采用插入比特0的比特填充法
接收方每收到一个
PPP
帧,就进行CRC
检验(多项式)。若CRC
检验正确,就收下这个帧;反之就丢弃这个帧(不可靠传输服务)。检验由尾部的FCS实现用于检验的多项式为 X 16 + X 12 + X 5 + 1 X^{16}+X^{12}+X^5+1 X16+X12+X5+1
共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC(
Medium Access Control
)
复用(Multiplexing)就是通过一条物理线路同时传输多路用户的信号。
当网络中传输媒体的传输容量大于多条单一信道的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽
将传输线路的频带资源划分成多个子频带,形成多个子信道。各子信道之间留出隔离频带,以免造成子信道间干扰。当多个信号输入一个多路复用器时,这个复用器将每一个信号调制到不同频率的载波上,接收端由相应的分用器通过滤波将各路信号分隔开,将合成的复用信号恢复成原始的多路信号
将时间划分为一个个时隙,将带宽资源按照时隙轮流分配给不同的用户,每对用户只在所分配时隙里使用线路传输数据。
时分复用技术将时间划分为一段段等长的时分复用帧,每一个时分复用的用户在每一个时分复用帧中占用固定序号的时隙。每个用户所占的时隙是周期性出现的,其周期就是时分复用帧的长度
波分复用其实就是光的频分复用。经过光调制,分别将光载波变换到不同波长。这些光波经过光复用器就可以在一根光纤中传输。到达终点后用光分用器将不同波长的光进行还原得到信息
光信号传输一段距离后会衰减,对衰减的光信号必须进行放大才能继续传输
码分复用
CDM
(最初用于军事通信)是另一种共享信道的方法。实际上,由于该技术主要用于多址接入,人们更常用的名词是码分多址CDMA
CDM
的每一个用户可以在同样的时间使用同样的频带进行通信,由于各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰
在CDMA
中,每一个比特时间再划分为m
个短的间隔,称为码片。通常m
的值是64
或128
使用CDMA
的每一个站被指派一个唯一的m bit
码片序列
1
,则发送它自己的m bit
码片序列m bit
码片序列二进制反码码片序列挑选原则:
分配给每个站的码片序列必须各不相同,实际常采用伪随机码序列
分配给每个站的码片序列必须相互正交(规格化内积为0
)
令向量S
表示站S
的码片序列,令向量T
表示其他任何站的码片序列。 S ⋅ T ( 计算方式为码片序列 S 和 T 对应项相乘相加再除以长度 ) 等于 0 S·T(计算方式为码片序列S和T对应项相乘相加再除以长度)等于0 S⋅T(计算方式为码片序列S和T对应项相乘相加再除以长度)等于0 即规格化内积等于0,此时会有以下四个特征↓。
S ⋅ T 恒等于 0 ; S ⋅ T ‾ 恒等于 0 ; S ⋅ S 恒等于 1 ; S ⋅ S ‾ 恒等于 − 1 S·T恒等于0;S·\overline T恒等于0;S·S恒等于1;S·\overline S恒等于-1 S⋅T恒等于0;S⋅T恒等于0;S⋅S恒等于1;S⋅S恒等于−1
习题2
的B、C、D
的情况同理↑
复用是将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分
多址(更确切地应该称为多点接入)处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久地分配给用户的应用中,多址是不需要的(对于无线广播或电视广播站就是这样)
频分复用FDM
和时分复用TDM
可用于多点接入,相应名词是频分多址FDMA和时分多址TDMA。从某种程度上,FDMA、TDMA、CDMA可以分别看作是FDM、TDM、CDM的应用
多个主机连接到一根总线上,当信息同一时间传送相遇时就会发生碰撞。
如何协调各主机的工作,使信息避免碰撞是很重要的
96
比特时间是指发送96
比特所需要的时间,也称为帧间最小间隔。其作用是是接收方可以检测出一个帧的结束,同时也使得其他站点都能有机会平等竞争信道并发送帧
①为什么 τ − δ 2 \tau - \frac{\delta}{2} τ−2δ时刻发送碰撞?
当
D
开始发送的时,A
已经走了 τ − δ \tau - \delta τ−δ时间,所以剩下路程所需要的时间是 δ \delta δ。
又因为A
和D
发送速度是相同的,因此对于 δ 时间 \delta时间 δ时间的路程,每人只需要走 δ 2 时间 \dfrac{\delta}{2}时间 2δ时间就会相遇,即碰撞
碰撞时刻 = τ − δ + δ 2 = τ − δ 2 碰撞时刻=\tau - \delta +\dfrac{\delta}{2}=\tau -\dfrac{\delta}{2} 碰撞时刻=τ−δ+2δ=τ−2δ
②为什么 t = τ t=\tau t=τ时,D检测到碰撞?
根据上边推论,发现
D
走了 δ 2 的时间 \dfrac{\delta}{2}的时间 2δ的时间路程后就发送了碰撞,此时它开始返回,经过同样的时间可以回到D
检测到碰撞时间 = δ 2 + δ 2 = δ 检测到碰撞时间=\dfrac{\delta}{2}+\dfrac{\delta}{2}=\delta 检测到碰撞时间=2δ+2δ=δ
③为什么 2 τ − δ 2\tau - \delta 2τ−δ时,A检测到碰撞?
与
D
检测到碰撞同理,A
走了 τ − δ 2 时间 \tau -\dfrac{\delta}{2}时间 τ−2δ时间,因此往回走也是这么多时间
A 检测到碰撞时间 = τ − δ 2 + τ − δ 2 = 2 τ − δ A检测到碰撞时间=\tau -\dfrac{\delta}{2}+\tau -\dfrac{\delta}{2}=2\tau - \delta A检测到碰撞时间=τ−2δ+τ−2δ=2τ−δ
为什么需要规定最小帧长?
假设
A
向D
发送帧,如果帧很短的话,在 2 τ 2\tau 2τ内就会将帧发送完毕,帧发送完毕后不会进行碰撞检测,而此时依然有发生碰撞的可能。所以必须保证在 2 τ 2\tau 2τ时间内帧不会被发送完,在这段时间里能够保持碰撞检测
512
比特(512
比特即争用期)
64
字节64
字节,因此凡长度小于64
字节的帧都是由于碰撞检测而异常中止的无效帧当帧过长时,其他线路会迟迟得不到资源,同时也可能导致接收方缓冲区溢出,因此帧的最大长度也有规定。
当帧发送碰撞后会停止发送,隔一段时间后再次发送,而具体隔多少时间再发送需要根据退避算法得出
各主机发送帧都不会产生碰撞
总线一旦空闲就有某个主机立即发送帧
每帧的发送时延为 T 0 T_0 T0,传播时延为 τ \tau τ,占用信道的时间为 T 0 + τ T_0+\tau T0+τ
极限信道利用率 S m a x = T 0 T 0 + τ = 1 1 + τ T 0 为了令 S m a x 尽量大,所以应该让 τ T 0 尽量小 即 τ 尽量小 ( 以太网端到端距离收到限制 ) 或 T 0 尽量大 ( 以太网帧尽量长 ) 极限信道利用率S_{max}=\dfrac{T_0}{T_0+\tau}=\dfrac{1}{1+\dfrac{\tau}{T_0}}\\ 为了令S_{max}尽量大,所以应该让\dfrac{\tau}{T_0}尽量小\\ 即\tau尽量小(以太网端到端距离收到限制)或T_0尽量大(以太网帧尽量长) 极限信道利用率Smax=T0+τT0=1+T0τ1为了令Smax尽量大,所以应该让T0τ尽量小即τ尽量小(以太网端到端距离收到限制)或T0尽量大(以太网帧尽量长)
802.11
无线局域网使用CSMA/CA
协议,在CSMA
的基础上增加了一个碰撞避免CA功能,而不再实现碰撞检测功能由于不可能避免所有的碰撞,并且无线信道误码率较高,
802.11
标准还使用了数据链路层确认机制(停止-等待协议)来保证数据被正确接收
在无线局域网中,仍然可以使用载波监听多址接入CSMA,即在发送帧之前先对传输媒体进行载波监听。若发现有其他站在发送帧,就推迟发送以避免碰撞
在无线局域网中,不能使用碰撞检测CD,原因如下:
802.11
的MAC
层标准定义了两种不同的媒体接入控制方式
DCF
方式下,没有中心控制站点,每个站点使用CSMA/CA
协议通过争用信道来获取发送权,这是802.11
定义的默认方式PCF
方式使用集中控制的接入算法(一般在接入点AP实现集中控制),是802.11
定义的可选方式,在实际中较少使用
802.11
标准规定,所有的站点必须在持续检测到信道空闲一段指定时间后才能发送帧,这段时间称为帧间间隔IFS
帧间间隔的长短取决于该站点要发送的帧的类型
常用的两种帧间间隔如下
SIFS
的帧类型由ACK
帧、CTS
帧、由过长的MAC
帧分片后的数据帧、以及所有回答AP
探询的帧和在PCF
方式中接入点AP
发送出的任何帧SIFS
要长得多,在DCF
方式中用来发送数据帧和管理帧①为什么源站检测到信道空闲后,还需要等待DIFS时间才将帧发送呢?
因为其他站此时可能有优先级更高的帧需要发送,因此有
DIFS
时间进行缓冲,若这个时间内没有高优先级的帧要发送,则说明信道是真正的空闲
②为什么目的站接收到帧后还需要等到SIFS时间才返回ACK确认帧呢?
SIFS
是最短的帧间间隔,用来分割一次对话的各帧,在这个时间里由接收状态转变为发送状态
③当其他站要发送数据,但是发现此时信道正忙时就会退避一段时间,等信道不忙后再进行操作,接着等待DIFS时间(与①同理),但为什么等待了DIFS时间后还要退避一段随机时间呢?
因为可能有多个站点在信道忙时都想发送帧,因此它们都会被搁置直至信道不忙,在
DIFS
时间后他们会同时发送,而实际上多个站点同时发送数据会碰撞。因此需要一个随机时间将他们进行错峰发送。
多个站点发送冲突时,各个站点需要退避一段随机时间再进行操作
以下情况必须使用退避算法
过程
0
,就开始发送数据0
时信道又转变为忙状态,这时就冻结退避计时器的数值,重新等待信道变为空闲,再经过DIFS
后,继续启动退避计时器i
次退避时,退避时间在时隙编号 { 0 , 1 , . . , 2 i + 1 − 1 } \{0,1,..,2^{i+1}-1\} {0,1,..,2i+1−1}中随机选择一个,然后乘以基本退避时间(也就是一个时隙的长度)就可以得到随机的退避时间。这样做时为了使不同站点选择相同退避时间的概率减少。当时隙编号达到255
时(对应第6
次退避)就不再增加了为了尽可能减少碰撞的概率和降低碰撞的影响,
802.11
标准允许要发送数据的站点对信道进行预约
RTS
帧,且媒体空闲,就发送一个响应控制帧,称为允许发送CTS,它也包括这次通信所需的持续时间从RTS帧中将此持续时间复制到CTS帧中
。CTS
帧后,再等待一段时间SIFS
后,就可发送其数据帧
802.11
标准规定了3
种情况供用户选择
RTS
帧和CTS
帧RTS
帧和CTS
帧RTS
帧和CTS
帧SIFS
后,就向源站发送确认帧ACK
除
RTS
帧和CTS
帧会携带通信需要持续的时间,数据帧也能携带通信需要持续的时间,这称为802.11
的虚拟载波监听机制
A
与C
虽然互相覆盖不到,但是C可收到B发出的关于A的CTS帧,从而得知A需要占用信道的时间。在这段时间里,C
不发送数据,从而解决隐蔽站带来的碰撞问题
MAC
地址是以太网的MAC
子层所使用的的地址
MAC地址
EEPROM
中,因此MAC
地址也被称为硬件地址MAC
地址有时也被称为物理地址。但是MAC
地址不属于物理层而是属于数据链路层MAC
地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC
地址。综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识单播地址、广播地址与多播地址
MAC
地址进行匹配,若相同则接收,不同则丢弃FF-FF-FF-FF-FF-FF
,将此地址填入帧的目的地址栏中,接收到该帧的主机检索该地址发现是广播地址,因此接收该帧
IP
地址是TCP/IP
体系结构的网际层所使用的的地址
IP
地址是Internet
上的主机和路由器所使用的的地址,由两部分信息构成
MAC地址不具备区分不同网络的功能,而IP地址可以通过网络号做到
如果只是一个单独网络,不接入因特网,则使用MAC地址就足够了(这不是一般用户的应用方式)
如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用
数据包转发过程中IP地址与MAC地址变换情况
H1
起初只带有目的IP
地址,查询路由表后路由器指路,从而知道下一步该往哪里走,从而不断转发直至到达目的地。地址解析协议
ARP
属于TCP/IP
体系结构的网际层,其作用是已知设备所分配到的IP
地址,使用ARP
协议可以通过该IP地址获取到设备的MAC
地址
IP
地址与MAC
地址的对应关系,即地址解析。ARP
高速缓存表为空,假设此时B
知道C
的IP
地址,准备发送信息,但是由于不知道C
的MAC
地址,因此无法封装数据帧,所以此时会广播一个ARP请求报文(封装在MAC帧中,目的地址为广播地址FF-FF-FF-FF-FF-FF
),内容如下:
IP
地址是:xxx
;我的MAC
地址是:XXX
;我想知道C
主机的MAC
地址是多少?这个广播帧会被该广播域的所有主机收到A
主机收到后交由上层处理,发现B
问的不是他,所以不予理会C
收到后交由上层处理,发现这个IP
地址正是自己,因此首先将B的MAC地址和IP地址的对应关系记录到自己的高速缓存表中,接着返回给ARP响应报文(封装在MAC帧中,目的地址为B的MAC地址),其中包含自己的MAC
地址集线器
HUB
的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。
CSMA/CD
协议交换机是一种负责转发信号的网络设备,可以为接入交换机的任意两个网络节点提供独享的电信号通路
以太网交换机通常由多个接口,每个接口都可以直接与一台主机或另一个以太网交换机相连。一般都工作在全双工方式
以太网交换机具有并行性,能同时连通多对接口,使多对主机能同时通信,无碰撞(不使用CSMA/CD
协议)
以太网交换机一般都具有多种速率的接口
以太网交换机工作在数据链路层(也包括物理层),它收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧
以太网交换机是一种即插即用的设备,其内部的帧交换表是通过自学习算法自动地逐渐建立起来的
帧的两种转发方式
交换机每个接口是一个独立的碰撞域
初始交换机1
和2
的MAC
地址表都为空
此时有以下任务:①A-->B
②B-->A
A
发送给B
的数据通过端口1
进入交换机,因此交换机先将MAC地址A 接口1
(表示如果要去MAC地址A,可以走接口1)记录到MAC
表中,同时扫描MAC
表查看是否有MAC地址B
对应的接口,发现没有。因此将这个帧从除来源外的所有端口发送出去【泛洪】。
1
的端口2
发送此帧到主机C
,主机C
对比MAC
地址后发现不是给自己的帧,因此丢弃1
的3
端口发送此帧到主机B
,主机B
对比MAC
地址后发现是给自己的帧,因此收下该帧,交付给高层【注意:此时交换机MAC
地址表并没有学习新的条目】1
的4
端口发送此帧到交换机2
的端口2
,交换机2
首先将MAC地址A 接口2
记录到MAC
地址表中,接着扫描MAC
表,发现没有找到MAC地址B
对应的接口,因此将这个帧从除来源外的所有端口发送出去【泛洪】。1
,3
,4
发送出去给主机后经过比对发现不是自己的帧,因此丢弃B-->A
时,交换机1
的MAC
地址表已经有了MAC地址A 接口1
这个条目
B
发送给A
的帧从接口3
进入交换机,交换机首先将MAC地址B 接口3
记录到MAC
地址表中,接着查询MAC
地址表是否有MAC地址A
对应的接口,发现接口1
对应的就是MAC
地址A
,因此从接口1
转发出去1
到达主机A
,主机A
经过比对后发现这是自己的帧,因此将其接收交付给高层此时若有一个与A
连接在同一总线上的主机G
向A
发送帧,过程如何?
G
向A
发送帧时,由于A
与G
处在同一总线上,因此G
发送的帧会直接传送到A
处,A
进行比对发现这是发送给自己的数据,因此将数据接收1
的端口1
,所以交换机1
会将MAC地址G 接口1
记录到MAC
表中,同时扫描MAC
地址表看看是否有MAC地址A
对应的接口,发现接口1
就是。但是刚刚学习到的MAC地址G
也是来自接口1
,因此交换机知道接口1
是来源,没有必要将数据再从这个接口转发出去。MAC地址表中的每条记录都有自己的有效时间,到期自动删除。这是因为MAC地址与交换机接口的对应关系并不是永久性的
STP
可以在增加冗余链路来提高网络可靠性的同时又避免网络环路带来的各种问题
当交换机之间链路较少时,某一条链路发送故障,会导致其中有些主机无法通信,即链路不可靠。
如下图,A
与B
之间的链路发送故障后,H1
便无法与H2
和H3
进行通信
很容易想到的一个方法是在B与C之间多拉一条链路,这样即使A与B之间的链路发送故障,H1
、H2
、H3
之间还是能够相互通信,但是这会带来一些问题。如下,当H1
发送一个广播帧时,我们针对交换机B
进行过程分析
H1
发送的帧进入交换机,交换机将MAC地址H1 接口1
记录到MAC
表中,接着检索MAC
表,发现没有MAC地址H2
的接口条目,因此进行泛洪,交换机A
和C
都接收到此帧A/C
首先将MAC地址H1 接口1
记录到自身的MAC
表中,接着检索MAC
表,发现没有广播帧的接口条目,因此进行泛洪。A
泛洪的帧会被H3
、交换机B
、C
收到;C
泛洪的帧会被H2
、交换机A
、B
收到。H2
与H3
接收帧后发现是一个广播帧,于是接收并交上层处理B
进行分析
C
的泛洪,帧内信息依然是MAC地址H1
【源MAC地址】,首先它会将此条目添加进MAC
表中,发现原先有MAC地址H1 接口1
的记录,此时它会认为这条记录已经出现错误,因此更新为MAC地址H1 接口2
。由于该条目的来源就是接口2
,所以交换机不会再从接口2
转发出去,而是在接口1
、3
处进行泛洪……B
也收到来自交换机A
的泛洪,情况与交换机C
泛洪类似,于是又将MAC地址H1 接口2
更新为MAC地址H1 接口3
……一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求,每个
VLAN
就是一个独立的广播域
为什么需要VLAN?
随着交换式以太网规模的扩大,广播域相应扩大,而巨大的广播域会带来很多弊端
广播风暴
如数台交换机连接了数台主机,当主机
A
要向主机B
发送数据帧,此时各交换机的MAC
表均为空,因此帧每到一个交换机就会进行泛洪,由于网络巨大,因此泛洪的范围也巨大难以管理和维护
潜在的安全风险
缺省VLAN ID
华为交换机上叫
PVID
,每个端口有且只有一个PVID。默认情况下端口的PVID
都为1
(即端口属于VLAN 1
)
端口上接收时总希望能够打上标签,发送出去时候总希望能去除标签
Access
端口一般用于终端设备与交换机之间
注意:交换机与路由器连接的接口也需要使用access
接口。这是因为路由器中的消息也不带VLAN
标签,就像终端一样,保证路由器的数据能够进入交换机领域,数据由路由器进入交换机是会被打上默认标签,接着猜按照交换机间VLAN
的规则行走。简单理解就是把路由器当作终端
交换机初始端口类型是Access
Access端口只能属于一个VLAN
Access
端口的PVID值与端口所属VLAN的ID相同(默认为1
)
Access
端口接收方法
PVID
值给帧"打标签",即插入4
字节的VLAN
标记字段,字段中的VID
取值与端口PVID
取值相等Access
端口发送处理方法
Trunk
端口一般用于交换机之间或交换机与路由器之间的互连Trunk
端口可以属于多个VLAN
Trunk
端口的PVID
值,默认情况下,Trunk
端口PVID
值为1
Trunk
端口发送处理方法
Trunk
端口接收处理方法
4
字节的VLAN
标记字段,字段中的VID
取值与端口的PVID
取值相等Hybrid
端口既可以用于交换机之间或交换机与路由器之间的互连(同Trunk
端口),也可用于交换机与用户计算机之间的互连(同Access
端口)Hybrid
端口可以属于多个VLAN
(同Trunk
端口)Hybrid
端口的PVID
值。默认情况下,Hybrid端口的PVID值为1Hybrid
端口发送处理方法↓
Hybrid
端口接收处理方法(同Trunk
)
PVID
给帧"打标签",即插入4
字节VLAN
标记字段,字段中的VID
取值与端口的PVID
取值相等华为交换机Hybrid端口应用例子
如何分割广播域?
路由器
由于路由器属于网络层设备,默认情况下不对广播数据包进行转发,因此自然达到隔离的效果。但是成本较高,局域网内部全靠路由器分割广播域是不现实的
VLAN虚拟局域网技术
默认情况下,交换机下的主机会被划入VLAN 1
,可以通过设置相关语句为交换机设置VLAN
,如下是将PC1
与PC2
划入VLAN2
的方法
LSW3:
valan batch 2 //在LSW3上创建VLAN2
interface Ethernet 0/0/1 //进入交换机接口1
port link-type access //将此接口类型设置为access
port default vlan 2 //信息经过此接口时若没有VLAN标签则打上VLAN2标签;若有VLAN标签则检查是 否为VLAN2,若为VLAN2则去除标签并转发;若非VLAN2,则不转发。
//对接口2的设置同理
设置完毕后,发现PC1
不能ping
通PC4
,因为此时他们不属于一个同一个广播域,但是可以ping
通PC2
,因为PC1
与PC2
属于同一个广播域VLAN 2
eNSP路由与交换技术笔记
VLAN
标记的最后12比特称为VLAN标识符VID,它唯一地标志了以太网帧属于哪一个VLAN
VID
的取值范围是0~4095
0
和4095
都不用来表示VLAN
,因此用于表示VLAN
的VID的有效范围是1~40944
字节的VLAN标记转变为802.1Q
,简称**“打标签”**4
字节VLAN
标记转变为普通以太网帧,简称**“去标签”**主要任务是实现网络互连,进而实现数据包在各网络之间的传输
Virtual Circuit
)
IPv4
地址就是因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符
A
类地址网络号第1位固定为0,网络号后面部分不能全0
,也不能全1
,所以网络号范围是1~126B
类地址网络号前2位固定为10,网络号后面部分可以全取0
或1
,所以网络号范围是128.0~191.255C
类地址网络号前3位固定为110,网络后后面部分可以全取0
或1
,所以网络号范围是192.0.0~223.255.255D
类地址为多播地址,IP
地址为224.0.0.0~239.255.255.255为什么需要划分子网?
比如一个单位有
300
台主机,此时需要申请一个B
类网络地址,很容易得知,分配出去300
个IP
地址后,申请得到的B
类网络还剩下很多IP地址。
当单位扩大规模,需要再添加两个子网的时,又要为这两个子网分别申请B
类地址,这会花费一些不必要的支出,实际上子网1
申请到的B
类地址还有很多没用到,我们希望能够将这些剩余地址应用到其他子网中(节约地址)。
32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号
0
来对应主机号IPv4
地址与其相应的子网掩码进行逻辑与运算【即掩码是1
的部分】就可得到IPv4
地址所在子网的网络地址为什么需要?
划分子网在一定程度上缓解了因特网发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小并没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁
1993年,IETF发布了无分类域间路由选择CIDR
CIDR
消除了传统的A
类、B
类和C
类地址,以及划分子网的概念
CIDR
可以更加有效地分配IPv4
地址空间
CIDR
使用"斜线记法",或称CIDR
记法。即在IPv4
地址后面加上斜线"/
",在斜线后面写上网络前缀所占比特数量
CIDR实际上是将网络前缀都相同的连续IP地址组成一个"CIDR地址块"
路由聚合
如路由器
A
上连接同一网络的多台主机,路由器B
与A
相连。若A
将所有主机的具体IP
地址都报给B
,则路由器B
中会增加多项路由条目。可实际上B
向A
中任意一个主机转发数据的时都是走同一个端口,因此我们可以将这些网络的共同前缀提取出来成为新的网络号,同时将剩余主机号置0放入路由器B中如:
A
连接了172.1.4.0/25
和172.1.7.0/24
,则提取公共前缀聚合后变为172.1.4.0/22
同一个网络之间的主机可以直接通信,不同网络之间的主机通信需要路由器中转
源主机如何判断目的主机是否和自己在同一个网络中?
将自身的
IP
地址与子网掩码相与得到自身的网络号1
,再将目的IP
地址与自身子网掩码相与得到网络号2
。若两个网络号相等,则说明处在同一个网络
主机如何知道应该把IP数据报交给哪个路由器进行转发呢?
通过设置默认网关。所谓默认网关,即当路由表中查不到数据时会将数据发往的路由器端口
IP
地址
静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表
0
,因此一定是最后一个被匹配的条目32
保证了这是第一个被匹配的静态条目如何防止错误路由导致IP数据报永久兜圈?
IP
数据报首部设置生存时间TTL字段
IP
数据报进入路由器后,TTL
字段的值减1
。若TTL的值不等于0,则被路由器转发,否则被丢弃因特网所采用的的路由选择协议主要特点
AS
RIP
使用跳数作为度量来衡量到达目的网络的距离
1
+1
15
个路由器。"距离"等于16时相当于不可达。因此,RIP
只适用于小型互联网RIP
认为好的路由就是"距离短"的路由,也就是所通过路由器数量最少的路由RIP
包含以下三个要点
存在"坏消息传播很慢"的问题,又称为路由环路(两个路由器相互学习错误路由,造成循环)或距离无穷计数问题,这是距离向量算法的一个固有问题,可以采取多种措施减少出现该问题的概率或减小该问题带来的危害
15
(16
表示不可达)简单来说就是得到一个带权有向图,以当前路由器为起点,通过迪杰斯特拉算法得到到达某个点的最短路径
OSPF
是基于链路状态的,而不像RIP
那样是基于距离向量的
OSPF
采用SPF
算法计算路由,而不像RIP
那样是基于距离向量的
OSPF
不限制网络规模,更新效率高,收敛速度快
链路状态是指本路由器都和哪些路由器相邻,以及相应链路的"代价"
OSPF
相邻路由器之间通过交互问候(Hello)分组,建立和维护邻居关系
使用OSPF
的每个路由器都会产生链路状态通告LSA,包含以下内容
LSA
被封装在链路状态更新分组LSU中,采用洪泛法发送
使用OSPF
的每个路由器都有一个链路状态数据库LSDB,用于存储LSA
通过各路由器洪泛法发送封装有自己LSA的LSU分组,各路由器的LSDB
最终达到一致
使用OSPF
的各路由器基于LSDB进行最短路径优先SPF计算,构建出各种到达其他各路由器的最短路径,即构建各自的路由表
问候(Hello
)分组
用来发现和维护邻居路由器的可达性
数据库描述(Database Description)分组
向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息
链路状态请求信息(Link State Request)分组
向邻居路由器请求发送某些链路状态项目的详细信息
链路状态更新(Link State Update)分组
路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态
链路状态确认(Link State Acknowledgement)分组
这是对链路状态更新分组的确认分组
一条总线上有多台主机,则它们互为邻居,因此每个路由器都要向其他路由器发送问候分组和链路状态更新分组。为了减少所发送分组的数量,则需要用相应方法对邻居关系进行删减
OSPF
采用选举指定路由器DR(Designated Router
)和备用的指定路由器BDR(Backup Designated Router
)的方法减少邻居数目
DR/BDR
只与DR/BDR
建立邻居关系DR/BDR
之间通过DR/BDR
交换信息DR
失效时由BDR
顶上尽力寻找一条能够到达目的网络且比较好的路由(不兜圈子),而并非找最佳路由
内部网关协议IGP(如路由信息协议RIP或最短路径优先OSPF)
外部网关协议EGP(如边界网关协议BGP)
A
系统路由选择度量是距离,B
系统是带宽……那么A
到系统E
的路由怎样走最好呢?由于没有统一度量,所以不能直接得到最佳路由BGP
发言人交换网络可达性的信息(要到达某个网络所要经过的一系列自治系统)BGP
发言人互相交换了网络可达性的信息后,各BGP
发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好路由。也就是构造出树形结构(防环路)的自治系统连通图BGP
发言人建立关系,使通信初始化版本
占4
比特,表示IP
协议版本。通信双方使用的IP
协议版本必须一致。目前广泛使用的IP
协议版本为号为4(IPv4)
首部长度
占4
比特,表示IP
数据报首部长度。该字段取值以4字节为单位
最小十进制取值为5,表示IP数据报首部只有20字节【4
字节单位,所以取值5
对应20
字节】固定部分
最大十进制取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分
可选字段
长度从1
到40
个字节不等。用来支持排错、测量及安全等措施
可选字段增加了IP
数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理IP数据报的开销。实际上可选字段很少被使用
填充字段
确保首部长度为4
字节长度的整数倍,使用全0
进行填充
区分服务
占8
比特,利用该字段的不同数值可提供不同等级的服务质量,只有在使用区分服务时,该字段才起作用。一般情况下不使用该字段
总长度
占16比特,表示IP
数据报的总长度【首部+数据载荷】,最大取值为十进制65535
,以字节为单位
标识
占16
比特,属于同一个数据报的各分片数据报应该具有相同的标识【可理解为ID】
IP
软件维持一个计数器,每产生一个数据报,计数器值+1
,并将此值赋给标识字段
标志
占3
比特,各比特含义如下
DF
位:1
表示不允许分片,0
表示允许MF
位:1
表示"后面还有分片",0
表示"这是最后一个分片"0
片偏移(必须是整数)
占13
比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少单位
片偏移以8个字节为单位
生存时间
占8比特,最初以秒为单位,最大生存周期为255
秒;路由器转发IP数据报时,将IP
数据报首部中的该字段值减去IP
数据报在本路由器上耗费的时间,若不为0
【说明路由器消耗时间后还活着】就转发,否则丢弃
现在以"跳数"为单位,路由器转发IP数据报时,将IP数据报首部中的该字段值减1,若不为0就转发,否则丢弃【防止兜圈】
协议
占8
比特,指明IPv4
数据报的数据部分是何种协议数据单元
首部检验和
占16比特,用来检测首部在传输过程中是否出现差错,比CRC
检验码简单,称为因特网检验和
IP
数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段【生存时间、标志、片偏移等】的取值可能发生变化
由于IP
层本身不提供可靠传输服务,并且计算首部校验和是一项耗时的操作,因此在IPv6
中,路由器不再计算首部校验和,从而更快转发IP
数据报
源IP地址和目的IP地址
各占32比特,用来填写发送该IP
数据报的源主机IP
地址和接收该IP
数据报的目的主机
为了更有效地转发
IP
数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP
ICMP
来发送差错报告报文和询问报文ICMP
报文被封装在IP
数据报中发送当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据
ICMP
的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络位置、目的主机未知等13
种错误
当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报发送速率放慢
当路由器收到一个目的
IP
地址不是自己的IP
数据报,会将其生存时间TTL字段值减1
。若结果不为0
,则将该IP
数据报转发出去;若结果为0,除丢弃该IP数据报外,还要向源点发送时间超过报文当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文
当路由器或目的主机收到
IP
数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文
路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)
如主机
1
的默认路由是R1
,信息经过R1
时,R1
发现最佳路由不是自己,而是R2
,所以通过ICMP
告知主机1
ICMP
回送请求报文是由主机或路由器向一个特定的目的主机发出的询问ICMP
回送回答报文ICMP
时间戳请求报文是请某个主机或路由器回答当前的日期和时间ICMP
时间戳回答报文中有一个32
比特的字段,其中写入的整数代表从1900
年1
月1
日起到当前时刻一共有多少秒ICMP
差错报告报文不再发送ICMP
差错报告报文ICMP
差错报告报文ICMP
差错报告报文ICMP
差错报告报文eNSP
的ping
命令】ICMP
(没有通过运输层的TCP
或UDP
)ICMP
回送请求和回答报文用来测试IP数据报从源主机到达目的主机要经过哪些路由器
Windows
版本
tracert
命令ICMP
ICMP
回送请求和回答报文以及差错报告报文由主机发送出去的数据包中的生存时间字段TTL由1开始逐渐增加,每个路由器都会返回一个时间超过报文,由此达到跟踪路由器的目的
利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网。
虚拟专用网中各主机所分配的地址应该是本机构可自由分配的专用地址
NAT
能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源【为了节省IPv4
地址】
由于绝大多数的网络应用都是使用运输层协议TCP
或UDP
来传送数据,因此可以利用运输层的端口号和IP地址一起进行转换。
这样,用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。这种将端口号和IP
地址一起进行转换的技术叫作网络地址与端口号转换NAPT
物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的的问题,实现了主机到主机的通信
但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程
如何为运行在不同主机上的应用进程提供直接的通信服务时运输层的任务,运输层协议又称端到端协议
为了使运行不同操作系统的计算机的应用进程之间能进行网络通信,必须使用统一的方法对TCP/IP体系的应用进程进行标识,即端口号。
为什么不能使用进程标识符PID来区分各进程?
因为因特网上的计算机并不是使用统一的操作系统,不同的操作系统使用不同格式的进程标识符
端口号只具有本地意义,即端口号只是为了标识本计算机应用层中的各进程,在因特网中,不同计算机中的相同的端口号是没有联系的
端口号使用16比特表示,取值范围0~65535
。
IANA
把这些端口号指派给了TCP/IP
体系中最重要的一些应用协议IANA
按照规定的手续登记,以防止重复。如Microsoft RDP
微软远程桌面使用的端口是3389
TCP
时面向连接的。发送数据前需要"三报文握手"建立连接,数据传输结束后需要"四报文挥手"释放连接
仅支持单播
TCP是面向字节流的。其将应用进程交付下来的数据块仅仅看作是一连串的字节流,TCP
将这些字节流编号并存储在缓冲中;接收方一边接收数据,一边将缓冲中的数据交给应用进程。
接收方收到的字节流必须和发送方收到的字节流完全一致
不会出现传输差错(误码、丢失、乱序、重复)
TCP
报文段首部最小20
字节,最大60
字节
一般来说,我们希望数据传输能快一些,但如果发送方把数据发送得过快,接收方就可能来不及接收,这会造成数据的丢失
流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收
利用滑动窗口实现流量控制
若接收方窗口调为0后,一段时间之后又调为200,此时向发送方传递确认报文,可此时报文丢失,则会造成发送方窗口始终为0,接收方以为发送方收到了确认报文而开始等待数据,造成死锁,如何解决?
当发送方窗口大小为
0
时,其隔一段时间就会发送一个1
字节大小的零窗口探测报文,看看此时接收窗口大小是否进行调整
若发送的零窗口探测报文也丢失了,会造成新死锁吗?
不会。因为零窗口探测报文也有超时重传机制
在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况叫做拥塞
若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降
发送方维护一个叫做拥塞窗口cwnd的状态变量,其值取决于网络的拥塞程度,并且动态变化
拥塞窗口cwnd
的维护原则:只要网络没有出现拥塞,拥塞窗口就再增大一些(确认报文段窗口大小),但只要网络出现拥塞,拥塞窗口就减少一些发送方将拥塞窗口作为发送窗口swnd,即swnd=cwnd
维护一个慢开始门限ssthresh状态变量
cwnd < ssthresh
时,使用慢开始算法cwnd > ssthresh
时,停止使用慢开始算法而改用拥塞避免算法cwnd = ssthresh
时,既可使用慢开始算法,也可以使用拥塞避免算法拥塞窗口从1开始,根据应答报文大小来扩大拥塞窗口,如发送方窗口2
,应答大小2
,则下次发送大小为4
拥塞窗口每次只扩大1,而不是向慢开始那样根据发送方的返回窗口进行增加。
当窗口增加到一定大小,发送方发送的报文出现了超时重传,则判断网络可能出现了拥塞,此时将拥塞窗口初始化为1,同时将慢开始门限ssthresh设置为发生拥塞时窗口大小的一半
"拥塞避免"并非指完全能够避免拥塞,而是指在拥塞避免阶段将拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞
快重传是使发送方尽快进行重传,而不是等待超时重传计时器超时再重传
要求接收方不用等待自己发送数据时才进行捎带确认,而是要立即发送确认
即使收到了失序的报文段(说明有一段丢失了)也要立即发出对已收到的报文段的重复确认
发送方一旦收到3个连续的重复确认,就将相应的报文段立即重传,而不是等该报文段的超时重传计时器超时再重传
对于个别丢失的报文段,发送方不会出现超时重传,也就不会误认为出现了拥塞。使用快重传可以使整个网络的吞吐量提高约20%
发送方一旦收到3
个重复确认,就知道现在只是丢失了个别报文段。也是不启动慢开始算法,而执行快恢复算法
cwnd
值再增大一些,即等于新的ssthresh+3
3
个重复的确认,就表明有3
个数据报文段已经离开了网络3
个报文段。因此可以适当把拥塞窗口扩大些正常情况下,超时重传时间应该设为略大于往返时间。但是由于各区域的速率可能不一致,因此将超时重传时间设置为一个固定值是行不通的
利用每次测量得到的RTT
样本,计算加权平均往返时间 R T T S RTT_S RTTS(平滑的往返时间)
显然,超时重传时间RTO应略大于加权平均往返时间 R T T S RTT_S RTTS
往返时间测量问题
针对出现超时重传时无法测准往返时间RTT的问题,有以下解决方法
在计算加权平均往返时间 R T T S RTT_S RTTS时,只要报文段重传了,就不采用其往返时间
RTT
样本。也就是出现重传时,不重新计算 R T T S RTT_S RTTS,进而超时重传时间RTO也不会重新计算。此方法的漏洞如下:如果报文段时延突然增大很多,并且之后很长一段时间都会保持这种时延。因此在原来得出的重传时间内,不会收到确认报文段,于是重传,造成死锁
修正方法:报文段每重传一次,就把超时重传时间RTO增大一些,典型的做法是将RTO的值取为旧RTO的2倍
具体实现
TCP
的运输连接管理就是使运输连接的建立和释放都能正常地进行
SYN
为1
的报文段不能携带数据,但会消耗一个序列号seqACK=1
代表这是普通确认报文段,ack=x+1表示这是对报文段序列号seq=x的确认源端口:占16
比特,写入源端口号,用来标识发送该TCP报文段的应用进程
目的端口:占16
比特,写入目的端口号,用来标识接收该TCP报文段的应用进程
序号:占32
比特,取值范围 [ 0 , 2 32 − 1 ] [0,2^{32}-1] [0,232−1],序号增加到最后一个后,下一个序号就又回到0
。作用是指出本TCP报文段数据载荷的第一个字节的序号
确认标志位ACK:取值为1
时确认号字段才有效,为0
时确认号字段无效
确认号:占32
比特,取值范围 [ 0 , 2 32 − 1 ] [0,2^{32}-1] [0,232−1],序号增加到最后一个后,下一个序号就又回到0
。可理解为若确认号=n,则表明到序号n-1为止的所有数据都已正确接收,期望接收序号为n的数据
数据偏移:占4
比特,并以4字节为单位
用来指出TCP
报文段的数据载荷部分的起始处距离TCP
报文段的起始处。这个字段实际上是指出TCP报文段的首部长度
首部固定长度为20字节,因此数据偏移字段的最小值 ( 0101 ) 2 (0101)_2 (0101)2;首部最大长度为60字节,因此数据偏移字段最大值为 ( 1111 ) 2 (1111)_2 (1111)2
保留字段:占6比特,保留为今后使用,但是目前应置为0
窗口:占16比特,以字节为单位。指出发送本报文段一方的接收窗口
窗口值作为接收方让发送方设置其发送窗口的依据,这是以接收方的接收能力来控制发送方的发送能力,称为流量控制
检验和:占16比特,检测范围包括TCP报文段的首部和数据载荷两部分
在计算校验和时,要在TCP
报文段的前面加上12
字节的伪首部
同步标志位SYN:在TCP
连接建立时用来同步序号
终止标志位FIN:用来释放TCP
连接
复位标志位RST:用来复位TCP
连接
当RST=1
时,表明TCP
连接出现了异常,必须释放连接,然后再重新建立连接;RST
置1
还用来拒绝一个非法的报文段或拒绝打开一个TCP
连接
推送标志位PSH:接收方的TCP
收到该标志位为1的报文段会尽快上交应用进程,而不必等到接收缓存都填满后再向上交付
紧急标志位URG:取值为1时紧急指针字段有效;取值为0
时紧急指针字段无效。
紧急指针:占16
比特,以字节为单位,用来指明紧急数据的长度
当发送方有紧急数据时,可将紧急数据插队到发送缓存的最前面,并立刻封装到一个TCP
报文段中进行发送。紧急指针会指出本报文段数据载荷部分包含了多长的紧急数据,紧急数据之后是普通数据
选项:增加选项可以增加TCP
的功能
TCP
报文段数据载荷部分的最大长度RTT
PAWS
填充:由于选项长度可变,因此使用填充来保证报文段首部能被4整除
解决通过应用进程的交互来实现特定网络应用的问题
应用层是计算机网络体系结构的最顶层,是设计和建立见算计网络的最终目的
C/S
方式的应用服务通常是服务集中型的,即应用服务集在网络中比客户计算机少得多的服务器计算机上
C/S
应用中,常会出现服务器计算机跟不上众多客户机请求的情况C/S
应用中,常用计算机群集(或服务器场)构建一个强大的虚拟服务器通过
DHCP
服务器为指定网段主机分配IP
地址
DHCP
客户机首先进行广播寻找DHCP
服务器("DHCP发现"消息),源地址为本机0.0.0.0
,目的地址为广播地址255.255.255.255
DHCP
服务器收到后,返回"DHCP提供"消息,其中包含提供给DHCP
客户机的IP
地址和相关配置信息。源地址为DHCP
服务器地址,目的地址为广播地址(因为此时目的客户机还没有IP地址)
客户机可能会收到多个DHCP提供消息,一般以收到的第一个为准。此时客户机知道DHCP
服务器可以给它分配地址,因此发送"DHCP请求"报文来请求分配IP
地址,报文的源地址为0.0.0.0
,目的地址为255.255.255.255
DHCP
收到请求信息后,查看其中事务ID是否相符,若不符则丢弃;符合则从地址池中取得一个IP
地址,并通过ARP
协议确认此地址未被使用后,将其封装进"DHCP确认"信息中,报文源地址为DHCP
服务器地址,目的地址为广播地址
客户机收到DHCP
确认信息后,查看其中事务ID
是否相符,不符则丢弃;符合则再次使用ARP确认IP地址没有被使用,确认成功后将此IP地址应用(有一定租约)。
当IP地址租约达到0.5倍时间时,客户机会再次向DHCP
服务器发送请求信息,此时DHCP
服务器会出现以下三种情况
IP
地址租期DHCP
发现"报文DHCP
客户必须重新发送"DHCP请求"报文,继续等待DHCP
服务器可能做出的反应。若依然无反应,则租用期到后,客户机必须立刻停止使用当前IP
地址客户端可随时终止DHCP服务器提供的租用期,这时只需要向DHCP
服务器发送DHCP
释放报文即可。源地址0.0.0.0
,目的地址255.255.255.255
我们通过输入网址来访问网页,可实际上计算机间的通信是通过IP地址,所以网址的本质上是
IP
地址,将网址与IP地址映射起来就是DNS
的作用
因特网是否可以只适用一台DNS服务器?
这种做法不可取。因为因特网的规模很大,如果只有一个服务器,那么一旦其出现故障,整个因特网就会瘫痪
因此现实中采用**层次结构的命名树**作为主机的名字(即域名),并使用分布式的域名系统
DNS
DNS使大多数域名都在本地解析,仅少量解析需要在因特网上通信,因此系统效率很高。由于
DNS
是分布式系统,即使单个计算机出了故障,也不会妨碍整个系统的正常运行
将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,是一项基本的网络应用,即文件传送
FTP
的常见用途是在计算机之间传输文件,尤其是用于批量传输文件。FTP
的另一个常见用途是让网站设计者将构成网站内容的大量文件批量上传到他们的Web服务器
ASCII
码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)TCP
连接在整个会话过程都保持开启状态TCP
连接只会在有数据传送时开启,数据结束传送后就关闭电子邮件系统的三个主要组成构件:用户代理,邮件服务器,以及电子邮件所需的协议
ISP
都有邮件服务器,其功能是发送和接收邮件,同时还要负责维护用户的邮箱SMTP
)和邮件读取协议(如POP3
,IMAP
)万维网并非某种特殊的计算机网络。它是一个大规模的、联机式的信息储藏所,是运行在因特网上的一个分布式应用
万维网利用网页之间的超链接将不同网站的网页链接成一张逻辑上的信息网
浏览器最重要的部分是渲染引擎,也就是浏览器内核。负责对网页内容进行解析和显示
不同的浏览器内核对网页内容的解析也有不同,因此同一网页在不同内核的浏览器里显示的效果可能不同
网页编写者需要在不同内核的浏览器中测试网页显示效果
为了方便地访问在世界范围的文档,万维网使用统一资源定位符URL
来指明因特网上任何种类"资源"的位置
URL
的一般形式由以下四个部分组成
HTTP
定义了浏览器(即万维网进程)怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传送给浏览器
Cookie
提供了一种机制使得万维网服务器能够"记住"用户,而无需用户主动提供用户标识信息。也就是说,Cookie是一种对无状态的HTTP进行状态化的技术
如果原始服务器中的文档已经修改,但是代理服务器中仍然有缓存,那么主机访问文档时是否会访问到未修改的文档从而发送错误呢?
实际上,原始服务器会为每个响应的对象设定一个修改时间字段和一个有效日期字段。当请求到达代理服务器时,若文档未过期则直接返回响应报文,否则向原始服务器发送请求。请求头部中有If-modified-since字段,记录了上次文档的修改时间,如果代理服务器中文档的修改时间与原始服务器中文档的修改时间一致,说明文档没有发送变化,因此原始服务器返回一个空文档,否则返回新文档
防火墙主要用于保护一个网络区域免受来自另一个网络区域的网络攻击和网络入侵行为,主要部署在网络边界,对进出网络的访问行为进行控制,安全防护是其核心特性,比如在企业网中,在与
Internet
接口处布置防火墙,可以起到过滤病毒、阻止黑客攻击等好处
安全区域
Zone
是一个或多个接口的集合,是防火墙区别路由器的主要特性,防火墙通过安全区域来划分网络,标识报文流动的“路线”,一般来说,当报文在不同的安全区域流动时,才会受到控制。在华为防火墙中,一个接口只能加入到一个安全区域
华为防火墙的默认安全区域:Trust
、DMZ
和Untrust
区域名 | 受信任程度 | 安全级别 | 何时使用 |
---|---|---|---|
Trust | 高 | 85 | 定义内部用户所在网络 |
DMZ | 中等 | 50 | 定义内部服务器所在网络 |
Untrust | 低 | 5 | 定义Internet等不安全的网络 |
Local | 代表防火墙本身 | 100 |
凡是防火墙主动发出的报文均可认为是Local
区域发出的,凡是需要防火墙响应并处理的报文均可认为是Local
区域接收。Local
不能添加接口, 因为防火墙的所有接口都隐含属于Local
区域
在网络数量较少网络中,使用默认的安全区域就可以满足划分网络的需求,反之,则需要创建新的安全区域。
安全域间是两个安全区域的唯一道路,也可以用来描述流量的传输通道,任意两个安全区域都可构成一个安全域间。如果希望对经过这条通道的流量进行控制,就必须配置安全策略。
报文在两个安全区域之间流动时,报文从低级别的安全区域向高级别的安全区域流动时为入方向Inbound
,报文从高级别的安全区域向低级别的安全区域流动时为出方向Outbound
。
通信双方一定会交互报文,即安全区域的两个方向上都有报文的传输,通过设置安全区域,防火墙的安全区域之间有等级明确的域间关系,不同的安全区域代表不同网络,防火墙成为连接各个网络的节点,以此为基础,防火墙可以对各网络之间流动的报文实施管控。
防火墙内不允许定义优先级一样的区域,同等优先级的区域无法识别Inbout、Outbout
ACL
包过滤、NAT
转换等功能,Trust
与Untrust
区域间有一台防护墙,防火墙左右接口IP
不同,需要使用路由表指导报文的转发,此种模式就是路由。ACL
规则检查,防攻击检查、流量监控等功能,报文在防火墙当中不仅仅像是交换机的二层处理,还会对报文进行高层分析处理,两个区域IP
属于同一网段,防火墙接口没有配置IP
,工作成交换机模式。Trust
与Untrust
区域都使用同一网段,两台防火墙,组成主备关系,防火墙工作为路由模式,左右流量是二层转发,上下流量是三层转发。有很多朋友留言要此份笔记源文件,现将PDF
文件放置如下百度云,需要自取
链接:https://pan.baidu.com/s/1iuEQbR6Tk_BSwEbTZAimeg
提取码:59ua
如需要markdown
文档可评论告知,祝各位学习顺利,你们的点赞和收藏是我最大的动力!