本系列文章部分参考《计算机网络》谢希仁编著第七版,PPT链接: 电子工业出版社悦学多媒体课程资源平台(yx.51zhy.cn/mtrcsRes/ph…) 本文正在参与 “网络协议必知必会”征文活动
中国互联网络信息中心CNNIC每年公布两次我国互联网的发展情况。www.cnnic.cn
本系列文章目录如下:
- 再回首:从应用到理论《计算机网络》系列(一):概述
- 再回首:从应用到理论《计算机网络》系列(二):物理层
- 再回首:从应用到理论《计算机网络》系列(三):数据链路层
- 再回首:从应用到理论《计算机网络》系列(四):网络层
计算机网络的定义
网络: “网络”是一个统称。泛指把人或物互连在一起而形成的系统。有三大类大家很熟悉的网络,即电信网络、有线电视网络和计算机网络。
计算机网络(简称为网络): 由若干结点(node)和连接这些结点的链路(link)组成。
Internet(互联网,或因特网): 是一个专用名词,它指当前全球最大的、开放的、由众多网络相互连接而成的特定互连网,它采用TCP/IP协议族作为通信的规则,且其前身是美国的 ARPANET。
互联网的组成
互联网的拓扑结构虽然非常复杂,并且在地理上覆盖了全球,但从其工作方式上看,可以划分为以下两大块:
边缘部分: 由所有连接在互联网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
核心部分: 由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)。
互联网的边缘部分
由所有连接在互联网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。这些主机又称为端系统(end system),“端”就是“末端”的意思(即互联网的末端)。端系统在功能上可能有很大的差别。
端系统之间的通信
即“主机 A 的某个进程和主机 B 上的另一个进程进行通信”。简称为“计算机之间通信”。端系统之间的通信方式通常可划分为两大类:
客户/服务器方式(C/S方式):
- 客户( client)和服务器( server)都是指通信中所涉及的两个应用进程
- 客户-服务器方式所描述的是进程之间服务和被服务的关系。
- 客户是服务的请求方,服务器是服务的提供方。
- 服务请求方和服务提供方都要使用网络核心部分所提供的服务。
- 客户端被用户调用后运行,在打算通信时主动向远地服务器发起通信(请求服务)。因此,客户程序必须知道服务器程序的地址,不需要特殊的硬件和很复杂的操作系统。
- 服务端是一种门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。因此,服务器程序不需要知道客户程序的地址一般需要强大的硬件和高级的操作系统支持。
对等方式(P2P方式):
- 对等连接(peer-to-peer,简写为P2P)是指两个主机在通信时并不区分哪一个是服务请求方还是服务提供方。
- 只要两个主机都运行了对等连接软件(P2P软件),它们就可以进行平等的、对等连接通信。
- 双方都可以下载对方已经存储在硬盘中的共享文档。
- 对等连接方式从本质上看仍然是使用客户服务器方式,只是对等连接中的每一个主机既是客户又是服务器。
互联网的核心部分
网络中的核心部分要向网络边缘中的大量主机提供连通性,使边缘部分中的任何一个主机都能够向其他主机通信(即传送或接收各种形式的数据)。在网络核心部分起特殊作用的是路由器 (router),路由器是实现分组交换 (packet switching) 的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。
- 互联网的核心部分采用了分组交换技术。
计算机网络的性能
- 速率: 数据的传送速率,也称数据率或比特率
- 比特(bit): 计算机中数据量的单位,一个比特就是二进制数字中的一个 1 或 0。速率的单位是bit/s,也可以是kbit/s,Mbit/s,Gbit/s,Tbit/s,单位换算为1000。100M以太网,省略了单位中的bit/s,意思是速率为100Mbit/s的以太网。
- 字节(byte): 一个字节代表8个比特,记为大写的B。“千字节”的“千”用大写K表示,他等于2的10次方,即1024,而不是1000。MB、GB为2的20、30次方。
- 带宽: 通信线路传送数据的能力。表示在单位时间内网络中的某信道所能通过的“最高数据率”。单位是 bit/s,即 “比特每秒”。
- 吞吐量: 表示在单位时间内通过某个网络(或信道、接口)的数据量。
- 时延: 数据(一个报文或者分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间。也称为延迟或者迟延。数据在网络中经历的总时延就是发送时延、传播时延、处理时延和排队时延之和。
- 发送时延 主机或路由器发送数据帧所需要的时间,即从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需要的时间。
- 传播时延 电磁波在信道中传播一定的距离需要花费的时间。 1000km长的光纤线路产生的传播时延大约为5ms。
- 处理时延 主机或路由器在收到分组时要花费一定的时间进行处理,比如分析分组的首部,从分组中提取数据部分,进行差错检验或查找适当的路由等。这就产生了处理时延。
- 排队时延 分组在经过网络传输时,要经过许多路由器。但分组在进入路由器后要先在输入队列中排队等待处理。在路由器确定了转发接口后,还要在输出队列中排队等待转发。这就产生了排队时延。排队时延的长短往往取决于网络当时的通信量。当网络的通信量很大时会发生队列溢出,使分组丢失,这相当于排队时延为无穷大。
- 时延带宽积: 传播时延和带宽的乘积。以比特为单位的链路长度。
- 往返时间RTT: 从发送方发送数据开始,到发送方接到来自接收方的确认(接收方收到数据后便立即发送确认),总共经历的时间。
- 利用率:
- 信道利用率:信道利用率指出某信道有百分之几的时间是被利用的(有数据通过),完全空闲的信道的利用率是零。
- 网络利用率:全网络的信道利用率的加权平均值。
计算机网络的体系结构
计算机网络的各层及其协议的集合就是网络的体系结构( architecture)。体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件。
协议与划分层次
- 在计算机网络的基本概念中,分层次的体系结构是最基本的。
- 为进行网络中的数据交换而建立的规则、标准或约定称为网络协议。网络协议也可简称为协议。更进一步讲,网络协议主要由以下三个要素组成:
- 语法,即数据与控制信息的结构或格式;
- 语义,即需要发出何种控制信息,完成何种动作以及做出何种响应;
- 同步,即事件实现顺序的详细说明。
- 通常各层所要完成的功能主要有以下一些:
- 差错控制:使得和网络对等端的相应层次的通信更加可靠
- 流量控制:使得发送端的发送速率不要太快,要使接收端来得及接收。
- 分段和重装:发送端要把发送的数据块划分为更小的单位,在接收端将其还原。
- 复用和分用:发送端几个高层会后复用一条低层的连接,在接收端再进行分用。
- 连接建立和释放:交换数据前先建立一条逻辑连接,数据传送结束后释放连接。
开放系统互连参考模型OSI/RM
- 为了使不同体系结构的计算机网络都能互连,国际标准化组织ISO于1977年成立了专门机构研究该向题
- 使各种计算机在世界范围内互连成网的标准框架,即著名的开放系统互连基本参考模型OSl/RM(Open Systems Interconnection Reference Model),简称为OSI。
- 只要遵循OSI标准,一个系统就可以和位于世界上任何地方的、也遵循这同一准的其他任何系统进行通信。
TCP/IP的体系结构
实际上,现在的互联网使用的 TCP/IP 体系结构有时已经发生了演变,即某些应用程序可以直接使用 IP 层,或甚至直接使用最下面的网络接口层。
TCP/IP协议可以为各式各样的应用提供服务(所谓的 everything over IP),同时
TCP/IP协议也允许IP协议在各式各样的网络构成的互联网上运行(所谓的 IP over everything)。
具有五层协议的体系结构
- OSI的七层协议体系结构的概念清楚,理论也较完整,但它既复杂又不实用。
- TCP/IP是四层体系结构:应用层、运输层、网际层和网络接口层。但最下面的网络接口层并没有具体内容。
- 因此往往采取折中的办法,即综合OSI和TCP/IP的优点,采用一种只有五层协议的体系结构。
应用层(application layer)
应用层是体系结构中的最高层。应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。这里的进程就是指主机中正在运行的程序。对于不同的网络应用需要有不同的应用层协议。把应用层交互的数据单元称为报文( message)。
运输层(transport layer)
运输层的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。所谓“通用的”,是指并不针对某个特定网络应用,而是多种应用可以使用同一个运输层服务。由于一台主机可同时运行多个进程,因此运输层有复用和分用的功能。复用就是多个应用层进程可同时使用下面运输层的服务,分用和复用相反,是运输层把收到的信息分别交付上面应用层中的相应进程。
运输层主要使用以下两种协议:
- 传输控制协议TCP( Transmission Control Protocol)——提供面向连接的、可靠的数据传输服务,其数据传输的单位是报文段(segment).
- 用户数据报协议UDP( User Datagram Protocol)——提供无连接的、尽最大努力(best-effort的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。
顺便指出,有人愿意把运输层称为传输层,理由是这一层使用的TCP协议就叫做传输控制协议。从意思上看,传输和运输差别也不大。但OSI定义的第4层使用的是Transport,而不是 Transmission。这两个字的含义还是有些差别。因此,使用运输层这个译名较为准确。
网络层(network layer)
网络层负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报,或简称为数据报。把“分组”和“数据报”作为同义词。请注意:不要将运输层的“用户数据报UDP”和网络层的“IP数据报”弄混。此外,无论在哪一层传送的数据单元,都可笼统地用“分组”来表示。
网络层的另一个任务就是要选择合适的路由,使源主机运输层所传下来的分组,能够通过网络中的路由器找到目的主机。
数据链路层(data link layer)
数据链路层常简称为链路层。我们知道,两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧(framing),在两个相邻结点间的链路上传送帧(frame)。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。
物理层(physical layer)
在物理层上所传数据的单位是比特。发送方发送1(或0)时,接收方应当收到1(或0)而不是0(或1)。因此物理层要考虑用多大的电压代表“1”或“0”,以及接收方如何识别出发送方所发送的比特。物理层还要确定连接电缆的插头应当有多少根引脚以及各引脚应如何连接。当然,解释比特代表的意思,就不是物理层的任务。请注意,传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆、无线信道等,并不在物理层协议之内而是在物 理层协议的下面。 因此也有人把物理层下面的物理媒体当作第0层
假定主机1的应用进程AP1向主机2的应用进程AP2传送数据。AP先将其数据交给本主机的第5层(应用层)。第5层加上必要的控制信息H5就变成了下一层的数据单元。第4层(运输层)收到这个数据单元后,加上本层的控制信息H4,再交给第3层(网络层),成为第3层的数据单元。依此类推。不过到了第2层(数据链路层)后,控制信息被分成两部分,分别加到本层数据单元的首部(H2)和尾部(T2);而第1层(物理层)由于是比特流的传送,所以不再加上控制信息。请注意,传送比特流时应从首部开始传送。
一些概念
- 任何两个同样的层次把数据(即数据单元加上控制信息)通过水平虚线直接传递给对方。这就是所谓的“对等层”(peer layers)之间的通信
- OSI 参考模型把对等层次之间传送的数据单位称为该层的协议数据单元 PDU (Protocol Data Unit)。这个名词现已被许多非 OSI 标准采用。
- 各层协议实际上就是在各个对等层之间传递数据时的各项规定。
- 同一系统相邻两层的实体进行交互的地方,称为服务访问点SAP(Service Access Point).
- 服务访向点SAP是一个抽象的概念,它实际上就是一个逻辑接口。
- OSI把层与层之间交换的数据的单位称为服务数据单元SDU(Service Data Unit).
- SDU可以与PDU不一样,例如,可以是多个SDU合成为一个PDU,也可以是一个SDU划分为几个PDU
- 实体(entity)表示任何可发送或接收信息的硬件或软件进程。
- 协议是控制两个对等实体进行通信的规则的集合。
- 在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。
- 要实现本层协议,还需要使用下层际提供的服务。
- 协议与服务有何区别:
- 协议的实现保证了能够向上一层提供服务。
- 本层的服务用户只能看见服务而无法看见下面的协议。即下面的协议对上面的服务用户是透明的。
- 协议是“水平的”,即协议是控制对等实体之间通信的规则
- 服务是“埀直的”,即服务是由下层向上层通过层间接口提供的。
- 上层使用服务原语获得下层所提供的服务。
典型的交换技术
互联网的核心部分采用了分组交换技术。从通信资源的分配角度来看,“交换”就是按照某种方式动态地分配传输线路的资源。
电路交换
- 电路交换必定是面向连接的
- 电路交换分为三个阶段
- 建立连接:建立一条专用的物理通路,以保证双方通话时所需的通信资源在通信时不会被其他用户占用
- 通信:主叫和被叫双方就能互相通电话
- 释放连接:释放刚才使用的这条专用的物理通路(释放刚オ占用的所有通信资源)。
分组交换
电路交换问题:计算机数据具有突发性。这导致在传送计算机数据时,通信线路的利用率很低(用来传送数据的时间往往不到 10% 甚至不到 1% )。
- 分组交换则采用存储转发技术。
- 在发送端,先把较长的报文划分成较短的、固定长度的数据段。
- 每一个数据段前面添加上首部构成分组 (packet)。
- 分组交换网以“分组”作为数据传输单元。依次把各分组发送到接收端(假定接收端在左边)。
- 接收端收到分组后剥去首部还原成报文。
- 最后,在接收端把收到的数据恢复成为原来的报文。
- 每一个分组的首部都含有地址(诸如目的地址和源地址)等控制信息。
- 分组交换网中的结点交换机根据收到的分组首部中的地址信息,把分组转发到下ー个结点交换机。
- 每个分组在互联网中独立地选择传输路径。
- 用这样的存储转发方式,最后分组就能到达最终目的地。
- 路由器处理分组的过程
- 把收到的分组先放入缓存(暂时存储);
- 查找转发表,找出到某个目的地址应从哪个端口转发;
- 把分组送到适当的端口转发出去。
报文交换
整个报文先传送到相邻结点,全部存储下来后査找转发表,转发到下个结点。