计算机网络
计算机网络(第七版)谢希仁
1.概述
互联网的两个基本特点:连通性和共享
互联网概述
计算机网络又若干**节点(node)和连接这些节点的链路(link)**组成。
网络之间可以通过路由器互连起来,这样的网络成为互连网(internetwork),互连网是“网络的网络”(network of networks)
网络把许多计算机连接在一起,而互连网则把许多网络通过路由器连接在一起。与网络相连的计算机称为主机。
互连网与互联网的区别:
互连网(internet)是一个通用名词,泛指多个计算机网络互连而成的计算机网络。这些网络之间的通信规则可以任意选择,不一定非要使用TCP/IP协议
互联网(Internet)是一个专有名词,指的是当前全球最大的、开放的、由众多网络相互连接而成的特定互连网,它采用TCP/IP协议族作为通信的规则,且其前身是美国的ARPANET(一个单个的分组交换网)
第一阶段:从单个网络ARPANET向互联网发展的过程
第二阶段:建成了三级结构的互联网,分为主干网、地区网、校园网(或企业网)
第三阶段:形成了多层次的ISP结构的网络
ISP(Internet Service Provider):互连网服务提供者,例如中国电信、中国联通等
所谓“上网”就是指“(通过某ISP获得的IP地址)接入到互联网“
互联网交换点IXP(Internet eXchange Point):允许两个网络直接相连并交换分组,而不需要通过第三个网络来转发分组。
典型的IXP由一个或多个网络交换机组成,许多ISP再连接到这些网络交换机的相关端口上。
IXP常采用工作在数据链路层的网络交换机,这些网络交换机都用局域网互连起来。
互联网的组成
从工作方式,分为两大块:
- 边缘部分:由所有连接在互联网上的主机组成。这部分是用户直接使用的,用来进行通信(传输数据、音频或视频)和资源共享
- 核心部分:由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的。
边缘部分
处在互联网边缘的部分就是连接在互联网上的所有主机。这些主机又称为端系统(end system)
主机A 与 主机B进行通信指的是”主机A的某个进程和主机B上的另一个进程进行通信“,简称计算机之间的通信
计算机通信的对象是应用层中的应用进程
在网络边缘的端系统之间的通信方式通常分为两大类:
- 客户-服务器方式(C/S方式)
- 对等方式(p2p方式)
客户-服务器方式
在互联网最常用,最传统的方式
客户(client)和服务器(server)是指通信中所涉及的两个应用进程,客户是服务请求方,服务器是服务提供方
服务请求方和服务提供方都要使用网络核心部分所提供的服务。
客户程序的特点:
- 被用户调用后运行,在通信时主动向原地服务器发起通信
- 不需要特殊的硬件和很复杂的操作系统
服务器程序的特点:
- 是一种专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求
- 系统启动后即可自动调用并一直不断地运行,被动地等待并接受来自各地的客户的通信请求
- 一般需要有强大的硬件和高级的操作系统支持
如上的客户和服务器本来都指的是计算机进程(软件)
在表示机器时,我们也使用”客户端“(或客户机)”服务端“(服务机)来表示”运行客户(服务器)程序的机器“
对等连接方式
对等连接(peer-to-peer),简写为p2p,是指两台主机在通信时并不区分哪一个时服务请求方哪一个是服务提供方。只要两台机器都运行了对等连接软件,他们就可以进行平等的、对等连接通信。
核心部分
在网络核心部分起特殊作用的是路由器(router),它是一种专用计算机。路由器是实现分组交换(packet switching)关键,其任务是转发收到的分组
- 电路交换的主要特点:
从通信资源分配的角度,**交换(switching)**就是按照某种方式动态分配传输线路的资源
电路交换:建立连接(占用通信资源)—通话(一直占用通信资源)—释放连接(归还通信资源)
重要特点:在通话的全部时间内,通话的两个用户始终占用端对端的通信资源
2.分组交换的特点
分组交换采用存储转发技术
- 报文(message):要发送的整块数据
- 首部(header):发送报文之前把较长的报文分为一个个更小的等长数据段,每个数据段前加上一些必要的控制信息
- 分组(packet):分组又称为包,由首部和数据段组成,分组的首部也可以称为”包头“。
分组是在互联网中传送的数据单元。
位于网络边缘的主机是为用户进行信息处理的,并且可以和其他主机通过网络交换信息
位于网络核心的路由器则是用来转发分组的,及进行分组交换的。
当讨论互联网的核心部分中的路由器转发分组的过程时,往往把单个的网络简化成一条链路,而路由器成为核心部分的结点
互联网的核心部分通常采用网络拓扑结构
分组交换的优点:高效、灵活、迅速、可靠
缺点:
- 时延:各路由器存储转发时需要排队
- 开销(overhead):各分组必须携带控制信息
数据传送的主要特点:
- 电路交换:整个报文的比特流连接地从源点直达终点
- 报文交换:整个报文先传送到相邻结点,全部存储下来后查找转发表,转发到下一个结点
- 分组交换:单个分组(这只是整个报文的一部分)传送到相邻结点,存储下来后查找转发表,转发到下一个结点
计算机网络的类别
计算机网络的定义
计算机网络主要是由一些通用的、可编程的硬件互连而成,这些硬件并非专门用来实现某一特定目的。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛和日益增长的应用
计算机网络的类别
-
按网络的作用范围进行分类
- 广域网WAN(Wide Area Network):有时被称为远程网。互联网的核心,其任务是通过长距离运送主机所发送的数据。
- 城域网MAN(Metropolitan Area Network):用来互连多个局域网
- 局域网LAN(Local Area Network)
- 个人局域网PAN(Personal Area Network)
- 若中央处理机之间的距离非常近,则一般称其为多处理机系统
-
按网络的使用者进行分类
- 公用网(public network):指电信公司主出资建造的大型网络。又称为公众网
- 专用网(private network):满足本单位的特殊业务工作的需要而建造的网络
-
用来把用户接入到互联网的网络
接入网AN(Access Network):又称本地接入网或居民接入网
计算机网络的性能
计算机网络的性能指标
-
速率
比特:代表一个“二进制数字”。网络技术中的速率指的是数据的传送速率,也称为数据率或比特率,单位是bit/s。当提到网络的速率时,往往指的是额定速率或标称速率
-
带宽(bandwid)
-
带宽本来指某个信号具有的频率带宽。信号的带宽是指该信号所包含的各种不同频率成分所占据的频率范围。
表示某信道允许通过的信号频率范围就成为该信道的带宽(或通频带)
单位赫(或千赫、兆赫)
- 在计算机网络中,带宽用来表示网络中某通道传送数据的能力
-
表示单位时间内网络中的某信道所能通过的“最高数据率”
单位是数据率的单位bit/s
3.吞吐量(throughput)
表示单位时间内通过某个网络(或信道、接口)的实际的数据量。吞吐量受网络的带宽或网络的额定频率的限制
4.时延(delay)
指数据(一个报文或分组、甚至比特)从网络(或链路)的一端传送到另一端所需的时间
有时也被称为延迟或迟延
1.发送时延(transmission delay)是主机或路由器发送数据帧所需要的时间。
2.传播时延(propagation delay)是电磁波在信道中传播一定的距离需要花费的时间
3.处理时延:主机或路由器在收到分组时要花费一定的时间进行处理
4.排队时延:分组进入路由器后要现在输入队列中排队等待处理。在路由器确定了转发接口后,还有在输入队列中排队等待转发。
**总时延为四种时延的和 **
不能笼统地认为“数据的发送速率越高,其传送的总时延越小”,因为总时延是由四个时延决定的
对于告诉网络链路,我们提高的仅仅是数据的发送速率而非比特在链路上的传播速率
提高数据的发送速率知识减小了数据的发送时延
数据的发送速率的单位是每秒发送了多少个比特,这是指在某个点或某个接口上的发送速率。而传播速率的单位是每秒传播多少公 里,是指在某一段传输线路上比特的传播速率
5.时延带宽积=传播时延*带宽
6.往返时间RTT
7.利用率
非性能特征:费用、质量、标准化、可靠性、可扩展性和可升级性、易于管理和维护
计算机网络体系结构
分层:可以将庞大的问题转化为小的问题
开放系统互连基本参考模型OSI/RM(Open Interconnection Reference Model)
简称OSI
协议与划分层次
网络协议(network protocol):为进行网络中的数据交换而建立的规则、标准或约定
三要素:
- 语法:即数据与控制信息的结构或格式
- 语义:即需要发出何种控制信息,完成何种动作以及做出何种响应
- 同步:即事件实现顺序的详细说明
分层的好处:
- 各层之间是独立的
- 灵活性好
- 结构上可以分割开
- 易于实现和维护
- 能促进标准化工作
各层应该要实现的功能:
- 差错控制
- 流量控制
- 分段和重装
- 复用和分用
- 连接建立和释放
体系结构:计算机网络的各层及其协议的集合,就是这个计算机网络及其构建所应完成的功能的精确定义
具有五层结构的体系结构
-
应用层(application layer)
体系中的最高层
任务是通过应用进程间的交互来完成特定网络应用
应用层协议定义是应用进程间通信和交互的规则
网络上的应用层协议举例:域名系统DNS,支持万维网应用的HTTP协议、SMTP
我们把应用层交互的数据单元称为报文(message) -
运输层(transport layer)
负责向两台主机中进程之间的通信提供通用的数据传输服务。
应用层具有复用和分用的功能
复用是多个应用层进程可以同时使用下面运输层的服务,分用时运输层把收到的信息分别交付上面应用层中的相应进程主要协议:
- 传输控制协议TCP(Transmission Control Protocol)
提供面向连接的、可靠的数据传输服务,其数据传输的单位是报文段(segement) - 用户数据报协议UDP(User Datagram Protocol)
提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报
- 传输控制协议TCP(Transmission Control Protocol)
-
网络层(network layer)
负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送
分组又叫IP数据报
互联网是由大量的异构(heterogeneous)网络通过路由器(router)相互连接起来。互联网使用的网络协议时无连接的网际IP和许多中路由选择协议 -
数据链路层(data link layer)
数据链路层将网络层交下来的IP数据报组装成帧(framiing),在两个相邻结点间链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)
-
物理层(physcial layer)
在物理层上传输的数据单位是比特。
物理层要考虑用多大的电压代表1或0,以及接收方如何识别发送的比特
还要确定连接电缆的插头应当有多少根引脚以及各引脚如何连接
比喻:有一封信从最高层向下传送。每经过一层就包上一个新的信封,协商必要的地址信息。包有多个信封的信件传送到目的站后, 从第一层其,每层拆开一个信封后就把信封中的信件交给他的上一层。传到最高层后,取出发信人所发的信交给收信人。
OSI参考模型把对等层次之间传送的数据称为该层的协议数据单元PDU
我们以前经常提到的各层协议,实际上就是各个对等层之间传递数据时的各项规定。
几个层次画在一起很像一个栈(stack)的结构,称为协议栈(peer layers)
实体(entity):表示任何可发送或接收信息的硬件或软件进程
协议是控制两个对等实体(或多个实体)进行通信的规则的集合
- 语法方面的规则定义了所交换的信息的格式
- 语义方面的规则定义了发送者或接收者所要求的操作
在协议的控制下两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下面一层所提供的服务。
协议与服务的区别
- 协议的实现保证了能够向上一层提供服务。使用本层服务的实体只能看见服务而无法看见下面的协议
- 协议是“水平的”,即协议是控制对等实体之间通信的规则
- 服务是“垂直的”,即服务是由下层向上层通过层间接口提供的
- 只有那些能被高一层实体“看得见”的功能才能称为服务
上层使用下层所提供的服务必须通过与下一层交换一些命令,这些命令在OSI中称为服务原语
在同一实体中相邻两层实体进行交互的地方,通常称为服务访问点SAP(Service Access Point)。它实际上就是一个逻辑接口。
OSI把层与层之间交换的数据的单位称为服务数据单元SDU(Service Data Unit)
第n层向上面的第n+1层所提供的服务实际上已经包括了在它一下各层所提供的服务
计算机网络的协议还有一个重要的特点:必须把所有不利的条件事先都估计到,而不能假定一切都是正常和的非常理想的。
因此检查一台计算机网络协议是否正常,必须要非常仔细地检查这个协议是否能应付各种异常情况
TCP/IP的体系结构
路由器在转发分组时最高只用到网络层而没有使用运输层和应用层。
表示:
数据链路层也就是属于网络接口层
TCP/IP可以为各式各样的应用提供服务,TCP/IP允许IP协议在各式各样的网络构成的互联网上运行
本章重要概念
- 计算机网络把许多计算机连接起来,而互联网把许多网络连接在一起,是网络的网络
- internet(互连网)泛指多个计算机网络互连而成的网络。网络之间的通信协议可以是任意的
- Internet(互连网)指当前全球最大的、开放的、有众多网络连接而成的特定互连网,使用TCP/IP协议族为通信规则
- 互联网现在采用存储转发的分组交换技术,以及三层ISP结构
- 互联网按工作方式可以划分为边缘部分与核心部分,主机在网络的边缘部分,其作用是进行信息处理。路由器位于网络的核心部分,作用是按存储转发方式进行分组交换
- 计算机通信是计算机中的进程(即运行着的程序)之间的通信。计算机网络采用的通信方式是客户-服务器方式和对等连接方式
- 客户和服务器都是指通信中所涉及的应用进程。客户是服务请求方,服务器是服务提供方
- 按作用范围的不同,计算机网络分为广域网WAN、城域网MAN、局域网LAN和个人区域网PAN
- 计算机网络最常用的性能指标是:速率、带宽、吞吐量、时延、时延带宽积、往返时间和信道(或网络)利用率
- 网络协议即协议,是为进行网络中的数据交换而建立的规则。计算机网络的各层及其协议的集合,称为网络的体系结构
- 五层协议的体系结构由应用层、运输层、网络层(网际层)、数据链路层和物理层组成。运输层最重要的协议是TCP和UDP协议,而网络层最重要的协议是IP协议
2.物理层
3.数据链路层
信道:一般都是用来表示向某一个方向传送信息的媒体
点对点信道。采用一对一的点对点通信方式
广播信道。这种信道使用一对多的广播通信方式
使用点对点信道的数据链路层
数据链路和帧
链路(link):一个结点到相邻结点的一段物理线路(有线或无线),而中间没有任何其他的交换节点
数据链路(data link):数据传输时,除了必须要有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输
把这些协议的硬件和软件加到链路上,就构成了数据链路
最常用的方法是使用网络适配器来实现这些协议。一般的适配器都包括数据链路层和物理层的功能
数据链路层的协议数据单元-帧
数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。网络层协议数据单元就是IP数据报(或简称数据报、分组或包)
三个基本问题
封装成帧、透明传输和差错检测
- 封装成帧:就是把一段数据的前后分别添加首部和尾部,这样就构成了一个帧。由分组交换可知:所有在互联网上传送的数据都以分组(即IP数据报)为传送单位,网络层的IP数据报传送到数据链路层就成为帧的数据部分。
一个帧的帧长等于帧的数据部分长度加上帧首部和帧尾部的长度。
首部和尾部的一个重要作用就是进行帧定界
为了提高帧的传输效率,应当使帧的数据部分长度尽可能地大于首部和尾部的长度。但是,每一种数据链路层协议都规定了所能传送的帧的数据部分长度上限-最大传送单元MTU(Maximum Transfer Unit)
当数据是由可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符。控制字符SOH(Start Of Header)放在一帧的最 前面,表示帧的首部开始。另一个控制字符EOT(End Of Transmission)表示帧的结束。SOH和EOT都是控制字符的名称。他们的 十六进制编码分别是01和04
-
透明传输:当传送的帧是用文本文件组成的帧时,其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。
透明表示某一个实际存在的事物看起来却好像不存在一样
在数据链路层透明传送数据表示无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层。因此对所传送地数据来说,这些数据就看不见数据链路层有什么妨碍数据传输的东西。为了解决透明传输问题。就必须设法使数据中可能出现的控制字符SOH和EOT在接收端不被解释为控制字符。发送端的数据链路层在数据中出现控制字符SOH和EOT的前面插入一个转义字符ESC(十六进制1B,二进制00011011)。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充
-
差错检测
比特差错:比特在传输过程中1可能会变成0,0可能会变成1
误码率BER:一段时间内,传输错误的比特占所传输比特总数的比率
使用循环冗余检验CRC的检错技术:在数据M的后面添加提供差错检测用的n位冗余码,这种为了进行检错而添加的冗余码常称为帧检验序列FCS传输差错:比特差错、帧丢失、帧重复或帧失序
点对点协议PPP
PPP协议的特点
PPP(Point-to-Point Protocol)协议是计算机和ISP进行通信时所使用的数据链路层协议
- PPP协议应满足的需求
- 简单:接收方每接收一个帧,就进行CRC检验,如果正确就接受,不正确就丢弃。其他什么也不做
- 封装成帧
- 透明性
- 多层网络协议:PPP协议必须能够在同一条物理链路上同时支持多种网络层协议
- 多种类型链路:串行(一次发一个bit)的或并行的、同步的或异步的、低速的或高速的、电的或光的、交换的或非交换的
- 差错检测
- 检测连接状态
- 最大传送单元:最大传送单元MTU是帧可以载荷的数据部分的最大长度而不是帧的总长度
- 网络层地址协商
- 数据压缩协商
PPP协议不需要进行纠错,不需要设置序号,不需要进行流量控制。不支持多点线路(即一个主站轮流和链路上的多个从站进行通信),而只支持点对点的链路通信。只至此全双工链路
**PPPoE(PPP over Ethernet)**是为宽带上网的主机使用的链路层协议。这个协议把PPP帧再封装到以太网帧中。
- PPP协议的组成
- 一个将IP数据报封装到串行链路的方法。PPP既支持异步链路(无奇偶检验的8比特数据),也支持面向比特的同步链路。IP数据报在PPP帧中就是其信息部分。这个信息部分的长度受MTU的限制
- 一个用来建立、配置和测试数据链路连接的链路控制协议LCP(Link Control Protocol)
- 一套网络控制协议NCP(Network Control Protocol),其中的每一个协议支持不同的网络层协议
PPP协议的帧格式
-
各个字段的意义
PPP帧的首部和尾部分别为四个字段和两个字段
首部的第一个字段和尾部的第二个字段都是标志字段F(Flag),规定为0x7E,标志字段就是PPP帧的定界符。如果连续出现两个F,表示这是一个空帧,应当丢弃
协议部分
- 当为0x0021时为IP数据报
- 0xc021为LCP的数据
- 0x8021为网络层的控制数据
2.字节填充
3.零比特填充
※PPP协议的工作状态
流程
在这种情况下,拨号是指使用电话线或调制解调器通过拨打ISP(互联网服务提供商)的号码来建立连接。这种连接方式被称为拨号接入,它是一种电路交换技术,电话线路建立一个临时的点对点连接。
当用户拨号接入ISP后,就建立了一条从用户个人电脑到ISP的物理连接。这时,用户个人电脑向ISP发送一系列的链路控制协议LCP分组(封装成多个PPP帧),以便建立LCP连接。这些分组及其响应选择了将要使用的一些PPP参数。
接着还要进行网络层配置,网络控制协议NCP给新接入的用户个人电脑分配一个临时的IP地址。这样用户个人电脑就成为互联网上的一个有IP地址的主机
当用户通信完毕后,NCP释放网络层连接,收回原来分配出去的IP地址。接着LCP释放数据链路层的连接,最后释放物理层的连接
-
PPP协议的起始和终止状态始终是链路静止(Link Dead)
-
当用户个人电脑通过或调制解调器呼叫路由器时,路由器就能够检测调制解调器发出的载波信号。建立物理层连接后,PPP就进入链路建立(Link Establish),目的是为了建立链路层的LCP连接
-
接下来LCP开始协商一些配置选项,即发送LCP的配置请求帧(Configure-Request)
-
配置确认帧
-
配置否定帧
-
配置拒绝帧
配置选项包括
- 链路上的最大帧长
- 所使用的**鉴别协议(authentication protocol)**的规约
- 不使用PPP帧中的地址和控制字段(固定无信息量即可省略)
4.结束后建立LCP链路,接着进入**”鉴别“**,这一状态下只允许传送LCP协议的分组、鉴别协议的分组以及检测链路质量的分组
-
- 口令鉴别协议PAP:需要发起通信的一方发送身份标识符和口令
- 口令握手鉴别协议CHAP
5.若鉴别身份失败,则转入链路中止。鉴别成功后,进入网络层协议
6.在网络层协议状态, PPP两端的NCP根据网络层的不同协议互相交换网络层特定的网络控制分组。意思是PPP协议两端的网络层可以运行不同的网络层协议,但仍然可以使用同一份PPP协议进行通信
如果PPP运行IP协议,则对PPP的每一端配置IP协议模块时就要使用NCP中支持IP的协议-IP控制协议。IPCP分组也封装成PPP帧在PPP链路上传送
7.网络层配置完毕后,链路就进入可进行数据通信的链路打开状态。链路的两个PPP端点可以彼此向对方发送分组。PPP端点之间可以发送回送请求LCP分组和回送回答LCP分组,用来检查链路的状态
8.数据传输结束后,可以由链路的一段发出终止请求LCP分组请求终止链路连接,在收到对方发来的终止确认LCP分组,转到”链路终止“
如果链路故障,也会从链路打开转到链路终止,调制解调器载波停止后,则会链路静止