一、计算机网络概述
1.1 计算机网络基本概念
计算机网络是通信技术与计算机技术紧密结合的产物。可以说,计算机网络就是一种特殊的通信网络。 它的信源和信宿都是计算机,传输的主要是数字化的一些信息。
通信技术模型
定义:计算机网络就是互连的、自治的计算机集合。
- 自治:无主从关系。
- 互连:主机通过通信链路(例如光纤、WIFI、同轴电缆等等)互联互通。
交换网络
与交换网络对应的是直接链路连接,主机之间直接相连无法解决远距离、大规模的主机互连的,而使用交换网络可以解决。交换网络中的设备是交换节点,在计算机网络中,交换节点一般是指路由器或者交换机。
Internet
全球最大的互联网,是一个“网络的网络”,全球各大ISP组成一个网路,小的ISP分别连接到各个大ISP上组成更大的网络,机构组织内部的网络再连接到小的ISP网络上,就实现了全球互联。
- 从组成细节上:Internet由无数计算设备(又叫主机或者端系统)、通信链路(光纤、铜缆、电磁波)和交换节点(路由器、交换机)组成。
- 从服务角度:Internet是为网络应用提供通信服务的通信基础设施;为网络应用提供应用编程接口。
网络协议
计算机网络只有硬件显然是不够的,需要一套规则来说明数据如何传输,这就是网络协议。
定义:网络协议(network protocol),简称为协议,是为进行网络中的数据交换而建立的规则、标准或约定。
这套网络协议具体规定什么内容呢?协议规定了通信实体之间所交换的消息的格式、意义、顺序以及针对收到信息或发生的事件所采取的动作。
上述可得一个网络协议有三个要素:
- 语法(Syntax):数据与控制信息的结构或格式;信号电平;
- 语义(Semantics):需要发出何种控制信息;完成何种动作以及做出何种响应;差错控制;
- 时序(Timing):时间顺序;速度匹配;
1.2 计算机网络结构
计算机网络从结构来看分为:网络边缘(主机、网络应用)、接入网络和物理介质(有线或无线通信链路)和网络核心(路由器、分组转发设备和网络的网络)。
- 网络边缘
- 主机(端系统):位于网络边缘,运行网络应用程序。
- 客户/服务器应用模型(client/server):客户端发送请求,接收服务器响应;如web应用,文件传输FTP服务等。
- 对等应用模型(peer-peer,P2P):不依赖专属服务器,通信在对等实体间进行;如QQ、Skype、BT等。
- 接入网络
- 数字用户电路(DSL):利用电话线,通过多路复用技术传输网络数字信号。用户独占至中心局的接入。
- 电缆网络(如:混和光纤同轴电缆HFC):多路复用技术传输网络数字信号。各家庭共享电缆头端的接入网络。
- 机构接入网
- 无线接入网,包括无线局域网(LAN)和广域无线接入(蜂窝网)。
- 网络核心(关键功能:路由+转发)
- 路由:根据路由算法计算出路由表,确定分组从源到目的的传输路径。
- 转发:将分组从路由器的输入端口交换至正确的输出端口。
- 网络核心负责把数据从源主机送达目的主机
Internet结构:顶级ISP互连,顶级包含很多次一级,次一级又包含很多更次一级。它们之间有可能会使用IXP高速网络做连接。
1.3 网络核心(提供数据交换功能)
电路交换
最典型的电路交换网络是电话网络。电路交换有三个阶段:建立连接、通信和释放连接。电路交换最显著的特点是:建立连接之后,就算你沉默不说话,也会一直独占通信资源,直到连接被释放。
独占通信资源并不意味着连接经过的物理链路就只有这一个连接,有多路复用技术来让多个连接通道共享一条物理链路。多路复用是将链路资源分成多个资源片,每个连接独占一个资源片,对于每个资源片来说是不能共享的。 典型的多路复用方法有:频分多路复用(FDM)、时分多路复用(TDM)、波分多路复用(WDM)、码分多路复用(CDM)。
- 频分多路复用:资源片是频率,每个连接占用一段频率。
- 时分多路复用:资源片是时间段,先把时间划分为等长的时间段叫时分复用帧,再把一个帧划分为许多时隙,每个连接占用一个时隙。也就是每个连接在每个帧的某一个时隙中发送数据。属于周期性的发送数据。
- 波分多路复用:就是光的频分复用。因为光传输时习惯用波长描述。
- 码分多路复用:广泛应用于无线链路共享。码分复用为每个用户分配一个 m bit的码片序列,其中“0”用“-1”表示,“1”用“+1”表示,每个用户的码片是互相正交的(也就是内积两两为0)。当一个用户要发送数据的时候,如果想发送1,那么就在物理链路里面发送自己的码片,如果想发送0,就发送自己码片的反码。每个用户都这样发送数据,当你某一时刻想接收某个用户的数据时,就用那个用户的码片对链路中受到的数据做规格化内积,结果就是那个用户发送的数据(因为用户都是两两正交的,目的用户之外的其他用户和目的用户的数据的规格化内积肯定为0)。
报文交换:应用发送信息的整体,如:一个文件;就是报文。报文交换需要将一个报文全部接收完成之后再选择从哪一个端口发送出去。
分组交换:将报文分成多个较小的数据包,每个数据包添加一些控制信息,在信源将报文拆分,然后分组传输,最后在信宿将报文组合起来。显然,每个分组的控制信息和对报文的拆分组合都算是额外的开销。 分组交换网络的链路复用是统计多路复用,谁有数据包,谁就发送。
存储-转发
报文交换和分组交换都采用存储-转发的数据交换方式(先把数据完整接收,暂存在节点内部,然后判断要转发到哪个端口,最后再进行转发)。
分组和报文比较(传输延迟)
假设一个分组为L(bits),链路传输速率为R(bits),那么:
分组传输延迟(delay)=L(bits)R(bits/sec)
分组传输延迟(delay)=\frac{L(bits)}{R(bits/sec)}
分组传输延迟(delay)=R(bits/sec)L(bits)
如下场景,报文 M bits,跳数 h,路由器数 n=(h-1) :
那么分组交换的传输时间是:
T=MR+(h−1)LR=MR+nLR
T=\frac{M}{R}+(h-1)\frac{L}{R}=\frac{M}{R}+n\frac{L}{R}
T=RM+(h−1)RL=RM+nRL
分组和电路比较
比起报文交换,分组交换要优秀很多,那么分组交换和电路交换比较起来怎么样呢?因为电路交换建立连接时需要独占资源,而一般用户联网时发送数据的频率非常非常低,这就造成了通信资源的浪费。使用分组交换可以极大的提高资源利用率。
小结
分组交换适用于突发数据传输网络,资源充分共享,简单、无需呼叫建立。而缺点是可能会产生拥塞(也就是分组延迟和丢失),这就需要一些手段来处理可靠数据传输和拥塞控制。也是因为拥塞的可能性,音/视频应用无法做到电路交换的性能。
1.4 计算机网络性能
要衡量一个计算机系统的好坏,需要有一些性能指标,包括:速率、带宽、延迟、时延带宽积、吞吐量、丢包率。
- 速率(也叫数据率、数据传输速率或比特率):单位时间(s)内传输的数据量(bits),是计算机网络中最重要的一个性能指标,单位一般有:b/s、kb/s、Mb/s、Gb/s和Tb/s,其中k、M、G、T分别指10的3、6、9、12次方。速率往往是指额定速率或标称速率。
- 带宽:是数字通道所能传输的最大速率。带宽就是最大速率。
- 延迟/时延:
节点处理延迟:节点对分组的处理花费的时间,要做:差错检验、确定输出链路,通常不超过毫秒级。
排队延迟:处理完成后排队等待发送花费的时间,要等待输出链路可用,时长取决于路由器的拥塞程度。
因为排队延迟的不确定性,又有专门的指标来衡量排队情况,叫流量强度,La/R,其中a表示平均分组到达速率(也就是一秒有几个分组到达节点),流量强度趋于0表示平均排队延迟很小,趋于1表示平均排队延迟很大,如果大于1则表示超出处理能力了,延迟无限大,也就是比特到达的速率大于带宽,越来越多发不完了。
传输延迟:分组发送第一个比特开始,到最后一个比特发送完成所花费的时间,显然,这个取决于分组的长度(L)和链路的带宽(R),所以可用L/R来计算。
传播延迟:信号在物理链路中传播所用的时间,取决于物理链路的长度(d),和信号传播速度(s)。可用d/s计算。其中的信号传播速度典型的铜缆中是0.7倍的光速,大约2乘10的8次方每秒。 - 时延带宽积:传播延迟✖带宽,也就是在这个带宽下,这条物理链路能容纳多少比特,所以时延带宽积又叫以比特为单位的链路长度。
- 分组丢失(丢包):分组到达节点时,节点缓存已满,所以就丢了,用丢包率=丢包数/已发分组总数;来衡量。
- 吞吐量/率:指发送端到接收端之间的数据传输速率,不是中间某一条链路的速率(这个叫带宽)。包括即时吞吐量和平均吞吐量。端到端是总体上来看的速率,会受到带宽最小的那条中间链路的限制。
1.5 计算机网络体系结构
从功能的角度来看计算机网络,把计算机网络按照不同的功能划分为几个不同的层级。一下是几个填空题:
- 计算机网络体系结构简称网络体系结构是分层结构。
- 每层遵循某个/些网络协议完成本层功能。
- 计算机网络体系结构是计算机网络各层极其协议的集合。
- 体系结构是一个计算机网络的功能层次及其关系的定义。
- 体系结构是抽象的。
为什么要采取分层呢?好处在于:
- 结构清晰,有利于识别复杂系统的部件及其关系。
- 模块化的分层易于系统的更新、维护。
- 有利于标准化
分层结构中,每一个实体之间,通过协议协作,层与层之间通过交换原语SAP协作,下层会向上层提供服务,并且对上层透明。同样有几个填空题:
- 实体表示任何可发送或接受信息的硬件或软件进程。
- 协议是控制两个对等实体进行通信的规则的集合,协议是“水平的”。
- 任一层实体需要使用下层提供服务,遵循本层协议,实现本层功能,向上层提供服务,服务是“垂直的”。
- 下层协议的实现对上层的服务用户是透明的。
- 同系统的相邻层实体间通过接口进行交互,通过服务访问点SAP,交换原语,指定请求的特定服务。
OSI参考模型
分成七层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。发送数据时,自顶向下封装数据,每一层都要添加自己的控制信息(一般包含地址、差错检测编码、协议控制的附加信息等),到了目的地之后再逐层,自下向上的拆包。
- 物理层:实现每一个比特的传输,在这一层要定义物理层的接口特性,包含机械特性、电气特性、功能特性、规程特性;还要定义比特编码,什么样的电平表示0之类的通信相关内容;定义数据率、比特同步(和时钟同步有关)、传输模式(单工、半双工、全双工)。
- 数据链路层:负责结点到结点的数据传输;以帧为数据单位,要让接受端能把帧与帧区分开,完成组帧;负责物理寻址,明确要传到哪个接收端。;负责流量控制,避免淹没接收端;负责差错控制,一般在数据帧尾部;负责访问控制,决定某一时刻哪个设备拥有物理介质的使用权。
- 网络层:负责从源主机到目的主机数据分组的交付,要跨越多个网络,而链路层的协议是针对用物理介质直接连接在同一个网络中的情况的,跨越网络时就不能用了;负责全网的逻辑寻址;负责路由,帮助路由器选择路径;负责分组转发。
- 传输层:负责进程与进程之间的通信;负责分段与重组;做SAP寻址,确保将完整的报文交给正确的进程,如端口号;负责连接控制;负责流量控制;负责差错控制。
- 会话层:对话控制、同步。现在的Internet应该是没有这一层。
- 表示层:处理两个系统间交换信息的语法与语义;负责数据表示的转化;负责加密/解密,压缩/解压缩;实际网络由应用层代为完成;
- 应用层:HTTP、FTP、SMTP等。支持用户通过用户代理(浏览器等)或网络接口使用网络(服务)。
TCP/IP参考模型
以IP协议为核心,一切都建立在IP协议之上。