这里的所有重点都是我们老师画的考点,可能跟你们学校的重点不一样哈,可以先看目录,选择食用
课后习题第20题
20.网络体系结构为什么要采用分层次的结构?试举出一些与分层体系结构的思想相似的日常生活。
答:①各层之间是独立的。某一层可以使用其下一层提供的服务而不需要知道服务是如何实现的。
②灵活性好。当某一层发生变化时,只要其接口关系不变,则这层以上或以下的各层均不受影响。
③结构上可分割开。各层可以采用最合适的技术来实现
④易于实现和维护。
⑤能促进标准化工作。
与分层体系结构的思想相似的日常生活有邮政系统,物流系统。
(2)各层的基本功能(自上而下)
①应用层: 应用层是体系结构中的最高层。应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。这里的进程就是指主机中正在运行的程序。对于不同的网络应用需要有不同的应用层协议。互联网中的应用层协议很多,如域名系统DNS、支持万维网应用的 HTTP协议、支持电子邮件的SMTP协议,等等。我们把应用层交互的数据单元称为报文(message)。
②运输层: 运输层的任务就是负责==向两台主机中进程之间的通信提供通用的数据传输服务。==应用进程利用该服务传送应用层报文。所谓“通用的”是指多种应用可以使用同一个运输层服务。由于一台主机可同时运行多个进程,因此运输层有复用和分用的功能。复用就是多个应用层进程可同时使用下面运输层的服务,分用和复用相反,是运输层把收到的信息分别交付上面应用层中的相应进程。
运输层主要使用以下两种协议:
③网络层: 网络层负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫作IP数据报,或简称为数据报。本书把“分组”和“数据报”作为同义词使用。
网络层的具体任务有两个。第一个任务是通过一定的算法,在互联网中的每一个路由器上生成一个用来转发分组的转发表。**第二个任务就是每一个路由器在接收到一个分组时,依据转发表中指明的路径把分组转发到下一个路由器。**这样就可以使源主机运输层所传下来的分组,能够通过合适的路由最终到达目的主机。
互联网是由大量的异构(heterogeneous)网络通过路由器(router)相互连接起来的。互联网使用的网络层协议是无连接的网际协议IP (Internet Protocol)和许多种路由选择协议,因此互联网的网络层也叫作网际层或IP层。在本书中,网络层、网际层和IP层都是同义语
④数据链路层: 数据链路层常简称为链路层。我们知道,两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP数据报组装成帧( framing),在两个相邻节点间的链路上传送帧( frame)。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。简单说就是负责将上层数据封装成固定格式的帧
⑤物理层: 在物理层上所传数据的单位是比特。发送方发送 1(或0)时,接收方应当收到1(或0)而不是0(或1)。因此物理层要考虑用多大的电压代表“1”或“0”,以及接收方如何识别出发送方所发送的比特。物理层还要确定连接电缆的插头应当有多少根引脚以及各引脚应如何连接。当然,**解释比特代表的意思,不是物理层的任务。**请注意,传递信息所利用的一些物理传输媒体,如双绞线、同轴电缆、光缆、无线信道等,并不在物理层协议之内,而是在物理层协议的下面。因此也有人把物理层下面的物理传输媒体当作第0层。
简单说就是:确定与传输媒体的接口有关的一些特性,如机械特性、电气特性、功能特性和过程特性。
(3)层间关系
实体: 当研究开放系统中的信息交换时,往往使用实体(entity)这一较为抽象的名词表示任何可发送或接收信息的硬件或软件进程。在许多情况下,实体就是一个特定的软件模块。
协议: 协议是控制两个对等实体(或多个实体)进行通信的规则的集合。协议的语法方面的规则定义了所交换的信息的格式,而协议的语义方面的规则就定义了发送者或接收者所要完成的操作,例如,在何种条件下,数据必须重传或丢弃。
在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下面一层所提供的服务。
协议和服务在概念上是不一样的:
在同一系统中相邻两层的实体进行交互(即交换信息)的地方,通常称为服务访问点SAP(Service Access Point)。服务访问点SAP是一个抽象的概念,它实际上就是一个逻辑接口,有点像邮政信箱(可以把邮件放入信箱和从信箱中取走邮件),但这种层间接口和两个设备之间的硬件接口(并行的或串行的)并不一样。OSI把层与层之间交换的数据的单位称为服务数据单元SDU (Service Data Unit),它可以与PDU不一样。例如,可以是多个SDU合成为一个PDU,也可以是一个 SDU划分为几个PDU。
协议数据单元PDU(Protocol Data Unit)是指对等层次之间传递的数据单位。协议数据单元(Protocol Data Unit )物理层的 PDU是数据位(bit),数据链路层的 PDU是数据帧(frame),网络层的PDU是数据包(packet),传输层的 PDU是数据段(segment),其他更高层次的PDU是数据(data)。
这样,在任何相邻两层之间的关系均可概括为图1-18所示的那样。这里要注意的是,第n层的两个“实体(n)”之间通过“协议(n)”进行通信,而第n+1层的两个“实体(n + 1)”之间则通过另外的“协议(n + 1)”进行通信(每一层都使用不同的协议)。第n层向上面的第n+1层所提供的服务实际上已包括了在它以下各层所提供的服务。第n层的实体对第n+Ⅰ层的实体就相当于一个服务提供者。在服务提供者的上一层的实体又称为“服务用户”,因为它使用下层服务提供者所提供的服务。
简单说就是,每一层, 通过层间接口, 基于相应的网络协议,在使用下一层的服务的基础上, 结合本层的功能, 为上一层提供服务
计算机网络最常用的性能指标是: 速率、带宽、吞吐量、时延(发送时延、传播时延、处理时延、排队时延)、时延带宽积、往返时间和信道(或网络)利用率。
(1)速率:网络速率,单位:bit/s
或b/s
或bps
, 当提到网络的速率时,往往指的是额定速率或标称速率,而并非网络实际上运行的速率。
注意:1B=8 bit, 1Mbit=220 B=220 * 8 bit, 1MB/s=106bit/s
(2)带宽:在计算机网络中,带宽用来表示网络中某通道传送数据的能力,因此网络带宽表示在单位时间内网络中的某信道所能通过的最高数据率。单位:bit/s
, 一条通信链路的“带宽”越宽,其所能传输的“最高数据率”也越高。
(3)吞吐量:表示在单位时间内通过某个网络(或信道、接口)的实际数据量。单位:bit/s
接入到互联网的主机的实际吞吐量,取决于互联网的具体情况。假定主机A和服务器B接入到互联网的链路速率分别是100 Mbit/s和 1 Gbit/s。如果互联网的各链路的容量都足够大,那么当A和B交换数据时,其吞吐量显然应当是100 Mbit/s。这是因为,尽管服务器B能够以超过100 Mbit/s的速率发送数据,但主机A最高只能以100 Mbit/s的速率接收数据。现在假定有100个用户同时连接到服务器B(例如,同时观看服务器B发送的视频节目)。在这种情况下,服务器B连接到互联网的链路容量被100个用户平分,每个用户平均只能分到10 Mbit/s的带宽。这时,主机A连接到服务器B的吞吐量就只有10 Mbit/s了。
(4)时延(发送时延、传播时延、处理时延、排队时延):时延(delay 或latency)是指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间。时延是个很重要的性能指标,它有时也称为延迟或迟延。
①发送时延:主机或路由器发送数据帧所需要的时间,也叫作传输时延
③处理时延:主机或路由器在收到分组时要花费一定的时间进行处理,例如分析分组的首部、从分组中提取数据部分、进行差错检验或查找转发表等,这就产生了处理时延。
④排队时延:分组在经过网络传输时,要经过许多路由器。但分组在进入路由器后要先在输入队列中排队等待处理。在路由器确定了转发接口后,还要在输出队列中排队等待转发。这就产生了排队时延。排队时延的长短往往取决于网络当时的通信量。当网络的通信量很大时会发生队列溢出,使分组丢失,这相当于排队时延为无穷大。
(6)往返时间RTT:互联网上的信息是双向交互的,通过知道一次双向交互的时间可以算出有效数据率
当使用卫星通信时,往返时间RTT相对较长,是很重要的一个性能指标。
(7)利用率
①信道利用率:指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。
②网络利用率:是全网络的信道利用率的加权平均值。
如果令D0表示网络空闲时的时延,D表示网络当前的时延(设现在的网络利用率为U),那么在适当的假定条件下,可以用下面的简单公式来表示D与D0以及利用率U之间的关系:
物理层的主要任务就是确定与传输媒体的接口有关的一些特性,如机械特性、电气特性、功能特性和过程特性。
课后习题第1 题
1.物理层要解决哪些问题?物理层的主要特点是什么?
答:物理层要解决的主要问题:
(1)物理层要尽可能地屏蔽掉物理设备和传输媒体,通信手段的不同,使数据链路层感觉不到这些差异,只考虑完成本层的协议和服务。
(2)给其服务用户(数据链路层)在一条物理的传输媒体上传送和接收比特流(一般为串行按顺序传输的比特流)的能力,为此,物理层应该解决物理连接的建立、维持和释放问题。
(3)在两个相邻系统之间唯一地标识数据电路。
物理层的主要特点:
(1)由于在OSI之前,许多物理规程或协议已经制定出来了,而且在数据通信领域中,这些物理规程已被许多商品化的设备所采用,加之,物理层协议涉及的范围广泛,所以至今没有按OSI的抽象模型制定一套新的物理层协议,而是沿用已存在的物理规程,将物理层确定为描述与传输媒体接口的机械,电气,功能和规程特性。
(2)由于物理连接的方式很多,传输媒体的种类也很多,因此,具体的物理协议相当复杂。
一个数据通信系统可划分为三大部分,即源系统、传输系统和目的系统。源系统包括源点(或源站、信源)和发送器,目的系统包括接收器和终点(或目的站、信宿)。
数据: 是运送信息的实体。
信号: 是数据的电气的或电磁的表现。
模拟信号: 或连续信号,代表消息的参数取值是连续的。
数字信号: 或离散信号,代表消息的参数取值是离散的。
基带调制: 仅仅对基带信号的波形进行变换,使它能够与信道特性相适应。变换后的信号仍然是基带信号。由于这种基带调制是把数字信号转换为另一种形式的数字信号,因此大家更愿意把这种过程称为编码(coding)。
带通调制: 使用载波(carrier)进行调制,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号,这样就能够更好地在模拟信道中传输,使用载波的调制称为带通调制。
基带信号: 来自信源的信号。像计算机输出的代表各种文字或图像文件的数据信号都属于基带信号。
带通信号: 经过载波调制后的信号。
信道: 向某一方向传送信息的媒体
模拟信道: 传输连续取值的模拟信号,各种传输媒体一般都能传输模拟信号
数字信道: 传输取值离散的数字信号,解决信道与计算机之间的接口问题
单工通信: 又称单向通信,即只有一个方向的通信而没有反方向的交互。
半双工通信: 又称双向交替通信,即通信和双方都可以发送信息,但不能双方同时发送(当然也不能同时接收)。这种通信方式是一方发送另一方接收,过一段时间再反过来。
全双工通信: 又称双向同时通信,即通信的双方可以同时发送和接收信息。
关于差分曼彻斯特编码波形的解释:假如比特流是0,就没有改变波形,而比特流是1,它的波形就刚刚好相反;就是假如我传输的是0,我的波形就不跳动,我一旦传输1,我的码元就取反
波特率和比特率是什么,有什么关系
(1)码元: 代表数字信号不同离散数值的基本波形
(2)波特率: 又称码元传输速率,码元速率,单位时间内传输的码元个数(脉冲个数或者信号变化次数)
(3)比特率: 又称信息传输速率,信息速率,单位时间内传输的二进制比特数
(4)奈氏定理: 在带宽为W(Hz)的低通信道中,若不考虑噪声影响,则码元传输的最高速率是2W(码元/秒)。传输速率超过此上限,就会出现严重的码间串扰问题,使接收端对码元的判决(即识别)成为不可能,例如,信道的带宽为4000Hz,那么最高码元传输速率就是每秒8000个码元。
(5)香农定理: 信道的极限信息传输速率C是
信道的带宽或信道中的信噪比越大,信息的极限传输速率就越高。
(6)信噪比: 信号的平均功率和噪声的平均功率之比,常记为S/N,分贝(dB)作为度量单位。即:
例如,当S/N=10时,信噪比为10 dB,而当S/N = 1000时,信噪比为30 dB。
比特率和波特率既有联系,又有区别。 比特率描述的是数据, 波特率描述的是信号。 我们知道, 数据是用信号来表示的。 如果一个信号码元只能代表 1 比特, 那么波特率和比特率是相等的。如果一个码元可以表示 n 个比特信息, 那么比特率是波特率的 n 倍。转换的公式如下:C = B * log2N ( C 表示比特率,B 表示波特率,N 表示进制)
课后习题第6题
6.数据在信道重的传输速率受哪些因素的限制?信噪比能否任意提高?香农公式在数据通信中的意义是什么?“比特/每秒”和“码元/每秒”有何区别?
答:1.数据在信道中的传输速率受到带宽和信噪比等因素的限制。
2.信噪比不能任意提高。
3.香农公式的意义:只要信息传送速率低于信道的极限信息传输速率,就一定存在某种办法来实现无差错的传输。
4.比特/每秒是信息传输速率的单位,码元传输速率也称为调制速率、波形速率或符号速率。一个码元不一定对应于一个比特。
传输媒体可分为两大类,即导引型传输媒体(双绞线、同轴电缆或光纤)和非导引型传输媒体(无线、红外或大气激光)。
==双绞线 ==
双绞线是局域网中最常用的传输介质。分为屏蔽双绞线和非屏蔽双绞线。每条导线相互绞合的目的是为了使通信线路之间的电磁干扰达到最小。
特点:
光纤
光纤是传输介质中性能与应用最好的一种。光纤传输有两种模式,单模光纤的性能优于多模光纤
光纤最基本的连接方式是点-点连接,光纤不熟外界电磁干扰与噪声的影响,在长距离、高速率的传输中保持低误码率。
影响光纤传输距离的因素主要是: 传输模式、光载波频率、光纤尺寸
物理层协议规定的物理参数主要包括: 传输模式、上行光纤与下行光纤光载波的频率、光线尺寸、光接口,以及光纤最大传输距离。
由于单根光纤可能因为外力作用导致弯曲形变,所以需要用其他高强度材料将多根光纤包裹组成光缆。
光纤不仅具有通信容量非常大的优点,而且还具有其他的一些特点:
==无线电波 ==
常用的信道复用技术有频分复用、时分复用、统计时分复用、码分复用和波分复用(光的频分复用)。
最基本的复用是频分复用和时分复用 (a)为频分复用, (b)为时分复用
时分复用TDM: 普通的时分复用称为同步时分复用,所有用户在不同的时间占用同样的频带宽度,时分复用更利于数字信号的传输
统计时分复用STDM: 改进的时分复用,明显提高信道的利用率
频分复用FDM: 各路信号在同样的时间占用不同的带宽资源
波分复用WDM: 就是光的频分复用,最初只能在一根光纤上复用两路光载波信号
密集波分复用: 现在已能做到在一根光纤上复用几十路或更多路数的光载波信号。
码分复用CDMA: 当码分复用信道为多个不同地址的用户所共享时,就称为码分多址CDMA
模拟传输: 传输方式分为导引型和非导引型。导引型有双绞线、同轴电缆或光纤, 非导引型有无线、红外或大气激光
数字传输: 由于数字传输优于模拟传输,因此可以把模拟信号先变换成数字信号,再在信道上进行数字传输。将模拟信号变换为数字信号的常用方法是脉码调制PCM(Pulse Code Modulation)。
早期数字传输存在的两大缺点: 速率标准不统一、不是同步传输
(1)封装成帧:网络层的IP数据报传送到数据链路层就成为帧的数据部分。在帧的数据部分的前面和后面分别添加上首部和尾部,构成了一个完整的帧。这样的帧就是数据链路层的数据传送单元。一个帧的帧长=帧的数据部分长度+帧首部+帧尾部的长度
。首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。此外,首部和尾部还包括许多必要的控制信息。在发送帧时,是从帧首部开始发送的。各种数据链路层协议都对帧首部和帧尾部的格式有明确的规定。为了提高帧的传输效率,应当使帧的数据部分长度尽可能地大于首部和尾部的长度。但是,每一种链路层协议都规定了所能传送的帧的数据部分长度上限——最大传送单元MTU(Maximum Transfer Unit)。图3-4给出了帧的首部和尾部的位置,以及帧的数据部分与MTU的关系。
当数据是由可打印的 ASCII 码组成的文本文件时,帧定界可以使用特殊的帧定界符。 ASCII码是7位编码,一共可组合成128个不同的 ASCII 码,其中可打印的有95个,而不可打印的控制字符有33个。图3-5的例子可说明帧定界的概念。控制字符SOH(Start Of Header)放在一帧的最前面,表示帧的首部开始。另一个控制字符EOT (End OfTransmission)表示帧的结束。请注意,SOH和 EOT 都是控制字符的名称。它们的十六进制编码分别是01(二进制是00000001)和04(二进制是00000100)。SOH(或EOT)并不是S,O,H(或E,O,T)三个字符。此外,为了强调帧定界符的作用,与帧定界符无关的控制信息在图3-5中都省略了。
帧定界符作用: 假定发送端在尚未发送完一个帧时突然出故障,中断了发送。但随后很快又恢复正常,于是重新从头开始发送刚才未发送完的帧。由于使用了帧定界符,接收端就知道前面收到的数据是个不完整的帧(只有首部开始符SOH而没有传输结束符EOT),必须丢弃。而后面收到的数据有明确的帧定界符(SOH和EOT),因此这是一个完整的帧,应当收下。
(2)透明传输
是什么透明传输: 当传送的帧是用文本文件组成的帧时(文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。
但当数据部分是非 ASCII 码的文本文件时(如二进制代码的计算机程序或图像等),情况就不同了。如果数据中的某个字节的二进制代码恰好和SOH或EOT这种控制字符一样(如图3-6所示),数据链路层就会错误地“找到帧的边界”,把部分帧收下(误认为是个完整的帧),而把剩下的那部分数据丢弃(这部分找不到帧定界控制字符SOH)。这种传输就不是透明传输
解决透明传输问题:使用字节填充或字符填充的方法,发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是1B,二进制是00011011)。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。
(3)差错检测
比特差错: 比特在传输过程中,1可能变成0,0可能变成1,比特差错是差错的一种
误码率: 传输错误的比特占所传输比特的总数的比率,与信噪比有很大的关系,如果提高信噪比,就可以是误码率减小,但实际链路通信并非理想,不可能让误码率下降到0
循环冗余检测CRC: 保证数据传输的可靠信,在计算机网络传输数据时,采用的一种差出错检测措施
在接收端把接收到的数据以帧为单位进行CRC检验:把收到的每一个帧都除以同样的除数P(模2运算),然后检查得到的余数R。
(1)若得出的余数R=0,则判定这个帧没有差错,就接受(accept)。
(2)若余数R ≠ 0,则判定这个帧有差错(但无法确定究竟是哪一位或哪几位出现了差错),就丢弃。
这里涉及到计算题,求冗余码,具体过程看课后习题
CSMA/CD基本原理:
以太网采用的协议是具有冲突检测的载波监听多点接入CSMA/CD。
协议的要点是:发送前先监听,边发送边监听,一旦发现总线上出现了碰撞,就立即停止发送。然后按照退避算法等待一段随机时间后再次发送。因此,每一个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。以太网上各站点都平等地争用以太网信道。
CSMA/CD的工作原理可简单总结为:先听后发,边发边听,冲突停发,随机延迟后重发。
信道利用率:
从图 3-21可看出,要提高以太网的信道利用率,就必须减小t与T0之比。在以太网中定义了参数a,它是以太网单程端到端时延t与帧的发送时间T0之比:
只有当参数a远小于1才能得到尽可能高的极限信道利用率。反之,若参数α远大于1(即每发生一次碰撞,就要浪费相对较多的传输数据的时间),则极限信道利用率就远小于1,而这时实际的信道利用率就更小了。据统计,当以太网的利用率达到30%时就已经处于重载的情况。很多的网络容量被网上的碰撞消耗掉了。
以太网的硬件地址,即 MAC地址实际上就是适配器地址或适配器标识符,与主机所在的地点无关。源地址和目的地址都是48位长,6个字节。
MAC的结构
现在IEEE的注册管理机构RA (Registration Authority)是局域网全球地址的法定管理机构[W-IEEERA],它负责分配地址字段的6个字节中的前三个字节(即高位24位)。
地址字段中的后三个字节(即低位24位)则是由厂家自行指派,称为扩展标识符(extended identifier),只要保证生产出的适配器没有重复地址即可。
IEEE规定地址字段的第一字节的最低有效位为I/G位。IG表示 Individual/Group。当IG位为0时,地址字段表示一个单个站地址。当IG位为1时表示组地址,用来进行多播(以前曾译为组播)。
IEEE还考虑到可能有人并不愿意向IEEE的RA购买OUI。为此,IEEE 把地址字段第一字节的最低第二位规定为G/L位,表示Global/Local。当G/L位为0时是全球管理(保证在全球没有相同的地址),厂商向IEEE购买的OUI都属于全球管理。当地址字段的G/L位为1时是本地管理,这时用户可任意分配网络上的地址。采用2字节地址字段时全都是本地管理。但应当指出,以太网几乎不理会这个G/L位。
MAC的表示
MAC地址有3种表示方式,比如MAC地址448A5B73B3A1可表示为:
快速以太网(Fast Ethernet)又称为100BASE-T,是在双绞线上传送100 Mbit/s基带信号的星形拓扑以太网,仍使用IEEE 802.3的CSMA/CD协议。用户只要使用100 Mbits的适配器和100 Mbit/s的集线器或交换机,就可很方便地由10BASE-T以太网直接升级到100 Mbit/s,而不必改变网络的拓扑结构。所有在10BASE-T上的应用软件和网络软件都可保持不变。100BASE-T的适配器有很强的自适应性,能够自动识别10 Mbit/s和 100 Mbit/s。
快速以太网可使用以太网交换机提供很好的服务质量,可在全双工方式下工作而无冲突发生。因此,CSMA/CD协议对全双工方式工作的快速以太网是不起作用的(但在半双工方式工作时则一定要使用CSMA/CD 协议)。快速以太网使用的MAC 帧格式仍然是IEEE 802.3标准规定的帧格式。
因为IEEE 802.3u的标准未包括对同轴电缆的支持,所以想从细缆以太网升级到快速以太网的用户必须重新布线,因此,现在10/100Mbit/s以太网都是用无屏蔽双绞线布线
100 Mbit/s 以太网的新标准改动了原10 Mbit/s以太网的某些规定。我们知道,以太网有一个重要的参数a,它必须保持为很小的数值。可见为了保持参数a不变,可以使以太网单程端到端时延与发送速率的乘积不变。在帧长一定的条件下若数据率提高到10倍,可把网络电缆长度减小到原有数值的十分之一。
在100 Mbit/s 的以太网中采用的方法是保持最短帧长不变,对于铜缆100 Mbit/s以太网,一个网段的最大长度是100m,其最短帧长仍为64字节,即 512比特。因此100 Mbit/s以太网的争用期是5.12 us,帧间最小间隔现在是0.96us,都是10 Mbit/s 以太网的1/10。
虚拟专用网: 利用公共的互联网作为本机机构个专用网之间的通信载体
工作原理
假定某个机构在两个相隔较远的场所建立了专用网A和 B,其网络地址分别为专用地址10.1.0.0和10.2.0.0。现在这两个场所需要通过公用的互联网构成一个VPN。
显然,每一个场所至少要有一个路由器具有合法的全球IP地址,如图4-64(a)中的路由器R和R。这两个路由器和互联网的接口地址必须是合法的全球IP地址。路由器R1和R2在专用网内部网络的接口地址则是专用网的本地地址。在每一个场所A或B内部的通信量都不经过互联网。
如果场所A的主机X要和另一个场所B的主机Y通信,那么就必须经过路由器R1和R2。
1. 主机X向主机Y发送的P数据报的源地址是10.1.0.1,而目的地址是10.2.0.3。这个数据报先作为本机构的内部数据报从X发送到与互联网连接的路由器R1。
2. 路由器R1收到内部数据报后,发现其目的网络必须通过互联网才能到达,就把整个的内部数据报进行加密(这样就保证了内部数据报的安全),然后重新加上数据报的首部,封装成为在互联网上发送的外部数据报,其源地址是路由器R1的全球地址125.1.2.3,而目的地址是路由器R2的全球地址194.4.5.6。
3. 路由器R2收到数据报后将其数据部分取出进行解密,恢复出原来的内部数据报(目的地址是10.2.0.3),交付主机Y
可见,虽然X向Y发送的数据报通过了公用的互联网,但在效果上就好像是在本部门的专用网上传送一样。如果主机Y要向X发送数据报,那么所进行的步骤也是类似的。
请注意,数据报从R1传送到R2可能要经过互联网中的很多个网络和路由器。但从逻辑上看,在R1到R2之间好像是一条直通的点对点链路,图4-64(a)中的“隧道”就是这个意思。
虚拟专用网络VPN,它允许用户通过Internet安全私有地连接到专用网络。虚拟专用网络创建一个称为虚拟专用网络隧道的加密连接,所有Internet流量和通信都通过此安全隧道传递。
向这篇学习网络层
(1)IP地址结构及其表示方法:
(2)特殊IP地址
不能指派给主机或路由器接口的地址:
- A类网络号0和127
- 主机号全为0,这是网络地址
- 主机号全为1,这是广播地址
(3)子网划分
了解默认子网掩码,通过子网掩码分析出题目给出的是哪一类的IP地址
IP地址与子网掩码相与计算网络地址
下面看划分子网的例题
网络中的数据传输所依赖的是MAC地址而不是IP地址,ARP协议负责将IP地址转换为MAC地址
ARP用于解决同一个局域网上的主机或路由器的IP地址和 MAC地址的映射
ARP协议工作原理
==(2)分片方法 ==
片偏移是以8个字节为偏移单位,也就是说,除最后一个数据报片外,其他每个分片长度一定是8字节的倍数
片偏移 = 数据报片的数据部分长度(例4-1是1400) * 当前是第几个数据报片数 / 8
【例4-1】一个数据报的总长度为3820字节,其数据部分为3800字节长(使用固定首部),需要分片为长度不超过1420字节的数据报片。因固定首部长度为20字节,因此每个数据报片的数据部分长度不能超过1400字节。于是分为3个数据报片,其数据部分的长度分别为1400,1400和 1000字节。原始数据报首部被复制为各数据报片的首部,但必须修改有关字段的值。图4-21给出分片后得出的结果(请注意片偏移的数值)。
表4-5是本例中数据报首部与分片有关的字段中的数值,其中标识字段的值是任意给定的(12345)。具有相同标识的数据报片在目的站就可无误地重装成原来的数据报。
现在假定数据报片2经过某个网络时还需要再进行分片,即划分为数据报片2-1(携带数据800字节)和数据报片2-2(携带数据600字节)。那么这两个数据报片的总长度、标识、MF、DF和片偏移分别为:820,12345,1,0,175;620,12345,1,0,275。
一个分组转发的过程案例
IP数据报转发算法:
缺省路由又称为默认路由和默认网关,这就是不管分组的最终目的网络在哪里,都由指定的路由器R来处理。这在网络只有很少的对外连接时非常有用。在实际的转发表中,用一个特殊前缀0.0.0.0/0来表示默认路由。这个前缀的掩码是全0(/0表示网络前缀是0位,因此掩码是32个0)。用全0的掩码和任何目的地址进行按位AND运算,结果一定是全0,即必然是和转发表中的0.0.0.0/0相匹配的。这时就按照转发表的指示,把分组送交下一跳路由器R来处理(即间接交付)。
特定主机路由又叫主机路由,主机路由在转发表中都放在最前面。对特定的目的主机指明一个路由,这种路由叫做特定主机路由。
间接交付就是要通过其他路由器交付给其他网络的主机,且间接交付的最后一步一定是直接交付
直接交付就是目的主机和发送的主机在同一个子网里面不用再通过路由器转发
判断是不是在同一个子网里面就是用ip号和子网掩码作与运算,得到的网络号一样就是在同一个子网
为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP (Internet Control Message Protocol)[RFC 792,STD5]。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP是互联网的标准协议。但ICMP不是高层协议(看起来好像是高层协议,因为ICMP报文装在IP数据报中,作为其中的数据部分),而是IP层的协议。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。
原理: ICMP提供一致易懂的出错报告信息。发送的出错报文返回到发送原数据的设备,因为只有发送设备才是出错报文的逻辑接受者。发送设备随后可根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发失败的数据包。但是ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由发送方完成。
我们在网络中经常会使用到ICMP协议,比如我们经常使用的用于检查网络通不通的Ping命令(Linux和Windows中均有),这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。
ICMP报文有两种,即ICMP差错报告报文和ICMP询问报文。
RIP工作原理是参考这里的
RIP工作原理
1. RIP路由协议向邻居发送整个路由表信息
2. RIP路由协议以跳数作为度量值根据跳数的多少来选择最佳路由
3. 每经过一个路由器,跳数自动加1
4. 最大跳数为15跳,16跳为网络不可达
5. 默认情况下,每隔30秒广播一次更新信息
距离向量算法
考大题,有对应的课后习题
路由器A收到相邻路由器B发来的路由表,要求更新A的路由表:
==自治系统(AS): ==单一技术管理下的一组路由器,这些路由器使用一种AS内部的路由选择协议和共同的度量来确定分组在该AS内的路由,同时还使用一种AS之间的路由选择协议来确定分组在AS之间的路由。一个自治系统内的所有网络都由一个行政单位(如一家公司、一所大学、一个政府部门等)管辖,一个自治系统的所有路由器在本自治系统内都必须是连通的。
==隧道基本概念: ==隧道技术适用于多播组的位置在地理上很分散的情况。例如在图4-63中,网N1和网N2都支持多播,现在N1中的主机向N2中的主机进行多播,但路由器R1和R2之间的网络并不支持多播,所以R1和R2不能按多播地址转发数据,为此,路由器R1对多播数据报进行再次封装,即加上普通数据报首部,使之成为向单一目的站发送的单播数据报, 然后通过隧道从R1发送到R2。这种使用隧道技术传送数据报又叫做IP中的IP
隧道可按要求建立起一条与其他服务器的通信线路,使用隧道的原因是在不兼容的网络上传输数据,或在不安全网络上提供一个安全路径,确保客户端能与服务器进行安全的通信,届时使用SSL等加密手段进行通信。
隧道本身不会去解析HTTP请求。也就是说,请求保持原样中转给之后的服务器。隧道会在通信双发断开连接时结束。
特点
NAT:
就是在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和互联网上的主机通信(并不需要加密),那么应当采取什么措施呢?最简单的办法就是设法再申请一些全球IP地址。但这在很多情况下是不容易做到的。目前使用得最多的方法是采用网络地址转换NAT。
网络地址转换要求:要在专用网连接到互联网的路由器上安装NAT 软件。装有NAT 软件的路由器叫作NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和互联网连接。
原理:
请注意,B并不知道A的专用地址192.168.0.3。实际上,即使知道了,也不能使用,因为互联网上的路由器不能转发目的地址是任何专用地址的IP数据报。
私有IP地址
地址按用途分为私有地址和公有地址两种。
①网络层为主机之间的通信提供服务,而运输层则在网络层的基础上,为应用进程之间的通信提供服务
②运输层对接收的的报文进行检测,在网络层,IP数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分
③根据应用程序的不同需求,传输层要提供不同的传输协议,面向连接的TCP和无连接的UDP
④运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑和所采用的路由选择协议等),它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道,但这条逻辑通信信道对上层的表现却因运输层使用的不同协议而有很大的差别。当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。但当运输层采用无连接的UDP协议时,这种逻辑通信信道仍然是一条不可靠信道。
第五章课后习题第一题
1.试说明运输层在协议栈中的地位和作用,运输层的通信和网络层的通信有什么重要区别?为什么运输层是必不可少的?
答:①运输层处于面向通信部分的最高层,同时也是用户功能中的最低层,向它上面的应用层提供服务 ②运输层为应用进程之间提供端到端的逻辑通信,但网络层是为主机之间提供逻辑通信(面向主机,承担路由功能,即主机寻址及有效的分组交换)。 ③各种应用进程之间通信需要“可靠或尽力而为”的两类服务质量,必须由运输层以复用和分用的形式加载到网络层。
端口的作用: 是对TCP/IP体系的应用进程进行统一的标志,使运行不同操作系统的计算机的应用进程能够互相通信。
表示方法:
服务端使用的端口:
客户端使用的端口:
插口的作用: 每一条TCP连接唯一的被通信两端的两个端点(即套接字对)所确定。把每一端的插头插入位于主机的应用层和运输层之间的插座之后,两个主机之间的进程就可以通过TCP连接进行可靠通信了。
表示方法:
套接字 socket = (IP地址:端口号)
TCP连接 ::= {socket1, socket2} = {(IP1:port1), (IP2:port2)}
(1)UDP
作用:==将网络数据流量压缩成数据包的形式。==一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前 8 个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。
UDP在IP的数据报服务上添加了复用和分用的功能以及差错检测的功能
复用功能: 发送方主机中的3个应用进程,把用户数据通过各自的端口传送到了运输层后,共用一个网络层协议,把收到的用户数据报组装成不同的IP数据报,发送到互联网
分用功能: 目标主机的的网络层收到3个IP数据报后,提取出数据部分(即UDP用户数据报),然后根据其首部的目的端口号,分别传送到响应的端口,以便上层的应用进程到端口读取数据
计算检验和: 把首部和数据部分一起检验
用户数据报UDP有两个字段:数据字段和首部字段。首部字段很简单,只有8个字节(如图5-5所示),由4个字段组成,每个字段的长度都是2字节。各字段意义如下:
(1)源端口:源端口号。在需要对方回信时选用。不需要时可用全0。
(2)目的端口:目的端口号。这在终点交付报文时必须使用。
(3)长度:UDP用户数据报的长度,其最小值是8(仅有首部)。
(4)检验和:检测UDP用户数据报在传输中是否有错。有错就丢弃。
UDP的主要特点是:
(1)无连接;
(2)尽最大努力交付;
(3)面向报文;
(4)无拥塞控制;
(5)支持一对一、一对多、多对一和多对多的交互通信;
(6)首部开销小(只有四个字段:源端口、目的端口、长度和检验和)。
(2)TCP
功能: 通过TCP协议, 能够更加稳定的将数据传递到目的地
报文结构:
源端口和目的端口:各占2个字节,分别写入源端口号和目的端口号,TCP分用功能是通过端口实现的
序号:占4个字节,序号范围是是[0, 232 - 1],共232(即4 294 967 296)个序号,序号使用mod 232 运算。TCP是面向字节流的。在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。整个要传送的字节流的起始序号必须在建立连接时设置。首部中的序号字段值则指的是本报文段所发送的数据的第一个字节的序号
确认号:占4个字节,是期望收到对方下一个报文段的一个数据字节序号,由于序号字段有32位长,可对4GB(4千兆字节)的数据进行编号,在一般情况下,可保证序号重复使用时,旧序号的数据早已通过网络
数据偏移:占4位,它指出 TCP报文段的数据起始处距离TCP 报文段的起始处有多远。这个字段实际上是指出 TCP报文段的首部长度。由于首部中还有长度不确定的选项字段,因此数据偏移字段是必要的。但应注意,“数据偏移”的单位是32位字(即以4字节长的字为计算单位)。由于4位二进制数能够表示的最大十进制数字是15,因此数据偏移的最大值是60字节,这也是TCP首部的最大长度(即选项长度不能超过40字节)。
保留:占6位,保留为今后使用,但目前应置为0
下面是6个控制位,用来说明报文段的性质
紧急URG:当URG = 1时,表明紧急指针字段有效。发送方TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据。这时要与首部中紧急指针(Urgent Pointer)字段配合使用。
确认ACK:ACK=1时,确认号字段有效,ACK=0时,确认号字段无效,TCP规定,在连接建立后所有传送的报文段都必须把ACK置为1。
推送PSH:当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后,立即就能够收到对方的响应。接收方不再等待整个缓存都填满了后再向上交付。推送操作很少使用
复位RST:当RST =1时,表明TCP连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。将RST置为1还用来拒绝一个非法的报文段或拒绝打开一个连接。RST也可称为重建位或重置位。
同步SYN :在连接建立时用来同步序号。当SYN =1 而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN= 1和ACK = 1。因此,SYN置为1就表示这是一个连接请求或连接接受报文。
终止FIN:用来释放一个连接。当FIN =1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。
窗口:占2字节。窗口值是[0, 216- 1]之间的整数。窗口指的是发送本报文段的一方的接收窗口(而不是自己的发送窗口)。窗口值告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量(以字节为单位)。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。总之,窗口值作为接收方让发送方设置其发送窗口的依据
检验和:占2个字节,检验和字段检验的范围包括首部和数据这两部分。和 UDP用户数据报一样,在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。伪首部的格式与图5-5中 UDP用户数据报的伪首部一样。但应把伪首部第4个字段中的17改为6(TCP的协议号是6),把第5字段中的UDP长度改为TCP长度。接收方收到此报文段后,仍要加上这个伪首部来计算检验和。若使用IPv6,则相应的伪首部也要改变。
紧急指针:占2字节。紧急指针仅在URG = 1时才有意义,它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据)。因此,紧急指针指出了紧急数据的末尾在报文段中的位置。当所有紧急数据都处理完时,TCP就告诉应用程序恢复到正常操作。值得注意的是,即使窗口为零时也可发送紧急数据。
选项:长度可变,最长可达40字节。当没有使用“选项”时,TCP的首部长度是20字节。最后的填充字段仅仅是为了使整个TCP首部长度是4字节的整数倍。
TCP最初只规定了一种选项,即最大报文段长度 MSS (Maximum Segment Size)[RFC6691]。请注意MSS这个名词的含义。MSS是每一个 TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个的TCP报文段。所以MSS并不是整个TCP报文段的最大长度,而是“TCP报文段长度减去TCP首部长度”。MSS与接收窗口值没有关系。TCP报文段的数据部分,至少要加上40字节的首部(TCP首部20字节和IP首部20字节)
一个TCP报文段的最大长度为65495字节
TCP封装在IP内,IP数据报最大长度2^16^ - 1 = 65535
,IP头部最小20
,TCP头部长度最小20
,所以最大封装数据长度为65535-20-20=65495
TCP固定首部20个字节,即除去选项及填充
TCP的主要特点是:
(1)面向连接;
(2)每一条TCP连接只能是点对点的(一对一);
(3)提供可靠交付的服务;
(4)提供全双工通信;
(5)面向字节流。
TCP发送的报文段是交给IP层传送的,但IP层只能提供最大努力服务,也就是说,TCP下面的网络所提供的是不可靠传输,因此,TCP必须采用适当的措施才能使得两个运输层之间的的通信变得可靠
方法:
停止等待协议
(1)无差错情况
停止等待协议可用图5-8来说明。图5-8(a)是最简单的无差错情况。A发送分组M1,发完就暂停发送,等待B的确认。B收到了M1,就向A发送确认。A在收到了对M1的确认后,就再发送下一个分组 M2。同样,在收到B对M2的确认后,再发送M3。
(2)出现差错
图5-8(b)是分组在传输过程中出现差错的情况。
可靠传输协议是这样设计的:A只要超过了一段时间仍然没有收到确认,就认为刚才发送的分组丢失了,因而重传前面发送过的分组。这就叫作超时重传。
要实现超时重传,就要在每发送完一个分组时设置一个超时计时器。如果在超时计时器到期之前收到了对方的确认,就撤销已设置的超时计时器。其实在图5-8(a)中,A为每一个已发送的分组都设置了一个超时计时器。但A只要在超时计时器到期之前收到了相应的确认,就撤销该超时计时器。为简单起见,这些细节在图5-8(a)中都省略了。
注意
(3)确认丢失和确认迟到
情况1:图5-9(a)
B所发送的对M1的确认丢失了。A在设定的超时重传时间内没有收到确认,并无法知道是自己发送的分组出错、丢失,或者是B发送的确认丢失了。因此A在超时计时器到期后就要重传 M1。现在应注意B的动作。假定B又收到了重传的分组M1。这时应采取两个行动。
情况2:图5-9(b)
传输过程中没有出现差错,但B对分组M1的确认迟到了。A会收到重复的确认。对重复的确认的处理很简单:收下后就丢弃,但什么也不做。B仍然会收到重复的M1,并且同样要丢弃重复的M1,并重传确认分组。
课后习第23题(4)
23.主机 A 向主机 B 连续发送了两个 TCP 报文段,其序号分别为 70 和 100。试问:
(4)如果 A 发送的第一个报文段丢失了,但第二个报文段到达了 B。B 在第二个报文段到达后向 A 发送确认。试问这个确认号应为多少?
答:B 在第二个报文段到达后向 A 发送确认,其确认号应为 70。(报文段丢失,就会重复发送确认上一个未收到的报文段第一个序号,即 70)
连续ARQ协议
连续ARQ协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。图5-12(b)表示发送方收到了对第1个分组的确认,于是把发送窗口向前移动一个分组的位置。如果原来已经发送了前5个分组,那么现在就可以发送窗口内的第6个分组了。
接收方一般都是采用累积确认的方式。这就是说,接收方不必对收到的分组逐个发送确认,而是在收到几个分组后,对按序到达的最后一个分组发送确认,这就表示:到这个分组为止的所有分组都已正确收到了。
TCP采用了一种自适应算法,它记录一个报文段发出的时间,以及收到相应的确认的时间。这两个时间之差就是报文段的往返时间RTT。TCP 保留了RTT 的一个加权平均往返时间RTTs(这又称为平滑的往返时间,S表示Smoothed。因为进行的是加权平均,因此得出的结果更加平滑)。每当第一次测量到RTT样本时,RTTs值就取为所测量到的RTT样本值。但以后每测量到一个新的RTT样本,就按下式重新计算一次RTTs:
在上式中,0≤α<1
已成为建议标准的RFC 6298推荐的α值为1/8,即 0.125。用这种方法得出的加权平均往返时间 RTTs就比测量出的RTT值更加平滑
显然,超时计时器设置的超时重传时间RTO(RetransmissionTime-Out)应略大于上面得出的加权平均往返时间RTTs。RFC 6298建议使用下式计算RTO:
而RTTD是 RTT的偏差的加权平均值,它与 RTTs和新的 RTT样本之差有关。RFC6298建议这样计算RTTD。当第一次测量时,RTTD值取为测量到的RTT样本值的一半。在以后的测量中,则使用下式计算加权平均的RTTD:
为了判定此确认报文段是对先发送的报文段的确认,还是对后来重传的报文段的确认?Karn提出了一个算法:**在计算加权平均RTTs时,只要报文段重传了,就不采用其往返时间样本。这样得出的加权平均RTTs和RTO就较准确。**为了解决报文段突增带来的问题,进行修正后,方法是:报文段每重传一次,就把超时重传时间RTO增大一些。典型的做法是取新的重传时间为旧的重传时间的2倍。当不再发生报文段的重传时,才根据上面给出的式(5-5)计算超时重传时间。实践证明,这种策略较为合理。
王道讲解
慢开始思想: 由小到大逐渐增大注入到网络中的数据字节,也就是说,由小到大逐渐增大拥塞窗口数值。
为了防止拥塞窗口 cwnd 增长过大引起网络拥塞,还需要设置一个慢开始门限ssthresh状态变量
慢开始门限ssthresh的用法:
拥塞避免算法的目的是让拥塞窗口 cwnd缓慢地增大
运输层为应用进程提供了端到端的通信服务,但是不同的网络应用的应用进程之间,还需要有不同的通信规则。因此,在运输层协议之上,还需要有应用层协议。这是因为,每个应用层协议都是为了解决某一类应用问题,而问题的解决又必须通过位于不同主机中的多个应用进程之间的通信和协同工作来完成。应用进程之间的这种通信必须遵循严格的规则。应用层的具体内容就是精确定义这些通信规则。
具体来说,应用层协议应当定义:
域名系统DNS (Domain Name System)是互联网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。域名系统其实就是名字系统。
工作原理:
域名到IP地址的解析过程的要点如下:
域名结构:
任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。这里,“域”(domain)是名字空间中一个可被管理的划分。域还可以划分为子域,而子域还可继续划分为子域的子域,这样就形成了顶级域、二级域三级域,等等。
域名服务器
原理
操作过程
从浏览器请求一个万维网文档到收到整个文档的过程: