文章目录
- 一、概述
- 1.1互联网的核心部分
- 1.电路交换的主要特点
- 2.分组交换的主要特点
- 1.2.计算机网络的性能
- 1.速率
- 2.带宽
- 3.吞吐量
- 4.时延
- 5.利用率
- 1.3.计算机网络体系结构
- 协议与划分层次
- 具有五层协议的体系结构
- (1)应用层 (application layer)
- (2)运输层 (transport layer)
- (3)网络层 (network layer)
- (4)数据链路层 (data link layer)
- (5)物理层 (physical layer)
- 1.4.TCP/IP的体系结构
- 二、物理层
- 2.1.物理层的基本概念
- 2.2.数据通信的基础知识
- 信号
- 信道
- 2.3.物理层下面的传输媒体
- 导引型传输媒体
- 非导引型传输媒体
- 2.4.信道复用技术
- 2.5.宽带接入技术
- 三、数据链路层
- 3.1 使用点对点信道的数据链路层
- 3.1.1 数据链路和帧
- 3.1.2 三个基本问题
- 1. **封装成帧** 。
- 2.**透明传输** 。
- 3.**差错检测** 。
- 3.2 点对点协议PPP
- 3.2.1 PPP协议的特点
- 1.PPP协议应满足的需求
- 3.2.2 PPP协议的帧格式
- 3.2.3 PPP协议的工作状态
- 3.3 使用广播信道的数据链路层
- 3.3.1 局域网的数据链路层
- 3.3.2 CSMA/CD协议
- 3.3.3 使用集线器的星形拓扑
- 3.3.4 以太网的信道利用率
- 3.3.5 以太网的MAC层
- 1.MAC层的硬件地址
- 2.MAC帧的格式
- 3.4 扩展的以太网
- 3.4.1 在物理层扩展以太网
- 3.4.2 在数据链路层扩展以太网
- 1.以太网交换机的特点
- 2.以太网交换机的自学习功能
- 3.从总线以太网到星形以太网
- 3.4.3 虚拟局域网
- 3.5 高速以太网
- 3.5.1 100BASE-T以太网
- 3.5.2 吉比特以太网
- 3.5.3 10吉比特以太网(10GE)和更快的以太网
- 3.5.4 使用以太网进行宽带接入
- 四、网络层
- 4.1 网络层提供的两种服务
- 4.2 网际协议IP
- 4.2.1 虚拟互连网络
- 4.2.2 分类的IP地址
- 4.2.3 IP地址与硬件地址
- 4.2.4 地址解析协议ARP
- 4.3 划分子网和构造超网
- 4.4 网际控制报文协议ICMP
- 4.5 互联网的路由选择协议
- 4.6 IPv6
- 4.7 IP多播
- 4.8 虚拟专用网VPN和网络地址转换NAT
- 4.9 多协议标记交换MPLS
- 五、运输层
- 六、应用层
- 6.1 域名系统DNS
- 6.2 文件传送协议
- 6.3 远程终端协议TELNET
- 6.4 万维网WWW
- 6.5 电子邮件
- 6.6 动态主机配置协议DHCP
- 6.7 简单网络管理协议SNMP
- 6.8 应用进程跨越网络的通信
- 6.9 P2P应用
- 七、网络安全
- 7.1 网络安全问题概述
- 7.2 两类密码体制
- 7.3 数字签名
- 7.5 密钥分配
- 7.6 互联网使用的安全协议
- 7.7 系统安全:防火墙与入侵检测
- 八、互联网上的音频/视频服务
- 九、无线网络和移动网络
一、概述
1.1互联网的核心部分
在网络核心部分起特殊作用的是路由器 (router),它是一种专用计算机(但不叫做主机)。
路由器是实现分组交换 (packet switching)的关键构件,其任务是转发收到的分组 ,这是网络核心部分最重要的功能。
为了弄清分组交换,下面先介绍电路交换的基本概念。
1.电路交换的主要特点
在电话问世后不久,人们就发现,要让所有的电话机都两两相连接是不现实的。图1-9(a)表示两部电话只需要用一对电线就能够互相连接起来。但若有5部电话要两两相连,则需要10对电线,见图1-9(b)所示。显然,若N部电话要两两相连,就需要N(N–1)/2对电线。当电话机的数量很大时,这种连接方法需要的电线数量就太大了(与电话机的数量的平方成正比)。于是人们认识到,要使得每一部电话能够很方便地和另一部电话进行通信,就应当使用电话交换机将这些电话连接起来,如图1-9(c)所示。每一部电话都连接到交换机上,而交换机使用交换的方法,让电话用户彼此之间可以很方便地通信。电话发明后的一百多年来,电话交换机虽然经过多次更新换代,但交换的方式一直都是电路交换(circuit switching)。
从通信资源的分配角度来看,交换 (switching)就是按照某种方式动态地分配传输线路的资源。在使用电路交换通话之前,必须先拨号请求建立连接。当被叫用户听到交换机送来的振铃音并摘机后,从主叫端到被叫端就建立了一条连接,也就是一条专用的物理通路 。这条连接保证了双方通话时所需的通信资源,而这些资源在双方通信时不会被其他用户占用。此后主叫和被叫双方就能互相通电话。通话完毕挂机后,交换机释放刚才使用的这条专用的物理通路(即把刚才占用的所有通信资源归还给电信网)。这种必须经过“建立连接 (占用通信资源)→通话 (一直占用通信资源)→释放连接 (归还通信资源)”三个步骤的交换方式称为电路交换 (5) 。如果用户在拨号呼叫时电信网的资源已不足以支持这次的呼叫,则主叫用户会听到忙音,表示电信网不接受用户的呼叫,用户必须挂机,等待一段时间后再重新拨号。
当使用电路交换来传送计算机数据时
,其线路的传输效率往往很低
。这是因为计算机数据是突发式地出现在传输线路上的,因此线路上真正用来传送数据的时间往往不到10%甚至1%。已被用户占用的通信线路资源在绝大部分时间里都是空闲的。例如,当用户阅读终端屏幕上的信息或用键盘输入和编辑一份文件时,或计算机正在进行处理而结果尚未返回时,宝贵的通信线路资源并未被利用而是白白被浪费了。
2.分组交换的主要特点
分组交换则采用存储转发技术 。
图1-11表示把一个报文划分为几个分组后再进行传送。
通常我们把要发送的整块数据称为一个报文(message) 。
在发送报文之前,先把较长的报文划分成为一个个更小的等长数据段
,例如,每个数据段为1024bit 。在每一个数据段前面,加上一些由必要的控制信息组成的首部 (header) 后,就构成了一个分组 (packet) 。分组又称为“包 ”,而分组的首部也可称为“包头 ”。
分组是在互联网中传送的数据单元
。
分组中的“首部”是非常重要的,正是由于分组的首部包含了诸如目的地址和源地址等重要控制信息,每一个分组才能在互联网中独立地选择传输路径,并被正确地交付到分组传输的终点
。
互联网的核心部分是由许多网络和把它们互连起来的路由器组成的,而主机处在互联网的边缘部分。在互联网核心部分的路由器之间一般都用高速链路相连接,而在网络边缘的主机接入到核心部分则通常以相对较低速率的链路相连接。
位于网络边缘的主机和位于网络核心部分的路由器都是计算机,但它们的作用却很不一样。
主机是为用户进行信息处理的 ,并且可以和其他主机通过网络交换信息
。
路由器则是用来转发分组的,即进行分组交换的
。
路由器收到一个分组,先暂时存储一下,检查其首部,查找转发表,按照首部中的目的地址,找到合适的接口转发出去,把分组交给下一个路由器。这样一步一步地(有时会经过几十个不同的路由器)以存储转发的方式,把分组交付最终的目的主机。各路由器之间必须经常交换彼此掌握的路由信息,以便创建和动态维护路由器中的转发表,使得转发表能够在整个网络拓扑发生变化时及时更新。
当网络中的某些结点或链路突然出现故障时,在各路由器中运行的路由选择协议 (protocol)能够自动找到转发分组最合适的路径。
路由器暂时存储的是一个个短分组,而不是整个的长报文。短分组是暂存在路由器的存储器(即内存)中而不是存储在磁盘中的。这就保证了较高的交换速率。
分组交换在传送数据之前不必先占用一条端到端的链路的通信资源。分组在哪段链路上传送才占用这段链路的通信资源。分组到达一个路由器后,先暂时存储下来,查找转发表,然后从一条合适的链路转发出去。分组在传输时就这样一段一段地断续占用通信资源,而且还省去了建立连接和释放连接的开销,因而数据的传输效率更高。
从以上所述可知,采用存储转发的分组交换,实质上是采用了在数据通信的过程中断续(或动态)分配传输带宽的策略
。这对传送突发式的计算机数据非常合适,使得通信线路的利用率大大提高了。
综上所述,分组交换的主要优点可归纳如表1-2所示。
三种交换的比较。电路交换;报文交换;分组交换
电路交换
——整个报文的比特流连续地从源点直达终点,好像在一个管道中传送。
报文交换
——整个报文先传送到相邻结点,全部存储下来后查找转发表,转发到下一个结点。
分组交换
——单个分组(这只是整个报文的一部分)传送到相邻结点,存储下来后查找转发表,转发到下一个结点。
1.2.计算机网络的性能
下面介绍常用的五个性能指标。
1.速率
计算机发送出的信号都是数字形式的。比特 (bit)来源于binary digit,意思是一个“二进制数字 ”,因此一个比特就是二进制数字中的一个1或0。比特也是信息论中使用的信息量的单位 。
网络技术中的速率 指的是数据的传送速率
,它也称为数据率 (data rate) 或比特率 (bit rate) 。
速率是计算机网络中最重要的一个性能指标。速率的单位是bit/s(比特每秒)(或b/s,有时也写为bps,即bit per second)。当数据率较高时,就常常在bit/s的前面加上一个字母。例如,k(kilo)=10 3 =千,M(Mega)=10 6 =兆,G(Giga)=10 9 =吉,T(Tera)=10 12 =太,P(Peta)=10 15 =拍,E(Exa)=10 18 =艾,Z(Zetta)=10 21 =泽,Y(Yotta)=10 24 =尧 (9) 。这样,4×10 10 bit/s的数据率就记为40Gbit/s。
另外要注意的是,当提到网络的速率时,往往指的是额定速率 或标称速率 ,而并非网络实际上运行的速率。
2.带宽
“带宽 ”(bandwidth) 有以下两种不同的意义:
(1)带宽本来是指某个信号具有的频带宽度 。信号的带宽是指该信号所包含的各种不同频率成分所占据的频率范围
。例如,在传统的通信线路上传送的电话信号的标准带宽是3.1kHz(从300Hz到3.4kHz,即话音的主要成分的频率范围)。这种意义的带宽的单位 是赫
(或千赫、兆赫、吉赫 等)。在过去很长的一段时间,通信的主干线路传送的是模拟信号(即连续变化的信号)。因此,表示某信道允许通过的信号频带范围
就称为该信道的带宽 (或通频带 )。
(2)在计算机网络中,带宽用来表示网络中某通道 传送数据的能力
,因此网络带宽表示在单位时间内网络中的某信道所能通过的“最高数据率 ”
。在本书中提到“带宽”时,主要是指这个意思。这种意义的带宽的单位 就是数据率的单位 bit/s,是“比特每秒 ”
。
在“带宽”的上述两种表述中,前者为频域 称谓,而后者为时域 称谓,其本质是相同的。
也就是说,一条通信链路的“带宽”越宽,其所能传输的“最高数据率”也越高
。
3.吞吐量
吞吐量 (throughput) 表示在单位时间内通过某个网络(或信道、接口)的实际的数据量
。
吞吐量更经常地用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络。
显然,吞吐量受网络的带宽或网络的额定速率的限制。
例如,对于一个1Gbit/s的以太网,就是说其额定速率是1Gbit/s,那么这个数值也是该以太网的吞吐量的绝对上限值。因此,对1Gbit/s的以太网,其实际的吞吐量可能也只有100Mbit/s,或甚至更低,并没有达到其额定速率。请注意,有时吞吐量还可用每秒传送的字节数或帧数来表示。
4.时延
时延 (delay或latency)是指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间。时延是个很重要的性能指标,它有时也称为延迟或迟延。
(1)发送时延
发送时延 (transmission delay)是主机或路由器发送数据帧所需要的时间
,也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。因此发送时延也叫做传输时延 (我们尽量不采用传输时延这个名词,因为它很容易和下面要讲到的传播时延弄混)。发送时延的计算公式是:
(2)传播时延
传播时延 (propagation delay)是电磁波在信道中传播一定的距离需要花费的时间 。传播时延的计算公式是:
电磁波在自由空间的传播速率是光速,即3.0×10 5 km/s。电磁波在网络传输媒体中的传播速率比在自由空间要略低一些:在铜线电缆中的传播速率约为2.3×10 5 km/s,在光纤中的传播速率约为2.0×10 5 km/s。例如,1000km长的光纤线路产生的传播时延大约为5ms。
以上两种时延有本质上的不同。
但只要理解这两种时延发生的地方就不会把它们弄混。
发送时延发生在机器内部的发送器中(一般就是发生在网络适配器中),与传输信道的长度(或信号传送的距离)没有任何关系
。
但传播时延则发生在机器外部的传输信道媒体上,而与信号的发送速率无关 。信号传送的距离越远,传播时延就越大
。
下面还有两种时延也需要考虑,但比较容易理解。
(3)处理时延
主机或路由器在收到分组时要花费一定的时间进行处理,例如分析分组的首部、从分组中提取数据部分、进行差错检验或查找适当的路由等,这就产生了处理时延。
(4)排队时延
分组在经过网络传输时,要经过许多路由器。但分组在进入路由器后要先在输入队列中排队等待处理。在路由器确定了转发接口后,还要在输出队列中排队等待转发。这就产生了排队时延。排队时延的长短往往取决于网络当时的通信量。当网络的通信量很大时会发生队列溢出,使分组丢失,这相当于排队时延为无穷大。
这样,数据在网络中经历的总时延就是以上四种时延之和:
图1-14画出了这几种时延所产生的地方,希望读者能够更好地分清这几种时延。
5.利用率
利用率 有信道利用率和网络利用率两种。
信道利用率指出某信道有百分之几的时间是被利用的(有数据通过)。
完全空闲的信道的利用率是零。
网络利用率则是全网络的信道利用率的加权平均值。
信道利用率并非越高越好。这是因为,根据排队论的理论,当某信道的利用率增大时,该信道引起的时延也就迅速增加。
这和高速公路的情况有些相似。当高速公路上的车流量很大时,由于在公路上的某些地方会出现堵塞,因此行车所需的时间就会变长。网络也有类似的情况。当网络的通信量很少时,网络产生的时延并不大。但在网络通信量不断增大的情况下,由于分组在网络结点(路由器或结点交换机)进行处理时需要排队等候,因此网络引起的时延就会增大。
如果令D 0 表示网络空闲时的时延,D 表示网络当前的时延,那么在适当的假定条件下,可以用下面的简单公式(1-5)来表示D ,D 0 和利用率U 之间的关系:
这里U 是网络的利用率,数值在0到1之间。当网络的利用率达到其容量的1/2时,时延就要加倍。特别值得注意的就是:当网络的利用率接近最大值1时,网络的时延就趋于无穷大。因此我们必须有这样的概念:信道或网络的利用率过高会产生非常大的时延 。图1-16给出了上述概念的示意图。因此一些拥有较大主干网的ISP通常控制信道利用率不超过50%。如果超过了就要准备扩容,增大线路的带宽。
1.3.计算机网络体系结构
协议与划分层次
在计算机网络中要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则。这些规则明确规定了所交换的数据的格式
以及有关的同步问题
。这里所说的同步 不是狭义的(即同频或同频同相)而是广义的,即在一定的条件下应当发生什么事件(例如,应当发送一个应答信息),因而同步含有时序的意思 。这些为进行网络中的数据交换而建立的规则、标准或约定 称为网络协议 (network protocol)
。网络协议也可简称为协议 。
网络协议主要由以下三个要素组成:
(1)语法 ,即数据与控制信息的结构或格式;
(2)语义 ,即需要发出何种控制信息,完成何种动作以及做出何种响应;
(3)同步 ,即事件实现顺序的详细说明。
计算机网络的各层及其协议的集合 就是网络的体系结构 (architecture)
具有五层协议的体系结构
OSI的七层协议体系结构(图1-18(a))
TCP/IP是一个四层的体系结构(图1-18(b)),它包含应用层、运输层、网际层和网络接口层(用网际层这个名字是强调这一层是为了解决不同网络的互连问题)。不过从实质上讲,TCP/IP只有最上面的三层,因为最下面的网络接口层并没有什么具体内容。因此在学习计算机网络的原理时往往采取折中的办法,即综合OSI和TCP/IP的优点,采用一种只有五层协议的体系结构(图1-18(c)),这样既简洁又能将概念阐述清楚 (12) 。有时为了方便,也可把最底下两层称为网络接口层。
(1)应用层 (application layer)
应用层是体系结构中的最高层。应用层的任务是通过应用进程间的交互来完成特定网络应用
。应用层协议定义的是应用进程间通信和交互的规则
。这里的进程 就是指主机中正在运行的程序 。
对于不同的网络应用需要有不同的应用层协议。在互联网中的应用层协议
很多,如域名系统DNS
,支持万维网应用的HTTP协议
,支持电子邮件的SMTP协议
,等等。我们把应用层交互的数据单元称为报文 (message)
。
(2)运输层 (transport layer)
运输层的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务
。
应用进程利用该服务传送应用层报文。所谓“通用的”,是指并不针对某个特定网络应用,而是多种应用可以使用同一个运输层服务。由于一台主机可同时运行多个进程,因此运输层有复用和分用的功能。复用就是多个应用层进程可同时使用下面运输层的服务,分用和复用相反,是运输层把收到的信息分别交付上面应用层中的相应进程。
运输层主要使用以下两种协议:
传输控制协议 TCP
(Transmission Control Protocol)——提供面向连接的、可靠的数据传输服务,其数据传输的单位是报文段 (segment)。用户数据报协议 UDP
(User Datagram Protocol)——提供无连接的、尽最大努力 (best-effort)的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报 。
(3)网络层 (network layer)
网络层负责为分组交换网上的不同主机 提供通信服务
。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组 或包 进行传送
。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报 ,或简称为数据报
。本书把“分组”和“数据报”作为同义词使用 。
(4)数据链路层 (data link layer)
数据链路层常简称为链路层 。我们知道,两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议
。在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧 (framing),在两个相邻结点间的链路上传送帧 (frame)。每一帧包括数据和必要的控制信息
(如同步信息、地址信息、差错控制等)。
在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束。这样,数据链路层在收到一个帧后,就可从中提取出数据部分,上交给网络层。
控制信息还使接收端能够检测到所收到的帧中有无差错。如发现有差错,数据链路层就简单地丢弃这个出了差错的帧,以免继续在网络中传送下去白白浪费网络资源。如果需要改正数据在数据链路层传输时出现的差错(这就是说,数据链路层不仅要检错,而且要纠错),那么就要采用可靠传输协议来纠正出现的差错。这种方法会使数据链路层的协议复杂些。
(5)物理层 (physical layer)
在物理层上所传数据的单位是比特 。发送方发送1(或0)时,接收方应当收到1(或0)而不是0(或1)。因此物理层要考虑用多大的电压代表“1”或“0”,以及接收方如何识别出发送方所发送的比特。物理层还要确定连接电缆的插头应当有多少根引脚以及各引脚应如何连接。
在互联网所使用的各种协议中,最重要的和最著名的就是TCP和IP两个协议。现在人们经常提到的TCP/IP并不一定是单指TCP和IP这两个具体的协议,而往往是表示互联网所使用的整个TCP/IP协议族 (protocol suite)
1.4.TCP/IP的体系结构
TCP/IP的体系结构比较简单,它只有四层。
请注意,图中的路由器在转发分组时最高只用到网络层而没有使用运输层和应用层
。
实际上现在的互联网使用的TCP/IP体系结构有时已经演变成为图1-23所示的那样,即某些应用程序可以直接使用IP层,或甚至直接使用最下面的网络接口层,图1-23是这种表示方法。
还有一种方法,就是分层次画出具体的协议来表示TCP/IP协议族(图1-24),
特点是上下两头大而中间小:应用层和网络接口层都有多种协议,而中间的IP层很小,上层的各种协议都向下汇聚到一个IP协议中。
这种很像沙漏计时器形状的TCP/IP协议族表明:TCP/IP协议可以为各式各样的应用提供服务 (所谓的everything over IP),同时TCP/IP协议也允许IP协议在各式各样的网络构成的互联网上运行 (所谓的IP over everything)。
正因为如此,互联网才会发展到今天的这种全球规模。从图1-24不难看出IP协议在互联网中的核心作用。
二、物理层
2.1.物理层的基本概念
首先要强调指出,物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。
物理层的作用正是要尽可能地屏蔽掉这些传输媒体和通信手段的差异,使物理层上面的数据链路层感觉不到这些差异,这样就可使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体和通信手段是什么。
用于物理层的协议也常称为物理层规程 (procedure)。其实物理层规程就是物理层协议。
可以将物理层的主要任务描述为确定与传输媒体的接口有关的一些特性,即:
(1)机械特性 指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置,等。平时常见的各种规格的接插件都有严格的标准化的规定。
(2)电气特性 指明在接口电缆的各条线上出现的电压的范围。
(3)功能特性 指明某条线上出现的某一电平的电压的意义。
(4)过程特性 指明对于不同功能的各种可能事件的出现顺序。
大家知道,数据在计算机内部多采用并行传输方式。但数据在通信线路(传输媒体)上的传输方式一般都是串行传输 (这是出于经济上的考虑),即逐个比特按照时间顺序传输。因此物理层还要完成传输方式的转换。
2.2.数据通信的基础知识
信号
通信的目的是传送消息 (message)。如话音、文字、图像、视频等都是消息。
数据是使用特定方式表示的信息,通常是有意义的符号序列。
这种信息的表示可用计算机或其他机器(或人)处理或产生。信号 (signal)则是数据的电气或电磁的表现。
根据信号中代表消息的参数的取值方式不同,信号可分为以下两大类:
(1)模拟信号
,或连续信号 ——代表消息的参数的取值是连续的。例如在图2-1中,用户家中的调制解调器到电话端局之间的用户线上传送的就是模拟信号。
(2)数字信号
,或离散信号 ——代表消息的参数的取值是离散的。例如在图2-1中,用户家中的计算机到调制解调器之间,或在电话网中继线上传送的就是数字信号。在使用时间域(或简称为时域)的波形表示数字信号时,代表不同离散数值的基本波形就称为码元 (1) 。在使用二进制编码时,只有两种不同的码元,一种代表0状态而另一种代表1状态。
下面我们通过一个最简单的例子来说明数据通信系统的模型。
这个例子就是两个计算机经过普通电话机的连线,再经过公用电话网进行通信。
信道
信道和电路并不等同。信道一般都是用来表示向某一个方向传送信息的媒体。因此,一条通信电路往往包含一条发送信道和一条接收信道。
从通信的双方信息交互的方式来看,可以有以下三种基本方式:
(1)单向通信
又称为单工通信
,即只能有一个方向的通信而没有反方向的交互。无线电广播或有线电广播以及电视广播就属于这种类型。
(2)双向交替通信
又称为半双工通信
,即通信的双方都可以发送信息,但不能双方同时发送(当然也就不能同时接收)。这种通信方式是一方发送另一方接收,过一段时间后可以再反过来。
(3)双向同时通信
又称为全双工通信
,即通信的双方可以同时发送和接收信息。
单向通信只需要一条信道,而双向交替通信或双向同时通信则都需要两条信道(每个方向各一条)。显然,双向同时通信的传输效率最高。
来自信源的信号常称为基带信号 (即基本频带信号)
。像计算机输出的代表各种文字或图像文件的数据信号都属于基带信号。基带信号往往包含有较多的低频成分,甚至有直流成分
,而许多信道并不能传输这种低频分量或直流分量。为了解决这一问题,就必须对基带信号进行调制 (modulation)
。
调制可分为两大类。
基带调制
一类是仅仅对基带信号的波形进行变换
,使它能够与信道特性相适应。变换后的信号仍然是基带信号。这类调制称为基带调制
。由于这种基带调制是把数字信号转换为另一种形式的数字信号,因此大家更愿意把这种过程称为编码 (coding)
。
带通调制
另一类调制则需要使用载波 (carrier)进行调制
,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号
,这样就能够更好地在模拟信道中传输。经过载波调制后的信号称为带通信号 (即仅在一段频率范围内能够通过信道),而使用载波的调制称为带通调制
。
(1)常用编码方式
常用编码方式如图2-2所示。
不归零制
正电平代表1,负电平代表0。归零制
正脉冲代表1,负脉冲代表0。曼彻斯特编码
位周期中心的向上跳变代表0,位周期中心的向下跳变代表1。但也可反过来定义。差分曼彻斯特编码
在每一位的中心处始终都有跳变。位开始边界有跳变代表0,而位开始边界没有跳变代表1。
(2)基本的带通调制方法
图2-3给出了最基本的调制方法。
- 调幅 (AM) 即载波的振幅随基带数字信号而变化。例如,0或1分别对应于无载波或有载波输出。
- 调频 (FM) 即载波的频率随基带数字信号而变化。例如,0或1分别对应于频率f 1 或f 2 。
- 调相 (PM) 即载波的初始相位随基带数字信号而变化。例如,0或1分别对应于相位0度或180度。
为了达到更高的信息传输速率,必须采用技术上更为复杂的多元制的振幅相位混合调制方法。例如,正交振幅调制 QAM(Quadrature Amplitude Modulation)。
2.3.物理层下面的传输媒体
传输媒体
也称为传输介质或传输媒介,它就是数据传输系统中在发送器和接收器之间的物理通路。
传输媒体可分为两大类,即导引型传输媒体 和非导引型传输媒体 (这里的“导引型”的英文就是guided,也可译为“导向传输媒体”)。在导引型传输媒体中,电磁波被导引沿着固体媒体(铜线或光纤)传播,而非导引型传输媒体就是指自由空间,在非导引型传输媒体中电磁波的传输常称为无线传输。
图2-5是电信领域使用的电磁波的频谱。
导引型传输媒体
这里简单介绍下光缆
光纤通信就是利用光导纤维(以下简称为光纤)传递光脉冲来进行通信。有光脉冲相当于1,而没有光脉冲相当于0。由于可见光的频率非常高,约为10 8 MHz的量级,因此一个光纤通信系统的传输带宽远远大于目前其他各种传输媒体的带宽。
光纤是光纤通信的传输媒体。在发送端有光源,可以采用发光二极管或半导体激光器,它们在电脉冲的作用下能产生出光脉冲。在接收端利用光电二极管做成光检测器,在检测到光脉冲时可还原出电脉冲。
光纤通常由非常透明的石英玻璃拉成细丝,主要由纤芯和包层构成双层通信圆柱体。纤芯很细,其直径只有8~100µm(1µm=10 –6 m)。光波正是通过纤芯进行传导的。包层较纤芯有较低的折射率。当光线从高折射率的媒体射向低折射率的媒体时,其折射角将大于入射角(图2-8)。因此,如果入射角足够大,就会出现全反射,即光线碰到包层时就会折射回纤芯。这个过程不断重复,光也就沿着光纤传输下去。
非导引型传输媒体
短波通信(即高频通信)主要是靠电离层的反射。但电离层的不稳定所产生的衰落现象和电离层反射所产生的多径效应 (3) ,使得短波信道的通信质量较差。因此,当必须使用短波无线电台传送数据时,一般都是低速传输,即速率为一个标准模拟话路传几十至几百比特/秒。只有在采用复杂的调制解调技术后,才能使数据的传输速率达到几千比特/秒。
无线电微波通信在数据通信中占有重要地位。微波的频率范围为300MHz~300GHz(波长1m~1mm),但主要使用2~40GHz的频率范围。微波在空间主要是直线传播。由于微波会穿透电离层而进入宇宙空间,因此它不像短波那样可以经电离层反射传播到地面上很远的地方。传统的微波通信主要有两种方式,即地面微波接力通信 和卫星通信 。
由于微波在空间是直线传播的,而地球表面是个曲面,因此其传播距离受到限制,一般只有50km左右。但若采用100m高的天线塔,则传播距离可增大到100km。为实现远距离通信必须在一条微波通信信道的两个终端之间建立若干个中继站。中继站把前一站送来的信号经过放大后再发送到下一站,故称为“接力 ”。大多数长途电话业务使用4~6GHz的频率范围。
微波接力通信可传输电话、电报、图像、数据等信息。
其主要特点是:
(1)微波波段频率很高,其频段范围也很宽,因此其通信信道的容量很大。
(2)因为工业干扰和天电干扰的主要频谱成分比微波频率低得多,对微波通信的危害比对短波和米波(即甚高频)通信小得多,因而微波传输质量较高。
(3)与相同容量和长度的电缆载波通信比较,微波接力通信建设投资少,见效快,易于跨越山区、江河。
当然,微波接力通信也存在如下的一些缺点:
(1)相邻站之间必须直视(常称为视距LOS(Line Of Si ght)),不能有障碍物。有时一个天线发射出的信号也会分成几条略有差别的路径到达接收天线,因而造成失真。
(2)微波的传播有时也会受到恶劣气候的影响。
(3)与电缆通信系统比较,微波通信的隐蔽性和保密性较差。
(4)对大量中继站的使用和维护要耗费较多的人力和物力。
2.4.信道复用技术
不做介绍
2.5.宽带接入技术
不做介绍
三、数据链路层
数据链路层属于计算机网络的低层。数据链路层使用的信道主要有以下两种类型:
(1)点对点信道
。这种信道使用一对一的点对点通信方式。
(2)广播信道
。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
本章最重要的内容是:
(1)数据链路层的点对点信道和广播信道的特点,以及这两种信道所使用的协议(PPP协议以及CSMA/CD协议)的特点。
(2)数据链路层的三个基本问题:封装成帧、透明传输和差错检测。
(3)以太网MAC层的硬件地址。
(4)适配器、转发器、集线器、网桥、以太网交换机的作用以及使用场合。
下面看一下两台主机通过互联网进行通信时数据链路层所处的地位(图3-1)。
图3-1(a)表示用户主机H 1 通过电话线上网,中间经过三个路由器(R 1 ,R 2 和R 3 )连接到远程主机H 2 。所经过的网络可以是多种的,如电话网、局域网和广域网。当主机H 1 向H 2 发送数据时,从协议的层次上看,数据的流动如图3-1(b)所示。主机H 1 和H 2 都有完整的五层协议栈,但路由器在转发分组时使用的协议栈只有下面的三层 (1) 。数据进入路由器后要先从物理层上到网络层,在转发表中找到下一跳的地址后,再下到物理层转发出去。因此,数据从主机H 1 传送到主机H 2 需要在路径中的各结点的协议栈向上和向下流动多次,如图中的浅灰色箭头所示。
然而当我们专门研究数据链路层的问题时,在许多情况下我们可以只关心在协议栈中水平方向的各数据链路层。于是,当主机H 1 向主机H 2 发送数据时,我们可以想象数据就是在数据链路层从左向右沿水平方向传送的,如图3-2中从左到右的粗箭头所示,即通过以下这样的链路:
图3-2指出,从数据链路层来看,H 1 到H 2 的通信可以看成由四段不同的链路层通信组成,即:H 1 →R 1 ,R 1 →R 2 ,R 2 →R 3 和R 3 →H 2 。这四段不同的链路层可能采用不同的数据链路层协议
。
3.1 使用点对点信道的数据链路层
3.1.1 数据链路和帧
“链路”和“数据链路”并不是一回事。
所谓链路 (link)就是从一个结点到相邻结点 的一段物理线路(有线或无线),而中间没有任何其他的交换结点。在进行数据通信时,两台计算机之间的通信路径往往要经过许多段这样的链路。可见链路只是一条路径的组成部分。
数据链路 (data link)则是另一个概念。这是因为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输(这将在后面几节讨论)。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。现在最常用的方法是使用网络适配器 (既有硬件,也包括软件)来实现这些协议。一般的适配器都包括了数据链路层和物理层这两层的功能。
点对点信道的 数据链路层 的协议数据单元—— 帧 。
数据链路层把网络层交下来的数据构成帧 发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。在互联网中,网络层协议数据单元就是IP数据报(或简称为数据报、分组 或包 )。
采用如图3-3(a)所示的三层模型。在这种三层模型中,不管在哪一段链路上的通信(主机和路由器之间或两个路由器之间),我们都看成是结点和结点的通信(如图中的结点A和B),而每个结点只有下三层——网络层、数据链路层和物理层。
点对点信道的数据链路层在进行通信时的主要步骤如下:
(1)结点A的数据链路层把网络层交下来的的协议数据单元—— IP数据报添加首部和尾部封装成帧 。
(2)结点A把封装好的帧发送给结点B的数据链路层。
(3)若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报交给上面的网络层;否则丢弃这个帧。
数据链路层不必考虑物理层如何实现比特传输的细节。我们甚至还可以更简单地设想好像是 沿着两个数据链路层之间的水平方向把帧直接发送到对方,如图3-3(b)所示。
3.1.2 三个基本问题
数据链路层协议有许多种,但有三个基本问题则是共同的。这三个基本问题是:封装成帧、透明传输和差错检测 。
1. 封装成帧 。
封装成帧 (framing)就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记
,从收到的比特流中识别帧的开始和结束
。
图3-4表示用帧首部和帧尾部封装成帧的一般概念。
分组交换的一个重要概念就是:所有在互联网上传送的数据都以分组(即IP数据报)为传送单位。网络层的IP数据报传送到数据链路层就成为帧的数据部分。在帧的数据部分的前面和后面分别添加上首部和尾部,构成了一个完整的帧。这样的帧就是数据链路层的数据传送单元。一个帧的帧长等于帧的数据部分长度加上帧首部和帧尾部的长度。首部和尾部的一个重要作用就是进行帧定界
(即确定帧的界限)。
此外,首部和尾部还包括许多必要的控制信息。在发送帧时,是从帧首部开始发送的。各种数据链路层协议都对帧首部和帧尾部的格式有明确的规定。显然,为了提高帧的传输效率,应当使帧的数据部分长度尽可能地大于首部和尾部的长度。但是,每一种链路层协议都规定了所能传送的帧的数据部分长度上限——最大传送单元 MTU(Maximum Transfer Unit)。图3-4给出了帧的首部和尾部的位置,以及帧的数据部分与MTU的关系。
当数据是由可打印的ASCII码
组成的文本文件时,帧定界可以使用特殊的帧定界符
。我们知道,ASCII码是7位编码,一共可组合成128个不同的ASCII码,其中可打印的有95个 (2) ,而不可打印的控制字符有33个。图3-5的例子可说明帧定界的概念。控制字符SOH(Start Of Header)放在一帧的最前面,表示帧的首部开始。另一个控制字符EOT(End Of Transmission)表示帧的结束。请注意,SOH和EOT都是控制字符的名称。它们的十六进制编码分别是01(二进制是00000001)和04(二进制是00000100)。SOH(或EOT)并不是S,O,H(或E,O,T)三个字符。
当数据在传输中出现差错时,帧定界符的作用更加明显
。假定发送端在尚未发送完一个帧时突然出故障,中断了发送。但随后很快又恢复正常,于是重新从头开始发送刚才未发送完的帧。由于使用了帧定界符,接收端就知道前面收到的数据是个不完整的帧(只有首部开始符SOH而没有传输结束符EOT),必须丢弃。而后面收到的数据有明确的帧定界符(SOH和EOT),因此这是一个完整的帧,应当收下
。
2.透明传输 。
由于帧的开始和结束的标记使用专门指明的控制字符,因此,所传输的数据中的任何8比特的组合一定不允许和用作帧定界的控制字符的比特编码一样,否则就会出现帧定界的错误
。
当传送的帧是用文本文件组成的帧时(文本文件中的字符都是从键盘上输入的)
,其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去
,因此这样的传输就是透明传输 。
但当数据部分是非ASCII码的文本文件时(如二进制代码的计算机程序或图像等),情况就不同了。如果数据中的某个字节的二进制代码恰好和SOH或EOT这种控制字符一样(见图3-6),数据链路层就会错误地 “找到帧的边界”,把部分帧收下(误认为是个完整的帧),而把剩下的那部分数据丢弃(这部分找不到帧定界控制字符SOH)。
像图3-6所示的帧的传输显然就不是“透明传输”,因为当遇到数据中碰巧出现字符“EOT”时就传不过去了。数据中的“EOT”将被接收端错误地解释为“传输结束”的控制字符,而在其后面的数据因找不到“SOH”被接收端当作无效帧而丢弃。但实际上在数据中出现的字符“EOT”并非控制字符而仅仅是二进制数据00000100。
“透明 ”是一个很重要的术语。它表示:某一个实际存在的事物看起来却好像不存在一样 (例如,你看不见在你前面有块100%透明的玻璃的存在)。“在数据链路层透明传送数据”表示无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层。因此,对所传送的数据来说,这些数据就“看不见”数据链路层有什么妨碍数据传输的东西。或者说,数据链路层对这些数据来说是透明的。
为了解决透明传输问题,就必须设法使数据中
可能出现的控制字符“SOH”和“EOT”在接收端不被解释为控制字符。
具体的方法是:发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符 “ESC”(其十六进制编码是1B,二进制是00011011)。
而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符
。这种方法称为字节填充
(byte stuffing)或字符填充
(character stuffing)。
如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。图3-7表示用字节填充法解决透明传输的问题。
3.差错检测 。
现实的通信链路都不会是理想的。这就是说,比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1。这就叫做比特差错 。比特差错是传输差错中的一种。本小节所说的“差错”,如无特殊说明,就是指“比特差错”。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER
(Bit Error Rate)。例如,误码率为10 −10 时,表示平均每传送10 10 个比特就会出现一个比特的差错。误码率与信噪比
有很大的关系。如果设法提高信噪比,就可以使误码率减小。实际的通信链路并非是理想的,它不可能使误码率下降到零。因此,为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前在数据链路层
广泛使用了循环冗余检验 CRC
(Cyclic Redundancy Check)的检错技术。
具体内容不做介绍
。
在数据链路层使用CRC检验,能够实现无比特差错的传输,但这还不是可靠传输
。
我们知道,过去OSI的观点是:必须让数据链路层向上提供可靠传输。因此在CRC检错的基础上,增加了帧编号、确认 和重传机制 。收到正确的帧就要向发送端发送确认。发送端在一定的期限内若没有收到对方的确认,就认为出现了差错,因而就进行重传,直到收到对方的确认为止。这种方法在历史上曾经起到很好的作用。但现在的通信线路的质量已经大大提高了,由通信链路质量不好引起差错的概率已经大大降低。因此,现在互联网就采取了区别对待的方法:
对于通信质量良好的有线传输链路,数据链路层协议不使用确认和重传机制,即不要求数据链路层向上提供可靠传输的服务。如果在数据链路层传输数据时出现了差错并且需要进行改正,那么改正差错的任务就由上层协议(例如,运输层的TCP协议)来完成。
对于通信质量较差的无线传输链路,数据链路层协议使用确认和重传机制,数据链路层向上提供可靠传输的服务(见第9章)。
实践证明,这样做可以提高通信效率 。
可靠传输协议将在第5章中讨论。本章介绍的数据链路层协议都不是可靠传输的协议。
3.2 点对点协议PPP
对于点对点的链路,点对点协议 PPP(Point-to-Point Protocol)是目前使用得最广泛的数据链路层协议。
3.2.1 PPP协议的特点
我们知道,互联网用户通常都要连接到某个ISP才能接入到互联网。PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议(图3-9)。
1.PPP协议应满足的需求
(1)简单
IETF在设计互联网体系结构时把其中最复杂的部分放在TCP协议中,而网际协议IP则相对比较简单,它提供的是不可靠的数据报服务。在这种情况下,数据链路层没有必要提供比IP协议更多的功能。因此,对数据链路层的帧,不需要纠错,不需要序号,也不需要流量控制。IETF把“简单”作为首要的需求 。
总之,这种数据链路层的协议非常简单:接收方每收到一个帧,就进行CRC检验。如CRC检验正确,就收下这个帧;反之,就丢弃这个帧,其他什么也不做
。
(2)封装成帧
PPP协议必须规定特殊的字符作为帧定界符 (即标志一个帧的开始和结束的字符),以便使接收端从收到的比特流中能准确地找出帧的开始和结束位置。
(3)透明性
PPP协议必须保证数据传输的透明性。这就是说,如果数据中碰巧出现了和帧定界符一样的比特组合时,就要采取有效的措施来解决这个问题(见3.2.2节)。
(4)多种网络层协议
PPP协议必须能够在在同一条物理链路上同时支持多种网络层协议 (如IP和IPX等)的运行。当点对点链路所连接的是局域网或路由器时,PPP协议必须同时支持在链路所连接的局域网或路由器上运行的各种网络层协议。
(5)多种类型链路
除了要支持多种网络层的协议外,PPP还必须能够在多种类型的链路上运行。例如,串行的(一次只发送一个比特)或并行的(一次并行地发送多个比特),同步的或异步的,低速的或高速的,电的或光的,交换的(动态的)或非交换的(静态的)点对点链路。
(6)差错检测
(error detection) PPP协议必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧
。若在数据链路层不进行差错检测,那么已出现差错的无用帧就还要在网络中继续向前转发,因而会白白浪费许多的网络资源。
(7)检测连接状态
PPP协议必须具有一种机制能够及时(不超过几分钟)自动检测出链路是否处于正常工作状态。当出现故障的链路隔了一段时间后又重新恢复正常工作时,就特别需要有这种及时检测功能。
(8)最大传送单元
PPP协议必须对每一种类型的点对点链路设置最大传送单元 MTU的标准默认值 (4) 。这样做是为了促进各种实现之间的互操作性。如果高层协议发送的分组过长并超过MTU的数值,PPP就要丢弃这样的帧,并返回差错。需要强调的是,MTU是数据链路层的帧可以载荷的数据部分 的最大长度,而不是帧的总长度 。
(9)网络层地址协商
PPP协议必须提供一种机制使通信的两个网络层(例如,两个IP层)的实体能够通过协商知道或能够配置彼此的网络层地址。协商的算法应尽可能简单,并且能够在所有的情况下得出协商结果。这对拨号连接的链路特别重要,因为如果仅仅在链路层建立了连接而不知道对方网络层地址,则还不能够保证网络层可以传送分组。
(10)数据压缩协商
PPP协议必须提供一种方法来协商使用数据压缩算法。但PPP协议并不要求将数据压缩算法进行标准化。
在TCP/IP协议族中,可靠传输
由运输层的TCP协议负责
,因此数据链路层的PPP协议不需要进行纠错,不需要设置序号,也不需要进行流量控制。PPP协议不支持多点线路(即一个主站轮流和链路上的多个从站进行通信),而只支持点对点的链路通信。此外,PPP协议只支持全双工链路。
3.2.2 PPP协议的帧格式
不做具体介绍
3.2.3 PPP协议的工作状态
不做具体介绍
3.3 使用广播信道的数据链路层
3.3.1 局域网的数据链路层
不做具体介绍
3.3.2 CSMA/CD协议
不做具体介绍
3.3.3 使用集线器的星形拓扑
不做具体介绍
3.3.4 以太网的信道利用率
不做具体介绍
3.3.5 以太网的MAC层
1.MAC层的硬件地址
在局域网中,硬件地址
又称为物理地址
或MAC地址
(因为这种地址用在MAC帧中)。
“
名字
指出我们所要寻找的那个资源,地址
指出那个资源在何处,路由
告诉我们如何到达该处。”
IEEE 802标准为局域网规定了一种48位的全球地址(一般都简称为“地址”),是指局域网上的每一台计算机中固化在适配器的ROM中的地址 。
略
2.MAC帧的格式
不做具体介绍
3.4 扩展的以太网
3.4.1 在物理层扩展以太网
以太网上的主机之间的距离不能太远(例如,10BASE-T以太网的两台主机之间的距离不超过200米),否则主机发送的信号经过铜线的传输就会衰减到使CSMA/CD协议无法正常工作。在过去广泛使用粗缆或细缆以太网时,常使用工作在物理层的转发器来扩展以太网的地理覆盖范围。那时,两个网段可用一个转发器连接起来。IEEE 802.3标准还规定,任意两个站之间最多可以经过三个电缆网段。但随着双绞线以太网成为以太网的主流类型,扩展以太网的覆盖范围已很少使用转发器了。
现在,扩展主机和集线器之间的距离的一种简单方法就是使用光纤(通常是一对光纤)和一对光纤调制解调器,如图3-23所示。
光纤调制解调器的作用就是进行电信号和光信号的转换。由于光纤带来的时延很小,并且带宽很宽,因此使用这种方法可以很容易地使主机和几公里以外的集线器相连接。
如果使用多个集线器,就可以连接成覆盖更大范围的多级星形结构的以太网。例如,一个学院的三个系各有一个10BASE-T以太网(图3-24(a)),可通过一个主干集线器把各系的以太网连接起来,成为一个更大的以太网(图3-24(b))。
3.4.2 在数据链路层扩展以太网
扩展以太网更常用的方法是在数据链路层进行
。最初人们使用的是网桥 (bridge)。网桥对收到的帧根据其MAC帧的目的地址进行转发 和过滤 。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是根据此帧的目的MAC地址,查找网桥中的地址表,然后确定将该帧转发到哪一个接口,或者是把它丢弃(即过滤)。
1990年问世的交换式集线器 (switching hub),很快就淘汰了网桥。交换式集线器常称为以太网交换机 (switch)
或第二层交换机 (L2 switch),强调这种交换机工作在数据链路层 。
1.以太网交换机的特点
以太网交换机实质上就是一个多接口的网桥 ,通常都有十几个或更多的接口,和工作在物理层的转发器、集线器有很大的差别。以太网交换机的每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在全双工方式。以太网交换机还具有并行性,即能同时连通多对接口,使多对主机能同时通信(而网桥只能一次分析和转发一个帧)。相互通信的主机都是独占传输媒体,无碰撞地传输数据 。
2.以太网交换机的自学习功能
不做具体介绍
3.从总线以太网到星形以太网
不做具体介绍
3.4.3 虚拟局域网
不做具体介绍
3.5 高速以太网
随着电子技术的发展,以太网的速率也不断提升。从传统的10Mbit/s以太网一直发展到现在常用的速率为1Gbit/s的吉比特以太网,甚至更快的以太网。下面简单介绍几种高速以太网技术。
3.5.1 100BASE-T以太网
不做具体介绍
3.5.2 吉比特以太网
不做具体介绍
3.5.3 10吉比特以太网(10GE)和更快的以太网
不做具体介绍
3.5.4 使用以太网进行宽带接入
不做具体介绍
四、网络层
本章最重要的内容是:
(1)虚拟互连网络的概念。
(2)IP地址与物理地址的关系。
(3)传统的分类的IP地址(包括子网掩码)和无分类域间路由选择CIDR。
(4)路由选择协议的工作原理。
4.1 网络层提供的两种服务
在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。
传统电信网的主要业务是提供电话服务。电信网使用昂贵的程控交换机(其软件也非常复杂),用面向连接 的通信方式,使电信网络能够向用户(实际上就是电话机)提供可靠传输的服务。因此他们认为,计算机网络也应模仿打电话所使用的面向连接的通信方式。当两台计算机进行通信时,也应当先建立连接(但在分组交换中是建立一条虚电路
VC(Virtual Circuit) (1) ),以预留双方通信所需的一切网络资源。然后双方就沿着已建立的虚电路发送分组。这样的分组的首部不需要填写完整的目的主机地址,而只需要填写这条虚电路的编号(一个不大的整数),因而减少了分组的开销。这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点,当然也不丢失、不重复。在通信结束后要释放建立的虚电路。
图4-1(a)是网络提供虚电路服务
的示意图。主机H 1 和H 2 之间交换的分组都必须在事先建立的虚电路上传送
。
互联网采用的设计思路是这样的:网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务
(2) 。这里的“数据报”(datagram)是互联网的设计者最初使用的名词,其实数据报(或IP数据报)就是我们经常使用的“分组”。在本书中,数据报和分组是同义词,可以混用。
网络在发送分组时不需要先建立连接
。每一个分组(也就是IP数据报)独立发送,与其前后的分组无关(不进行编号)。
网络层不提供服务质量的承诺
。也就是说,所传送的分组可能出错、丢失、重复和失序(即不按序到达终点),当然也不保证分组交付的时限。由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器比较简单,且价格低廉(与电信网的交换机相比较)。
如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责(包括差错处理、流量控制等)
。
采用这种设计思路的好处是:网络造价大大降低,运行方式灵活,能够适应多种应用。互联网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性。
图4-1(b)给出了网络提供数据报服务的示意图。主机H 1 向H 2 发送的分组各自独立地选择路由,并且在传送的过程中还可能丢失。
表4-1归纳了虚电路服务与数据报服务的主要区别。
4.2 网际协议IP
网际协议IP
是TCP/IP体系
中两个最主要的协议之一[STEV94][COME06][FORO10],也是最重要的互联网标准协议之一。
网际协议IP又称为Kahn-Cerf协议,因为这个重要协议正是Robert Kahn和Vint Cerf二人共同研发的。这两位学者在2005年获得图灵奖(其地位相当于计算机科学领域的诺贝尔奖)。严格来说,这里所讲的IP其实是IP的第4个版本,应记为IPv4
。
与IP协议配套使用的还有三个协议:
- 地址解析协议ARP (Address Resolution Protocol)
- 网际控制报文协议ICMP (Internet Control Message Protocol)
- 网际组管理协议IGMP (Internet Group Management Protocol)
图4-2画出了这三个协议和网际协议IP的关系。
在这一层中,ARP画在最下面,因为IP经常要使用这个协议。ICMP和IGMP画在这一层的上部,因为它们要使用IP协议。这三个协议将在后面陆续介绍。由于网际协议IP是用来使互连起来的许多计算机网络能够进行通信的,因此TCP/IP体系中的网络层
常常被称为网际层
(internet layer),或IP层 。使用“网际层”这个名词的好处是强调这是由很多网络构成的互连网络
。
4.2.1 虚拟互连网络
从一般的概念来讲,将网络互相连接起来要使用一些中间设备
。根据中间设备所在的层次,可以有以下四种不同的中间设备:
(1)物理层
使用的中间设备叫做转发器
(repeater)。
(2)数据链路层
使用的中间设备叫做网桥
或桥接器
(bridge)。
(3)网络层
使用的中间设备叫做路由器
(router) (3) 。
(4)在网络层以上
使用的中间设备叫做网关
(gateway)。用网关连接两个不兼容的系统需要在高层进行协议的转换。
路由器其实就是一台专用计算机,用来在互联网中进行路由选择。由于历史的原因,许多有关TCP/IP的文献曾经把网络层使用的路由器称为网关 (本书有时也这样用),对此请读者加以注意。
图4-3(a)表示有许多计算机网络通过一些路由器进行互连。由于参加互连的计算机网络都使用相同的网际协议 IP(Internet Protocol),因此可以把互连以后的计算机网络看成如图4-3(b)所示的一个虚拟互连网络 (internet)。所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络 。这种使用IP协议的虚拟互连网络可简称为IP网 (IP网是虚拟的,但平常不必每次都强调“虚拟”二字)。使用IP网的好处是:当IP网上的主机进行通信时,就好像在一个单个网络上通信一样,它们看不见互连的各网络的具体异构细节(如具体的编址方案、路由选择协议,等等)。如果在这种覆盖全球的IP网的上层使用TCP协议,那么就是现在的互联网(Internet)。
在图4-4所示的互联网中的源主机H 1 要把一个IP数据报发送给目的主机H 2 。根据第1章中讲过的分组交换的存储转发概念,主机H 1 先要查找自己的路由表,看目的主机是否就在本网络上。如是,则不需要经过任何路由器而是直接交付 ,任务就完成了。如不是,则必须把IP数据报发送给某个路由器(图中的R 1 )。R 1 在查找了自己的路由表 (4) 后,知道应当把数据报转发给R 2 进行间接交付 。这样一直转发下去,最后由路由器R 5 知道自己是和H 2 连接在同一个网络上,不需要再使用别的路由器转发了,于是就把数据报直接交付 目的主机H 2 。图中画出了源主机、目的主机以及各路由器的协议栈。我们注意到,主机的协议栈共有五层,但路由器的协议栈只有下三层。图中还画出了数据在各协议栈中流动的方向(用黑色粗线表示)。我们还可注意到,在R 4 和R 5 之间使用了卫星链路,而R 5 所连接的是个无线局域网。在R 1 到R 4 之间的三个网络则可以是任意类型的网络。总之,这里强调的是:互联网可以由多种异构网络互连组成
。
如果我们只从网络层考虑问题,那么IP数据报就可以想象是在网络层中传送,其传送路径是:
H 1 →R 1 →R 2 →R 3 →R 4 →R 5 →H 2
这样就不必画出许多完整的协议栈,使问题的描述更加简单。
有了虚拟互连网络的概念后,我们再讨论在这样的虚拟网络上如何寻址。
4.2.2 分类的IP地址
有关IP最重要的文档就是互联网的正式标准RFC 791。
1. IP地址及其表示方法 。
整个的互联网就是一个单一的、抽象的网络 。IP地址就是给互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32位的标识符。IP地址的结构使我们可以在互联网上很方便地进行寻址。IP地址现在由互联网名字和数字分配机构ICANN (Internet Corporation for Assigned Names and Numbers)进行分配 (5) 。
IP地址的编址方法共经过了三个历史阶段。
(1)分类的IP地址
。这是最基本的编址方法,在1981年就通过了相应的标准协议。
(2)子网的划分
。这是对最基本的编址方法的改进,其标准RFC 950在1985年通过。
(3)构成超网
。这是比较新的无分类编址方法
。1993年提出后很快就得到推广应用。
所谓“分类的IP地址”就是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,
其中第一个字段是网络号
(net-id),它标志主机(或路由器)所连接到的网络。一个网络号在整个互联网范围内必须是唯一的。
第二个字段是主机号
(host-id),它标志该主机(或路由器)。一台主机号在它前面的网络号所指明的网络范围内必须是唯一的。由此可见,一个IP地址在整个互联网范围内是唯一的
。
图4-5给出了各种IP地址的网络号字段和主机号字段,这里A类、B类和C类地址都是单播地址 (一对一通信),是最常用的。
从图4-5可以看出:
A类、B类和C类地址的网络号字段(在图中这个字段是灰色的)分别为1个、2个和3个字节长,而在网络号字段的最前面有1~3位的类别位 ,其数值分别规定为0,10和110。
A类、B类和C类地址的主机号字段分别为3个、2个和1个字节长。
D类地址(前4位是1110)用于多播 (一对多通信)。我们将在4.6节讨论IP多播。
E类地址(前4位是1111)保留为以后用。
由于近年来已经广泛使用无分类IP地址
进行路由选择,A类、B类和C类地址的区分已成为历史
[RFC 1812],但由于很多文献和资料都还使用传统的分类的IP地址,而且从概念的演进上更清晰,因此我们在这里还要从分类的IP地址讲起。
把IP地址划分为A类、B类、C类三个类别,当初是这样考虑的。各种网络的差异很大,有的网络拥有很多主机,而有的网络上的主机则很少。把IP地址划分为A类、B类和C类是为了更好地满足不同用户的要求。当某个单位申请到一个IP地址时,实际上是获得了具有同样网络号的一块地址。其中具体的各台主机号则由该单位自行分配,只要做到在该单位管辖的范围内无重复的主机号即可。
对主机或路由器来说,IP地址都是32位的二进制代码。为了提高可读性,我们常常把32位的IP地址中的每8位插入一个空格(但在机器中并没有这样的空格 )。为了便于书写,可用其等效的十进制数字表示,并且在这些数字之间加上一个点。这就叫做点分十进制记法
(dotted decimal notation)。图4-6是一个B类IP地址的表示方法。显然,128.11.3.31比10000000 00001011 00000011 00011111书写起来要方便得多。
2. 常用的三种类别的IP地址 。
表4-3给出了一般不使用的特殊IP地址,这些地址只能在特定的情况下使用。
IP地址具有以下一些重要特点。
(1)每一个IP地址都由网络号和主机号两部分组成。从这个意义上说,IP地址是一种分等级的地址结构 。分两个等级的好处是:第一,IP地址管理机构在分配IP地址时只分配网络号 (第一级),而剩下的主机号(第二级)则由得到该网络号的单位自行分配。这样就方便了IP地址的管理;第二,路由器仅根据目的主机所连接的网络号来转发分组 (而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间以及查找路由表的时间 。
(2)实际上IP地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的。这种主机称为多归属主机 (multihomed host)。由于一个路由器至少应当连接到两个网络,因此一个路由器至少应当有两个不同的IP地址。这好比一个建筑正好处在北京路和上海路的交叉口上,那么这个建筑就可以拥有两个门牌号码。例如,北京路4号和上海路37号。
(3)按照互联网的观点,一个网络是指具有相同网络号net-id的主机的集合,因此,用转发器或网桥连接起来的若干个局域网仍为一个网络 ,因为这些局域网都具有同样的网络号。具有不同网络号的局域网必须使用路由器进行互连。
(4)在IP地址中,所有分配到网络号的网络(不管是范围很小的局域网,还是可能覆盖很大地理范围的广域网)都是平等 的。所谓平等,是指互联网同等对待每一个IP地址。
路由器总是具有两个或两个以上的IP地址。即路由器的每一个接口都有一个不同网络号的IP地址
。
当两个路由器直接相连时(例如通过一条租用线路),在连线两端的接口处,可以分配也可以不分配IP地址。如分配了IP地址,则这一段连线就构成了一种只包含一段线路的特殊“网络”。
4.2.3 IP地址与硬件地址
主机的IP地址与硬件地址 (7) 的区别。
图4-8说明了这两种地址的区别。从层次的角度看,物理地址
是数据链路层
和物理层
使用的地址 ,而IP地址
是网络层和以上各层
使用的地址,是一种逻辑地址
(称IP地址为逻辑地址是因为IP地址是用软件实现的)。
在发送数据时,数据从高层下到低层,然后才到通信链路上传输。使用IP地址的IP数据报一旦交给了数据链路层,就被封装成MAC帧了。MAC帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在MAC帧的首部中。
连接在通信链路上的设备(主机或路由器)在收到MAC帧时,根据MAC帧首部中的硬件地址决定收下或丢弃。
只有在剥去MAC帧的首部和尾部后把MAC层的数据上交给网络层后,网络层才能在IP数据报的首部中找到源IP地址和目的IP地址。
总之,IP地址放在IP数据报的首部,而硬件地址则放在MAC帧的首部。在网络层和网络层以上使用的是IP地址
,而数据链路层及以下使用的是硬件地址
。在图4-8中,当IP数据报放入数据链路层的MAC帧中以后,整个的IP数据报就成为MAC帧的数据,因而在数据链路层看不见数据报的IP地址。