计算机网络第七版重点精简


第一章 概述

本章重要内容:
(1)互联网边缘部分和核心部分的作用
(2)计算机网络的性能指标
(3)计算机网络分层的体系结构

1.1 计算机网络在信息时代的作用

21世纪的重要特征:数字化、网络化、信息化,一个以网络为核心的信息时代。
有三类网络:电信网络(提供电话、电报、传真等服务)、有线电视网络(传送电视节目)和计算机网络(在计算机之间传送数据文件)。计算机网络是信息化过程的核心。
20世纪90年代后,以Internet为代表的计算机网络飞速发展,从最初仅供美国人使用的免费教育科研网络,发展为供全球使用的商业网络。
Internet译名:(1)因特网,全国科学技术名词审定委员会推荐,翻译较准确,但未得到推广。(2)互联网,流行译名。Internet由大量各种计算机互联,该译名可体现出Internet的主要特征。
仅在局部范围互连起来的计算机网络只能称为互连网,而不是互联网。互联网之所以能够向用户提供很多服务,基于两个重要特点:连通性(不管距离多远都可以便捷经济地交换信息)和共享(资源共享)。


1.2 互联网概述

起源于美国的互联网已发展未世界上最大的覆盖全球的计算机网络。
计算机网络(简称网络)由若干结点(node)和连接这些结点的链路(link)组成。网络中的结点可以是计算机、集线器、交换器或路由器等。
网络之间通过路由器互连,构成一共覆盖范围更大的计算机网络,称为互连网。互连网是网络的网络。与网络相连的计算机常称为主机(host)。

互联网的基础结构大体上经历了三个阶段的演进。
第一个阶段:从单个网络ARPNET向互连网发展的过程。1969年美国国防部创建了第一个分组交换网ARPNET。1983年TCP/IP协议称为ARPNET的标准协议,所有使用该协议的计算机都能利用互连网通信,因此1983年被作为互连网的诞生时间。
internet(互连网)是一个通用名词,泛指由多个计算机网络互连而成的计算机网络。这些网络之间的通信协议可任意选择。
Internet(互联网,或因特网)是一个专用名词,指当前全球最大开放的、由众多网络相互连接而成的特定互联网,采用TCP/IP协议族作为通信规则,前身是美国的ARPNET。
第二阶段的特点是建成了三级结构的互联网(主干网、地区网、校园网或企业网)。
第三阶段的特点是形成了多层次ISP结构的互联网。互联网服务提供者ISP就是一个进行商业活动的公司,也译为互联网服务提供商(中国电信中国移动)。所谓上网就是指通过某ISP获得的IP地址接入到互联网。
ISP按照提供服务的覆盖面积大小和拥有IP地址数目的不同分为:主干ISP(由几个专门公司创建和维持,服务面积最大)、地区ISP(较小的ISP,通过主干ISP连接)和本地ISP(给用户提供直接的服务,可以连接到地区ISP或主干ISP)。
互联网交换点IXP的主要作用:允许两个网络直接相连并交换分组,不需要再通过第三个网络来转发分组。IXP由一个或多个网络交换机组成,许多ISP再连接到这些网络交换机的相关端口。IXP常采用工作在数据链路层的交换机,这些交换机都用局域网互连起来。
互联网的迅猛发展始于20世纪90年代,欧洲原子核研究组织CERN开发的万维网WWW被广泛使用在互联网上。

所有的互联网标准都是以RFC(请求评论)的形式在互联网发表的。
制定互联网的正式标准要经历:(1)互联网草案(2)建议标准(此时成为RFC文档)(3)互联网标准


1.3 互联网的组成

从工作方式上可分为:(1)边缘部分,由所有连接在互联网上的主机组成。这部分是用户直接使用的,用来进行通信和资源共享。(2)核心部分,由大量网络和连接这些网络的路由器组成,为边缘部分提供服务(连通性和交换)。
处在互联网边缘的部分就是连接在互联网上的所有主机,又称为端系统。边缘部分利用核心部分的服务使众多主机之间能够互相通信并交换或共享数据。主机A和主机B通信,是指主机A的某个进程和主机B的另一个进程通信,简称为计算机之间通信。
在网络边缘的端系统之间的通信方式可分为:客户-服务器方式(C/S)和对等方式(P2P)。
客户-服务器方式是最常用的,也是传统方式,如发送电子邮件和上网查找资料。客户(client)和服务器(server)都是指通信中设计的两个应用进程。客户-服务器方式描述的是进程之间服务和被服务的关系。客户是服务请求方,服务器是服务提供方。
客户程序特点:被客户调用后主动向远地服务器发起通信,因此必须知道服务器程序的地址。不需要特殊硬件和复杂的操作系统。
服务器程序特点:专门用来提供某种服务的程序,可同时处理多个远地或本地客户请求。系统启动后自动调用并不断运行,被动等待并接受来自各地的客户通信请求。不需要知道客户程序的地址。一般需要强大的硬件和高级操作系统的支持。
对等连接是指两台主机在通信时并不区分哪一个是服务请求方哪一个是服务提供方。从本质上对等连接方式依旧是客户-服务器方式,只是对等连接中的每一台主机既是客户又是服务器。

网络核心部分向网络边缘中的大量主机提供连通性,使边缘部分的任何一台主机都能够向其他主机通信。在网络核心部分起特殊作用的是路由器(router),它是一种专用计算机(不叫主机)。路由器是实现分组交换的关键构建,其任务是转发收到的分组,是网络核心部分最重要的功能。
电路交换:交换就是按照某种方式动态地分配传输线路的资源。必须经过建立连接(占用通信资源)->通话(一直占用通信资源)->释放连接(归还通信资源)三个步骤的交换方式称为电路交换。电路交换的重要特点:在通话的全部时间内,通话的两个用户始终占用端到端的通信资源。电路交换传送计算机数据的效率很低。
分组交换:采用存储转发技术。把要发送的整块数据称为一个报文(message),发送前将其划分为一个个更小的等长数据段,在每一个数据段之前加上一些必要的控制信息组成的首部(header)后就构成了一个分组(packet)。分组又称为包,而分组的首部也可以称为包头。分组是在互联网中传送的数据单元。分组的首部中包含了诸如目的地址和源地址等重要信息,因此每个分组才能在互联网中独立选择传输路径并被正确交付到分组传输的终点。
位于网络边缘的主机和位于网络核心部分的路由器都是计算机,但作用不一样。主机是为用户进行信息处理的,并可以和其他主机通过网络交换信息。路由器是用来转发分组的。
路由器暂时存储的是一个个短分组,不是整个的长报文。短分组暂存在路由器的存储器(内存)中而不是磁盘中,这保证了较高的交换速率。分组交换在传送数据之前不必先占用一条端到端的链路的通信资源,分组是断续占用通信资源的,因而数据传输效率高。
采用存储转发的分组交换,实质上是采用了在数据通信的过程中断续(或动态)分配传输带宽的策略。适合传送突发式的计算机数据。为提高分组交换网的可靠性,互联网的核心部分常采用网状拓扑结构。
分组交换的优点:(1)高效,动态分配传输带宽,逐段占用通信链路。(2)灵活,为每一个分组独立选择最合适的转发路由。(3)迅速,以分组作为单位,可以不先建立连接就能向其他主机发送分组。(4)可靠,保证可靠性的网络协议。
分组交换的问题:(1)存储转发需要排队,存在一定时延。(2)不预先建立连接,无法确保通信时端到端所需的带宽。(3)携带的控制信息造成开销。
电路交换:整个报文的比特流连续地从源点直达终点,好像在一个管道中传送。
报文交换:整个报文先传送到相邻结点,全部存储后查找转发表再转发到下个结点。
分组交换:单个分组传送到相邻结点,存储下来后查找转发表转发到下个结点。
若要连续传送大量数据且传送时间远大于建立时间,则电路交换的传输速率较快。报文交换和分组交换不需要预先分配传输带宽,在传送突发数据时可提高网络的信道利用率。由于分组的长度远小于整个报文的长度,分组交换比报文交换时延小,也具有更好的灵活性。


1.4 计算机网络在我国的发展

最早着手建设专用计算机广域网的是铁道部,1989年我国第一个公用分组交换网CNPAC建成运行。1994年我国用64kbit/s专线正式接入互联网,同年中科院设立了第一个万维网服务器。


1.5 计算机网络的类别

1.按照网络的作用范围
(1)广域网WAN 作用范围几十到几千公里,也称远程网。广域网是互联网的核心部分,任务是通过长距离运送主机发送的数据。连接广域网的各结点交换机的链路是高速链路,有较大的通信容量。
(2)城域网MAN 作用范围一般是城市,约5-50km。用来将多个局域网互连,许多城域网采用以太网技术,因此有时也并入局域网范围讨论。
(3)局域网LAN 一般用微型计算机或工作站通过高速通信线路相连,地理上局限在较小范围(1km左右)。
(4)个人区域网PAN 在个人工作的地方把属于个人使用的电子设备用无线技术连接起来的网络,也称无线个人区域网WPAN,范围很小,大约在10m左右。
若中央处理器之间距离非常近(1m甚至更小),则称多处理机系统而不是计算机网络。
2.按照网络的使用者
(1)公用网 指电信公司建造的大型网络,所有按规定付费的人都可使用,也称公众网。
(2)专用网 某个部门为满足本单位的特殊业务需要建造的网络,一般不对外提供服务。
3.用来把用户接入到互联网的网络
接入网AN(Access Network),称为本地接入网或居民接入网。接入网本身既不属于互联网的核心部分,也不属于边缘部分。接入网是从某个用户端系统到互联网的第一个路由器(边缘路由器)之间的一种网络。从覆盖范围看属于局域网。初期用户多用电话线拨号接入,速率很低,现在多用宽带接入。


1.6 计算机网络的性能

计算机网络的性能一般指它的几个重要指标,此外一些非性能特征也对计算机网络的性能有很大影响。
计算机网络的性能指标:
(1)速率 计算机发出的信号都是数字形式的。网络中速率指数据的传送速率,也称数据率或比特率,一个比特就是二进制数字的一个0或1。
(2)带宽 原指某个信号具有的频带宽度(频域称谓),单位是赫兹。计算机网络中,带宽表示网络中某通道传送数据的能力(时域称谓),网络带宽表示单位时间内某信道能通过的最高数据率,单位即数据率的单位bit/s。
(3)吞吐量 单位时间内通过某个网络(信道/接口)的实际数据量。受到带宽或网络额定速率的限制。
(4)时延 数据从网络(链路)的一端传送到另一端所需的时间,也称迟延或延迟。
1.发送时延:主机或路由器发送数据帧需要的时间,也就是发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间,也叫传输时延。
发送时延=数据帧长度(bit)/发送速率(bit/s)
2.传播时延:电磁波在信道中传播一定的距离需要花费的时间。
传播时延=信道长度(m)/电磁波在信道上的传播速率(m/s)
发送时延发生在机器内部的发送器中(一般在网络适配器中),与传输信道的长度(或信号传送的距离)无关。传播时延发生在机器外部的信道媒体上,与信号的发送速率无关。
3.处理时延:主机或路由器收到分组时要花费一定时间进行处理。
4.排队时延:分组进入路由器后要再输入队列中排队等待处理。
对于高速网络链路,提高的仅是数据的发送速率,而不是比特在链路上的传播速率。
(5)时延带宽积 =传播时延x带宽,又称以比特为单位的链路长度,表示链路可容纳多少个比特。
(6)往返时间RTT 有效数据率=数据长度/(发送时间+RTT)
(7)利用率 有信道利用率和网络利用率,信道利用率指某信道有百分之几的时间是被利用的(有数据通过),完全空闲的信道利用率为0。网络利用率时全网络的信道利用率的加权平均值。
网络当前时延D=网络空闲时延D0/(1-利用率U)。信道或网络的利用率过高会产生非常大的时延。

计算机网络的非性能特征
(1)费用 一般来说网速越高,价格越高
(2)质量 取决于网络中构件的质量和构件组成网络的方式
(3)标准化 最好采用国际标准,可得到更好的互操作性,易于得到技术支持
(4)可靠性 与网络的性能和质量密切相关
(5)可扩展性和可升级性 性能越高扩展费用和难度越高
(6)易于管理和维护 没有良好管理和维护很难达到和保持目标性能


1.7 计算机网络的体系结构

相互通信的两个计算机系统必须高度协调,为设计这样复杂的计算机网络,最初ARPNET设计时就提出了分层的方法。分层可将庞大而复杂的问题转化为若干较小的局部问题,从而易于研究和管理。
为使不同网络体系结构的计算机网络实现互连,国际标准化组织ISO提出了著名的开放系统互连参考模型OSI/RM,简称OSI。开放指非独家垄断,只要遵循OSI标准,系统就可和世界上任何地方的也遵循统一标准的其他任何系统通信。系统指在现实的系统中与互连有关的各部分。OSI是抽象概念,1983年形成了ISO 7498国际标准,即七层协议的体系结构。
OSI失败原因:(1)专家缺乏实际经验(2)实现复杂,效率低(3)制订周期太长,按OSI标准生产的设备无法及时进入市场(4)层次划分不合理,有些功能在多层次重复

网络协议:为网络中的数据交换建立的规则、标准或约定
由以下三个要素组成:(1)语法,数据与控制信息的结构或格式(2)语义,需要发出何种控制信息,完成何种动作以及做出何种响应(3)同步,事件实现顺序的详细说明
分层好处:
(1)各层之间是独立的。某一层不需要知道它下一层的具体实现,只需要知道该层通过层间接口所提供的服务。降低了整个问题的复杂性。
(2)灵活性好。任何一层发生变化时,只要层间接口的关系不变,则这层以上或以下均不受影响。
(3)结构上可分隔开 各层都可采用最合适的技术实现
(4)易于实现和维护
(5)可促进标准化工作 分层时应使每一层的功能非常明确,各层的功能主要有以下(可包含一种或多种):差错控制,使相应层次对等方的通信更加可靠;流量控制,发送端的发送速率必须使接收端来得及接受;分段和重装,发送端将数据库划分,在接收端还原;复用和分用,发送端几个高层会话复用一条低层连接,在接收端再进行分用;连接建立和释放,交换数据前先建立一条逻辑连接,数据传送结束后释放。
网络的体系结构:计算机网络的各层及其协议的集合。体系结构是抽象的,实现是具体的,是真正在运行的计算机硬件和软件。

OSI的七层协议体系结构概念清楚,理论完整,但既复杂又不实用。TCP/IP体系结构则不同,TCP/IP是一个四层体系结构,包含应用层、运输层、网际层和网络接口层。从实质上讲TCP/IP只有最上面的三层,因为网络接口层没有具体内容。因此学习计算机网络原理时往往采取折中方法,综合OSI和TCP/IP的优点,采用一种只有五层协议的体系结构。
(1)应用层
体系结构中的最高层,任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。应用层协议:DNS、HTTP、SMTP。应用层数据单元:报文(message)。
(2)运输层
运输层的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务。由于一台主机可同时运行多个进程,因此运输层有复用和分用的功能。复用就是多个应用层进程可同时使用下面运输层的服务,分用是运输层把收到的信息分别交付上面应用层中的相应进程。
运输层主要使用以下两种协议:
传输控制协议TCP:提供面向连接的、可靠的数据传输服务,数据传输单位是报文段(segment)。
用户数据报协议UDP:提供无连接的、尽最大努力的数据传输服务(不保证数据传输的可靠性),数据传输单位是用户数据报。
(3)网络层
网络层负责为分组交换网上的不同主机提供通信服务,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。在TCP/IP体系中,网络层使用IP协议,因此分组也叫做IP数据报,或简称数据报。
无论哪一层传送的数据单元,都可笼统地用分组来表示,运输层的用户数据报UDP和网络层的IP数据报不同。
网络层的另一个任务即选择合适的路由,使源主机运输层传下来的分组,能够通过网络中的路由器找到目的主机。网络层中的网络不是通常提到的具体网络,而是计算机网络体系结构模型中的第三层的名称。
互联网由大量的异构网络通过路由器相互连接起来。互联网使用的网络层协议是无连接的网际协议IP和许多种路由选择协议,因此互联网的网络层也叫做网际层或IP层。
(4)数据链路层
简称为链路层。两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧(framing),在两个相邻结点之间的链路上传送帧(frame)。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。
接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始到哪个比特结束。还使接收端能够检测收到的帧中有无差错,如发现差错就简单地丢弃。
(5)物理层
传送的数据单位是比特。物理层要考虑用多大的电压代表1或0,以及接收方如何识别发送方所发送的比特。物理层还要确定连接电缆的插头应有多少根引脚以及各引脚如何连接。传递信息所利用的物理媒体,如双绞线、同轴电缆、光缆、无线信道等并不在物理层协议内而是其下面。
TCP/IP并不一定单指TCP和IP两个具体的协议而是表示互联网所使用的整个TCP/IP协议族。

主机1的应用进程M向主机2的应用进程N传送数据时,M将数据交给应用层,应用层加上控制信息后(变为下一层的数据单元)再传给运输层,如此逐层递交,到了第二层(数据链路层)后,控制信息被分为两部分,分别加到本数据单元的首部和尾部,而第一层(物理层)由于是比特流的传送,所以不加控制信息,传送比特流时应从首部开始。OSI将对等层之间传送的数据单位称为该层的协议数据单元PDU。
比特流离开主机1经网络的物理媒体传送到路由器,从路由器的第一层依次上升到第三层,每一层都根据控制信息进行必要操作,然后剥去控制信息,将剩下的数据单元交给更高层。当分组到第三层时根据首部中的目的地址查找路由器中转发表,找出转发分组的接口,然后往下传送到第二层,加上新的首部和尾部,再到第一层,发送比特。
比特流到达主机2时,就从主机2的第一层按上述方式依次上升到第五层,最后把应用进程M发送的数据交给目的站的应用进程N。

使用实体(entity)表示任何发送或接收信息的硬件或软件进程,许多情况下实体就是一个特定的软件模块。
协议是控制两个对等实体进行通信的规则的集合。协议的语法定义了所交换的信息的格式,协议的语义定义了发送者或接收者所要完成的操作。在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下面一层提供的服务。
协议和服务是不同的。协议的实现保证了能够向上一层提供服务,使用本层服务的实体只能看见服务而无法看见下面的协议,下面的协议对上面的实体是透明的。
协议是水平的,是控制对等实体直接的通信规则。但服务是垂直的,即由下层向上层通过层间接口提供的。只有能被高一层实体看得见的功能才能称为服务,上层使用下次服务必须通过与下层交换一些命令(在OSI中称为服务原语)。
同一系统中相邻两层的实体进行交互的地方称为服务访问点SAP。SAP是一个抽象概念呢,实际上是一个逻辑接口,OSI把层与层之间交换的数据的单位称为服务数据单元SDU,它可以与PDU不一样,例如可以是多个SDU合为一个PDU,也可以是一个SDU划分为几个PDU。
第n层向第n+1层提供的服务已经包括在它以下的各层提供的服务。第n层的实体对第n+1的实体相当于一个服务提供者,在服务提供者的上一层的实体又称为服务用户,因为它使用下层服务提供者提供的服务。
协议必须把所有不利的条件实现估计到,而不能假定一切都是正常的和非常理想的。因此看一台计算机网络协议是否正确,不能只看正常情况下是否正确,还必须非常仔细检查这个协议能否应付各种异常情况。
TCP/IP协议可为各种应用提供服务,同时TCP/IP协议也允许IP协议在各式各样的网络构成的互联网上允许。IP协议在互联网中起核心作用。


1.8 本章的重要概念

计算机网络(简称网络)把许多计算机连接在一起,而互连网则把许多网络连在一起,是网络的网络。
以i小写开头的internet(互连网)是通用名词,泛指由多个计算机网络互连而成的网络,在这些网络之间的通信协议可以是任意。
以I大写开头的Internet(互联网)是专用名词,指当前全球最大的、开发的、由众多网络相互连接而成的特定互连网,并采用TCP/IP协议族作为通信规则,前身是美国的ARPNET。
互联网采用存储转发的分组交换技术以及三层ISP结构。
互联网按工作方式分为边缘部分与核心部分。主机在网络的边缘部分,作用时进行信息处理。路由器在网络的核心部分,其作用是按存储转发方式进行分组交换。
计算机通信时计算机中进程的通信,通信方式分为客户-服务器方式和对等连接方式(P2P)。
客户和服务器都是通信中涉及的应用进程,客户是服务请求方,服务器是服务提供方。
按作用范围不同,计算机网络分为广域网WAN、城域网MAN、局域网LAN和个人区域网PAN。
计算机网络的常用性能指标:速率、带宽、吞吐量、时延、时延带宽积、防范时间和信道(网络)利用率。
网络协议即协议,是为进行网络中的数据交换而建立的规则,计算机网络的各层及其协议的集合,称为网络的体系结构。
五层协议的体系结构由应用层、运输层、网络层(网际层)、数据链路层和物理层组成。运输层最重要的协议是TCP和UDP协议,而网络层最重要的是IP协议。


第二章 物理层

本章重要内容:
(1)物理层的内容
(2)几种常用的信道复用技术
(3)几种常用的宽带接入技术,主要是ADSL和FTTx

2.1 物理层的基本概念

物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽掉传输媒体和通信手段的差异,使物理层上面的数据链路层感觉不到这些差异,使其只需考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体和通信手段。用于物理层的协议也称物理层规程。
将物理层的主要任务描述为确定与传输媒体接口有关的一些特性:
(1)机械特性:指明接口所用接线器的相关规定。
(2)电气特性:指明接口电缆的各条线上出现的电压范围。
(3)功能特性:指明某条线上出现的某一电平的电压的意义。
(4)过程特性:指明对于不同功能的各种可能事件的出现顺序。
数据在计算机内部多采用并行传输,但在通信线路(传输媒体)上的传输方式一般都是串行传输,即逐个比特按照时间顺序传输。因此物理层还要完成传输方式的转换。
物理层协议种类较多,因为物理连接方式很多,而传输媒体的种类也很多,学习物理层时,重点放在掌握基本概念上。


2.2 数据通信的基本知识

一个数据通信系统可划分为三大部分,源系统(发送端、发送方)、传输系统(传输网络)和目的系统(接收端、接收方)。
源系统一般包括以下两部分:
(1)源点(source) 源点设备产生要传输的数据,源点又称源站,或信源。
(2)发送器 源点生成的数字比特流通过发送器编码后才能够在传输系统进行传输,典 型的发送器是调制器。
(3)接收器 接受传输系统传送过来的信号,并把它转换为能够被目的设备处理的信息。 典型的接收器是解调器,它把来自传输线路上的模拟信号解调,提取出在发送端置入的 消息,还原出数字比特流。
(4)终点(destination) 终点设备从接收器获取传送来的数字比特流,然后把信息输 出。终点又称为目的站,或信宿。
源系统和目的系统之间的传输系统可以是简单的传输线,也可以是连接在两系统之间的复杂网络系统。
通信的目的是传送消息(message)。数据(data)是运送消息的实体,数据是使用特定方式表示的信息,通常是有意义的符号序列。信号(signal)是数据的电气或电磁的表现。
根据信号中代表消息的参数的取值方式不同,信号可分为以下两大类:
(1)模拟信号,或连续信号 代表消息的参数的取值是连续的。用户家中的调制解调器到电话端局之间的用户线上传送的就是模拟信号。
(2)数字信号,或离散信号 代表消息的参数的取值是离散的。用户家中的计算机到调制解调器之间,或在电话网中继线上传送的就是数字信号。在使用时间域的剥削表示数字信号时,代表不同离散数值的基本波形称为码元。二进制编码时,只有两种不同的码元,一种代表0状态一种代表1状态。

信道(channel)和电路并不等同,信道一般都是用来表示向某个方向传送信息的媒体。因此一条通信电路往往包含一条发送信道和一条接收信道。
从通信双方的信息交互方式来看,有以下三种基本方式:
(1)单向通信 又称单工通信,即只能有一个方向的通信而没有反方向的交互。例如:无线电广播、有线电广播,电视广播。
(2)双向交替通信 又称半双工通信,即通信双方都可以发送信息,但不能双方同时发送。一方发送而另一方接收,过一段时间后可以再反过来。
(3)双向同时通信 又称全双工通信,即通信的双方可以同时发送和接收信息。
单向通信只需要一条信道,而双向交替通信或双向同时通信都需要两个信道(每个方向各一条)。双向同时通信的传输效率最高。
来自信源的信号常称为基带信号(基本频带信号)。计算机输出的代表各种文字或图像文件的数据信号都属于基带信号。基带信号一般包含较多低频成分,甚至直流成分,许多信道不能传输这种低频分量或直流分量,为解决该问题必须对基带信号进行调制。
调制可分为两大类。一类仅对基带信号的波形进行变换,使它与信道特性相适应,变换后的信号仍是基带信号,这类调制叫基带调制。由于这种调制时把数字信号转换成另一种形式的数字信号,也成为编码(coding)。另一类调制则需要使用载波(carrier)进行调制,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号。经过载波调制的信号为带通信号,使用载波的调制称为带通调制。

常用编码方式:
(1)不归零制 正电平=1,负电平=0
(2)归零制 正脉冲=1,负脉冲=0
(3)曼彻斯特编码 位周期中心的向上跳变=0,位周期中心的向下跳变=1,也可反过来定义
(4)差分曼彻斯特编码 每一位的中心处始终有跳变,位开始边界有跳变=0,位开始边界没有跳变=1
基本的带通调制方法:
(1)调幅(AM)载波的振幅随基带数字信号变化,例如1或0分别对应无载波和有载波输出。
(2)调频(FM) 载波的频率随基带数字信号变化,例如1或0分别对应频率f1或f2。
(3)调相(PM) 载波的初始相位随基带数字信号变化,例如1或0分别对应相位0度或180度。
为达到更高信息传输速率,必须采用技术上更为复杂的多元制的振幅相位混合调制,如正交振幅调制QAM。

数字通信的优点:虽然信号在信道上产生失真,但接收端只要从失真的波形中识别出原来的信号,那么对通信质量就没有影响。码元传输速率越高,信号传输的距离越远,或噪声干扰越大,传输媒体质量越差,在接收端的波形失真就越严重。
限制码元在信道上传输速率的因素有以下两个:
(1)信道能通过的频率范围
在接收端收到的信号波形失去了码元之间的清晰界限,这种现象叫做码间串扰。1924年内奎斯特推导出了奈式准则。在任何信道中,码元传输的速率是有上限的,传输速率超过此上限,就会出现严重的码间串扰问题,使接收端对码元的判决(识别)成为不可能。
信道频带越宽,能通过的信号高频分量越多,那么就可以用更高速的速率传送码元而不出现码间串扰。
(2)信噪比
噪声存在于所有电子设备和通信设备中,由于噪声随机产生,它的瞬时值有时会很大,因此噪声会使接收端对码元的判决产生错误(1误判为0或0误判为1)。噪声影响是相对的,信号较强噪声的影响就较小。信噪比即信号的平均功率和噪声的平均功率之比,记为S/N,用分贝(dB)作为度量单位。
信噪比(dB)=10 log10(S/N)(dB)
1948年,香农推导出了香农公式,香农公式指出信道的极限信息传输速率C是
C=W log2(1+S/N)
W为信道的带宽(以Hz为单位),S为信道中所传信号的平均功率,N为信道内部的高斯噪声功率。香农公式表明,信道的带宽或信道中的信噪比越大,信息的极限传输速率就越高。该公式的意义在于:只要信息传输速率低于信道的极限信息传输速率,就一定存在某种方法来实现无差错的传输。
若频带宽度已确定的信道,如果信噪比也不能提高,可让每个码元携带更多比特的信息量以提高信息的传输速率。


2.3 物理层下面的传输媒体

传输媒体也称传输媒介或传输介质,它是数据传输系统中在发送器和接收器之间的物理通路。传输媒体可分为两大类,即导引型传输媒体和非导引型传输媒体。在导引型传输媒体中,电磁波被导引沿着固体媒体(铜线或光纤)传播,而非导引型传输媒体就是指自由空间,在非导引型传输媒体中电磁波的传输称为无线传输。

导引型传输媒体
(1)双绞线
双绞线也称双扭线,是最古老但又是最常用的传输媒体。把两根互相绝缘的铜导线并排放在一起,然后用规则的方法绞合起来就构成了双绞线。绞合可减少对相邻导线的电磁干扰,使用双绞线最多的是电话系统。从用户电话机到交换机的双绞线称为用户线或用户环路。
模拟传输和数字传输都可使用双绞线,通信距离一般为几到十几公里。距离太长时要加放大器将衰减信号放大(模拟传输)或加上中继器对失真的数字信号整形(数字传输)。导线越粗,通信距离越远,价格越高。
为提高双绞线抗电磁干扰能力,可在双绞线的外面再加一层用金属丝编织成的屏蔽层。这就是屏蔽双绞线,简称STP,价格高于无屏蔽双绞线UTP。
对传送数据来说,最常用的UTP是5类线,相比3类线大大增加了每单位长度的绞合次数,具有更高的绞合度,提高了线路的传输速率。
无论是哪种双绞线,衰减都随频率的升高而增大,使用更粗的导线可以降低衰减,但却增加了导线的重量和价格。信号应有足够大的振幅,以便在噪声干扰下能被接收端正确地检测出来。双绞线的最高速率与数字信号的编码方式有关。
(2)同轴电缆
同轴电缆由导体铜质芯线、绝缘层、网状编制的外导体屏蔽层以及保护塑料外层所组成。由于外导体屏蔽层的作用,同轴电缆有很好的抗干扰性,被广泛用于传输速率较高的数据。
局域网发展初期广泛使用同轴电缆,现在多用双绞线。同轴电缆主要用在有线电视网的居民小区中。同轴电缆的贷款取决于电缆的质量。
(3)光缆
光纤通信就是利用光导纤维传递光脉冲来进行通信。有光脉冲相当于1,没有相当于0。由于可见光频率非常高,因此光纤通信系统的传输带宽远远大于目前其他传输媒体的带宽。
光纤是光纤通信的传输媒体,发送端有光源,可采用发光二极管或半导体激光器,它们在电脉冲的作用下能产生光脉冲,在接收端利用光电二极管做成光检测器,检测到光脉冲时还原出电脉冲。
光纤通常由非常透明的石英玻璃丝拉成细丝,主要有纤芯和包层构成双层通信圆柱体。利用光的折射实现传输。
可以存在多条不同角度入社的光线在一条光纤中传输,这种光纤叫多模光纤。光脉冲在多模光纤中传输时会逐渐展宽,造成失真。因此多模光纤只适合近距离传输。若光线的直径减小到只有一个光的波长,则光线可一直向前传输,不会发生多次反射,这样的光纤称为单模光纤,成本较高,损耗小,可在高速率下传输远距离而不使用中继器。
光纤通信常用三个波段的中心分别位于850nm,1300nm和1550nm。后两种衰减较小,850nm衰减大但其他特性较好。所有三个波段都具有25000-30000GHz带宽,可见光纤通信容量非常大。
光纤除通信容量大,还有其他优点:
1.传输损耗小,中继距离长,对远距离传输经济。
2.抗雷电和电磁干扰性能好。
3.无串音干扰,保密性好,不易被窃听或截取数据。
4.体积小,重量轻。
(4)架空明线
铜线或铁线,在电线杆上架设地互相绝缘的明线,安装简单,通信质量差,已淘汰

非导引型传输媒体
当通信距离很远,敷设电缆既昂贵又费时,利用无线电波在自由空间的传播可较快地实现多种通信,由于该通信方式不使用各种导引型传输媒体,因此将自由空间称为非导引型传输媒体。
无线传输可使用的频段很广,紫外线和更高的波段目前还不能用于通信。
短波通信(高频通信)主要靠电离层的反射,但电离层的不稳定产生的衰落现象和电离层反射产生的多径效应(同一信号经过不同反射路径到达同一个接受点,但各反射路径的衰减和时延都不同,使得合成信号失真很大),使得短波信道的通信质量较差。使用短波无线电台传送数据时,一般都是低速传输,除非采用复杂的调制解调技术才能提速。
无线电微波通信在数据通信中占有重要地位,微波在空间主要是直线传播,传统的微波通信主要有两种,地面微波通信接力通信(由于微波直线传输而地球是曲面,传播距离受限,为实现远距离通信必须在一条微波通信信道的两个终端之间建立若干中继站,中继站把前一站送来的信号放大后再发送到下一站,称为接力)和卫星通信。
微波接力可传输电话、电报、图像、数据等信息,主要特点是:
(1)波段频率高,频段范围宽,通信信道容量很大
(2)传输质量高(工业干扰和天电干扰的主要频谱成分比微波频率低很多)
(3)与电缆载波通信比,建设投资小,见效快,易于跨山区,江河
微波缺点:
(1)相邻站之间必须直视(常称为视距LOS)不能有障碍物,否则会失真
(2)有时也会受恶劣天气影响
(3)与电缆通信比,屏蔽性和保密性较差
(4)中继站需要大量人力物力维护
卫星通信是利用人造同步地球卫星作为中继器的一种微波接力通信。主要优缺点和微波接力通信相似,最大特点是通信距离远,且费用和距离无关。另一特点是有较大的传播时延(不等同于传送数据的时延大)。适合偏远处的通信,还非常适合广播通信,覆盖面很广,但保密性较差。
红外通信、激光通信也使用非导引型媒体,可用于近距离的笔记本电脑相互传送数据。


2.4 信道复用技术

复用(multiplexing)是通信技术中的基本概念。
最基本的复用就是频分复用FDM和时分复用TDM。频分复用最简单,用户在分到一定频带后,在通信过程中始终占用这个频带,可见频分复用的所有用户在同样的时间占用不同的带宽资源。时分复用则将时间划分为一段段等长的时分复用帧(TDM帧),每个时分复用用户在每个TDM帧中占用固定序号的时隙。每个用户占用的时隙周期性出现,TDM信号也称等时信号,时分复用的所有用户在不同的时间占用同样的频带宽度。这两种复用的优点是技术成熟,缺点是不灵活。时分复用更有利于数字信号的传输。
在进行通信时,复用器总是和分用器成对使用,复用器和分用器之间的是用户共享的高速信道,分用器的作用和复用器相反,它把高速信道中的数据进行分用,交送到相应用户。
由于计算机数据的突发性质,当用户在某一端时间无数据传输时,已经分配到的子信道是空的且其他用户也无法使用,因此时分复用可能会造成线路资源的浪费。统计时分复用STDM,一种改进的时分复用,能明显提高信道利用率。集中器常使用STDM。
统计时分复用使用STDM帧传送复用数据,但每个STDM帧中的时隙数小于连接在集中器上的用户数。各用户有了数据就发往集中器的输入缓存,集中器按顺序依次扫描输入缓存,把缓存中输入的数据放入STDM帧,没有数据的缓存就跳过,满了就发送,因此STDM帧并非固定分配资源,而是动态按需分配,STDM可以提高线路的利用率。在输出线路上,某个用户的时隙不是周期性出现,因此STDM又称为异步时分复用,而普通的时分复用称为同步时分复用。集中器正常工作的前提是各用户都是间歇性工作,否则缓存将溢出。
由于STDM帧动态分配,因此每个时隙中必须又用户的地址信息。使用STDM的集中器也叫做智能复用器,它能提供对整个报文的存储转发能力。TDM帧和STDM帧都是在物理层传送的比特流中划分的帧,并非数据链路层的帧。

波分复用WDM就是光的频分复用,由于光的频率很高,所以习惯用波长而不使用频率来表示所使用的光载波。最初人们只能在一根光纤上复用两路光载波信号,叫做波分复用WDM,现在已能做到在一根光纤上复用几十路或更多路数的光载波信号,于是就使用了密集波分复用DWDM。
波分复用的复用器为光复用器(又称合波器),分用器为光分用器(又称分波器),光信号传输时会衰减,通过掺铒光纤放大器EDFA将光信号转换成电信号,经过电放大器放大后再转换成光信号。

码分复用CDM是另一种共享信道的方法。更常用的名词是码分多址CDMA,每个用户可在同样的时间使用同样的频带通信,由于各用户使用经过特殊挑选的不同码型,因此个用户之间不会造成干扰。码分复用最初用于军事通信,因其信号具有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现。现已广泛民用,特别是无线局域网中,CDMA可提高通信的话音质量和数据传输的可靠性,减少干扰影响,增大通信系统的容量等等。
CDMA中,每个比特时间再划分为m个短的间隔,称为码片。通常m=64或128。使用CDMA的每一个站被指配一个唯一的m bit码片序列。若要发送比特1,则发送自己的m bit码片序列。若要发送比特0,则发送该码片序列的二进制反码。码片中的0写为-1,1写为+1。假定S站要发送信息的数据率为b bit/s,由于每个比特要转换成m个比特的码片,则发送速率提高至mb bit/s,所占用的频带宽度也提高到m倍。这种通信方式是扩频通信中的一种,扩频通常有两大类,一种是直接序列扩频DSSS,如上述的使用码片序列就是这一种,另一种是跳频扩频FHSS。
CDMA系统的一个重要特点即这种体制给每一个站点分配的码片序列不仅必须各不相同,还必须相互正交。在使用的系统中是使用伪随机码序列。
令向量S表示站S的码片序列,T表示其他任何站的码片向量。两个不同站的码片序列正交,就是向量S和向量T的规格化内积都是0。任何一个码片向量和自己的规格化内积都为1,和自己反码的规格化内积为-1。


2.5 数字传输系统

早期电话网中,从市话局到用户电话机的用户线采用双绞线,而长途干线采用频分复用FDM的模拟传输方式。由于数字通信相比模拟通信无论质量还是经济上都有优势,目前长途干线大多采用时分复用PCM的数字传输方式。模拟线路基本只剩用户电话机到市话交换机之间的几公里长的用户线上。
数字化的同时,光纤开始成为长途干线最主要的传输媒体。光纤的高速带宽是用于承载高速率数据业务和大量服用的低速率业务。早期的数字传输系统存在许多缺点,主要是以下两个:(1)速率标准不统一。(2)非同步传输。为节约经费,各国数字网主要采用准同步方式,准同步系统中各支路信号时钟频率存在一定偏差,给时分复用和分用带来许多麻烦。为解决该问题,1988年美国推出了一个数字传输标准,同步光纤网SONET。


2.6 宽带接入技术

用户要连接到互联网,必须先连接到某个ISP,以获得上网所需的IP地址。从宽带接入的媒体看,可划分为有线宽带接入和无线宽带接入,此处讨论前者。

ADSL技术
非对称数字用户线ADSL技术使用数字技术对现有的模拟电话用户线进行改造,使它能够承载带宽数字业务。ADSL将低端频谱留给传统电话使用,把原来没有利用的高端频谱留给用户上网使用。由于用户上网主要是下载而非上传文件,因此ADSL的下行带宽(从ISP到用户)都远远大于上行(从用户到ISP)带宽,因此称为“非对称”。
ADSL的传输距离取决于数据率和用户线的线径(用户线粤西,信号传输时的衰减就越大)。此外ADSL所能得到的最高数据传输速率还与实际的用户线上的信噪比密切相关。
ADSL在用户线(铜线)的两端各安装一个ADSL调制解调器。我国目前采用的调制解调器实现方案使离散多音调DMT调制技术。多音调指多载波和多子信道。DMT调制技术采用频分复用FDM,把高端频谱划分为许多子信道,25个子信道用于上行信道,249个子信道用于下行信道,并用不同的载波(不同的音调)进行数字调制。这种做法相当于在一对用户线上使用许多小的调制器并行传送数据。由于用户线的具体条件差异大,因此ADSL采用自适应调制技术使用户线能够传送尽可能高的数据率。ADSL启动时,用户线两端的ADSL调制解调器就测试可用频率,各子信道干扰情况,信号的传输质量。这样ADSL就能选择合适的调制方案以获得较高的数据率,可见ADSL不能保证固定的数据率。
基于ADSL的接入网由以下三大部分组成:数字用户线接入复用器DSLAM,用户线和用户家中的一些设施。DSLAM包括许多ADSL调制解调器,ADSL调制解调器又称为接入端接单元ATU。由于ADSL调制解调器必须成对使用,因此把在电话端局(或远端站)和用户家中的ADSL调制解调器分别记为ATU-C(C表示端局Central Office)和ATU-R(R表示远端Remote)。用户电话通过电话分离器和ATU-R连接,经用户线到端局,并再次经过一个电话分离器把电话连到本地电话交换机。电话分离器是无源的(为在停电时不影响传统电话使用),它利用低通滤波器将电话信号和数字信号分开。
ADSL最大的好处即可以利用现有电话网中的用户线(铜线),而不需要重新布线。ADSL借助在用户线两端安装的ADSL调制解调器对数字信号进行了调制,使得调制后的数字信号的频谱适合在原来的用户线上传输。
第二代ADSL的改进:(1)通过提高调制效率得到了更高的数据率。(2)采用了无缝速率自适应技术SRA,可在运营中不断通信和不产生误码的情况下,根据线路实时状况,自适应调整数据率。(3)改善了线路质量测评和故障定位功能。
ADSL不适合企业,因为企业需要使用上行信道发送大量数据。为满足企业要求ADSL技术有几种变变型。如对称DSL即SDSL,还有一种使用一对线或两队线的DSL叫做HDSL,是用来取代T1线路的高速数字用户线。

光纤同轴混合网(HFC网)是在目前覆盖范围很广的有线电视网的基础上开发的一种居民宽带接入网,除可传送电视节目外还能提供电话、数据和其他宽带交换业务。最早的有线电视网是树形拓扑结构的同轴电缆网络,采用模拟技术的FDM对电视节目进行单向广播传输。现在的有线电视网进行了改造,变成了光纤同轴混合网(HFC网),HFC的主要特点如下。
为提高传输的可靠性和电视信号的质量,HFC网把元有线电视网中的同轴电缆主干部分换为光纤。光线从头端连接到光纤结点,在光纤结点光信号被转换为电信号,然后通过同轴电缆传送到用户家庭。
原来的有线电视网的最高传输速率450MHz且只用于电视信号的下行传输,现在的HFC具有双向传输功能,并且扩展了传输频带。
要使现有的模拟电视机能够接收数字电视信号,需要把一个叫做机顶盒的连接设备连接在同轴电缆和用户的电视机之间。为使用户能利用HFC网接入互联网,以及在上行信道中传送交互数字电视所需的一些信息,还需增加一个为HFC网使用的调制解调器,又称电缆调制解调器。电缆调制解调器不需要成对使用,只需要安装到用户端。

FTTx技术
光纤到户FTTH,即把光纤一直铺设到用户家庭,只有在光纤进入用户家门后,才把光信号转换为电信号,这样做可使用户获得最高上网速率。
两个问题:(1)价格昂贵(2)一般家庭无此高数据率的需求。
因此出现了多种宽带光纤接入方式,FTTx,x表示不同的光纤接入地点。实际上,FTTx就是把光电转换的地方,从用户家中(这时x为H)向外延伸到离用户家门口有一定距离的地方。
信号在陆地上的长距离传输基本都已实现光线话,ADSL和HFC中,用于远距离的传输媒体也早使用了光缆,在临近用户的地方才转为铜缆(用户的电话线和同轴电缆)。一个家庭元雍布拉一根光纤的通信容量,为有效利用光线资源,在光线干线和广大用户之间还需要铺设一段中间的转换装置即光配线网ODN,使得数十个家庭能共享一根光纤。无源的光配线网称为无源光网络PON,无源表示在光配线网中无须配备电源,因此基本不用维护。
光线路终端OLT是连接到光线干线的终端设备。OLT把收到的下行数据发往无源的1:N光分路器,然后用广播方式向所有用户端的光网络单元ONU发送。每个ONU根据特有的标识只接收发送给自己的数据,然后转换为电信号发往用户家中。
当ONU发送上行数据时,先把电信号转换为光信号,光分路器把各ONU发来的上行数据汇总后,以TDMA的方式发往OLT。
光配线网采用波分复用WDM,上行和下行分别使用不同的波长。
无源光网络PON主要有以下两种:
(1)吉比特无源光网络GPON,采用通用封装方法GEM,可承载多业务。
(2)以太网无源光网络EPON,在链路层使用以太网协议,利用PON的拓扑结构实现以太网的接入。优点:与现有以太网的兼容性好,成本低,扩展性强,方便管理。
现有很多种FTTx,除光纤到户FTTH外,还有光纤到路边FTTC(Curb),光纤到小区FTTZ(Zone),广信到大楼FTTB(Building),光纤到楼层FTTF(Floor),光纤到办公室FTTO(Office),光纤到桌面FTTD(Desk)等。


2.7 本章的重要概念

物理层的主要任务就是确定与传输媒体的接口有关的一些特性,如机械特性、电气特性、功能特性和过程特性。
一个数据通信系统可划分为三大部分,即源系统、传输系统和目的系统。源系统包括源点(或源站、信源)和发送器,目的系统包括接收器和终点(或目的站,信宿)。
通信的目的时传送消息,话音、文字、图像、视频等都是消息。数据是运送消息的实体,信号则是数据的电气或电磁的表现。
根据信号中代表消息的参数取值方式的不同,信号可分为模拟信号(连续信号)和数字信号(离散信号)。代表数字信号不同离散值的基本波形为码元。
根据双方信息交互的方式,通信可划分为单向通信(单工通信)、双向交替通信(半双工通信)和双向同时通信(全双工通信)。
来自信源的信号叫做基带信号。信号要在信道上传输就要经过调制,调制有基带调制和带通调制。最基本的带通调制方法有调幅、调频和调相。还有更复杂的调制方法,如正交振幅调制。
要提高数据在信道的传输速率,可使用更好的传输媒体,或使用先进的调制技术,但数据传输速率不可能被任意提高。
传输媒体可分为两大类,即导引型传输媒体(双绞线、同轴电缆或光纤)和非导引型传输媒体(无线或红外或大气激光)。
常用的信道复用技术有频分复用FDM、时分复用TDM、统计时分复用STDM、码分复用CDM和波分复用WDM(光的频分复用)。
最初在数字传输系统中使用的传输标准是脉冲编码调制PCM,现在高速的数字传输系统使用同步光纤网SONET(美国标准)或同步数字系列SDH(国际标准)。
用户到互联网的宽带接入方法有非对称数字用户线ADSL(用数字技术对现有的模拟电话用户线进行改造)、光纤同轴混合网HFC(在有线电视网的基础上开发的)和FTTx(即光纤到...)。
为有效利用光线资源,在光线干线和用户之间广泛使用无源光网络PON。无源光网络无需配备电源,其长期运营成本和管理成本都很低。最流行的无源光网络是以太网无源光网络EPON和吉比特无源光网络GPON。


第三章 数据链路层

数据链路层属于计算机网络的低层,该层使用的信道主要有以下两种:
(1)点对点信道。使用一对一的点对点通信方式。
(2)广播信道。使用一对多的广播信道通信方式,广播信道上连接了很多主机,因此必须使用专用的共享信道协议协调这些主机的数据发送。
网络层讨论分组如何从一个网络通过路由器转发到另一个网络,本章讨论分组怎样从一台主机传送到另一台主机,不经过路由器,从整个网络看,局域网属于数据链路层的范围。
本章最重要的内容是:
(1)数据链路层的点对点信道和广播信道的特点,以及这两种信道所用协议(PPP协议以及CSMA/CD协议)的特点。
(2)数据链路层的三个基本问题:封装成帧、透明传输和差错检测。
(3)以太网MAC层的硬件地址。
(4)适配器、转发器、集线器、网桥、以太网交换机的作用和使用场合。


3.1 使用点到点信道的数据链路层

链路和数据链路不是一回事,链路(link)是从一个结点到相邻结点的一段物理线路(有线或无线),而中间没有其他交换结点。进行数据通信时,两台计算机之间的通信路径往往要经过许多段链路,因此链路只是一条路径的组成部分。
数据链路(data link)是另一个概念。当需要在一条线路上传送数据时,除必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。最常用的方法是使用网络适配器(既包括硬件也包括软件)来实现这些协议。一般的适配器都包括数据链路层和物理层这两层的功能。
也有另外的术语,即把链路分为物理链路(上述链路)和逻辑链路(上述数据链路,是物理链路加上必要的通信协议)。
早期数据通信协议叫通信规程(procedure),因此在数据链路层,规程和协议是同义语。
数据链路层的协议数据单元PDU是帧。数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据提出并上交给网络层。互联网中,网络层的协议数据单元就是IP数据报(或简称数据报、包、分组)。
点到点信道的数据链路层在通信时的主要步骤:
(1)结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧
(2)结点A把封装好的帧发送给结点B的数据链路层
(3)若结点B的数据链路层收到的帧无差错,则提取出IP数据报上交网络层,否则丢弃这个帧。

数据链路层协议有许多种,但有三个基本的共同问题:封装成帧、透明传输和差错控制。
(1)封装成帧
封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧,接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
一个帧的帧长等于数据长度部分(IP数据报构成)加上帧首部和帧尾部的长度。首部和尾部的一个重要作用就是帧定界(即确定帧的界限)。此外首部和尾部还包括许多控制信息,在发送帧时,是从帧首部开始发送的。为提高帧传输效率,应使帧的数据部分长度仅可能大于首部和尾部,但每一种链路层协议都规定了所能传送的帧的数据部分长度上限——最大传输单元MTU(Maximum Transfer Unit)。
当数据由可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符。控制字符SOH(Start Of Header)放在帧的最前面,表示帧的首部开始,另一个控制字符EOT(End Of Transmission)表示帧的结束。SOH和EOT都是控制字符的名字,它们的16进制编码分别是01和04。
当数据在传输中出现差错时,帧定界的作用更加明显。假定发送端在尚未发送完一个帧时发生故障,中断了发送之后恢复正常,从头开始发送刚才未发完的帧,由于使用了帧定界符,接收端就知道前面收到的数据是不完整的帧(只有SOH而没有EOT),必须丢弃。
(2)透明传输
当传送帧是用文本文件组成的帧时,其数据部分不会出现SOH或EOT这样的帧界定控制符。因此不管从键盘上输入什么字符都可以放在这样的帧中传输过去,这样的传输就是透明传输。
但当数据部分时非ASCII码的文本文件时,情况就不同了。如果数据中某个字节的二进制代码恰好和SOH或EOT一样,数据链路层会错误地找到帧的边界收下部分帧而把剩下的数据丢弃。
透明是一个重要术语,它表示:某一个实际存在的事物看起来却好像不存在一样。在数据链路层透明传送数据,表示无论什么样的比特组合的数据,都能按原样没有差错地通过数据链路层。因此对传送数据来说,这些数据就“看不见”数据链路层有什么妨碍数据传输的东西。
为解决透明传输,必须设法使数据中可能出现的控制字符SOH和EOT在接收端不被解释为控制字符。具体的方法是:发送端的数据链路层在数据中的SOH或EOT之前插入一个转义字符ESC(其16进制编码为1B),而在接收端的数据链路层在把数据送往网络层之前删除这个ESC。这种方法称为字节填充或字符填充。如果转义字符也出现在数据,那就在ESC前再加一个ESC。
(3)差错控制
比特在传输过程中可能产生差错:1可能变成0,0可能变成1,这就叫比特差错。比特差错是传输差错的一种。在一段时间内,传输错误的比特占所传输比特总数的比率就叫误码率BER(Error Bit Rate)。误码率和信噪比有关,如果设法提高信噪比,误码率就会减小。为保证数据传输可靠性,必须采用各种差错检测措施,目前在数据链路层广泛使用了循环冗余检测CRC的检错技术。
在发送端,先把数据划分为组,假定每组k个比特。假定待传送数据M=101001(k=6),CRC运算就是在M的后面添加n位供差错检测用的冗余码,然后构成一个(k+n)位的帧发送出去。
n位冗余码用以下方法得出。用二进制的模2运算进行2n乘M,相当于在M后面添加n个0,得到的(k+n)位数除以事先约定的长度为(n+1)的除数P得到商Q和余数R(n位,比除数少一位)。例M=101001,P=1101即n=3,经模2除法得出的结果是商Q=110101(商无用),R=001。这个余数R就作为冗余码拼接在M的后面发送出去,这种为了检错而添加的冗余码称为帧检测码FCS,因此加上FCS后发送的帧是101001001(即2nM+FCS)。
接收端把接收到的数据以帧为单位进行CRC校验:把收到的每一个帧都出以同样的除数P(模2运算),然后检查余数R。如果传输无差错,那么R=0。若R=0,判定帧没有差错,接收,如果R不等于0,则判断帧有差错并舍弃。
一种较简便的方法是用多项式来表示循环冗余检验过程。例如用P(X)=X3+X2+1表示1101。多项式P(X)称为生成多项式。
在数据链路层,发送端帧检验序列FCS和接收端CRC检验都是用硬件完成的,处理迅速,不会延误数据的传输。从上述讨论可知如果不以帧为单位传送数据就无法加入冗余码来进行差错检验,因此要在数据链路层进行差错检验就必须把数据划分位帧,每一帧都加上冗余码,一帧一帧地发送然后在接收端逐帧进行差错检验。
若仅使用CRC,则只能做到对帧的无差错接受,即凡是接收端数据链路层接受的帧,我们都能以非常接近1的概率认为这些帧在传输中没有出现差错。出现差错的帧虽然曾接收到了但最终会被丢弃。
差错传输分类两大类:一类是前述最基本的比特差错,而另一类传输差错更复杂,就是收到的帧没有比特差错,但出现了帧丢失、帧重复或帧失序。
过去OSI的观点是:必须让数据链路层向上提供可靠传输,因此在CRC的基础上增加了帧编号、确认和重传机制。收到正确的帧就要向发送端发送确认,发送端未在时限内收到对方确认就会进行重传直到收到对方确认位置。但现在的通信线路质量已大大提高,互联网以采用了区别对待的方法。
对通信质量良好的有线传输链路,数据链路层协议不使用确认和重传机制,即不要求向上提供可靠的传输服务。如果在数据链路层传输数据时出现差错并需要更正,那么改正差错的任务交给上层协议(如运输层的TCP)来完成。
对通信质量较差的无线传输链路,数据链路层协议使用确认和重传机制,向上提供可靠的服务。实践证明,这样做可以提高通信效率。


3.2 点对点协议PPP

通信线路质量较差的年代,多使用可实现可靠传输的高级数据链路控制HDLC,现在HDLC已很少使用了,对于点对点的链路,简单得多的点对点协议PPP是目前使用的最广泛的数据链路层协议。
互联网用户通常需要连接到某个ISP才能接入互联网,PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议。
PPP协议应满足的需求:
(1)简单
IETF设计互联网体系结构时将最复杂的部分放在TCP协议中,而网际协议IP则相对简单,提供不可靠的数据包服务。因此数据链路层没必要提供比IP协议更多的功能,对数据链路层的帧,不需要纠错,不需要序号,也不需要流量控制。IETF把简单作为首要需求。
简单的设计可使协议在实现时不易出错,从而使不同厂商在协议的不同实现上的互操作性提高了。数据链路层的协议非常简单:接收方每接收到一个帧,就进行CRC检验,如果正确就接收,否则丢弃,其他什么也不做。
(2)封装成帧
PPP协议必须规定特殊字符作为帧定界符(即标志一个帧开始和结束的字符),以便接收端从收到的比特流中能准确找出帧的开始和结束位置。
(3)透明性
PPP协议必须保证数据传输的透明性,这就是说如果数据中碰巧出现了和帧定界符一样的比特组合时,就要采取有效的措施解决。
(4)多种网络层协议
PPP协议必须能够在同一条物理链路上同时支持多种网络层协议的运行。当点对点链路所连接的是局域网或路由器时,PPP协议必须同时支持在链路所连接的局域网或路由器上运行的各种网络层协议。
(5)多种类型链路
除要支持多种网络层协议外,PPP还必须能够在多种类型的链路上运行。例如,串行的或并行的,同步的或异步的,低速的或高速的,电的或光的,交换的(动态的)或非交换的(静态的)点对点链路。
在以太网上运行的PPP,即PPPoE,这是PPP协议能适应多种类型链路的一个典型例子。PPPoE是为宽带上网的主机使用的链路层协议,宽带上网时由于传输速率较高,因此可让多个连接在以太网上的用户共享一条到ISP的宽带链路,即使只有一个用户利用ADSL进行宽带上网(不和其他人分享到ISP的宽带链路),也是使用PPPoE协议。
(6)差错检测
PPP协议必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。
(7)检测连接状态
PPP协议必须具有一种机制能够及时(不超过几分钟)自动检测出链路是否处于正常工作状态。
(8)最大传送单元
PPP协议必须对每一种类型的点对点链路设置最大传送单元MTU的标准默认值(1500B),这样做是为了促进各种实现之间的互操作性。MTU是数据链路层的帧可以载荷的数据部分的最大长度,不是帧的总长度。
(9)网络层地址协商
PPP协议必须提供一种机制使通信的两个网络层的实体能通过协商知道或能配置彼此的网络层地址。协商算法应尽可能简单,并满足所有情况。对拨号连接的链路尤为重要。
(10)数据压缩协商
PPP协议必须提供一种方法来协商数据压缩算法,但并不要求该算法标准化。
在TCP/IP协议族中,可靠传输由运输层的TCP协议复杂,因此数据链路层的PPP协议不需要进行纠错,不需要设置序号,也不需要进行流量控制。PPP协议不支持多点线路(即一个主站轮流和链路上的多个从站通信),只支持点对点的链路通信,此外PPP只支持全双工链路。
PPP协议的组成:
(1)一个将IP数据报封装到串行链路的方法。PPP既支持异步链路(无奇偶检验的8比特数据),也支持面向比特的同步链路。
(2)一个用来建立、配置和测试数据链路连接的链路控制协议LCP。
(3)一套网络控制协议NCP,其中每个协议支持不同的网络层协议。

PPP协议的帧格式
首部(F A C 协议)+信息部分+尾部(FCS F)
(1)各字段的意义
PPP帧的首部和尾部分别为四个字段和两个字段。首部的第一个字段和尾部的第二个字段都是标志字段F,规定为0x7E,标志字段表示一个帧的开始或结束。因此标志字段就是PPP帧的定界符,连续两帧之间只需要一个标志字段。如果出现连着两个标志字段,就表示一个应当丢弃的空帧。
首部中的四个字段为标志字段F,地址字段A和控制自字段C,2B的协议字段。信息字段的长度可变,不超过1500B。尾部的第一个字段(2B)是使用CRC的帧检验序列FCS,第二个字段是标志字段F。
F、A、C均为1B,协议和FCS为2B,信息部分不超过1500B。
(2)字节填充
当PPP使用异步传输时,它把转义字符定义为0x7D,并使用字节填充。
由于在发送端进行了字节填充,因此在链路上传送的信息字节就超过了原来的信息字节数,但接收端在收到数据后再进行与发送端字节填充的相反变换,就可正确恢复出原有信息。
(3)零比特填充
PPP协议在使用SONET/SDH链路时,使用同步传输(一连串的比特连续发送)而不是异步传输(逐个字符传送)。在这种情况下,PPP采用零比特填充法来实现透明传输。
具体做法:发现有5个连续的1,则填入一个0,保证信息字段不会出现连续6个1。接收端在收到一个帧时,先找到标志字段F确定一个帧的边界,再用硬件对比特流扫描,当发现5个连续的1时就删除后面的0。

PPP协议的工作状态
当用户拨号接入ISP后,就建立了一条从用户个人电脑到ISP的物理连接,这时用户电脑向ISP发送一系列链路控制协议LCP分组。这些分组及其响应选择了一些需要的PPP参数,接着还要进行网络配置,网络控制协议NCP给新接入的用户分配一个临时IP地址,通信完毕后,NCP释放网络层连接收回IP地址,接着LCP释放数据链路层连接,最后释放物理层连接。
PPP链路的起始和终止状态永远都是链路静止状态,此时用户个人电脑和ISP的路由器之间不存在物理层连接。当用户电脑通过调制解调器呼叫路由器时,路由器能检测到调制解调器发出的载波信号,双方建立了物理层连接后,PPP就进入了链路建立状态,目的是为了建立链路层的LCP连接。
这时LCP开始协商配置选项,即发送LCP的配置请求帧,链路的另一端可发送以下几种响应的一种:
(1)配置确认帧 所有选项都接受
(2)配置否认帧 所有选项都理解但不接受
(3)配置拒绝帧 选项有的无法识别或不能接受,需要协商。
协商结束后双方建立LCP链路,进入鉴别状态。该状态下只允许传送LCP协议的分组、鉴别协议的分组和监测链路质量的分组。若使用口令鉴别协议PAP,则需要发起通信的一方发送身份标识符和口令。还可以使用更复杂的口令握手鉴别协议CHAP。若鉴别失败则转到链路终止状态,若鉴别成功,则进入网络层协议状态。
在网络层协议状态,PPP链路两端的网络控制协议NCP根据网络层的不同协议互相交互网络层特定的网络控制分组。当网络层配置完成后,链路就可进入链路打开状态,链路的两个PPP端点可以彼此向对方发送分组。两个PPP端点还可发送回送请求LCP分组和回送回答LCP分组以检查链路的状态。
数据传输结束后可由链路一端发出终止请求LCP分组请求终止链路连接,在收到对方发来的终止确认LCP分组后,转到链路终止状态。若链路出现故障,也会从链路打开转到链路终止状态。当调制解调器的载波停止后,回到链路静止状态。
从设备之间无链路开始,先建立物理链路,再建立链路控制协议LCP链路。经过鉴别后再建立网络控制协议NCP链路然后才能交换数据。由此可见PPP协议不是纯粹的数据链路层协议,还包含了物理层和网络层的内容。


3.3 使用广播信道的数据链路层

广播信道可以进行一对多的通信,局域网使用的就是广播信道。
局域网最主要的特点:网络为一个单位所有,且地理范围和站点数目有限。
局域网的主要优点:
(1)具有广播功能,从一个站点可以很方便地访问全网。
(2)便于系统的扩展和逐渐演变,各设备的位置可灵活调整。
(3)提高了系统的可靠性、可用性和生存性。
局域网可按网络拓扑分类:
(1)星形网。由于集线器的出现和双绞线大量用于局域网中,星形以太网以及多级星形结构的以太网获得了广泛应用。(2)环形网。(3)总线网,各站直接连在总线上。以传统以太网最为著名。
局域网可使用多种传输媒体,双绞线是主流,当数据率很高时需要使用光纤。
局域网工作的层次跨越了数据链路层和物理层,不仅与数据链路层有关。
共享信道解决众多用户合理方便共享通信媒体资源的两种方法:
(1)静态划分信道,如2.4节中的频分复用FDM、时分复用TDM、波分复用WDM和码分复用CDM等。用户只要分配了信道就不会和其他人冲突,但代价高不适合局域网。
(2)动态媒体介入控制,又称多点接入,特点是信道并非在用户通信时固定分配给用户,又分为两类:①随机接入,特点是所有用户可随机发送信息。如果恰好由两个或以上用户在同一时刻发送信息,在共享媒体上会发生碰撞(冲突)。②受控接入,特点是用户不能随机发送而必须服从控制。代表由分散控制的令牌环局域网和集中控制的多点线路探寻,或称为轮询。

以太网的两个标准
以太网用无源电缆作为总线传输数据帧,并以曾在历史上表示传播电磁波的以太命名。
DEC公司、英特尔公司和施乐公司礼盒提出了10 Mbit/s以太网规约的第一个版本DIX V1,1982年修改为第二版规约DIX Ethernet V2。
在此基础上,IEEE 802委员会(专门制定局域网和城域网标准的机构)于1983年制定了第一个IEEE的以太网标准IEEE 802.3,数据率约为10Mbit/s。由于DIX Ethernet V2和IEEE的802.3标准很小,因此很多人把802.3局域网称为以太网。
IEEE 802委员会未能形成统一的局域网标准,而是被迫制定了几个不同的局域网标准,如802.4令牌总线网、802.5令牌环网等。为使数据链路层更好适应多种局域网标准,IEEE 802委员会把局域网的数据链路层拆分为两个子层,逻辑链路控制LLC子层和媒体接入控制MAC子层。于介入到传输媒体有关的内容放在MAC子层,而LLC子层与传输媒体无关,不管采用何种传输媒体和MAC子层的局域网对LLC子层来说都是透明的。
随着互联网的发展,局域网只剩下DIX Ethernet V2而不是IEEE 802.3标准中的局域网,因此LLC的作用已经消失了,很多厂商的适配器仅有MAC协议而没有LLC协议。

适配器的作用
计算机与外界局域网的连接是通过通信适配器进行的。适配器是一块网络接口板,又称网络接口卡NIC简称网卡。适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的,而适配器和计算机之间的通信则是通过计算机主板上的I/O总线以并行传输方式进行的。因此适配器的一个重要功能即进行数据串行传输和并行传输的转换。由于网络和计算机总线上的数据率不同,还需要在适配器中装有对数据进行缓存的存储芯片。在主板插入适配器时,还必须安装管理该适配器的设备驱动程序至计算机的操作系统,该程序将告之计算机应当从存储器的什么位置把多长的数据块发送到局域网,或者在存储器的什么位置把局域网传来的数据块存储下来。适配器还要能够实现以太网协议。
适配器的功能包含了数据链路层和物理层两个层次的功能。
适配器在接受和发送帧时,不使用计算机的CPU。当适配器收到有差错的帧时,直接丢弃而不必通知计算机,当收到正确帧时,使用中断通知计算机,并交付协议栈中的网络层。当计算机要发送IP数据报时,由协议栈把IP数据报向下交给适配器,组装成帧后发到局域网。计算机的硬件地址就在适配器的ROM中,而计算机的软件地址(IP地址)则在计算机的存储器中。

CSMA/CD协议
最早的以太网是将许多计算机连接到一根总线上。总线的特点是:使用广播通信方式,当一台计算机发送数据时,总线上的所有计算机都能检测到这个数据。为了在总线上实现一对一的通信,可以使每一台计算机的适配器拥有一个与其他适配器都不同的地址,仅当数据帧的目的地址和适配器ROM中的硬件地址一样时,适配器才能接收这个数据帧。
为了通信的简便,以太网采用了以下两种措施:
(1)采用较为灵活的无连接工作方式,即不必先建立连接就可直接发送数据。适配器对发送的数据帧不进行编号,也不要求对方发回确认。因此以太网提供的服务是尽最大努力的交付,即不可靠的交付。对有差错帧是否需要重传由高层决定。例如TCP发现丢失数据后就把数据重新传递给以太网重传,但以太网并不知道这是重传帧,而是当作新数据帧。
总线上只要有一台计算机在发送数据,总线的传输资源就被占用,因此同一时间只允许一台计算机发送数据,否则会计算机之间会互相干扰。以太网采用的协调方法是使用CSMA/CD协议,意思是载波监听多点接入/碰撞检测。
(2)以太网发送的数据都使用曼彻斯特编码的信号。二进制基带数字信号的问题是出现一长串的连0或连1时接收端就无法从收到的比特流中提取同步位。曼彻斯特编码保证了每个码元的正中间出现一次电压转换,而接收端就利用这种转换方便地提取同步信号。缺点是所占的频带宽度增加了一倍。
CSMA/CD协议的要点:
(1)多点接入 说明这是总线型网络,许多计算机以多点接入的方式连接在总线上。协议的实质是载波监听和碰撞检测。
(2)载波监听 用电子技术检测总线上有没有其他计算机也在发送,不管发送前还是发送中,每个站都必须不停地检测信道。
(2)碰撞检测 边发送边监听,即适配器边发送数据边检测信道上的信号电压的变化情况,以判断自己在发送数据时其他站是否也在发送数据,也称冲突检测。
电磁波在1km电缆的传播时延约为5μs。在局域网中,常把总线上的单程端到端传播时延记为τ,站发送数据后最迟要经过两倍的总线端到端传播时延(2τ)或总线的端到端往返传播时延才能知道自己发送的数据和其他站的数据有没有发送碰撞。由于局域网上任意两站间传播时延有长有短,因此局域网必须按照最坏情况设计,即取总线两端的两个站之间的传播时延(这两个站之间距离最大)为端到端传播时延。
显然在使用CSMA/CD协议时一个站不可能同时进行发送和接受(必须边发送边监听信道),因此使用CSNA/CD协议的以太网不可能进行全双工通信而只能进行双向交替通信(半双工通信)。
每个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性,这一小段时间是不确定的,它取决于另一个发送数据的站到本站的距离。因此以太网不能保证某一时间之内一定能把自己的数据帧成功地发送出去,这一特点称为发送的不确定性。
以太网的端到端往返时间称为争用期,又称为碰撞窗口,因为一个站在发送完数据后,只有通过争用期的“考验”,即经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
以太网使用截断二进制指数退避算法来确定碰撞后重传的时机,这种算法让发生碰撞的站在停止发送数据后,不是等待信道空闲后就立即发送数据,而是推迟(退避)一个随机时间。协议规定了基本退避时间为争用期2τ,具体的争用期时间是51.2μs。对于10Mbit/s以太网,在争用期可发送512bit,即64B,也可以说争用期是512比特时间。
从离散的整数集合[0,1,...,2k-1]中随机取出一个数记为r,重传应退后的时间就是r倍的争用期。重传次数不超过10,k=重传次数,当超过10次时,k=10。当重传达16次仍未成功时,丢弃该帧,并向高层报告。
以太网规定了一个最短帧长64B,即521bit,如果要发送的数据非常少,必须加入一些填充字节。
以太网在发送数据时,如果在争用期(发送64B)没有发生碰撞,那么后续发送的数据就一定不会冲突。如果发生碰撞,一定是在发送之前的64B内,因此凡是长度小于64B的帧都是由于冲突而异常终止的无效帧,收到后应当立即丢弃。
强化碰撞,当发送数据的一战发现发生了碰撞时,除了立即停止发送数据外,还要再继续发送32bit或48bit的人为干扰信号,以便所有用户都知道现在已发生了碰撞。
以太网还规定了帧间最小间隔为9.6μs,相当于96比特时间,这样做是为了使刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。
CSMA/CD协议的要点:
(1)准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中。但在发送前必须先检测信道。
(2)检测信道:若检测信道忙,应不停地检测,直到信道转为空闲。若检测信道空闲,并在96比特时间内信道保持空闲(保持了帧间最小间隔),就发送这个帧。
(3)在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。这里只有两种可能性:①发送成功:在争用期未检测到碰撞,发送成功后什么也不做返回(1)。②发送失败:在争用期内检测到碰撞,立即停止发送数据,按规定发送人为干扰信号。适配器执行指数退避算法,等待r倍512比特时间后回到步骤(2)。若重传16次仍不能成功,停止重传上报错误。
以太网每发送一帧,一定要把已发送的帧暂时保留一下,如果在争用期内检测到碰撞,那么还要推迟一段时间后再把这个暂时保留的帧重传一次。

传统以太网最初使用同轴电缆,最后发展为使用双绞线。这种以太网采用星形拓扑,在星形中心增加了可靠性很高的设备,叫集线器。双绞线以太网总是和集线器配合使用,由于集线器使用了大规模集成电路芯片,因此可靠性大大提高。1990年IEEE制定出星形以太网10BASE-T的标准802.3i。10代表10Mbit/s的数据率,BASE表示连接线上的信号是基带信号,T表示双绞线。10BASE-T以太网通信距离稍短,每个站到集线器的距离不超过100m。
使双绞线能够传输高速数据的主要措施是把双绞线的绞合度做的非常精确,可使特性阻抗均匀以减少失真,而且大幅度减少了电磁波辐射和无线电频率干扰。
集线器的特点如下:
(1)使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是CSMA/CD协议(各站中的适配器执行CSMA/CD协议)。网络中的各站必须竞争对传输媒体的控制,并在同一时刻至多只允许一个站发送数据。
(2)一个集线器有许多接口(硬件端口),每个接口通过RJ-45插头用两对双绞线与一台计算机上的适配器相连。因此一个集线器很像一个多接口的转发器。
(3)集线器工作在物理层,它的每个接口仅仅简单地转发比特,收到1就转发1,收到0就转发0,不进行碰撞检测。若发生碰撞那么所有接口都收不到正确的帧。
(4)采用专门芯片进行自适应串音回波抵消,可使发出地较强信号不致对接收到的较弱信号产生干扰。
集线器本身非常可靠,堆叠式集线器由4-8个集线器堆叠起来使用。集线器一般都有少量的容错能力和网络管理功能。IEEE802.3还可使用光纤作为传输媒体,相应标准是10BASE-F系列,F代表光纤。它主要作用于集线器之间的远程连接。
以太网定义了参数a,它是以太网单程端到端时延τ与帧的发送时间T0之比,以太网的参数a值应尽可能小些,当数据率一定时,以太网的连线长度受到限制(否则τ太大),同时以太网的帧长不能太短(否则T0的值太小)。
极限信道利用率Smax=1/(1+a),当a远小于1时才能得到尽可能高的极限信道利用率。

以太网的MAC层
MAC层的硬件地址
局域网中,硬件地址又称为物理地址或MAC地址(因为这种地址用在MAC帧中)。IEE802标准为局域网规定了一种48位的全球地址,是局域网上的每一台计算机中固化在适配器的ROM中的地址。因此,
(1)更换了新的适配器后即使计算机的物理位置和接入的局域网没有任何改变,但这台计算机的局域网的地址改变了。
(2)即使改变了计算机的物理位置和接入的局域网,只要适配器不变,那么计算机在局域网中的地址就不变。
严格地讲,局域网的地址应当是每一个站的名字或标识符。如果连接在局域网上的主机或路由器有多个适配器,那么它就有多个地址。更准确地说,这种48位地址应当是某个接口的标识符。
MAC地址也叫硬件地址或物理地址,MAC地址实际上就是适配器地址或适配器标识符EUI-48。当这块适配器插入或嵌入某台计算机后,适配器的标识符EUI-48就成为这台计算机的MAC地址了。
IEEE规定地址字段的第一个字节位的最低位为I/G位,当其为0时,地址字段表示一个单个站地址,为1时表示组地址,用来进行多播。因此IEEE只分配地址段的前三个字节中的23位。IEEE把地址字段第一个字节的最低第二位规定为G/L位,0表示全球管理,1表示本地管理。
当路由器通过适配器连接到局域网时,适配器上的硬件地址就用来标志路由器的某个接口。路由器如果同时连接两个网络,那么它就需要两个适配器和两个硬件地址。
适配器有过滤功能。当适配器从网络收到每个MAC帧就先用硬件检测其目的地址,若是发往本站的帧则收下否则丢弃。发往本站的帧包括以下三种:
(1)单播帧(一对一) 即收到的帧与本站硬件地址相同
(2)广播帧(一对全体) 即发送给本局域网上所有站点的帧
(3)多播帧(一对多) 即发送给本局域网上一部分站点的帧
所有的适配器都应至少能识别前两种帧,即单播和广播地址。
以太网适配器还可设置为一种特殊的工作方式,即混杂方式。该工作方式是黑客常利用来非法获取网上用户口令的方法,适配器只要“听到”有帧在以太网传输就悄悄接收下来而不管这些帧是发往哪个站。但混杂方式有时非常有用,例如网络维护人员用以监视和分析以太网的流量。有一种叫做嗅探器的网络工具就使用了设置为混杂方式的网络适配器。

MAC帧的格式
常用的以太网MAC帧格式有两种标准,一种是以太网V2标准,一种是IEEE的802.3标准。这里讨论用的最多的以太网V2的MAC帧格式。
以太网V2的MAC帧较为简单,由五个字段组成。前两个字段分别为6B长的目的地址和源地址字段。第三个字段是2B的类型字段,用来标志上一层使用的是什么协议。第四个字段是数据字段,长度在45-1500B之间,46B是由最小长度64B减去18B的首部和尾部得出的数据字段的最小长度。最后一个字段是4B的帧检验序列FCS(使用CRC检验)。
MAC子层通过曼彻斯特编码的特点确定MAC帧中数据字段的结束位置。
为了接收端迅速实现位同步,从MAC子层向下传到物理层时还要在帧的前面插入8字节(由硬件生成),它由两个字段构成。第一个字段时7个字节的前同步码(1和0交替码),它的作用是使接收端的适配器在接收MAC帧时能够迅速调制其时钟频率,使它和发送端的时钟同步。第二个字段是帧开始定界符,定义为10101011,它的前6位和前同步码一样,最后的连续两个1就是告诉接收端适配器MAC帧的信息马上要来了请注意接收。MAC帧的FCS字段检验范围不包括前同步码和帧开始定界符,在使用SONET/SDH进行同步传输时不需要使用前同步码,因为同步传输时收发双方的位同步总是一直保持的。
IEEE802.3标准规定下列情况之一的即为无效MAC帧:
(1)帧长度不是整数个字节
(2)用收到的帧检验序列FCS查出差错
(3)收到的帧MAC客户数据字段长度不在46-1500B之间。考虑到帧的首部和尾部长度共18B,可得出有效的MAC帧长度在64-1518B之间。
对于检测出的无效MAC帧就简单丢弃,以太网不负责重传丢弃的帧。
IEEE802.3规定的MAC帧格式与上述以太网V2MAC帧格式的区别:
(1)IEEE802.3规定的MAC帧第三个字段是“长度/类型”,当这个字段值大于0x0600时就表示类型,和以太网V2的MAC帧完全一样,小于时才表示长度。
(2)当“长度/类型”字段值小于0x6000时,数据字段必须装入上面的逻辑链路控制子层的LLC帧。由于现在广泛使用的局域网只有以太网,因此LLC帧已失去意义。现在市场上流行的都是以太网V2标准的MAC帧,但也称为IEEE802.3标准的MAC帧。


3.4 扩展的以太网

扩展的以太网在网络层看来依然是一个网络。
在物理层扩展以太网:
以太网中主机距离不能太远,否则主机发出的信号经过铜线传输会衰减到CSMA/CD协议不能正常工作。
扩展主机和集线器之间距离的简单方法是使用光纤(一对)和一对光纤调制解调器。由于光纤的时延很小而且带宽很宽,该方法可以很容易地使主机和几公里以外的集线器相连接。若使用多个集线器就可连接覆盖成更大范围的多级星形结构的以太网。
优点:更大范围的通信,扩大以太网的覆盖范围。
缺点:独立的碰撞域(冲突域)再连接后会成为一个冲突域,如果使用不同的以太网技术(如数据率不同),那么就不能用集线器互连。

在数据链路层扩展以太网:
最初使用网桥,网桥对收到的帧根据其MAC帧的目的地址进行转发和过滤。
1990年出现交换式集线器淘汰了网桥,又称以太网交换机或第二层交换机,强调其工作在数据链路层。
以太网交换机的特点:
实质是一个多接口的网桥,工作方式为全双工方式。以太网交换机具有并行性,能同时连接多对接口,使多对主机同时通信,相互通信的主机都是独占传输媒体,无碰撞地传输数据。
以太网交换机地接口有存储器,可缓存接收地帧。以太网交换机是一种即插即用设备,内部的帧交换表(地址表)是通过自学习算法自动逐渐建立的。
除了存储转发的方式,有的以太网交换机采用直通的交换方式对收到的帧转发。缺点是可能转发无效帧。
以太网交换机的自学习功能使以太网能够即插即用,不必人工配置。
生成树协议STD不改变网络的实际拓扑,但在逻辑上切断了某些链路,使得一个主机到其他所有主机的路径是无环路的树状结构,消除了无限制的兜圈子问题。
从总线以太网到星形以太网,以太网交换机不使用共享总线没有碰撞问题,不适用CSMA/CD协议,而以全双工方式工作。但因它的帧结构未改变,仍然采用以太网的帧结构,因此还叫作以太网。

利用以太网交换机可以方便实现虚拟局域网VLAN。
VLAN是由一些局域网网段构成的与地理位置无关的逻辑组,而这些网段居于某些共同的需求。虚拟局域网实际只是局域网给用户提供的一种服务,而不是新型局域网。
虚拟局域网限制了接收广播信息的计算机数,使得网络不会因为传播过多的广播信息(即广播风暴)引起性能恶化。
虚拟局域网协议在以太网帧格式中插入了一个4字节的标识符,称为VLAN标记,用来指明发送该帧的计算机属于哪个虚拟局域网。插入VLAN标记的帧称为802.1Q帧。
VLAN标记长度为4B,在以太网MAC帧的源地址字段之后,类型字段之前。前2个字节固定,称为标记类型。后两个字节中,前3位是用户优先级,第4位是规范格式指示符CFI,最后12位是VLAN标识符VID,唯一标志了帧的所属VLAN。
由于VLAN的以太网帧首部增加了4个字节所以以太网的最大帧长从1518B变为1522B。


3.5 高速以太网

100BASE-T以太网
在双绞线上传送100Mbit/s基带信号的星形拓扑以太网,仍使用CSMA/CD协议,又称快速以太网。
10/100Mbit/s以太网都使用无屏蔽双绞线布线。

吉比特以太网
特点:
(1)允许在1Gbit/s下以全双工和半双工两种方式工作
(2)使用IEEE802.2协议规定的帧格式
(3)半双工方式下使用CSMA/CD协议,全双工方式下不使用
(4)与10BASE-T和100BASE-T技术向后兼容
吉比特以太网物理层使用两种成熟的技术:一种来自现有以太网,一种来自ANSI制定的光纤通道FC。

10吉比特以太网(10GE)和更快的以太网
10GE的以太网帧格式和上述以太网相同,并保留802.3标准规定的以太网最小帧长和最大帧长。只工作在全双工方式,不存在争用问题,因此不使用CSMA/CD协议。
以太网的工作范围已从局域网扩大到城域网和广域网,从而实现了端到端的传输,这种工作方式的好处是:
(1)以太网是一种经过实践证明的成熟技术。
(2)以太网的互操作性很好。
(3)在广域网中使用以太网时,价格低于同步光纤网SONET和异步传递方式ATM。还能适应多种传输媒体,不必重新布线。
(4)端到端的以太网连接使帧的格式全都是以太网的格式,不需要再进行帧的格式转换,简化操作管理。但以太网和其他网络仍需要相应接口才能互连。

使用以太网进行宽带接入
以太网接入的一个重要特点是它可以提供双向的宽带通信,并可以根据用户对带宽的需求灵活地升级带宽。


3.6 本章的重要概念

链路是从一个结点到另一个相邻结点的一段物理线路,数据链路则是在链路的基础上增加了一些必要的操作。
数据链路层使用的信道主要有点对点信道和广播信道两种。
数据链路层传送的协议数据单元是帧,三个基本问题是:封装成帧,透明传输和差错检验。
循环冗余CRC是一种检错方法,而帧检验序列FCS是添加在数据后面的冗余码。
点对点协议PPP是数据链路层使用最多的一种协议,它的特点是:简单,只检测差错而不纠正;不使用序号也不使用流量控制;可同时支持多种网络层协议。
PPPoE是为宽带上网的主机使用的链路层协议。
局域网的优点:具有广播功能,从一个站点可很方便的访问全网;便于系统的扩展和逐渐演变;提高了系统的可靠性、可用性和生存性。
共享通信媒体资源的方法有二:一是静态划分信道(各种复用技术),而是动态媒体接入控制,又称为多点接入(随机接入或受控接入)。
IEEE802委员会曾把局域网的数据链路层拆成两个子层,逻辑链路子层(LLC)子层(和传输媒体无关)和媒体接入控制子层(MAC)子层(与传输媒体有关),现在LLC子层已淘汰。
计算机与外界局域网的通信要通过通信适配器(网络适配器),又称为网络接口卡或网卡,计算机的硬件地址就在适配器的ROM中。
以太网采用无连接的工作方式,对发送的数据帧不进行编号,也不要求对方发回确认。目的站收到有差错帧就丢弃,其他什么也不做。
以太网采用的协议是具有冲突检测的载波监听多点接入CSMA/CD。协议的要点是:发送前先监听,边发送边监听,一旦发现总线上出了故障,就立即停止发送。然后按照退避算法等待一段随机时间后再次发送。因此每一个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。以太网各站点都平等地争用以太网信道。
传统的总线以太网基本都是使用集线器的双绞线以太网,这种以太网在物理上是星形网,逻辑上则是总线网。集线器工作在物理层,它的每个接口仅仅简单地转发比特,不进行碰撞检测。
以太网地硬件地址,即MAC地址实际上就是适配器地址或适配器标识符,与主机所在地地点无关。源地址和目的地址都是48位长。
以太网地适配器有过滤功能,它只接受单播帧,广播帧或多播帧。
使用集线器可以在物理层扩展以太网(扩展后的以太网仍然是一个网络)。
交换式集线器常称为以太网交换机或第二层交换机(工作在数据链路层)。它就是一个多接口的网桥,而每个接口都直接与某台单主机或另一个集线器相连,且工作在全双工方式。以太网交换机能同时连通许多对接口,使每一对相互连通的主机都能像独占通信媒体那也无碰撞地传输数据。
高速以太网有100Mbit/s地快速以太网,吉比特以太网和10Gbit/s地10吉比特以太网。最近还发展到100吉比特以太网。在宽带接入技术中也常使用高速以太网进行接入。


第四章 网络层

本章最重要的内容是:
(1)虚拟互连网络的概念。
(2)IP地址与物理地址的关系。
(3)传统的分类的IP地址(包括子网掩码)和无分类域间路由选择CIDR。
(4)路由选择协议的工作原理

4.1 网络层提供的两种服务

有些人认为应当模仿打电话所使用的面向连接的通信方式,当两台计算机进行通信时,也应当先建立连接(在分组交换中是建立一条虚电路VC),以预留双方通信所需的一切网络资源。然后双方就沿虚电路发送分组,分组首部不需要填写完整的目的主机地址,只需填写虚电路编号(一个不大的整数),因此减小了分组开销。这种通信方式再使用可靠的网络协议就可使发送的分组无差错按序到达终点也不丢失、不重复在通信结束后要释放连接。
互联网的设计者认为计算具有很强的差错处理能力,因此采用了这样的设计思路:网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报(即IP数据报或分组)服务。
网络在发送分组时不需要先建立连接,每个分组独立发送。网络层不提供服务质量的承诺,因此所传送分组可能出错、丢失、重复和失序,也不保证到达时限。如果主机(端系统)中的进程之间的通信需要的是可靠的,那么就由网络的主机中的运输层负责(差错处理、流量控制等)。
OSI体系支持者曾推出虚电路服务的著名标准X.25建议书,但早已过时。
虚电路服务:
(1)可靠通信应由网络层保证。
(2)必须有连接。
(3)终点地址仅在建立连接阶段使用,每个分组使用短的虚电路号。
(4)属于同一条虚电路的分组均按照同一路由转发。
(5)所有出故障的结点的虚电路均不能工作。
(6)分组按序到达。
(7)差错控制和流量控制可以由网络负责,也可以由用户主机负责。
数据报服务:
(1)可靠通信应由用户主机保证。
(2)不要连接。
(3)每个分组都有终点的完整地址。
(4)每个分组独立选择路由转发。
(5)出故障的结点可能会丢失分组,一些路由可能会发生变化。
(6)不一定按序到达。
(7)差错控制和流量控制由主机负责。


4.2 网际协议IP

与IP协议配套的三个协议:
(1)地址解析协议ARP
(2)网际控制报文协议ICMP
(3)网际组管理协议IGMP
逆地址解析协议RARP已被淘汰。
ICMP,IGMP经常要使用IP协议,IP协议经常要使用ARP协议。由于网际协议IP是用来使互连起来的许多计算机网络能够进行通信的,因此TCP/IP体系中的网络层也叫网际层或IP层。

1.虚拟互连网络
由于用户需求是多样的,没有一种单一的网络能适应所有用户的需求。
将网络互相连接起来要使用一些中间设备,根据层次可划分为:
(1)物理层的中间设备叫做转发器
(2)数据链路层的中间设备叫做网桥或桥接器
(3)网络层的中间设备叫路由器
(4)网络层以上的中间设备叫网关,网关连接不兼容的系统要在高层进行协议转换
由于参加互连的计算机都使用相同的网际协议IP,因此可以把互连后的计算机网络看成一个虚拟互连网络,也就是逻辑互联网络,互连起来的各种物理网络的异构性本来是客观存在的,但利用IP协议可以使这些性能各异的网络在网络层看起来好像是一个统一的网络。
当源主机H1要把一个IP数据报发送给目的主机H2时,根据分组交换的存储转发概念,H1先查看自己的路由表,如果目的主机就在本网络则采用直接交付,如果不是就转发给路由器进行间接交付,直到某路由器知道自己是和H2连接在同一个网络上就把数据表直接交付给H2。路由器的协议栈只有下三层,互联网可以由多种异构网络互连组成。

2.分类的IP地址
IP地址及其表示方法
整个的互联网就是一个单一的、抽象的网络。IP地址就是给互联网的每一台主机(或路由器)的每一个接口分配一个在全世界内范围唯一的32位标识符。IP地址由互联网名字和数字分配机构ICANN分配。
IP地址的方法经过三个阶段:
(1)分类的IP地址。最基本的编址方法。
(2)子网的划分。最基本编址方法的改进。
(3)构成超网。比较新的无分类编址方法。
所谓分类的IP地址就是将IP地址划分为若干个固定类,其中的A类、B类和C类地址都由两个固定长度的字段组成,其中第一个字段是网络号,标志主机或路由器所连接到的网络。一个网络号必须是唯一的。第二个字段是主机号,它标志主机或路由器,一台主机号在它前面网络号所指明的网络范围内必须是唯一的。因此一个IP地址在整个互联网范围内唯一。
A类、B类和C类地址的网络号字段分别为1个、2个和3个字节长,而在网络号字段的最前面有1-3位的类别位,分别规定为0,10和110。
A类、B类和C类地址的主机号字段分别为3个、2个和1个字节长。
D类地址(前4位是1110)用于多播(一对多通信)。
E类地址(前4位是1111)保留位以后使用。
IP地址不仅指明主机,还指明了主机所连接的网络。当某个单位申请到一个IP地址时,实际上是获得了具有同样网络号的一块地址。其中各台主机号则由该单位自行分,只要保证在范围内无重复主机号即可。
将32位IP地址的每8位插入一个空格(机器中并没有),并用等效十进制数字表示,并在这些数字之间加上一个点,就叫做点分十进制记法。

常用的三种IP地址
A类地址的网络号字段占1个字节,只有7位可供使用,可指派网络号是126个。减2的原因是:第一,IP地址中全0表示“这个”,是保留地址,意思是本网络。第二,网络号01111111保留作为本地软件环回测试本主机的进程之间通信之用。
A类地址的主机号占3个字节,因此每个A类网络中最大主机数是224-2,减2的原因是:全0的主机号表示该IP地址是本主机所连接到的单个网络地址,而全1表示所有的,即该网络上的所有主机。
IP地址共有232个地址,A类地址共有231个地址,占整个IP地址空间的50%。
B类网络地址的网络号字段有2个字节,但前两位(1 0)已经固定。B类地址的网络数为214-1,从128.1.0.0开始,B类地址的最大主机数是216-2=65534个,减2是因为要扣除全0和全1的主机号,整个B类地址有230个,占整个IP地址的25%。
C类地址有3个字节的网络号段,最前面的3位是(1 1 0),还有21位可分配。C类地址可指派网络总数221-1个,最小从192.0.1.0开始。最大主机数是254个,整个C类地址空间共229个,占整个IP地址空间的12.5%。
IP地址的特点:
(1)每个IP地址都由网络号和主机号两部分组成,从这个意思来说IP地址是一种分等级的地址结构。好处:IP管理机构只分配网络号,路由器仅根据目的主机所连接的网络号来转发分组,减小了路由表所占的存储空间和查找路由表的时间。
(2)IP地址是标志一台主机或路由器和一条链路的接口。当一台主机同时连到两个网络上该主机就必须具有两个相应的IP地址,称为多归属主机。一个路由器至少应当连接到两个网络,因此一个路由器至少应有两个不同的IP地址。
(3)一个网络是指具有相同网络号的主机的集合,因此用转发器或网桥连接起来的若干个局域网仍为一个网络。
(4)所有分配到网络号的网络都是平等的。
同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的。
当两个路由器直接相连时,可以分配也可以不分配IP地址,如分配了IP地址,这样的特殊网络就叫无编号网络或无名网络。

3.IP地址与硬件地址
物理地址是数据链路层和物理层的地址,IP地址是网络层及其之上各层的地址,是一种逻辑地址。
IP地址放在IP数据报的首部,而硬件地址放在MAC帧的首部。
在IP层抽象的互联网上只能看到IP数据报。
虽然在IP数据报首部有源站IP地址,但路由器只根据目的站的IP地址的网络号进行路由选择。
在局域网的链路层,只能看到MAC帧。MAC帧在不同网络传送时,其首部的源地址和目的地址也要变化。
尽管互连在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些复杂细节。

4.地址解析协议ARP
地址解析协议ARP用来寻找已知IP地址主机的硬件地址。
ARP在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。
每一台主机都设有一个ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表,这些都是该主机目前知道的一些地址。
当主机A要向本地局域网的某台主机B发送IP数据报时,先在其ARP高速缓存查看有无主机B的IP地址,如有就在ARP高速缓存中查出其对应的硬件地址再把它写入MAC帧,通过局域网把MAC帧发往此硬件地址。
若差不到主机B的IP地址,主机A就自动运行ARP,然后按以下步骤查出主机B的IP地址:
(1)ARP进程在本局域网上广播发送一个ARP请求分组,ARP分组的主要内容是:我的IP地址是...,我的硬件地址是...,我想知道IP地址为...的硬件地址。
(2)在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组。
(3)主机B的IP地址与ARP请求分组中要查询的IP地址一致,收下这个ARP请求分组,并向主机A发送ARP响应分组。ARP响应分组的主要内容是:我的IP地址是...,我的硬件地址是...。ARP请求分组是广播,但响应是单播。
(4)主机A收到ARP响应后,在ARP高速缓存中写入主机B的IP地址到硬件地址的映射。
为减小网络通信量,当A发送其ARP请求时就把自己的IP地址到硬件地址的映射写入ARP请求分组,B收到后将其写入自己的ARP高速缓存。
ARP对保存在高速缓存中的每一个映射地址项目都设置生存时间,超过生存时间的项目将被删除。ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题,若不在一个局域网上就无法解析。
从IP地址到硬件地址的解析是自动进行的,主机的用户对这种过程是不知道的。
由于全世界存在各种网络,它们使用不同的硬件地址。要使这些异构网络能相互通信就必须进行非常复杂的硬件地址转换工作,IP编址解决了此问题,因此不直接用硬件地址而额外使用抽象的IP地址。

5.IP数据报的格式
一个IP数据报由首部和数据两部分组成,首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,长度可变。
IP数据报首部固定部分中的各字段
(1)版本 占4位,指IP协议的版本。通信双方所用版本必须一致。
(2)首部长度 占4位
(3)区分服务 占8位,在旧标准中叫做服务类型,一般情况不使用
(4)总长度 指首部和数据长度之和,16位,因此数据报的最大长度为216-1为65535字节。在进行分片时,数据报首部中的总长度字段是指分片后的每一个分片的首部长度与该分片的数据长度之和。
(5)标识 占16位,IP软件在存储器中维持一个计数器,每产生一个数据报,计数器加1,并将此值赋给标识字段。当数据报长度由于超过MTU而必须分片后,标识字段的值就被复制到所有的数据报片的标识字段,相同标识字段的值使分片后的各数据报片最后能正确地重装为原有的数据报。
(6)标志 占3位,只有2位有意义。最低位MF,1表示还有分片,0表示无。中间一位记作DF,意思是不能分片,DF=0时才允许分片。
(7)片偏移 占13位,较长的分组在分片后,某片在原分组中地相对位置。除最后一个数据报片外,每个分片地长度一定是8字节的整数倍。
(8)生存时间 占8位 常用英文缩写TTL,表明数据报在网络中的寿命。每经过一个路由器就减去其消耗的时间,为0时丢弃。
后来功能改为“跳数限制”(但名称不变),现在TTL的单位不是秒而是跳数。数据报能在互联网中经过的路由器最大数值为255,若初值设1则只能在本局域网传送。
(9)协议 占8位 指出此数据报携带的数据使用何种协议,以便使目的主机IP层知道应该将数据上交给哪个协议处理。
(10)首部检验和 占16位,只检验数据报的首部不包括数据部分,主要使用反码。
(11)源地址 占32位。
(12)目的地址 占32位。
IP数据报首部的可变部分
用来支持排错、测量以及安全等措施,内容丰富。

6.IP层转发分组的流程
在路由表中,对每一条路由最主要的是以下两个信息:(目的网络地址,下一跳地址)。
IP数据报最终一定可以找到目的主机所在目的网络上的路由器(可能需要通过多次间接交付)。只有到达最后一个路由器时,才试图向目的主机进行直接交付。
虽然互联网上所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即对特定的目的主机指明一个路由,这种路由叫做特定主机路由。
路由器还可采用默认路由以减小路由表所占空间和搜索路由表所用的时间。
当路由器收到一个待转发的数据报,在从路由表中得出下一跳路由器的IP地址后,不是把这个地址填入IP数据报,而是交送数据链路层的网络接口软件。网络接口软件把下一跳路由器的IP地址转换成硬件地址(必须使用ARP),并将此硬件地址放在链路层MAC帧的首部,然后根据这个硬件地址找到下一跳路由器。
归纳分组转发算法如下:
(1)从数据报首部提取出目的主机的IP地址D,得出目的网络地址N。
(2)若N就是与此路由器直接相连的某网络,则直接交付,否则间接交付,执行(3)。
(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器,否则执行(4)。
(4)若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器,否则执行(5)。
(5)若路由表有默认路由,则把数据报传送给路由表中所指明的默认路由器,否则执行(6)。
(6)报告转发分组出错。


4.3 划分子网和构造超网

划分子网
1.从两级IP地址到三级IP地址
早期IP地址设计不合理处:
(1)空间利用率有时很低。
(2)给每一个物理网络分配一个网络号会使路由表变得太大而降低网络性能。
(3)两级IP地址不灵活。
为解决上述问题,1985年起在IP地址中增加了一个“子网号字段”,这种做法叫做划分子网,或子网寻址或子网路由选择。划分子网已成为互联网正式标准协议。
划分子网的基本思想:
(1)一个拥有许多物理网络的单位,可将所属物理网络划分为若干子网。划分子网纯属一个单位内部的事情,本单位以外的网络看不见这个网络是由多少个子网组成,因为这个单位对外仍表现为一个网络。
(2)从网络的主机号借用若干位作为子网号,当然主机号就相应地减少同样的位数。于是两级IP地址在本单位内部就变为三级IP地址:网络号,子网号和主机号。
(3)凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号找到连接在本单位网络上的路由器。但此路由器收到IP数据报后,再按目的网络号和子网号找到目的子网,把IP数据报交付目的主机。
2.子网掩码
从IP数据报的首部无法看出源主机或目的主机所连接的网络是否进行了子网划分,因此需要使用子网掩码。
使用子网掩码的好处:不管网络有没有划分子网,只要把子网掩码和IP地址进行逐位的与运算,就立即得出网络地址来。
如果一个网络不划分子网,那么该网络的子网掩码就使用默认的子网掩码。
A类地址的默认子网掩码是255.0.0.0。
B类地址的默认子网掩码是255.255.0.0。
C类地址的默认子网掩码是255.255.255.0。
子网掩码是一个网络或一个子网的重要属性。路由器在和相邻路由器交换路由信息时,必须把自己所在的网络或子网的子网掩码告诉相邻路由器。
在采用固定长度子网划分时,所划分的所有子网掩码的子网掩码都是相同的。子网号不能为全1或全0,但随着无分类域间路由CIDR的广泛使用,现在全1和全0的子网号也能使用了。划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。
同样的IP地址和不同的子网掩码可以得出相同的网络地址。但是不同的掩码效果是不同的。

使用子网时分组的转发
使用子网划分后,路由表必须包含以下三项内容:目的网络地址、子网掩码和下一跳地址。
划分子网的情况下,路由器转发分组的算法如下:
(1)从收到的数据报首部提取目的IP地址D。
(2)先判断是否直接交付。对路由器直接相连的网络逐个检查,用子网掩码与D进行与运算,看结果是否和相应的网络地址匹配。若匹配直接交付,否在就是间接交付,执行3。
(3)若路由表中有目的地址为D的特定主机路由,就把数据报传送给路由表中指明的下一跳路由器,否则执行4。
(4)对路由表每一行,用其中的子网掩码和D逐位与,结果为N。如果N与该行目的地址网络适配,则把数据报传送给改行指明的下一跳路由器,否则执行5。
(5)若路由表有默认路由,则传送给默认路由器,否则报告转发分组错误。

无分类编址CIDR
1.网络前缀
1992年互联网面临的问题:
(1)B类地址已分配近一半。(2)互联网主干上路由表项目数急剧增长。(3)整个IPv4的地址空间最终将全部耗尽。
IETF研究出无分类编址的方法解决前两个问题。它的正式名字时无分类域间路由选择CIDR。
CIDR最主要的特点:
(1)消除了传统的A类、B类、C类地址以及划分子网的概念,因而能更有效的分配IPv4的地址空间,并在新的IPv6使用之前容许互联网规模继续增长。CIDR把32位IP地址划分为前后两部分,前面是网络前缀,用来指明网络,后面用来指明主机。因此CIDR使IP地址从三级编址又回到了两级编址(无分类的两级编址)。
使用斜线记法,或称CIDR记法,即在IP地址后加上斜线,写上网络前缀所占位数。
(2)CIDR把网络前缀相同的连续IP地址组成一个CIDR地址块,只要知道地址块中任何一个地址就能知道其中的起始地址和最大地址,以及地址块数。
为方便路由选择,CIDR使用32位的地址掩码。地址掩码由一串1和一串0组成,1的个数是网络前缀的长度,也可继续称为子网掩码。斜线记法中,斜线后面的数字就是地址掩码中的1的个数。
由于一个CIDR地址块中有很多单位,所以路由表就利用CIDR地址块来查找目的网络,这种地址的聚合常称为路由聚合,也称为构成超网。
网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。

2.最长前缀匹配
使用CIDR时,路由表中的每个项目由网络前缀和下一跳地址组成。但在查找路由表时可能会得到不止一个匹配结果。应当从匹配结果中选择具有最长网络前缀的路由,这叫做最长前缀匹配,因为网络前缀越长,地址块就越小,因而路由就越具体。最长前缀匹配又称最长匹配或最佳匹配。

3.使用二叉线索查找路由表
为了进行更有效的查找,最常用的是二叉线索。为了简化二叉线索的构造,可以先找出对应于每一个IP地址的唯一前缀。
二叉线索只是提供了一种可以快速在路由表中找到匹配的叶节点的机制,但这是否和网络前缀匹配,还要和子网掩码进行一次逻辑与的运算。
为提高二叉线索的查找速度,广泛使用了各种压缩技术。


4.4 网际控制报文协议ICMP

为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告,不是高层协议,作为IP层数据报的数据,加上数据报的首部,组成IP数据报。
ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。
ICMP的前四个字节是统一的格式,共有三个字段:类型、代码和检验和。接着的4个字节的内容与ICMP的类型有关,最后面是数据字段,长度取决于ICMP的类型。
ICMP差错控制报文共有四种,即:
(1)终点不可达 当路由器或主机不能交付数据时就向源点发送此报文
(2)时间超过 当路由器收到生存时间为0的数据报时,除丢弃该数据报外还要向源点发送该报文。当终点在预先规定时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送此报文。
(3)参数问题 当路由器或目的主机收到的数据报的首部中有的字段不正确时,就丢弃该数据报,并向源点发送此报文。
(4)改变路由(重定向) 路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器。
所有的ICMP差错报文报告中的数据字段都具有相同格式,把收到的需要进行差错报告的IP数据报的首部和数据字段的前8个字节提取出来,作为ICMP报文的数据字段,再加上ICMP差错报告报文的前8个字节,就构成了ICMP差错报告报文。
下面是不应发送ICMP差错报告报文的情况:
(1)对ICMP差错报告报文,不再发送
(2)对第一个分片的数据报片的所有后续数据报片,都不发送
(3)对具有多播地址的数据报,都不发送
(4)对具有特殊地址的数据报,不发送
常用的ICMP询问报文有两种:
(1)回送请求和回答 ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的目的主机必须给源主机或路由器发送ICMP回送回答报文,这种询问报文用来测试目的站是否可达以及了解其有关状态。
(2)时间戳请求和回答 ICMP时间戳请求报文是请某台主机或路由器回答当前的日期和时间。用于时钟同步和时间测量。

ICMP的一个重要应用就是分组网间探测PING(Packet Internet Groper),用来测试两台主机之间的连通性。PING使用了ICMP回送请求和回送回答报文。PING是应用层直接使用网络层ICMP的一个例子,没有通过运输层的TCP或UDP。
Windows操作系统的用户在命令提示行输入ping+主机名或ip地址就可测试连通性。
例PING一个服务器时,PC一连发出4个ICMP回送请求报文,如果服务器正常工作而且响应这个ICMP回送请求报文(有的主机为防止恶意攻击而不理睬外界发送的这种报文),那么它就发回ICMP回送回答报文。由于往返的ICMP报文上都是时间戳,因此很容易得出往返时间。最后显示出的是统计结果:发送到哪个机器(IP地址),发送的、收到的和丢失的分组数(但不给出分组丢失原因)以及往返时间的最小值、最大值和平均值。
另一个非常有用的应用是traceroute(这是UNIX系统中的名字),它用来跟踪一个分组从源点到终点的路径,在Windows中这个命令是tracert。
原理:Traceroute从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP用户数举报(因为使用了非法端口号)。第一个数据报的TTL设为1,当其到达路径上第一个路由器时,路由器先收下它,接着把TTL减1,由于TTL=0,路由器丢弃数据报并向源主机发送一个ICMP时间超过差错报告报文。
接着源主机发送第二个数据报,并把TTL设为2...以此类推直到最后一个数据报刚到达目的主机时,数据报的TTL=1,主机不转发数据报也不把TTL减1,但因为IP数据报中封装的时无法交付的运输层的UDP数据报,因此目的主机要向源主机发送ICMP终点不可达差错报告报文。这样源主机就知道了路由信息——到达目的主机所经过的路由器的IP地址以及到达其中每个路由器的往返时间。每一行有3个时间出现是因为对应于每个TTL,源主机要发送三次同样的IP数据报。


4.5 互联网的路由选择协议

理想的路由算法特点:
(1)算法必须是正确的和完整的。正确指沿着各路由表所指引的路由,分组一定能最终到达目的网络和目的主机。
(2)算法在计算上应简单,不应使网络通信量增加太多额外开销。
(3)算法能适应通信量和网络拓扑的变化,要有自适应性。有时称这种自适应性为稳健性。
(4)算法应具有稳定性,网络通信量和拓扑稳定时不应使路由不停变化。
(5)算法应公平。
(6)算法应是最佳的,找到最好的路由使分组平均时延最小而网络吞吐量最大。
若从路由算法能否随网络的通信量或拓扑自适应地进行调整变化来划分,则只有两大类,即静态路由选择策略(非自适应路由选择)和动态路由选择策略(自适应路由选择)。

分层次的路由选择协议
互联网采用的路由选择协议主要是自适应的(动态的)、分布式路由选择协议,主要因为:
(1)互联网规模非常大,如果让所有路由表知道所有网络应怎样到达,开销太大。
(2)许多单位不愿意外界了解自己网络的布局细节和采用的路由选择协议但又希望连接互联网。
为此可把互联网划分为许多较小的自治系统AS。AS是在单一技术管理下的一组路由器,而这些路由器使用一种自治系统内部的路由选择协议和共同的度量。一个AS对其他AS表现出的是一个单一的和一致的路由选择策略。
目前的互联网中,一个大的ISP就是一个自治系统。这样,互联网就把路由选择协议划分为两大类:
(1)内部网关协议IGP 包括RIP和OSPF协议
(2)外部网关协议EGP 目前使用最多的外部网关协议是BGP
自治系统之间的路由选择叫域间路由选择,而在自治系统内部的路由选择叫域内路由选择。

内部网关协议RIP
RIP是内部网关协议IGP中最先得到广泛使用的协议,中文名为路由信息协议,但很少使用。RIP是一种分布式的基于距离向量的路由选择协议,最大优点是简单。
RIP协议要求网络中每一个路由器都要维护从它自己到其他每个目的网络的距离记录(这一组距离即距离向量)。距离定义如下:
从路由器到直接相连的网络距离为1,从路由器到非直接相连的网络距离为经过的路由器数加1。RIP的距离也成为跳数,RIP允许一条路径最多只能包含15个路由器,因此距离等于16时相当于不可达,因此RIP只适用于小型互联网。
RIP协议的特点:
(1)仅和相邻路由器交换信息。
(2)路由器交换的信息是当前本路由器知道的全部信息,即自己现在的路由表。
(3)按固定时间间隔交换路由信息。
路由表中最主要的信息就是:到某个网络的距离(最短距离),以及应经过的下一跳地址。路由表更新的原则是找出到每个目的网络的最短距离,这种更新算法又称距离向量算法
距离向量算法,基础是Bellman-Ford算法或Ford-Fulkerson算法
步骤:
(1)对地址X的相邻路由器发来的RIP报文,先修改此报文中的所有项目,把下一跳地址改为X,并把所有距离加1。每个项目都有三个关键数据,目的网络N,距离d,下一跳地址X。
(2)对修改后的项目,若路由表没有目的网络N则添加,若有且下一跳地址是X则替换,若有且下一跳地址不是X,如果d小于原来的距离则更新,否则什么也不做。
(3)3分组内没收到相邻路由表的更新路由表,则记为不可达,即设置距离16。
(4)返回。
RIP协议使得从每一个路由到每一个目的网络的路由都是最短的。
RIP2支持变长子网掩码和无分类域间路由选择CIDR,还提供简单鉴别支持多播。RIP协议使用UDP进行传送(UDP端口520)。
RIP报文由首部和路由组成。
RIP2报文中的路由部分由若干路由信息组成,每个路由信息需要用20字节。地址族标识符(又称地址类别)字段用来标志所使用的地址协议。路由标记填入自治系统号ASN,这是考虑使RIP有可能收到本自治系统外的路由选择信息。再后面指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络距离。一个RIP报文最多包括25个路由,因而RIP报文最大长度504字节。
RIP问题:当网络故障时,要经过比较长的时间才能将信息传送到所有路由器。这一特点叫:好消息传播得快,坏消息传播得慢。总之RIP协议最大的优点就是实现简单,开销较小,缺点也较多,限制了网络规模,对于规模较大的网络应使用OSPF协议。

内部网关协议OSPF
这个协议的名字是开放最短路径优先OSPF,为克服RIP缺点开发。开放表明OSPF协议不是受一家厂商控制,而是公开发表。最短路径优先是因为使用了Dijkstra提出的最短路径算法SPF。
主要特征:使用分布式的链路状态协议,而不是RIP那样的距离向量协议。
(1)向本自治系统的所有路由器发送信息,用的是洪泛法。
(2)发送的信息就是与本路由器相邻的所有路由器的链路状态,这只是路由器知道的部分信息。链路状态就是说明本路由器都和哪些路由器相邻,以及该链路的度量(费用、距离、时延、带宽等)。
(3)只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送此信息。
由于各路由器之间频繁交换链路信息,因此所有路由器最终都能建立一个链路状态数据库,实际上就是全网的拓扑结构图。RIP协议的每个路由器虽然知道到所有网络的距离以及下一跳路由器,但不知道全网的拓扑结构。OSPF的链路状态数据库能较快更新,使各路由器及时更新路由表,OSPF的更新过程收敛得快是其重优点。
为使OSPF能够用于大型网络,OSPF将一个自治系统划分为若干区域。OSPF使用层次结构的区域划分,在上层的区域叫主干区域,作用使连通其他下层区域,从其他区域来的信息都由区域边界路由器进行概括。在主干区域内的路由器叫主干路由器,一个主干路由器可以同时是多个区域边界路由器。在主干区域还有一个路由器专门和本自治系统之外的其他自治系统交换路由信息,叫做自治系统边界路由器。
OSPF不用UDP而是直接用IP数据报传送(IP数据报首部协议字段值89)。OSPF分组使用24字节的固定首部长度,分组的数据部分可以是五种类型分组中的一种。
OSPF首部各字段的意义:
(1)版本 当前版本号为2
(2)类型 五种类型分组中的一种
(3)分组长度 包括OSPF首部在内的分组长度,以字节为单位
(4)路由器标识符 标志发送该分组的路由器的接口的IP地址
(5)区域标识符 分组属于的区域
(6)检验和 用来检验分组中的差错
(7)鉴别类型 0(不用)和1(口令)
(8)鉴别 鉴别类型为0时填入0,为1时填入8个自负的口令
OSPF的其他特点:
(1)对于不同类型的业务可计算不同的路由,链路代价为1-65535
(2)如果到同一个目的网络有多条相同路径,那么可以将通信量分配给这几条路径,这叫做多路径间的负载平衡。
(3)所有在OSPF路由器之间交换的分组都具有鉴别的功能。
(4)OSPF支持可变长度的子网划分和CIDR。
(5)OSPF让每个链路状态都带上一个32位的序号,序号越大状态越新。
OSPF的五种分组类型:
(1)类型1,问候分组。
(2)类型2,数据库描述分组。
(3)类型3,链路状态请求分组。
(4)类型4,链路状态更新分组。
(5)类型5,链路状态确认分组。

外部网关协议BGP
1989年公布了新的外部网关协议——边界网关协议BGP。
内部网关协议主要设法使数据报在一个AS中尽可能有效从源站传送到目的站,在一根AS内也不需要考虑其他方面策略。然而BGP使用环境不同,主要因为:
(1)互联网规模太大,使得自治系统AS之间路由选择非常困难。
(2)自治系统AS之间的路由选择必须考虑有关策略。
由于上述情况,边界网关协议BGP只能力求寻找一条能够到达目的网络且比较好的路由,而并非寻找一条最佳路由。BGP采用了路径向量路由选择协议。
配置BGP时,每个AS管理员要选择至少一个路由器作为该AS的BGP发言人,一般来说,两个BGP发言人都是通过一个共享网络连接在一起的,而BGP发言人往往就是BGP边界路由器,但也可以不是。
一个BGP发言人与其他AS的BGP发言人要交换路由信息就要先建立TCP连接(端口号179),然后在此连接上交换BGP报文以建立BGP会话,利用BGP会话交换路由信息。使用TCP连接能提供可靠服务,也简化了路由选择协议。使用TCP连接交换路由信息的两个BGP发言人彼此成为对方的临站或对等站。
BGP所交换的网络可达性的信息就是要到达某个网络所要经过的一系列自治系统,当BGP发言人相互交换了网络可达性信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好录由。
BGP协议交换路由信息的结点数量级时自治系统个数的量级,要比自治系统的网络数少很多。
BGP支持无分类域间路由选择CIDR,因此BGP的路由表也应当包括目的网络前缀、下一跳路由器以及到达该目的网络所要经过的自治系统序列。
BGP的四种报文:
(1)OPEN打开报文,用来与相邻的另一个BGP发言人建立关系,通信初始化。
(2)UPDATE 更新报文,用来通告某一路由的信息以及列出要撤销的多条路由。
(3)KEEPALIVE保活报文,用来周期性证实临站的连通性。
(4)NOTIFICATION通知报文,用来发送检测到的差错。
四种类型的BGP报文具有同样的通用首部,长度19字节。通用首部分为三各字段。标记字段16字节,用来鉴别收到的BGP报文,当不使用鉴别时,标记字段置为全1。长度字段指出包括通用首部在内的整个BGP报文以字节为单位的长度,最小值19,最大值4096。类型字段的值1-4。
OPEN报文有6个字段,即版本(1字节,当前值4)、本自治系统(2字节)、保持时间(2字节)、BGP标识符(2字节)、可选参数长度和可选参数。
UPDATE报文共有5个字段,即不可行路由长度(2字节)、撤销的路由、路径属性总长度(2字节)、路径属性和网络层可达性NLRI。
KEEPALIVE报文只有BGP的19字节长的通用首部。
NOTIFICATION报文有3个,即差错代码(1字节)、差错子代码(1字节)和差错数据。

路由器的构成
路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。路由器的转发分组是网络层的主要工作。路由器的结构可划分为两部分:路由选择部分和转发分组部分。
路由选择部分也叫控制部分,其核心构件是路由选择处理机。路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期和相邻路由器交换路由信息而不断地更新和维护路由表。
分组转发部分由三部分组成:交换结构、一组输入端口和一组输出端口。这里的端口指硬件接口。
交换结构又称为交换组织,它的作用是根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。可将交换结构看成在路由器中的网络。
转发就是路由器根据转发表把收到的IP数据报从路由器的合适端口转发出去,仅仅涉及一个路由器,但路由选择涉及到很多路由器,路由表则是多个路由器协同工作的结果。路由表一般仅包含从目的网络到下一跳的映射,而转发表是从路由表得出的。路由表总是用软件实现的,但转发表则甚至可用特殊的硬件实现。当讨论路由选择原理时,往往不去区分转发表和路由表的分别。
若分组处理的速率赶不上分组进入的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。以前所提的分组丢失就是发生在路由器的输入或输出队列产生溢出的时候。设备或线路故障也可能使分组丢失。
交换结构是路由器的关键构件,正是这个交换结构把分组从一个输入端口转移到某个合适的输出端口。实现这样的交换有多种方法。
(1)最早使用的路由器就是利用普通计算机,用计算机的CPU作为路由器的路由选择处理机。许多现代的路由器也通过存储器进行交换,与早期路由器的区别是,目的地址的查找和分组在存储器中的缓存都是在输入端口中进行的。
(2)通过总线进行交换,采用这种方式时,数据报从输入端口通过共享总线直接传送到合适的输出端口,而不需要路由选择处理机的干预。
(3)通过纵横交换结构进行交互,这种交换结构常称为互连网络,它有2N条总线,可以使N个输入端口和N个输出端口相连接,这取决于相应的交叉结点是使水平总线和垂直总线接通还是断开。输入端口将收到的分组发送到与输入端口相连的水平总线,若垂直总线空闲就将其与水平总线连通并转发到输出端口,否则在输入端口排队。


4.6 IPV6

解决IP地址耗尽的根本措施就是采用具有更大地址空间的新版本的IP,即IPV6。
IPv6仍支持无连接的传送,但将协议数据单元PDU称为分组,而不是IPv4的数据报。
IPv6的主要变化:
(1)更大的地址空间,从IPv4的32位增大到128位。
(2)扩展的地址层次结构。
(3)灵活的首部格式。IPv6数据报的首部和IPv4不兼容。
(4)改进的选项。IPv6允许数据报包含有选项的控制信息,但IPv6的首部长度是固定的。
(5)允许协议继续扩充。
(6)支持即插即用(自动配置)。不需要使用DHCP。
(7)支持资源的预分配。
(8)IPv6的首部改为8字节对齐(即首部长度必须是8字节的整数倍)。
IPv6数据报由两大部分组成,即基本首部和后面的有效载荷(净负荷),有效载荷允许有零个或多个扩展首部,再后面是数据部分。
与IPv4相比,IPv6对首部的某些字段进行了如下更改:
(1)取消了首部长度字段,因为它的首部长度固定为40字节
(2)取消了服务类型字段
(3)取消了总长度字段
(4)取消了标志、标识和片偏移字段
(5)把TTL字段改为限制条数字段,功能不变
(6)取消了协议字段
(7)取消了检验和字段,加快了路由器处理数据报的速度
(8)取消了选项字段
IPv6首部中各字段的作用:
(1)版本 4位,指明协议版本,值为6
(2)通信量类 8位,为了区分不同IPv6数据报的类别或优先级
(3)流标号 20位,IPv6提出流的抽象概念,所谓流就是互联网上从特定源点到特定终点(单播或多播)的一系列数据报(如实时音频或视频传输),而在这个流所经过的路径上的路由器都保证指明的服务质量。属于同一个流的数据报都具有同样的流标号。
(4)有效载荷长度 16位,指明IPv6数据报除基本首部以外的字节数,最大值64KB。
(5)下一个首部 8位,相当于IPv4的协议字段或可选字段。当没有扩展首部时,下一个首部字段的作用和IPv4的协议字段作用一样,6代表交付运输层TCP,17代表交付UDP。
出现扩展首部时,下一个首部字段的值标识后面第一个扩展首部的类型。
(6)跳数限制 8位,防止数据报在网络无限期存在,最大跳255。
(7)源地址 128位,数据报发送端的IP地址。
(8)目的地址 128位,数据报接收端的IP地址。
IPv6把原来IPv4首部中选项的功能都放在扩展首部,并把扩展首部留给路径两端的源点和终点的主机处理,而数据报途径中经过的路由器都不处理这些扩展首部(除了逐跳选项扩展首部),大大提高了路由器的处理效率。
RFC2460定义了以下6种扩展首部:(1)逐跳选项(2)路由选择(3)分片(4)鉴别(5)封装安全有效载荷(6)目的站选项

IPv6的地址是以下三种之一:
(1)单播 传统的点对点通信
(2)多播 一点对多点的通信,数据报发送到一组计算机中的而每一个,IPv6没有采用广播的术语,而是将广播看作多播的一个特例
(3)任播 终点是一组计算机,但数据报只交付其中一个,通常是距离最近的一个。
IPv6把实现IPv6的主机或路由器均称为结点。

向IPv6过渡只能采取逐步演进的办法,同时还必须使新安装的IPv6系统能够向后兼容。这就是说IPv6系统必须能够接收和转发IPv4分组,并且能够为IPv4分组选择路由。
向IPv6过渡的策略:
(1)双协议栈
是指在完全过渡到IPv6之前使一部分主机或路由器装有双协议栈:一个IPv4和一个IPv6。它使用域名系统DNS来查询目的主机使用的IP地址类型。
(2)隧道技术
这种方法的要点就是在IPv6数据报要进入IPv4网络时,把IPv6数据报封装称IPv4数据报,要使双协议栈的主机知道IPv4数据报里封装的是一个IPv6数据报就必须把IPv4首部的协议字段值设为41。

和IPv4一样,IPv6也不保证数据报的可靠交付,它也需要使用ICMP来反馈一些差错信息,新的版本称为ICMPv6,它比ICMPv4要复杂许多,地址解析协议ARP和网际组管理协议IGMP的功能都已被合并到ICMPv6中。


4.7 IP多播

与单播相比,在一对多的通信中,多播可大大节约网络资源。
在互联网范围的多播要靠路由器实现,这些路由器必须增加一些能够识别多播数据报的软件,能够运行多播协议的路由器称为多播路由器。
在互联网上进行多播就叫IP多播。IP多播所传送的分组需要使用多播IP地址。
在多播数据报的目的地址写入的是多播组的标识符,然后设法让加入这个多播组的主机IP地址与多播组的标识符关联起来。其实多播组的标识符就是IP地址中的D类地址。D类地址范围是224.0.0.0到239.255.255.255,用每一个D类地址标志一个多播组。多播数据报和一般IP数据报的区别是它使用D类IP地址作为目的地址,并且首部中的协议字段值为2,表明使用网际管理组协议IGMP。
多播地址只能用于目的地址,而不能用于源地址。对多播报文不产生ICMP差错报文,因此若在PING命令后键入多播地址将永远不会收到响应。
IP多播分为两种:(1)在本局域网上进行硬件多播(2)在互联网范围进行多播。前一种虽然简单但很重要,因为现在大部分主机都是通过局域网接入互联网。在互联网上进行多播的最后阶段还是要把多播数据报在局域网上用硬件多播交付多播组的所有成员。
IP多播需要两种协议
(1)网际组管理协议IGMP
工作可分为两阶段:
第一阶段:当某台主机加入新的多播组时,该主机向多播组的多播地址发送一个IGMP报文,声明自己要成为该组的成员。本地的多播路由器收到IGMP报文后,还要利用多播路由选择协议把这种组成员关系转发给互联网上的其他多播路由器。
第二阶段:组成员关系是动态的,本地多播路由器要周期性地探寻本地局域网上的主机,以便知道这些主机是否还继续是组的成员。只要有一台主机对某个组响应,那么多播路由器就认为这个组是活跃的。但一个组在多次探询后仍然没有一台主机响应,多播路由器就认为本网络上的主机都离开了这个组,也就不再转发组关系至其它多播路由器。
(2)多播路由选择协议
在多播过程中一个多播组中的成员是动态变化的。多播路由实际上就是要找出以源主机为根节点的多播转发树。
转发多播数据报时用到了三种方法:(1)洪泛与剪除。适合于小的多播组,而所有组成员接入的局域网也是相邻的。为了避免兜圈子,采用了反向路径广播RPB。(2)隧道技术,适用于多播组的位置在地理上很分散的情况。(3)基于核心的发现技术,这种方法对于多播组的大小在较大范围内变化时都适合。


4.8 ******和网络地址转换NAT

假定一个机构内部的计算机通信也采用TCP/IP协议,那么这些仅在机构内部使用的计算机就可以由本机自行分配其IP地址,这就是说让这些计算机使用仅在本机构内有效的IP地址(本地地址)而不需要向互联网的管理机构申请全球唯一的IP地址(全球地址),这样可大大节约IP地址资源。
在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。
2013年4月,RFC6890给出了所有特殊用途的IPv4地址:
(1)10.0.0.0到10.255.255.255 即10.0.0.0/8
(2)172.16.0.0到172.31.255.255 即172.16.0.0/12
(3)192.168.0.0到192.168.255.255 即192.169.0.0/16
采用这样的专用IP地址的互连网洛称为专用互联网或本地互联网,或专用网。专用IP地址也叫做可重用地址。
机构利用公用的互连网作为本机构各专用网之间的通信载体,这样的专用网叫做******。之所以叫专用网是因为这种网络时为本机构的主机用于机构内部的通信,而不适用于和网络外费本机构的主机通信。如果专用网不同网点间通信必须经过公用互联网,但又有保密要求,那么所有通过互联网传送的数据都必须加密。虚拟表示好像时,但实际上不是,因为现在并没有真正使用通信专线,而***只是在效果上和真正专用网一样。
***类型:内联网、外联网(内联网和外联网都基于TCP/IP)、远程接入

网络地址转换NAT
这种方法需要在专用网连接到互联网上的路由器安装NAT软件,装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和互联网通信。
通过NAT路由器的通信必须由专用网内的主机发起,专用网内的主机不能充当服务器,因为互联网上的客户无法请求专用网内的服务器提供服务。为更加有效利用NAT路由器上的IP地址,现在常用的NAT转换表把运输层的端口号也加上,这样就可使多个拥有本地地址的主机,公用一个NAT路由器上的IP地址,因而可以同时和互联网上的不同主机通信。
采用了端口号的NAT也叫做网络地址与端口号转换NAPT,而不使用端口号的NAT就叫做NAT。普通路由器转发IP数据报时,源地址或目的地址都不改变,但NAT路由器在转发IP数据报时一定要更换其IP地址,且还要查看和转换运输层端口号,不仅仅工作在网络层。


4.9 多协议标记交换MPLS

MPLS利用面向连接技术,使每个分组携带一个叫做标记的小整数,当分组到达交换机时,交换机读取分组的标记,并用标记值来检索分组转发表,这样就比查找路由表来转发分组要快得多。
特点:(1)支持面向连接的服务质量(2)支持流量过程,平衡网络负载(3)有效支持******
MPLS的一个重要特点就是在MPLS域的入口处,给每一个IP数据报打上固定长度的标记,然后对打上标记的IP数据报用硬件转发,大大加快了IP数据报的转发过程。采用硬件技术对打上标记的IP数据报进行转发就成为标记交换。交换也表示在转发时不再上升到第三层查找转发表,而是根据标记在第二层(链路层)用硬件转发。MPLS可使用多种链路层协议:PPP、以太网、ATM以及帧中继等。
MPLS域指该域中有许多彼此相邻的路由器,并且所有路由器都是支持MPLS技术的标记交换路由器LSR。LSR同时具有标记交换和路由选择两种功能。


4.10 本章的重要概念

TCP/IP体系中的网络层向上只提供简单灵活、无连接的、尽最大努力交付的数据报服务。网络层不提供服务质量的承诺,不保证分组交换的时限,所传送的分组可能出错、丢失、重复或失序。进程之间通信的可靠性由运输层负责。
IP网是虚拟的,因为从网络层上看,IP网就是一个统一的、抽象的网络(实际上是异构的)。IP层抽象的互联网屏蔽了下层网络复杂的细节使我们能够使用统一的、抽象的IP地址处理主机之间的通信问题。
在互联网上的交互有两种:在本网络的直接交付(不经过路由器)和到其他网络的间接交付(至少经过一个路由器但最后一次一定是直接交付)。
一个IP地址在整个互联网范围内是唯一的,分类的IP地址包括A类、B类、C类地址(单播地址)、以及D类地址(多播地址),E类地址未使用。
分类的IP地址由网络号字段(指明网络)和主机号字段(指明主机)组成。网络号字段最前面的类别位指明IP地址的类别。
IP地址是一种分等级的地址结构。IP地址管理机构在分配IP地址时只分配网络号,主机号则由得到该网络号的单位自行分配。路由器仅根据目的主机所连接的网络号来转发分组。
IP地址标志一台主机(或路由器)和一条链路的接口。多归属主机同时连接到两个或更多的网络上。这样的主机同时具有两个或更多的IP地址,其网络号必须是不同的。由于一个路由器至少应连接到两个网络,因此一个路由器至少应当有两个不同的IP地址。
按照互联网的观点,用转发器或网桥连接起来的若干局域网仍为一个网络,所有分配到网络号的网络(无论范围大小)都是平等的。
物理地址(硬件地址)是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(用软件实现),在数据链路层看不见数据报的IP地址。
IP数据报分为首部和数据两部分,首部的前一部分是固定长度20字节,是所有IP数据报必须具有的(源地址、目的地址、总长度等重要字段都在固定首部中)。一些长度可变的可选字段放在固定首部的后面。
IP首部中的生存时间字段给出了IP数据报在互联网中所能经过的最大路由数,可防止IP数据报在互联网中无限制兜圈。
地址解析协议ARP把IP地址解析为硬件地址,它解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。ARP的高速缓存可以大大减少网络上的通信量。
互联网中我们无法根据硬件地址寻找在某个网络上的某台主机,因此从IP地址到硬件地址的解析是非常必要的。
无分类域间路由选择CIDR是解决目前IP地址紧缺的一个好办法。CIDR记法把IP地址后面加上斜线“/”,然后写上前缀所占的位数。前缀用来指明网络,前缀后面的部分是后缀,用来指明主机。CIDR把前缀都相同的连续IP地址组成一个CIDR地址块,IP地址的分配都以CIDR地址块为单位。
CIDR的32为地址掩码由一串1和一串0组成,1的个数是前缀的长度。只要把IP地址和地址掩码逐位进行与运算,就很容易得出网络地址。A类地址的默认地址掩码是255.0.0,B类地址的默认地址掩码是255.255.0.0,C类地址的默认地址掩码是255.255.255.0。
路由聚合(把许多前缀相同的地址用一个来代替)有利于减少路由表中的项目,减少路由器之间的路由选择信息的交换,从而提高整个网络的性能。
转发和路由选择有区别,转发是单个路由器的动作,路由选择是许多路由器共同协同的过程,这些路由器相互交换信息,目的是生成路由表,再从路由表导出转发表。若采用自适应的路由选择算法,则网络拓扑变化时,路由表和转发表都能够自动更新。许多情况下,可不考虑路由表和转发表的区别而都使用路由表这一名词。
自治系统AS就是在单一的技术管理下的一组路由器,一个自治系统对其他自治系统表现出的是一个单一的和一致的路由选择策略。
路由选择协议有两大类:内部网关协议(或自治系统内部的路由选择协议),如RIP和OSPF;外部网关协议(自治系统之间的路由选择协议),如BGP-4。
RIP是分布式的基于距离向量的路由选择协议,只适用于小型互联网。RIP按固定的时间间隔与相邻路由器交换信息。交换的信息是自己当前的路由表,即到达本自治系统中所有网络的最短距离,以及到每个网络应经过的下一跳路由器。
OSPF是分布式的链路状态协议,适用于大型互联网。OSPF只在链路状态发生变化时,才向本自治系统中的所有路由器用洪泛法发送与本路由器相邻的所有路由器的链路状态信息。链路状态指明本路由器都和哪些路由器相邻,以及该链路的度量。度量表示费用、时延、带宽等,可通称为代价。所有的路由器最终都能建立一个全网的拓扑结构图。
BGP-4是不同AS的路由器之间交换路由信息的协议,是一种路径向量路由选择协议。BGP力求寻找一条能够到达目的网络(可达)且比较好的路由(不兜圈子),而并非寻找一条最佳路由。
网际控制报文协议ICMP是IP层的协议。ICMP报文作为IP数据报的数据,加上首部后组成IP数据报发送出去。使用ICMP并非为了实现可靠传输,ICMP允许主机或路由器报告差错情况和提供有关异常的报告。ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。
ICMP的一个重要应用就是分组网间探测PING,用来测试两台主机之间的连通性。PING使用了ICMP回送请求和回送回答报文。
要解决IP地址耗尽的问题,最根本的办法就是采用具有更大地址空间的新版本IP协议即IPv6。
IPv6的主要变化是:(1)更大的地址空间(2)灵活的首部格式(3)改进的选项(4)支持即插即用(5)支持资源的预分配(6)IPv6的首部改为8字节对齐。
IPv6数据报在基本首部的后面允许有零个或多个扩展首部,再后面是数据。所有的扩展首部和数据合起来叫做数据报的有效载荷或净负荷。
IPv6数据报的目的地址可以是以下三种基本类型之一:单播、多播和任播。
IPv6的地址使用冒号16进制记法。
向IPv6过渡只能采用逐步演进的办法,必须使新安装的IPv6系统能够向后兼容。向IPv6过渡可以使用双协议栈或隧道技术。
与单播相比,在一对多的通信中,IP多播可大大节约网络资源。IP多播使用D类IP地址,IP多播需要使用网际组管理协议IGMP和多播路由选择协议。
******利用公用的互联网作为本机构各专用网之间的通信载体。***内部使用互联网的专用地址,一个***至少要有一个路由器具有合法的全球IP地址,这样才能和本系统另一个***通过互联网进行通信。所有通过互联网传说的数据都必须加密。
使用网络地址转换NAT技术,可以在专用网络内部使用专用IP地址,而仅在连接到互联网的路由器使用全球IP地址,这样就大大节约了IP地址资源。
MPLS的特点:(1)支持面向连接的服务质量(2)支持流量工程,平衡网络负载(3)有效地支持******
MPLS在入口结点给每一个IP数据报打上固定长度的标记,然后根据标记在第二层(链路层)用硬件进行转发(在标记交换路由器中进行标记对换),因而转发速率大大加快。


第五章 运输层

本章重要内容:
(1)运输层为相互通信的应用进程提供逻辑通信。
(2)端口和套接字的意义。
(3)无连接的UDP的特点。
(4)面向连接的TCP的特点。
(5)在不可靠网络上实现可靠传输的工作原理,停止等待协议和ARQ协议。
(6)TCP的滑动窗口、流量控制、拥塞控制和连接管理。


5.1 运输层协议概述

从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最底层。当网络边缘的两台主机利用网络的核心功能进行端到端的通信时,只有主机的协议栈才有运输层,而路由器在转发分组时只用到下三层的功能。
从IP层来说通信的两端是两台主机,IP数据报的首部明确标志了这两台主机的IP地址。但真正进行通信的实体是主机中的进程,因此严格地讲,两台主机进行通信就是两台主机中的应用进程互相通信。IP协议虽然能把分组送到目的主机,但是这个分组还停留在主机的网络层而没有交付主机中的应用进程。从运输层的角度看,通信的真正端点并不是主机而是主机中的进程。也就是说,端到端的通信是应用进程之间的通信。
运输层有一个很重要的功能——复用和分用。复用是指在发送方不同的应用进程都可以使用同一个运输层协议传送数据(加上适当的首部),而分用是指接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程。运输层提供应用进程之间的逻辑通信,逻辑通信的意思是:从应用层来看,只要把应用层报文交给下面的运输层,运输层就可以把报文送到对方的运输层,好像这种通信就是沿水平方向直接传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接,数据传送是经过多个层次传送的。
网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供逻辑通信。
运输层还要对收到的报文进行差错检测,在网络层,IP数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分。
根据应用程序的不同需求,运输层需要两种协议,即面向连接的TCP和无连接的UDP。
运输层向高层用户屏蔽了下面网络核心的细节(网络拓扑、所采用的路由选择协议等),它使应用进程看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道,但这条逻辑通信信道对上层的表现因运输层的不同协议而有很大差别。当运输层采用TCP时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工的可靠信道。但运输层采用UDP时,这种逻辑通信信道仍然是不可靠的。
按照OSI的术语,两个对等层实体在通信时传送的数据单位叫运输协议数据单元TPDU。但在TCP/IP体系中,根据所选协议分别称为TCP报文段(segment)或UDP用户数据报。
UDP在传送数据前不需要先建立连接,远地主机运输层收到报文后不需要给出任何确认。
TCP提供面向连接的服务,在传送前必须建立连接,传送后要释放连接。TCP不提供广播或多播服务。
使用TCP和UDP的各种应用和应用层协议:
UDP:名字转换 DNS、文件传送TFTP、路由选择协议IP、IP地址配送DHCP、网络管理SNMP、远程文件服务器NFS、IP电话 专用协议、流式多媒体通信 专用协议、多播 IGMP
TCP:电子邮件 SNMP、远程终端接入TELNET、万维网WWW、文件传送 FTP
应用层的所有应用进程都可以通过运输层再传送到IP层(网络层),这就是复用。运输层从IP层收到发送给各应用进程的数据后,必须分别交付指明的各应用进程,这就是分用。
在运输层使用协议端口号,或称端口。虽然通信的终点是应用进程,但只要把传送的报文交到目的主机的某个合适的目的端口,剩下的工作(即交付目的进程)就由TCP或UDP完成。
这种在协议栈层间的端口是软件端口,和路由器或交换机上的硬件端口不同。硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。
TCP和UDP的首部格式中都有源端口和目的端口,当运输层收到IP层上交的运输层报文时,就能根据其首部中的目的端口号把数据交付应用层的目的应用进程。
TCP/IP的运输层使用16位端口号来标志一个端口,端口号只具有本地意义,只是为了标志本计算机应用层中的各个进程在和运输层交互时的层间接口。在互联网不同计算机中,相同的端口号没有关联,16位端口号允许65535个不同的端口号。
两个计算机中的进程要相互通信,不仅要知道对方的IP地址,还要知道对方的端口号。互联网上的计算机通信采用客户-服务器方式,运输层端口号分为以下两种:
(1)服务器端口号 最重要的一类叫做熟知端口号或系统端口号,数值0-1023。如:FTP21 、TELNET23、SMTP25、DNS53、TFTP69、HTTP80、SNMP161、SNMP(trap)162、HTTPS443。
另一类叫做登记端口号,数值1024-49151,为没有熟知端口号的应用进程使用的。
(2)客户端端口号 数值为49152-65535,又叫做短暂端口号。


5.2 用户数据报协议UDP

UDP只在IP的数据报服务上增加了很少一点的功能,复用、分用以及差错检测。UDP的主要特点是:
(1)无连接,发送数据前不需要建立连接,减小了开销和发送时延。
(2)尽最大努力交付,不保证可靠服务,主机不需要维持复杂的连接状态表。
(3)UDP是面向报文的,UDP对应用层交下来的报文,既不合并也不拆分,而是保留这些报文的边界。因此应用程序需要选择合适大小的报文,太长(需要分片)太短(首部相对长度太大)都会降低IP等的效率。
(4)UDP没有拥塞控制,网络出现拥塞不会使源主机的发送速率降低,适合很多实时应用(IP电话,视频会议等),这些应用要求源主机以恒定速率发送数据。
(5)支持一对一、一对多、多对一和多对多的交互通信。
(6)首部开销小,只有8字节,TCP需要20字节。
不使用拥塞控制的UDP有可能使网络产生严重拥塞。

UDP的首部格式
UDP有两个字段,数据字段和首部字段。首部字段只有8字节,由四个字段组成,每个字端都是2字节长。各字段意义如下:
(1)源端口 源端口号,需要对方回信时使用,不需要全0。
(2)目的端口 目的端口号,在终点交付报文时必须使用。
(3)长度 UDP用户数据报的长度,最小值为8(仅有首部)。
(4)检验和 检测UDP数据报在传输中是否有错,有错则丢弃。(使用12字节的伪首部,既不向下传送也不向上递交)
如果接收方UDP发现接收报文中目的端口号不正确,即不存在对应于该端口号的应用进程,就丢弃该报文,并由网际控制报文协议ICMP发送端口不可达差错报文给发送方。ICMP的traceroute应用就是让发送的UDP数据报故意使用非法UDP端口。


5.3 传输控制协议TCP概述

TCP最主要的特点:
(1)TCP是面向连接的运输层协议。
(2)每一条TCP连接只能有两个端点,只能是点对点的(一对一)。
(3)TCP提供可靠交付的服务,通过TCP传送的数据,无差错、不丢失、不重复并且按序到达。
(4)提供全双工通信,TCP两端都有发送缓存和接收缓存,用来临时存放双向通信的数据。
(5)面向字节流,流指的是流入到进程或从进程中流出的字节序列。面向字节流的含义是,虽然应用进程和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据仅仅看成一连串的无结构字节流。TCP不保证接收方应用程序收到的数据块和发送方应用程序发出的数据块具有对应大小的关系,但接收方收到的字节流必须和发送的字节流完全一样。
TCP连接是一条虚连接(逻辑连接),而不是一条真正的物理连接。TCP报文端先要传送到IP层,加上IP首部后,再传送到数据链路层。再加上数据链路层的首部和尾部再离开主机发送到物理链路。
TCP发送报文时不关心应用进程一次把多长的报文发送到TCP的缓存中,而是根据对方给出的窗口值和当前网络拥塞的程度决定一个报文段应包含多少字节(UDP发送的报文长度是应用进程给出的)。如果应用进程发送到TCP缓存的数据块太长,TCP就把它划分短一些再传送,如果太短TCP也可以等待积累足够多的字节构成报文段再发送。
TCP把连接作为最基本的抽象,TCP的许多特性都与TCP是面向连接的这个基本特性有关。
TCP连接有两个端点,TCP连接的端点叫做套接字(socket)或插口。端口号拼接到IP地址即构成了套接字。因此套接字的表示方法是在点分十进制的IP地址后写上端口号,中间用冒号或逗号隔开。每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)确定。
一定要记住:TCP连接的端点是个很抽象的套接字,即(IP地址:端口号)。还应记住:同一个IP地址可以有多个不同的TCP连接,而同一个端口号也可以出现在多个不同的TCP连接。


5.4 可靠传输的工作原理

TCP下面的网络所提供的是不可靠的传输,因此TCP必须采用适当的措施才能使两个运输层之间的通信变得可靠。

停止等待协议
全双工通信的双方既是发送方也是接收方。停止等待协议就是每发送完一个分组就停止发送,等待对方的确认,在收到确认之后再发送下一个分组。
1 无差错情况
A发送分组M1,发送完后就暂停发送,等待B的确认。B收到M1就向A发送确认,A收到了对M1的确认后就发送M2,同样在收到B对M2的确认后再发送M3。
2 出现差错
B收到M1时检测出来差错就丢弃M1,其他什么也不做(不通知A收到差错分组),也可能是在传输过程中丢失了。这两种情况下B都不会发送任何信息,A只要超过了一段时间仍然没有收到确认,就认为之前发送的分组丢失了,因而重传前面发送的分组,这就叫超时重传。因此要在每发送完一个分组时设置一个超时计时器,如果在计时器到期前收到确认就撤销计时器。
需要注意三点:
(1)A发送完分组后,必须暂时保留已发送分组的副本。只有收到确认后才清除。
(2)分组和确认分组都必须进行编号。
(3)超时计时器设置的重传时间应当比数据在分组传输的平均往返时间更长一些。如果设置的太长就会降低通信效率,如果太短就会导致不必要的重传。
3 确认丢失和确认迟到
假定B发送的确认丢失了,A在设定超时重传时间内没收到确认,重传了M1,假定B又收到了重传分组,此时B应采取两个行动。第一,丢弃重复分组M1,不向上层交付。第二,向A发送确认。
当B的确认迟到时,A会收到重复的确认。对此的处理很简单,A收下后就丢弃。B仍然会收到重复的分组M1,并且同样要丢弃掉重复分组,并重传确认分组。
通常A最终总是可以收到对发出所有分组的确认,如果A不断重传分组但总是收不到确认,说明通信线路太差,不能通信。
使用上述的确认和重传机制就可以在不可靠的传输网络实现可靠通信。上述的这种可靠传输协议常称为自动重传请求ARQ,意思是重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。
4 信道利用率
停止等待协议的优点是简单,确点是信道利用率太低。
信道利用率U=TD/(TD+RTT+TA)
RTT:往返时间 TD:A发送分组的时间 TA :B发送确认分组时间。
当RTT远大于分组发送时间时,信道利用率会非常低。为提高传输效率,发送方可以不使用低效率的停止等待协议,而采用流水线传输,流水线传输就是发送方可连续发送多个分组,不必发送完每个分组就停顿下来等待确认。当使用流水线传输时,就要使用连续ARQ协议和滑动窗口协议。

连续ARQ协议
连续ARQ协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。
接收方一般都是采用累积确认的方式,接收方不必对收到的分组逐个发送确认,而是在收到几个分组后,对按序到达的最后一个分组发送确认,这就表示,到这个分组为止的所有分组都已经正确收到了。
累积确认的优点:容易实现,即使确认丢失也不必重传。缺点:不能向发送方反映出接收方已经正确收到的所有分组信息。
例如发送方发送了前5个分组,而第3个分组丢失了。这时接收方只能对前2个分组进行确认,发送方无法知道后面3个分组的下落,只好把后面3个分组再重传一次。这就叫做回退N,表示需要再退回来重传已发送的N个分组。因此通信线路质量不好时,连续ARQ协议会带来负面影响。


5.5 TCP报文段的首部格式

TCP虽然面向字节流,但传送的数据单元是报文段。一个TCP报文段分为首部和数据两部分。
TCP报文段首部20字节是固定的,后面有4n字节是根据需要而增加的选项,因此TCP首部的最小长度是20字节。
首部固定部分各字段意义如下:
(1)源端口和目的端口 各占2字节,分别写入源端口号和目的端口号,TCP的分用和UDP相似,也是通过端口实现。
(2)序号 4字节,范围是[0,232-1]。在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,整个要传送的字节流的起始序号必须在连接建立时设置。首部中的序号字段值则是本报文段所发送的数据的第一个字节的序号。这个字段的名称也叫报文段序号。
(3)确认号 4字节,是指期望收到对方下一个报文段的第一个数据字节的序号。若确认号=N,表明到序号N-1为止的所有数据都已正确收到。一般情况下可保证当序号重复使用时旧序号的数据早已通过网络到达终点了。
(4)数据偏移 4位,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。
(5)保留 6位,目前置为0。
(6)紧急URG 值为1时,表明有效。当URG置1时,发送应用进程就告诉发送方的TCP有紧急数据要传送,于是发送方TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据。这时要与首部中紧急指针字段配合使用。
(7)确认ACK 仅当ACK=1时确认字段才有效。TCP规定在连接建立后所有传送的报文字段都必须把ACK置1。
(8)推送PSH 当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应,这种情况下TCP就可以使用推送操作。
(9)复位RST 当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接。RST置1还用来拒绝一个非法的报文段或拒绝打开一个连接。
(10)同步SYN 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则在响应的报文段中使SYN=1和ACK=1。因此SYN=1表示这是一个连接请求或连接接受报文。
(11)终止FIN 用来释放一个连接,当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。
(12)窗口 2字节,值为[0,216-1]之间的整数,指的是发送本报文段的一方的接收窗口。窗口值告诉对方,从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量。
(13)检验和 2字节,检验的范围包括首部和数据两部分。计算检验和时要在TCP报文段的前面加上12个字节的伪首部。
(14)紧急指针 2字节,仅在URG=1时才有效,指出本报文段中的紧急数据字节数。
(15)选项 长度可变,最长40字节。TCP起初只规定了一种选项,最大报文段长度MSS(数据字段的最大长度)。默认值536字节,为提高网络利用率。


5.6 TCP可靠传输的实现

TCP的滑动窗口是以字节为单位的。发送窗口里的序号表示允许发送的序号,显然窗口越大,发送方就可以在收到对方确认之前连续发送更多的数据,提高传输效率。发送窗口的大小不能超过对方的接收窗口大小。
发送窗口的后沿部分表示已发送并且收到确认的序号,前沿部分表示不允许发送的序号。发送窗口后沿的变化情况有两种,不动(没有收到新的确认)和前移(收到了新的确认)。发送窗口的前沿通常不断向前移动,但也可能不动或向后收缩。


5.7 TCP的流量控制

所谓流量控制,就是让发送方的发送速率不要太快,要让接收方来得及接收。
发送方的发送窗口不能超过接收方给出的接收窗口的数值。TCP窗口的单位是字节,不是报文段。
B向A发送的接收窗口大小报文可能丢失,A一直等待B发送的非零窗口通知,B也在一直等待A发送的数据,如果没有其他措施,可能会形成死锁。
为了解决这个问题,TCP为每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器,若持续计时器的时间到了,就发送一个零窗口探测报文段(仅携带1字节数据),而对方就在确认这个探测报文段时给出了现在的窗口值。如果窗口仍然是0,那么收到这个报文段的一方就重新设置持续计时器。如果窗口不是0,那么死锁的僵局就打破了。
应用进程把数据发送到TCP的发送缓存后,剩下的发送任务就交给TCP来控制了。可以用不同的机制来控制TCP报文段的发送时机,例如第一种机制是TCP维持一个变量,它等于最大报文段长度MSS,只要缓存中数据到达此长度就组成一个TCP报文段发送出去。第二种机制是由发送方的应用进程指明要求发送报文段,即TCP支持的推送操作。第三种机制是发送方的一个计时器时限到了,这就把当前已有的缓存数据装入报文段(长度不超过MSS)发送出去。


5.8 TCP的拥塞控制

拥塞控制的一般原理
某段时间内,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫做拥塞。
网络拥塞的原因很多。例如某个结点缓存的容量太小,到达该结点的分组因无存储空间暂存而不得不丢弃。假设将该结点缓存的容量扩展到非常大,于是凡到达该结点的分组均可在结点的缓存队列中排队,不受任何限制。由于输出链路的容量和处理机的速度并未提高,因此队列中的绝大多数分组的排队等待时间将会大大增加,结果上层软件只好把它们重传(超时)。因此简单扩大缓存空间不能解决网络拥塞。
拥塞常常趋于恶化,拥塞引起的重传不会缓解网络拥塞,反而会加剧。
拥塞控制就是防止过多的的数据注入到网络,这样可以使网络中的路由器或链路不致过载。拥塞控制要做的都有一个前提,就是网络能够承受现有的网络载荷。拥塞控制是一个全局性过程,涉及到所有主机,所有的路由器,以及与降低网络传输性能有关的所有因素。TCP连接的端点只要迟迟不能收到对方的确认信息,就猜想当前网络的某处可能发生了拥塞,但发生的地点和原因不从得知。
相反,流量控制是指点对点通信的控制,是个端到端的问题(接收端控制发送端)。流量控制所要做的就是抑制发送端发送数据的速率以便接收端来得及接收。
理想情况下,随着输入负载(单位时间内输入给网络的分组数目)或网络负载的增大,吞吐量应等于提供的负载,当吞吐量饱和时,理想拥塞控制的情况下,吞吐量仍然可以维持最大值。但实际上随着负载增大,网络吞吐量的增长速率逐渐减小,当网络的吞吐量明显小于理想吞吐量时,网络就进入了轻度拥塞的状态。当提供负载到达某一数值时,网络的吞吐量反而随着负载的增大而下降,这时网络就进入了拥塞状态。当负载继续增大时,网络的吞吐量就下降到0,网络无法工作,这就是所谓的死锁。
拥塞控制是一个动态的问题,从大的方面可以将拥塞控制分为开环控制和闭环控制两种方法。开环控制就是在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络工作时不产生拥塞,但系统一旦运行就不在途中进行改正了。
闭环控制是基于反馈环路的概念,主要措施:
(1)监测网络系统以便检测到拥塞在何时、何处发生
(2)把拥塞发生的信息传送到可采取行动的地方
(3)调制网络系统的运行以解决出现的问题

TCP拥塞控制的算法有四种:(1)慢开始(2)拥塞避免(3)快重传(4)快恢复。


5.9 TCP的运输连接管理

运输连接有三个阶段:连接建立、数据传送、连接释放
TCP连接建立中要解决以下三个问题:
(1)要使每一方能够确知对方的存在
(2)要允许双方协商一些参数
(3)能够对运输实体资源进行分配
TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫做服务器。

TCP建立连接的过程叫做握手,握手需要在客户和服务器之间交换三个TCP报文段。
最初两端的TCP进程都处于CLOSED状态,假设A主动打开连接,B被动打开连接。
一开始B的TCP服务器进程先创建传输控制块TCB,准备接收客户进程的连接请求。然后服务器进程就处于LISTEN状态,等待客户的连接请求。如有则立即响应。
A的TCP客户进程也是首先创建传输控制块TCB,然后打算建立TCP连接时,先向B发出连接请求报文段,SYN=1,同时选择一个初始序号seq=x。TCP规定SYN报文段不能携带数据,但要消耗掉一个序号,这时TCP客户进程进入SYN-SENT(同步已发送)状态。
B收到连接请求报文段后,如同意建立连接则向A确认。在确认报文段应把SYN和ACK位都置1,确认号是ack+1,同时也为自己选择一个初始序号seq=y。这个报文段也不能携带数据,但同样要消耗一个序号。这时TCP服务器进程进入SYN-RCVD(同步收到)状态。
TCP客户进程收到B的确认后,还要向B给出确认。确认段ACK=1,确认号ack=y+1,而自己的序号seq=x+1。TCP规定ACK的报文段可以携带数据,如果不携带数据则不消耗序号,这种情况下下一个报文段的序号仍是seq=x+1,这时TCP连接已建立,A进入ESTABLISHED(已建立连接)状态。
B收到A的确认后,也进入ESTABLISHED状态。
为什么A要发送一次确认呢,主要是为了防止已失效的连接请求报文段突然又传送到了B,因而产生错误。假设A发出的连接请求报文在网络某些结点滞留了,以至于连接释放后的某个时间才到达B。本来这是失效报文段,但B收到后误认为是A发出的新连接请求,就发出确认。假设不采取报文握手,只要B发出确认,连接就建立了,由于A并没有发出请求因此不会理睬B,但B误认为连接已建立会一直等待A发送数据,白白浪费B中的资源。

TCP的连接释放
A和B都处于ESTABLISHED状态,A的应用进程先向其TCP发出释放连接报文段,并停止再发送数据,主动关闭TCP连接。A把连接释放报文段首部的终止控制位FIN置1,seq=u,它等于前面已传送的最后一个字节的序号加1。这时A进入FIN-WAIT-1(终止等待1)的状态,等待B的确认。FIN报文段不携带数据也要消耗掉一个序号。
B收到连接释放报文段后发出确认,确认号是ack=u+1,而这个报文段自己的序号是v,等于前面B已传送的最后一个字节的序号加1。然后B就进入CLOSE-WAIT(关闭等待)状态。这时A到B这个方向的连接就释放了,这时TCP的连接处于半关闭状态,即A已经没有数据要发送了,但若B发送数据,A仍要接受。
A收到来自B的确认后,就进入FIN-WAIT-2(终止等待2)状态,等待B发出的连接释放请求报文。若B已经没有要向A发送的数据,其应用进程就通知TCP释放连接,这时B发出的连接释放报文段必须使FIN=1。假定B的序号为w(半关闭状态时B可能又发送了一些数据)。B还必须重复上次已发送过的确认号ack=u+1,这时B就进入了LAST-ACK(最后确认)状态。
A收到B的连接释放报文段后必须对此确认,在确认报文段中把ACK置1,确认号ack=w+1,自己的序号是u+1(前面发送的FIN报文消耗一个序号)。然后进入TIME-WAIT状态。必须经过时间等待计时器设置的时间2MSL后,A才能进入到CLOSED状态。MSL叫做最长报文段寿命。
A必须等待2MSL时间的理由:
(1)为了保证A发送的最后一个ACK报文段能够到达B。这个ACK报文段有可能丢失,B会超时重传这个FIN+ACK报文段,而A就能在2MSL时间内收到这个报文段,接着A再重传一次确认,重新启动2MSL计时器。最后AB都正常进入到CLOSED状态。如果A不等待一段时间就收不到B重传的报文段,也不会再发送一次确认报文段,B就无法按照正常步骤进入CLOSED状态。
(2)为了防止前述的“已失效连接请求报文段”出现在本连接中。
TCP还设有保活计时器,服务器每收到一次客户的数据就重新设置保活计时器,时间的设置通常是2小时,若2小时内没有收到客户的数据,就发送一个探测报文段,以后每隔75秒发送一次,如果连续10个探测报文段后仍无客户的响应,服务器就认为客户端出了故障,关闭连接。


5.10 本章的重要概念

运输层提供应用进程间的逻辑通信,运输层的通信并不是真正在两个运输层之间直接传送数据。运输层向应用层屏蔽了下面的网络细节(网络拓扑、路由选择协议等),它使应用进程看见的就好像在两个运输层实体之间有一条端到端的逻辑通信线路。
网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。
运输层有两个主要的协议:TCP和UDP。它们都有复用和分用,以及检错的功能。当运输层采用TCP协议时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工通信的可靠信道。当运输层采用UDP协议时,这种逻辑通信信道仍然是一条不可靠信道。
运输层用一个16位端口号来标志一个端口,端口号具有本地意义,它只是为了标志本计算机应用层中的各个进程在和运输层交互时的层间接口。在互联网的不同计算机中,相同的端口号没有关联。
两台计算机中的进程要互相通信,不仅要知道对方IP地址,还要知道对方的端口号。
运输层的端口号分为服务器端端口号(0-1023指派给数值端口,1024-49151是登记端口号)和客户端暂时使用的端口号(49152-65535)。
UDP的主要特点:(1)无连接(2)尽最大努力交付(3)面向报文(4)无拥塞控制(5)支持一对一、一对多、多对一和多对多的交互通信(6)首部开销小(只有源端口、目的端口、长度、检验和)。
TCP的主要特点:(1)面向连接(2)每一条TCP连接只能是点对点的(3)提供可靠的交付服务(4)提供全双工通信(5)面向字节流
TCP用主机的IP地址加上主机的端口号作为TCP连接的端点,这样的端点叫做套接字或插口。套接字用(IP地址:端口号)来表示。
停止等待协议能够在不可靠的传输网络实现可靠通信。每发完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组,分组需要编号。
超时重传是只要超过了一段时间仍然没有收到确认,就重传前面发送过的分组。因此每发送完一个分组需要设置一个超时计时器,其重传时间应比数据在分组传输中的平均往返时间更长一些。这种自动重传方式常称为自动重传请求ARQ。
在停止等待协议中,若接收方收到重复分组,就丢弃该分组,但同时还要发送确认。
连续ARQ协议可提高信道利用率,发送方维持一个发送窗口,凡位于发送窗口内部的分组都可以连续发送,而不需要等待确认。接收方一般采用累积确认,对按序到达的最后一个分组发送确认,表明到这个分组为止的所有分组都已正确收到了。
TCP报文段首部的前20个字节是固定的,后面有4N字节是根据需要而增加的选项(N是整数)。在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。首部中的序号字段值指的是本报文段发送的数据的第一个字节的序号。
TCP首部中的确认号是期望收到对方下一个报文段的第一个数据字节的序号,若确认号位N,则表明到序号N-1为止的所有数据都已正确收到。
TCP首部中窗口的字段指出了现在允许对方发送的数据量,窗口是动态变化的。
TCP使用窗口滑动机制,发送窗口里的序号表示允许发送的序号,发送窗口后沿的部分表示已发送并且收到确认的,前沿的前面部分表示不允许发送。发送窗口后沿的变化情况有两种,即不动(没有收到新的确认)和前移(收到了新的确认)。发送窗口前沿通常是不断向前移动的。
流量控制就是让发送方的速率不要太快,要让接收方来得及接收。
某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况叫做拥塞。拥塞控制就是防止过多的数据注入到网络,这样可使网络中的路由器或链路不至于过载。
流量控制是一个端到端的问题,使接收端抑制发送端发送数据的速率,以便使接收端来得及接收。拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。
为了进行拥塞控制,TCP的发送方要维持一个拥塞窗口cwnd的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态变化。发送方让自己的发送窗口取为拥塞窗口和接收方的接收窗口中较小的一个。
TCP的拥塞控制采取了四种算法,即慢开始、拥塞避免、快重传和快恢复。在网络层也可以使路由器采用适当的分组丢弃策略(如主动队列管理AQM),以减小网络拥塞的发生。
运输连接有三个阶段:连接建立、数据传送、连接释放。
主动发起TCP连接请求的应用进程叫客户,而被动等待连接建立的应用进程叫服务器。TCP的连接建立采用三报文握手机制,服务器要确认客户连接请求,然后客户要对服务器的确认进行确认。
TCP连接的释放采用四报文握手机制,任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后就进入半关闭状态。当另一方也没有数据再发送时,则发送连接释放通知,对方确认后就完全关闭了TCP连接。