计算机网络详细笔记【湖科大教书匠,内含B站链接】 |
您所在的位置:网站首页 › 计算机网络链接 › 计算机网络详细笔记【湖科大教书匠,内含B站链接】 |
B站链接:https://www.bilibili.com/video/BV1c4411d7jb?p=1 关于其中各种协议的实现可看:经典实验整理总结 第1章 计算机概述 1. 各种网络 网络(Network)由若干结点(Node)和连接这些结点的链路(Link)组成多个网络还可以通过路由器互连起来,这样就构成了一个覆盖范围更大的网络,即互联网(互连网)。因此,互联网是"网络的网络(Network of Networks)"因特网(Internet)是世界上最大的互连网络【小写i的internet是通用名词,互连的网络都叫internet】 2. ISP因特网服务提供者(Internet Service Provider) 普通用户如何接入因特网? 通过ISP接入因特网。ISP可以从因特网管理机构申请到成块的IP地址,同时拥有通信线路以及路由器等连网设备,任何机构和个人只要向ISP交纳规定的费用,就可以从ISP得到所需要的IP地址。互联网上的主机都必须有IP地址才能通信 基于ISP的三层结构的因特网 层数越小覆盖越多 电话问世后,人们发现所有电话之间都两两相连是不现实的。因此可以用一个中间设备将讲话接入,根据需要进行转发 电话交换机接通电话线的方式称为电路交换从通信资源分配角度来看,交换(Switch)就是按照某种方式动态地分配传输线路的资源 3. 电路交换三个步骤 建立连接(分配通信资源):例如在使用电路交换打电话前,必须先拨号请求建立连接,当被叫用户听到电话交换机送来的拨号音并拿起电话后,从主叫端到被叫端就建立了一条连接,也就是一条专用的物理通路。这条连接保证了双方通话时所需的通信资源,而这些资源在双方通信中不会被其他用户占用通话(一直占用通信资源):分配的资源始终被占用释放连接(归还通信资源)报文交换与分组交换类似,不过对报文没有限制大小,现如今多使用分组交换。 优点 无需建立连接动态分配线路提高线路可靠性:如果某条线路出现故障,会重新选择另一条线路提高线路利用率:通信双方在不同的时间分段占用物理线路提供多目标服务:一个报文可以同时发送给多个目的地址 缺点 引起转发时延:报文在节点交换机上要经历存储转发的过程需要较大的存储转发空间:因为报文大小没有限制需要传输额外信息量:有头部等信息 三种交换对比纵坐标为时间,分组交换相对报文交换分的更小,可以减少时延,防止过长时间占用线路以及方便排错 一些互相连接的、自治的计算机的集合 互连:指计算机之间可以通过有线或无线的方式进行数据通信自治:指独立的计算机,它有自己的硬件和软件,可以单独运行使用集合:指至少需要两台计算机 分类按交换技术:①电路交换网络 ②报文交换网络 ③分组交换网络 按使用者:①公用网 ②专用网 按传输介质:①有线网络 ②无线网络 按覆盖范围:①广域网WAN ②城域网MAN ③局域网LAN ④个域网PAN 按拓扑结构:①总线型网络 ②星型网络 ③环型网络 ④网状型网络 性能指标性能指标可以从不同的方面来度量计算机网络的性能 1. 速率连接在计算机网络上的主机在数字信道上传送比特的速率,也称为比特率或数据率 常用数据率单位 计算机中的数据量单位,也是信息论中信息量的单位。一个比特就是二进制数字中的一个1或0. 常用数据量 带宽在模拟信号系统中的意义 信号所包含的各种不同频率成分所占据的频率范围 单位:Hz(kHz,MHz,GHz) 带宽在计算机网络中的意义 用来表示网络的通信线路所能传送数据的能力,因此网络带宽表示在单位时间内从网络中的某一点到另一点所能通过的"最高数据率" 单位:b/s(kb/s,Mb/s,Gb/s,Tb/s) 一条通信线路的"频带宽度"越宽,其所传输数据的"最高数据率"也越高 3. 吞吐量吞吐量表示在单位时间内通过某个网络(或信道、接口)的数据量。吞吐量被经常用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络。吞吐量受网络的带宽或额定速率的限制 4. ★时延在处理过程中所需要的时间 在许多情况下,因特网上的信息不仅仅单方向传输,而是双向交互我们有时很需要知道双向交互一次所需要的时间因此,往返时间RTT(Round-Trip Time)也是一个重要的性能指标 7. ★利用率信道利用率:用来表示某信道有百分之几的时间是被利用的(有数据通过)网络利用率:全网络的信道利用率的加权平均 根据排队论,当某信道的利用率增大时,该信道引起的时延也会迅速增加。因此信道利用率不是越高越好 如果令 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%。如果超过了,就要准备扩容,增大线路带宽 8. 丢包率丢包率即分组丢失率,是指在一定的时间范围内,传输过程中丢失的分组数量与总分组数量的比率具体可分为:接口丢包率、结点丢包率、链路丢包率、路径丢包率、网络丢包率等 丢包率是网络运维人员非常关心的一个网络性能指标,但对于普通用户来说往往并不关心这个指标,因为他们意识不到丢包 分组丢失的两种情况 分组在传输过程中出现误码,被结点丢弃分组到达一台队列已满的分组交换机时被丢弃,在通信量较大时就可能造成网络拥塞丢包率反映了网络的拥塞情况 无拥塞时路径丢包率为0轻度拥塞时路径丢包率为1%~4%严重拥塞时路径丢包率为5%~15% ★体系结构在平常编程时,我们总是喜欢利用不同的类实现不同的功能,最后进行整合实现真正的功能。这样的好处是让结构更加清晰,维护也更加简单。计算机网络分层同理,在计算机网络上实现不同进程的通信需要解决众多问题,分层便于维护与管理。 当我们利用浏览器发送网页请求到服务器并发生响应的过程中,数据会怎么变化呢? 浏览器发送 应用层按照HTTP协议的规定构建一个HTTP请求报文(请求要干什么)。应用层将HTTP请求的报文交给运输层处理运输层给HTTP请求报文添加一个TCP首部(区分应用进程),使之成为TCP报文段。运输层将TCP报文段交给网络层处理网络层给TCP报文段添加一个IP首部(使之可以在互联网上传输),使之成为IP数据报。网络层将IP数据报交付给数据链路层处理数据链路层给IP数据报添加一个首部(让其能在一段链路上传输,能被相应主机接收)和一个尾部(让目的主机检查所接收到的帧是否有误码),使之成为帧。数据链路层将帧交给物理层物理层将帧看作比特流,如果网络是以太网,它还会在帧上加前导码(让目的主机做好接收帧的准备)。接着将比特流变成相应信号发送到传输媒体路由器转发 物理层收到信号将其变为比特流,去掉前导码后,将其交付给数据链路层**(交付的实际是帧)**数据链路层将帧去掉首部和尾部后,将其交付给网络层**(交付的实际是IP数据报)**网络层解析IP数据报首部,从中提取目的网络地址,然后查找自身路由表,确定转发端口。接着数据链路层封装,物理层再封装,将比特流变成信号发送出去。服务器接收 物理层收到信号将其变为比特流,去掉前导码后,将其交付给数据链路层**(交付的实际是帧)**数据链路层收到帧后,去除首部和尾部,将其交付给网络层**(交付的实际是IP数据报)**网络层收到IP数据报后,去除IP首部,将其交付给运输层**(交付的实际是TCP报文)**运输层收到TCP报文后,从中得知是与哪个端口上的进程通信,去除TCP头部后,交付给应用层**(交付的实际是HTTP请求报文)**应用层收到HTTP请求报文后,将其解析给对应进程,并执行相关操作,返回HTTP响应报文 专用术语 ①实体任何可发送或接收信息的硬件或者软件进程 对等实体:收发双方相同层次中的实体 控制两个对等实体进行逻辑通信【这种通信实际上不存在,只是便于我们考虑问题】的规则的集合 三要素 语法:定义所交换信息的格式(即报文格式)语义:定义收发双方所要完成的操作(即收,发任务需要各自定义)同步:定义收发双方的时序关系(如先建立侦听才可以通信是有先后顺序的) ③服务 在协议控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务(也就是说通过协议完成本层的内容后就可以向上提供服务)要实现本层协议,还需要使用下面一层所提供的服务协议是"水平的",服务是"垂直的"实体看得见相邻下层所提供的的服务,但是并不知道实现该服务的具体协议。也就是说,下面的协议对上面的实体是"透明"的(就像手机为我们提供服务,但是我们并不知道具体是如何实现的)服务访问点:在同一系统中相邻两层的实体交换信息的逻辑接口(就像Web里的request域,后端前端都能取到),用于区分不同的服务类型 数据链路层的服务访问点为帧的"类型"字段网络层的服务访问点位IP数据报首部中的"协议字段"运输层的服务访问点为"端口号"服务原语:上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令称为服务原语 协议数据单元PDU(横向):对等层次之间传送的数据包称为该层的协议数据单元 物理层是比特流;数据链路层是帧;网络层是IP数据报或分组……服务数据单元SDU(竖向):同一系统内,层与层之间交换的数据报称为服务数据单元 物理层往上送是比特流;数据链路层往下送是帧……多个SDU可用合成为一个PDU;一个SDU页可以划分为几个PDU 第2章 物理层考虑怎样才能在连接各种计算机的传输媒体上传输数据比特流物理层为数据链路层屏蔽了各种传输媒体的差异,使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体是什么 1. ★物理层协议主要任务 机械特性:指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置电气特性:指明在接口电缆的各条线上出现的电压范围功能特性:指明某条线上出现的某一电平的电压表示何种意义过程特性:指明对于不同功能的各种可能事件的出现顺序 2. 传输媒体 导引型传输媒体有摸得到的实物进行传导信号的方式 ①同轴电缆电缆各层都是同轴心的,因此称同轴电缆 基带同轴电缆(50 Ω \Omega Ω):数字传输,过去用于局域网宽带同轴电缆(75 Ω \Omega Ω):模拟传输,目前主要用于有线电视 同轴电缆价格较贵且布线不够灵活和方便,随着集线器的出现,在局域网领域基本上都是采用双绞线作为传输媒体 ②★双绞线把两根互相绝缘的铜导线并排放在一起,然后按照一定规则绞合起来就构成了双绞线,这是一种古老且常用的传输媒体 常用绞合线类别、带宽和典型应用 无屏蔽双绞线UTP电缆 蓝线和蓝白线绞合橙线和橙白线绞合绿线和绿白线绞合棕线和棕白线绞合作用:①抵御部分来自外界的电磁波干扰 ②减少相邻导线的电磁干扰 STP屏蔽双绞线STP电缆,其与UTP相比增加了金属丝编织的屏蔽层,提高了抗电磁干扰能力 ③★光纤光纤很细,因此必须将其做成结实的光缆。一根光缆少则一根光纤,多则可包括数百根 如果全反射一直进行,则光就会沿着光纤一直传输下去。 实际上只要入射角大于某个临界角度就可以发生全反射,因此多条不同角度的光可以在光线里一起传输,这种光纤称作多模光纤 若光纤直径减小到只有一个光的波长,则光纤就像一根波导一样,可使光线一直向前传播,而不会产生多次反射,这样的光纤称作单模光纤 传导信号的东西摸不到 低频和中频频段用地面波传播;高频和甚高频靠电离层(地球上方100~500千米高空的带电离子层)反射 ②★微波微波会穿透电离层进入宇宙,因此其不能通过电离层反射到很远的地方 地面微波接力通信微波是直线传播的,而地球表面是个曲面,因此传播距离受到限制,一般只有50KM左右;如果采用100米高的天线塔,则传播距离可增大到100公里。为实现远距离通信,必须在一个微波通信信道的两个终端之间建立若干个中继站,中继站把前一阵送来的信号经过放大后再发送到下一站 卫星通信在地球站之间,利用位于约36000KM高空的人造同步地球卫星作为中继器的一种微波接力,其最大特点是通信距离远,传播时延大(约250~300ms)。低轨道卫星通信系统也已经正在部署 ③红外线 点对点无线传输直线传播,中间不能有障碍物,传输距离短传输速率低(4Mb/s~16Mb/s) ④可见光即光源作为信号源,前景好,暂时未被大范围应用 3. 传输方式 ★串行/并行传输串行传输是指数据是1个比特1个比特依次发送的,发送端与接收端之间只用1条数据传输线即可并行传输是指一次发送n个比特而不是一个比特,在发送端和接收端之间要有n条传输线路 在计算机网络中,数据在传输线路上的传输时串行传输;而计算机内部(如CPU和内存)多使用并行传输 ★同步传输数据块以稳定的比特流形式传输,字节之间没有间隔。接收端在每个比特信号的中间时刻(有区分0,1的标志)进行检测,以判别接收到的是比特0还是1。由于不同设备的时钟频率存在一定差异,不可能完全相同,在传输大量数据的过程中,所产生的判别时刻的累计误差会导致接收端对比特信号的判别错位。因此需要采取方法使双方的时钟保持同步 收发双方时钟同步方法 外同步:在收发双方之间加一条单独的时钟信号线内同步:发送端将时钟同步信号编码到发送数据中一起传输(如曼彻斯特编码) ★异步传输以字节为独立的传输单位,字节间的时间间隔不是固定的,接收端仅在每个字节的起始处对字节内的比特实现同步,为此通常传送前要在每个字节前后加上起始位和结束位。 异步是指字节之间异步(字节之间的时间间隔不固定)字节中的每个比特仍然要同步(各比特的持续时间是相同的) 单工/半双工/全双工 单工通信:通信双方只有一个数据传输方向(无线电广播)半双工通信:通信双方可以相互传输数据,但不能同时进行(对讲机)全双工通信:通信双方可以同时发送和接收消息(电话)单工需要一条信道;其他的需要两条(一个方向一条) 4. 编码与调制 消息(message)包括文字、图片、音频和视频数据是运送消息的实体;计算机中的网卡将比特1和0变换成相应电信号发送到网线,即信号。信号是数据的电磁表现,由信源(网卡)发出的原始电信号称为基带信号基带信号又分为数字基带信号(CPU和内存传输的信号)和模拟基带信号(麦克风收到声音后转变的电信号)信号需要在信道中进行传输,信道可分为数字信道和模拟信道 如果使用信道复用技术,传输媒体里可以有多个信道 在不改变信号性质的前提下,仅对基带信号的波形进行变换,称为编码。编码后产生的信号还是数字信号,可以在数字信道中传输 把基带信号的频率范围搬移到较高的频段,并转换为模拟信号,称为调制。调制后产生的信号还是模拟信号,可以在模拟信道中传输 正电平代表比特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个比特的对应关系要采用格雷码【任意两个相邻码元只有一位不同】通信质量较差的信道在传输信号的过程中会发生严重失真(无法识别原信号)【码间串扰】 失真因素 码元传输速率信号传输距离噪声干扰传输媒体质量物理层发出去的信号需要通过数据链路层才知道是否到达目的地;才知道比特流的分界线 链路(Link):从一个结点到相邻结点的一段物理线路,中间没有任何其他交换结点数据链路(Data Link):把实现通信协议的硬件和软件加到链路上,就构成了数据链路数据链路层以帧为单位传输和处理数据 封装成帧数据链路层为数据加上帧首和帧尾使之成为帧的过程 透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样(即保证接收方接到的数据是完整的数据) 面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输 帧头帧尾有标志位用来划分一个个帧,如果帧内部恰好也出现了标志位,则在第一次扫描时在标志位前面加一个转义字符帮助区分哪个是真正的帧头。考虑到转义字符也可能在帧内部出现,因此在转义字符前也加转义字符。接收方接到消息后但凡看到转义字符开头就会去掉转义字符并且对其后一个字符不做特殊处理 面向比特的物理链路使用比特填充的方法实现透明传输 零比特填充:在发送前,对帧的数据部分进行扫描,每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的个数为偶数,其他情况与奇校验类似如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码如果有偶数个位发生误码,则奇偶性不发生变化,不能检查出误码(漏检) 循环冗余校验CRC收发双方约定好一个生成多项式G(x) 发送方基于待发送的数据和生成多项式计算出差错检测码【冗余码】,将其添加到待传输数据的后面一起传输 接收方通过生成多项式来计算收到的数据是否产生了误码 除法内的相减实际是做异或运算,因此没有小的减不了大的这个说法 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做可靠传输:想办法实现发送端发送什么,接收端就收到什么 一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务比特差错只是传输差错中的一种,从整个计算机网络体系结构来看,传输差错还包括分组丢失、分组失序以及分组重复分组丢失、分组失序以及分组重复这些传输差错,一般不会出现在数据链路层,而会出现在其上层可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输可靠传输的实现比较复杂,开销也比较大,是否使用可靠传输取决于应用需求发送方发送数据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,因此接收方只能按序接收正确到达的数据分组 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发送帧,过程如何? MAC地址表中的每条记录都有自己的有效时间,到期自动删除。这是因为MAC地址与交换机接口的对应关系并不是永久性的 STP生成树协议STP可以在增加冗余链路来提高网络可靠性的同时又避免网络环路带来的各种问题 当交换机之间链路较少时,某一条链路发送故障,会导致其中有些主机无法通信,即链路不可靠。如下图,A与B之间的链路发送故障后,H1便无法与H2和H3进行通信 很容易想到的一个方法是在B与C之间多拉一条链路,这样即使A与B之间的链路发送故障,H1、H2、H3之间还是能够相互通信,但是这会带来一些问题。如下,当H1发送一个广播帧时,我们针对交换机B进行过程分析 一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求,每个VLAN就是一个独立的广播域 为什么需要VLAN? 随着交换式以太网规模的扩大,广播域相应扩大,而巨大的广播域会带来很多弊端 广播风暴 如数台交换机连接了数台主机,当主机A要向主机B发送数据帧,此时各交换机的MAC表均为空,因此帧每到一个交换机就会进行泛洪,由于网络巨大,因此泛洪的范围也巨大 难以管理和维护 潜在的安全风险 交换机端口类型缺省VLAN ID 华为交换机上叫PVID,每个端口有且只有一个PVID。默认情况下端口的PVID都为1(即端口属于VLAN 1) 端口上接收时总希望能够打上标签,发送出去时候总希望能去除标签 ①Access端口Access端口一般用于终端设备与交换机之间 注意:交换机与路由器连接的接口也需要使用access接口。这是因为路由器中的消息也不带VLAN标签,就像终端一样,保证路由器的数据能够进入交换机领域,数据由路由器进入交换机是会被打上默认标签,接着猜按照交换机间VLAN的规则行走。简单理解就是把路由器当作终端 交换机初始端口类型是Access Access端口只能属于一个VLAN Access端口的PVID值与端口所属VLAN的ID相同(默认为1) Access端口接收方法 一般只接收"未打标签"的普通以太网MAC帧。根据接收帧的端口PVID值给帧"打标签",即插入4字节的VLAN标记字段,字段中的VID取值与端口PVID取值相等Access端口发送处理方法 若帧中的VID与端口的PVID相等,则"去标签"并转发该帧;否则不转发 ②Trunk端口 Trunk端口一般用于交换机之间或交换机与路由器之间的互连Trunk端口可以属于多个VLAN用户可以设置Trunk端口的PVID值,默认情况下,Trunk端口PVID值为1Trunk端口发送处理方法 对VID等于PVID的帧,“去标签,再转发”对VID不等于PVID的帧,直接转发 Trunk端口接收处理方法 接收"未打标签"的帧。根据接收帧的端口的PVID给帧"打标签",即插入4字节的VLAN标记字段,字段中的VID取值与端口的PVID取值相等直接接收"已打标签的帧" ③Hybrid端口 Hybrid端口既可以用于交换机之间或交换机与路由器之间的互连(同Trunk端口),也可用于交换机与用户计算机之间的互连(同Access端口)Hybrid端口可以属于多个VLAN(同Trunk端口)用户可以设置Hybrid端口的PVID值。默认情况下,Hybrid端口的PVID值为1Hybrid端口发送处理方法↓ 查看帧的VID是否在端口的"去标签"列表中若存在,则"去标签"后转发若不存在,则直接转发 Hybrid端口接收处理方法(同Trunk) 接收"未打标签"的帧,根据接收帧的端口的PVID给帧"打标签",即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等接收"已打标签的帧"华为交换机Hybrid端口应用例子 如何分割广播域? 路由器 由于路由器属于网络层设备,默认情况下不对广播数据包进行转发,因此自然达到隔离的效果。但是成本较高,局域网内部全靠路由器分割广播域是不现实的 VLAN虚拟局域网技术 默认情况下,交换机下的主机会被划入VLAN 1,可以通过设置相关语句为交换机设置VLAN,如下是将PC1与PC2划入VLAN2的方法 设置完毕后,发现PC1不能ping通PC4,因为此时他们不属于一个同一个广播域,但是可以ping通PC2,因为PC1与PC2属于同一个广播域VLAN 2 eNSP路由与交换技术笔记 VLAN实现机制主要任务是实现网络互连,进而实现数据包在各网络之间的传输 1. 面向连接的虚电路服务 可靠的通信由网络来保证必须建立网络层的连接----虚电路VC(Virtual Circuit)通信双方沿着已建立的虚电路发送分组目的主机的地址仅在连接建立阶段使用,之后每个分组的首部只需携带一条虚电路的编号(构成虚电路的每一段链路都有一个虚电路编号)。这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组最终正确到达接收方(无差错按序到达、不丢失、不重复)。通信结束后,需要释放之前所建立的虚电路 2. 无连接的数据报服务 可靠通信应当由用户主机来保证不需要建立网络层连接每个分组可走不同路径每个分组的首部必须携带目的主机的完整地址这种通信方式所传送的分组可能误码、丢失、重复和失序由于网络本身不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉因特网采用了这种设计思想,也就是将复杂的网络处理功能置于因特网的边缘(用户主机和其内部的运输层),而将相对简单的尽最大努力的分组交付功能置于因特网核心。 3. IPv4地址IPv4地址就是因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符 分类编址为什么需要划分子网? 比如一个单位有300台主机,此时需要申请一个B类网络地址,很容易得知,分配出去300个IP地址后,申请得到的B类网络还剩下很多IP地址。当单位扩大规模,需要再添加两个子网的时,又要为这两个子网分别申请B类地址,这会花费一些不必要的支出,实际上子网1申请到的B类地址还有很多没用到,我们希望能够将这些剩余地址应用到其他子网中(节约地址)。 如何实现子网划分?32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号 子网掩码使用连续的比特1来对应网络号和子网号(子网号来自原先的一部分主机号)子网掩码使用连续的比特0来对应主机号将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算【即掩码是1的部分】就可得到IPv4地址所在子网的网络地址 无分类编址的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 4. IP数据报发送转发过程同一个网络之间的主机可以直接通信,不同网络之间的主机通信需要路由器中转 源主机如何判断目的主机是否和自己在同一个网络中? 将自身的IP地址与子网掩码相与得到自身的网络号1,再将目的IP地址与自身子网掩码相与得到网络号2。若两个网络号相等,则说明处在同一个网络 主机如何知道应该把IP数据报交给哪个路由器进行转发呢? 通过设置默认网关。所谓默认网关,即当路由表中查不到数据时会将数据发往的路由器端口IP地址 静态路由配置静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表 这种人工配置方式简单、开销小。但不能及时适应网络状态的变化。一般只在小规模网络中采用可能由于:①配置错误 ②聚合了不存在的网络 ③网络故障 而出现路由环路错误默认路由为:0.0.0.0/0 。其作用是当路由表不知道往哪里转发时,就会往默认路由指定的下一跳位置转发,根据网络号最长匹配原理,默认路由网络号长度为0,因此一定是最后一个被匹配的条目特定主机路由:具体主机IP/32。网络号前缀长度32保证了这是第一个被匹配的静态条目如何防止错误路由导致IP数据报永久兜圈? 在IP数据报首部设置生存时间TTL字段 IP数据报进入路由器后,TTL字段的值减1。若TTL的值不等于0,则被路由器转发,否则被丢弃 对于聚合后或由于网络故障而不存在的路由条目设置黑洞路由 所谓黑洞路由,即路由器应该丢弃的路由 5. 路由选择协议因特网所采用的的路由选择协议主要特点 自适应:动态路由选择,能较好地适应网络状态的变化分布式:路由器之间交换路由信息分层次:将整个因特网划分为许多较小的自治系统AS 路由信息协议RIPRIP使用跳数作为度量来衡量到达目的网络的距离 路由器到直连网络的距离定义为1路由器到非直连网络的距离定义为所经过的路由器数+1允许一条路径最多只能包含15个路由器。"距离"等于16时相当于不可达。因此,RIP只适用于小型互联网RIP认为好的路由就是"距离短"的路由,也就是所通过路由器数量最少的路由当到达同一目的网络有多条"距离相等"的路由时,可以进行等价负载均衡RIP包含以下三个要点 仅和相邻路由器交换信息交换的是各自路由表的信息周期性交换信息存在"坏消息传播很慢"的问题,又称为路由环路(两个路由器相互学习错误路由,造成循环)或距离无穷计数问题,这是距离向量算法的一个固有问题,可以采取多种措施减少出现该问题的概率或减小该问题带来的危害 限制最大路径距离为15(16表示不可达)当路由表发生变化时就立即发送更新报文(即"触发更新"),而不是周期性发送让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口反方向传送(即**“水平分割”“毒性反转”**) 开放最短路径优先OSPF简单来说就是得到一个带权有向图,以当前路由器为起点,通过迪杰斯特拉算法得到到达某个点的最短路径 OSPF是基于链路状态的,而不像RIP那样是基于距离向量的 OSPF采用SPF算法计算路由,而不像RIP那样是基于距离向量的 OSPF不限制网络规模,更新效率高,收敛速度快 链路状态是指本路由器都和哪些路由器相邻,以及相应链路的"代价" "代价"的意思是费用、距离、时延、带宽等OSPF相邻路由器之间通过交互问候(Hello)分组,建立和维护邻居关系 Hello分组封装在IP数据报中,发往组播地址224.0.0.5 发送周期为10秒 40秒未收到来自邻居路由器的Hello分组,则认为该邻居路由器不可达 使用OSPF的每个路由器都会产生链路状态通告LSA,包含以下内容 直连网络的链路状态信息邻居路由器的链路状态信息LSA被封装在链路状态更新分组LSU中,采用洪泛法发送 使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA 通过各路由器洪泛法发送封装有自己LSA的LSU分组,各路由器的LSDB最终达到一致 使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各种到达其他各路由器的最短路径,即构建各自的路由表 OSPF五种分组问候(Hello)分组 用来发现和维护邻居路由器的可达性 数据库描述(Database Description)分组 向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息 链路状态请求信息(Link State Request)分组 向邻居路由器请求发送某些链路状态项目的详细信息 链路状态更新(Link State Update)分组 路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态 链路状态确认(Link State Acknowledgement)分组 这是对链路状态更新分组的确认分组 OSPF基本工作过程 相邻路由器之间周期性发送问候分组(Hello),以便建立和维护邻居关系建立邻居关系后,给邻居路由器发送数据库描述分组(DD),也就是将自己链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器收到数据库描述分组后,若发现自己缺少其中某些链路状态项目,则会发送链路状态请求分组(LSR)。对方收到链路状态请求分组后,则会将其所缺少的链路状态项目的详细信息封装在链路状态更新分组(LSU)中发送回去收到链路状态更新分组后,将这些信息添加到自己的链路状态数据库中 邻居关系的建立一条总线上有多台主机,则它们互为邻居,因此每个路由器都要向其他路由器发送问候分组和链路状态更新分组。为了减少所发送分组的数量,则需要用相应方法对邻居关系进行删减 OSPF采用选举指定路由器DR(Designated Router)和备用的指定路由器BDR(Backup Designated Router)的方法减少邻居数目 所有的非DR/BDR只与DR/BDR建立邻居关系非DR/BDR之间通过DR/BDR交换信息当DR失效时由BDR顶上 边界网关协议BGP尽力寻找一条能够到达目的网络且比较好的路由(不兜圈子),而并非找最佳路由 内部网关协议IGP(如路由信息协议RIP或最短路径优先OSPF) 设法使分组在一个自治系统内尽可能有效地从源网络传输到目的网络无需考虑自治系统外部其他方面的策略外部网关协议EGP(如边界网关协议BGP) 在不同自治系统内,度量路由的"代价"(距离,宽带,费用等)可能不同。因此,对于自治系统之间的路由选择,使用"代价"作为度量来寻找最佳路由是不行的 比如A系统路由选择度量是距离,B系统是带宽……那么A到系统E的路由怎样走最好呢?由于没有统一度量,所以不能直接得到最佳路由 自治系统之间的路由选择必须考虑相关策略(政治、经济、安全等) 如中国的数据报尽量要绕开美国的自治系统 工作原理版本 占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数据报的目的主机 7. 网际控制报文ICMP为了更有效地转发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差错报告报文对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文 ICMP应用举例 分组网间探测PING 用来测试主机或路由器间的连通性【eNSP的ping命令】应用层直接使用网际层的ICMP(没有通过运输层的TCP或UDP)使用ICMP回送请求和回答报文 跟踪路由tracerouce用来测试IP数据报从源主机到达目的主机要经过哪些路由器 Windows版本 tracert命令应用层直接使用网际层ICMP使用了ICMP回送请求和回答报文以及差错报告报文 实现方法由主机发送出去的数据包中的生存时间字段TTL由1开始逐渐增加,每个路由器都会返回一个时间超过报文,由此达到跟踪路由器的目的 8. 虚拟专用网VPN利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网。虚拟专用网中各主机所分配的地址应该是本机构可自由分配的专用地址 NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源【为了节省IPv4地址】 由于绝大多数的网络应用都是使用运输层协议TCP或UDP来传送数据,因此可以利用运输层的端口号和IP地址一起进行转换。 这样,用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。这种将端口号和IP地址一起进行转换的技术叫作网络地址与端口号转换NAPT 第5章 运输层物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的的问题,实现了主机到主机的通信 但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程 如何为运行在不同主机上的应用进程提供直接的通信服务时运输层的任务,运输层协议又称端到端协议 1. 端口号为了使运行不同操作系统的计算机的应用进程之间能进行网络通信,必须使用统一的方法对TCP/IP体系的应用进程进行标识,即端口号。 为什么不能使用进程标识符PID来区分各进程? 因为因特网上的计算机并不是使用统一的操作系统,不同的操作系统使用不同格式的进程标识符 端口号只具有本地意义,即端口号只是为了标识本计算机应用层中的各进程,在因特网中,不同计算机中的相同的端口号是没有联系的 端口号使用16比特表示,取值范围0~65535。 熟知端口号:0~1023,IANA把这些端口号指派给了TCP/IP体系中最重要的一些应用协议登记端口号:1024~49151,为没有熟知端口号的应用程序使用。使用这类端口号必须在IANA按照规定的手续登记,以防止重复。如Microsoft RDP微软远程桌面使用的端口是3389短暂端口号:49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用UDP是无连接的,随时可向目的主机发送报文,支持单播、多播和广播 UDP收到应用层报文后直接为报文添加UDP首部就进行发送,即面向应用报文 UDP数据报首部仅8字节 TCP时面向连接的。发送数据前需要"三报文握手"建立连接,数据传输结束后需要"四报文挥手"释放连接 仅支持单播 TCP是面向字节流的。其将应用进程交付下来的数据块仅仅看作是一连串的字节流,TCP将这些字节流编号并存储在缓冲中;接收方一边接收数据,一边将缓冲中的数据交给应用进程。 接收方收到的字节流必须和发送方收到的字节流完全一致 不会出现传输差错(误码、丢失、乱序、重复) TCP报文段首部最小20字节,最大60字节 一般来说,我们希望数据传输能快一些,但如果发送方把数据发送得过快,接收方就可能来不及接收,这会造成数据的丢失 流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收 利用滑动窗口实现流量控制 发送方和接收方窗口保持一致,发送方窗口随着接收方窗口变化而变化(通过确认报文告知发送方)发送方发送完窗口内数据后需要等到确认报文才会滑动窗口并继续发送,若窗口内的某个值很久没有收到回答报文,则超时重传报文若接收方窗口调为0后,一段时间之后又调为200,此时向发送方传递确认报文,可此时报文丢失,则会造成发送方窗口始终为0,接收方以为发送方收到了确认报文而开始等待数据,造成死锁,如何解决? 当发送方窗口大小为0时,其隔一段时间就会发送一个1字节大小的零窗口探测报文,看看此时接收窗口大小是否进行调整 若发送的零窗口探测报文也丢失了,会造成新死锁吗? 不会。因为零窗口探测报文也有超时重传机制 拥塞控制在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况叫做拥塞 若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降 1. 慢开始和拥塞避免发送方维护一个叫做拥塞窗口cwnd的状态变量,其值取决于网络的拥塞程度,并且动态变化 拥塞窗口cwnd的维护原则:只要网络没有出现拥塞,拥塞窗口就再增大一些(确认报文段窗口大小),但只要网络出现拥塞,拥塞窗口就减少一些判断出现网络拥塞的依据:没有按时收到应当到达的确认报文(发送超时重传)发送方将拥塞窗口作为发送窗口swnd,即swnd=cwnd 维护一个慢开始门限ssthresh状态变量 当cwnd < ssthresh时,使用慢开始算法当cwnd > ssthresh时,停止使用慢开始算法而改用拥塞避免算法当cwnd = ssthresh时,既可使用慢开始算法,也可以使用拥塞避免算法 慢开始拥塞窗口从1开始,根据应答报文大小来扩大拥塞窗口,如发送方窗口2,应答大小2,则下次发送大小为4 拥塞避免拥塞窗口每次只扩大1,而不是向慢开始那样根据发送方的返回窗口进行增加。 当窗口增加到一定大小,发送方发送的报文出现了超时重传,则判断网络可能出现了拥塞,此时将拥塞窗口初始化为1,同时将慢开始门限ssthresh设置为发生拥塞时窗口大小的一半 "拥塞避免"并非指完全能够避免拥塞,而是指在拥塞避免阶段将拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞 快重传是使发送方尽快进行重传,而不是等待超时重传计时器超时再重传 要求接收方不用等待自己发送数据时才进行捎带确认,而是要立即发送确认 即使收到了失序的报文段(说明有一段丢失了)也要立即发出对已收到的报文段的重复确认 发送方一旦收到3个连续的重复确认,就将相应的报文段立即重传,而不是等该报文段的超时重传计时器超时再重传 对于个别丢失的报文段,发送方不会出现超时重传,也就不会误认为出现了拥塞。使用快重传可以使整个网络的吞吐量提高约20% 发送方一旦收到3个重复确认,就知道现在只是丢失了个别报文段。也是不启动慢开始算法,而执行快恢复算法 发送方将慢开始门限ssthresh值和拥塞窗口cwnd值调整为当前窗口的一半,开始执行拥塞避免算法也有的快恢复实现是把快恢复开始时的拥塞窗口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的运输连接管理就是使运输连接的建立和释放都能正常地进行 源端口:占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的功能 最大报文段长度MSS选项:TCP报文段数据载荷部分的最大长度窗口扩大选项:为了扩大窗口(提高吞吐率)时间戳选项: 用来计算往返时间RTT用于处理序号超范围的情况,又称为防止序号绕回PAWS 选择确认选项:实现选择确认功能填充:由于选项长度可变,因此使用填充来保证报文段首部能被4整除 第6章 应用层解决通过应用进程的交互来实现特定网络应用的问题 应用层是计算机网络体系结构的最顶层,是设计和建立见算计网络的最终目的 客户/服务器方式(C/S) 客户/服务器 客户和服务器是指通信中所涉及的两个应用进程客户/服务器方式所描述的是进程之间服务和被服务的关系客户是服务请求方,服务器是服务提供方服务器总是处于运行等待状态,并等待客户的服务请求。服务器具有固定端口号(例如HTTP服务器的默认端口号为80),而运行服务器的主机也具有固定的IP地址 基于C/S方式的应用服务通常是服务集中型的,即应用服务集在网络中比客户计算机少得多的服务器计算机上 由于一台服务器计算机要为多个客户机提供服务,在C/S应用中,常会出现服务器计算机跟不上众多客户机请求的情况为此,在C/S应用中,常用计算机群集(或服务器场)构建一个强大的虚拟服务器 对等方式(P2P方式)通过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地址租期收到请求后,返回否认报文,则客户机收到后立刻停止使用IP地址并重新发送"DHCP发现"报文不响应。则在租期达到0.875倍时,DHCP客户必须重新发送"DHCP请求"报文,继续等待DHCP服务器可能做出的反应。若依然无反应,则租用期到后,客户机必须立刻停止使用当前IP地址客户端可随时终止DHCP服务器提供的租用期,这时只需要向DHCP服务器发送DHCP释放报文即可。源地址0.0.0.0,目的地址255.255.255.255 域名系统DNS我们通过输入网址来访问网页,可实际上计算机间的通信是通过IP地址,所以网址的本质上是IP地址,将网址与IP地址映射起来就是DNS的作用 因特网是否可以只适用一台DNS服务器? 这种做法不可取。因为因特网的规模很大,如果只有一个服务器,那么一旦其出现故障,整个因特网就会瘫痪 因此现实中采用**层次结构的命名树**作为主机的名字(即域名),并使用分布式的域名系统DNS DNS使大多数域名都在本地解析,仅少量解析需要在因特网上通信,因此系统效率很高。由于DNS是分布式系统,即使单个计算机出了故障,也不会妨碍整个系统的正常运行 将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,是一项基本的网络应用,即文件传送 FTP的常见用途是在计算机之间传输文件,尤其是用于批量传输文件。FTP的另一个常见用途是让网站设计者将构成网站内容的大量文件批量上传到他们的Web服务器 FTP提供交互式的访问,运行客户指明文件的类型与格式(如指明是否使用ASCII码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件电子邮件系统的三个主要组成构件:用户代理,邮件服务器,以及电子邮件所需的协议 用户代理是用户与电子邮件系统的接口,又称为电子邮件客户端软件邮件服务器是电子邮件系统的基础设施。因特网上所有的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区域都使用同一网段,两台防火墙,组成主备关系,防火墙工作为路由模式,左右流量是二层转发,上下流量是三层转发。🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏 笔记源文件(Markdown) 5 元一份(创作不易),需要的可以直接微信转账并备注邮箱,如果一天内未收到可私信联系我! |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |