通信,在古代是通过书信与他人互通信息的意思。
今天,“通信”这个词的外沿已经得到了极大扩展,它目前的大意是指双方或多方借助某种媒介实现信息互通的行为。
如果按照当代汉语的方式理解“通信”,那么古代的互遣使节、飞鸽传书、烽火示警等都属于通信的范畴。
一、操作系统的发展简介
1.人工操作阶段
最早的程序员将事先已穿孔的纸带,装入纸带输入机,启动它们将纸带上的程序和数据输入计算机,然后启动计算机运行。仅当程序运行完毕并取走计算结果后,才允许下一个用户上机。
缺点:
(1)用户独占全机,即一台计算机的全部资源由上机用户所独占。
(2)当用户进行装带(卡)、卸带(卡)等人工操作时,CPU及内存等资源是空闲的。
后来出现脱机输入/输出技术,该技术是事先将装有用户程序和数据的纸带装入纸带输入机,在一台外围机的控制下,把纸带上的数据输入到磁带上。当CPU需要这些程序和数据时,再从磁带上高速地调入内存。此时,CPU只需和磁带交互,不需跟低速的纸带输入机交互,进一步减少了CPU的空闲时间。
2.单用户批处理系统
早期的计算机的工作方式就是把一批作业以脱机方式输入到磁带上,并在系统中配上监督程序(首次引入监督程序),在它的控制下使这批作业能一个接一个连续处理。这种操作被称为批处理。
由于计算机每次只能执行一项任务,因此这类计算机采用的系统称为单用户批处理系统。
批处理系统的特点是自动化执行,用户一次性提交一批作业,无需交互地等待作业完成。这种执行方式适用于一些需要大量计算或处理时间的任务,例如批量数据处理、批量打印等。
所谓批处理(batch processing )就是将作业按照它们的性质分组(或分批),然后再成组(或成批)地提交给计算机系统,由计算机自动完成后再输出结果,从而减少作业建立和结束过程中的时间浪费。
缺点:系统中的资源得不到充分的利用。这是因为在内存中仅有一道程序,每逢该程序在运行中发出I/O请求后,CPU便处于等待状态,必须在其I/O完成后才继续运行。又因I/O设备的低速性,更使CPU的利用率显著降低。
3.多道批处理系统
随着计算机处理器性能的提升、多核处理器的出现使得计算机能够更高效地处理多个任务,内存容量的增大使得多个程序可以同时存在于内存中,输入输出设备的改进输入输出设备的改进也为多用户共享计算机资源提供了支持。
人们对单用户批处理系统进行了改进,推出了多道批处理系统,让计算机可以将自己的计算资源同时分配给多名用户的操作任务。
工作方式:用户所提交的作业都先存放在外存上并排成一个队列,作业调度程序按一定算法从后备队列中选择若干个作业调入内存,使它们共享CPU和系统中的各种资源。
原理:在计算机内存中同时存放几道相互独立的程序,它们在管理程序的控制下相互穿插地运行,共享CPU和外设等资源。采用多道程序设计技术的批处理系统称为多道批处理系统(首次引入中断)。
缺点:平均周转时间长(由于作业需要排队,依次处理,周转时间较长)、无交互能力(用户一旦将作业提交给系统,将不能与自己的作业交互,修改和调试程序不方便)
4.分时系统
即使对于大型研究机构而言,给每个研究人员配备一台计算机的想法也如同天方夜谭。虽然大范围添置计算机并不可行,但多道批处理系统的问世使得多名用户能够同时利用一台计算机中的计算资源,这类系统叫作分时系统。
分时系统:在一台主机上连接多个配有显示器和键盘的终端并由此所组成的系统,该系统允许多个用户同时通过自己的终端,以交互式的方式使用计算机,共享主机中的资源。
如果说推动多批道处理系统形成和发展的主要动力是提高系统利用率和系统吞吐量。那么推动分时系统形成和发展的主要动力则是为了满足用户对人机交互的需求。
每位计算机操作者分配到的是一个由显示器和键盘等外设组成的终端,这些终端通过控制线路与计算机相连,操作人员使用终端上的输入设备,通过控制线路向计算机发出指令,而计算机则将反馈通过控制线路发回给终端,终端再通过输出设备将计算机的运算结果提供给操作人员。
特点:
(1)作业直接进入内存(缓冲区)。因为作业在磁盘中是不能运行的,所以作业应直接进入内存。
(2)采用轮转运行方式。引入时间片概念,避免一个作业长期占用处理机。系统规定每个作业每次只能运行一个时间片,然后暂定该作业的运行,并立即调度下一个作业运行。
二、网络的发展
1.公共电话网络
连接终端与计算机的线路最开始是直连的串行线缆,后来发展为终端和计算机可以各自通过调制解调器连接到电话网络。从这时开始,操作人员得以通过电话网络对计算机进行远程管理。
公共电话网络的信号转换流程如下:
终端发送信号:当终端(如计算机或电话机)需要发送信号时,它会将数字信号转换为模拟信号。这些数字信号可以是数据、语音或其他形式的信息。
信号传输:终端通过电话线缆将模拟信号发送到连接到电话网络的调制解调器。这些模拟信号在传输过程中会受到噪声和干扰的影响。
调制:调制解调器接收到模拟信号后,会将其进行调制处理。调制是将模拟信号转换为可以在电话线路上传输的调制信号。常见的调制技术包括频移键控调制(FSK)和相位移键控调制(PSK)。
信号传输至交换机:调制解调器将调制信号发送到连接到公共电话网络的交换机。交换机是负责路由和转发电话信号的设备。
信号传输至目标终端:交换机将调制信号传输到目标终端所连接的调制解调器。
解调:目标终端的调制解调器接收到调制信号后,会将其解调回模拟信号。
数字信号处理:解调后的模拟信号会被目标终端处理,根据信号的类型进行相应的操作,如数据传输、语音通话等。
2.电路交换
1957年,苏联第一颗人造卫星的成功升空让美国本土遭受核打击成为现实的可能。
当时,整个美国的军方通信都是依赖公共电话网络进行传输的,而公共电话网络采用的是一种称为电路交换的通信方式,这种网络恰恰是相当脆弱的。
所谓电路交换,是指通信双方在开始通信之前,需要通过呼叫建立机制在通信双方之间建立一条独占的物理通道,双方此次通信完全通过这一条物理路径进行发送,在通信结束后,再断开这条物理通道,其示意如图所示。
这种通信方式之所以脆弱,是因为一旦通信双方之间通过呼叫建立的物理通道断开,通信即告终止。新的通信系统必须有能力纠正电路交换系统的这一弊端。
3.包交换
包交换网络不需要在通信各方之间建立独占的通道,数据的发送方会将通信数据划分成很多的数据包,而通信的中转设备有能力根据网络的情况,为各个数据包独立选择发送的路径。因此,如果中转设备在转发数据的过程中发现网络有一部分断开,它们就会选择其他路径转发后续的数据包。这种做法保证了信息传输不会因部分网络故障而中断。
如果类比,那么包交换网络类似于通过快递公司寄送包裹,任何一位快递员或快递网点如果临时无法提供服务,对于顺利投递后续包裹几乎不会产生任何影响,由于快递业务自身规模很大,因此通过快递公司投递包裹成本也比较低廉。不过,通过快递公司投递包裹,由于不是专人服务,因此遇到快递爆仓经常会出现严重的延时情况。先投递的包裹后至,后发送的包裹先到也屡见不鲜。
电路交换与包交换的区别:
-
电路交换:在电路交换中,通信双方在通话开始之前建立一个专用的物理连接,该连接在整个通信过程中保持不变。这意味着在通话期间,该电路将被独占使用,即使没有实际通话数据传输也会占用带宽。传统的电话通信就是一种电路交换的例子。电路交换提供了稳定的、实时的通信,但对资源的利用不够高效。
-
包交换:在包交换中,数据被划分为小的数据包,并通过网络独立地传输。每个数据包都包含目标地址和源地址的信息,以便在网络中进行路由和传输。数据包可以通过不同的路径独立地传输,然后在目标处重新组装。因为数据包是独立传输的,所以网络资源可以更加高效地共享和利用。互联网是一个典型的采用包交换方式的网络。
4.协议
彼此并不兼容的异构系统之间要想完成协作,需要有一套所有这些系统都能遵循的标准,每个系统按照这个共同标准生成的数据,对于其他系统才有可读性。在通信领域,称这样的共同标准为协议。
最初,制订了一个如今被称为“1822协议”的标准。这个协议在今天看来极为简单,但它规定了计算机在与IMP进行通信时,发送和接收数据的格式。
1822协议的限制很快体现了出来,它定义的格式将计算机所有应用需要发送的数据完全统一了起来,因此接收方在接收到消息时,无法根据消息本身判断出这些代码是由发送方的哪个应用提供的,进而也就不知道这些代码所描述的数据需要用自己的哪个应用来进行解读。换言之,1822协议无法解决计算机之间多个应用同时进行通信的情况。
为了弥补1822协议的不足,一个名为网络控制程序(NCP)的协议横空出世。它在1822协议的基础上,制订了一对主机应用之间建立双向通信的标准和一个主机应用向对方发送单向数据的标准。
然而,1822和NCP协议很快也无法满足网络世界技术发展的需求。在ARPAnet同期,一些其他的数据包交换网络也相继问世,用网络来连接网络,而不只是用网络来连接计算机,成为一种自然而然的需求。网络领域需要一个网络互联协议(Internet Protocol)。
1974年5月,IEEE(美国电气和电子工程师协会)发表了一篇题为“实现数据包网络互联的协议(A Protocol for Packet Network Intercommunication)”的论文。这篇论文定义了互联网世界中最重要的协议之一,即传输控制协议(TCP)。而今天我们耳熟能详的网络互联协议(Internet Protocol,简称IP协议)只是TCP协议中的一个组件。
为了帮助不相兼容的网络实现对接,TCP/IP协议栈无论对于逻辑层面的应用进程,还是物理层面的硬件标准都提供了广泛的支持。当所有通信设备都采纳TCP/IP协议栈定义的标准时,这些设备所在的网络也就形成了一个具备互联功能基础的环境。
5.互联网
因为连接到ARPAnet要求相关机构拥有美国国防部的合同才能获得授权。
1980年,NSF(美国国家科学基金会)决定投资500万美元建立一个计算机网络,让那些无法连接到ARPAnet的研究机构同样可以享受资源共享带来的利好,这个网络被命名为计算机科学网络(CSNET)。
1989年夏天,NSFNET在具体执行方面出现了一点带有试验性质的变化。MCI通信公司获得了FNC(联邦网络互联委员会)的许可,将自己的商业电子邮件系统MCI Mail连接到了NSFNET。
1991年,NSF终于修改了自己的章程,它将NSFNET交给了一家名为ANS(高级网络与服务)的公司,这是一家由MCI、IBM和MERIT组成的非营利企业。
1989年,CERN(瑞士欧核中心)的英国雇员提姆·伯纳兹·李(Tim Berners Lee)提议建立一个信息管理系统。同年,他通过互联网成功在一个超文本传输协议(HTTP)客户端和服务器之间建立了通信;1990年,他编写了第一个网页浏览器;1991年,他和同事制订了第一个成文的HTTP标准版本;同年,他用一个名为“HTML标签”的文件对HTML语言进行了详细的描述。1994年,他陈述了用URL地址代替超链接资源的提议。
三、网络通信
问题1:信息的形式包括文本、表格、图片、音频、视频等,如何才能将这些信息放到媒介中传输?
显然,自己发送和接收的照片、视频、文档、文字等不会原封不动地在自己计算机网卡连接的那根数据线中传输。
在数据通信网络中,人们采用的数据表示形式就是二进制编码。严格地说,二进制不只是数据在数据网络中的传输形式,数据本身就是以二进制1593数据的形式在终端系统中保存的。
从商周时期的烽火台示警到近代还在使用的灯语,都是通过二进制实现通信的范例。
在数据网络时代,二进制信息描述的数据也同样可以在各类传输介质中,很轻松地通过高低电压、光线明灭等形式实现交互。
由此可知,在数据发送方发送数据之前,它们会将数据通过信息的输入/输出接口,用相应的物理信号将这些二进制数描述出来;而接收方在接收到数据时,则会通过输入/输出接口将物理信号转化为二进制数,并将它们还原为发送方最初发送的信息。
问题2:既然通信是多方系统,那么如何才能保证信息可以被发送给正确的接收方?
参照邮政系统:
1.邮递员首先根据信封上的接收方地址把信件投递到接收地址
2.然后接收方再(在公司传达室或小区物业)根据收件人姓名从寄给同一地址的邮件中选出寄给自己的信件拆封阅读。
这说明为了解决数据在数据通信网络中寻址的问题,每一个网络通信系统的参与者也需要拥有某种地址信息来标识自己所在的位置(类似于邮政系统中的收件人地址),并且拥有某种身份识别信息来标识自己这台设备(类似于收件人姓名)。
在网络通信系统中,IP地址就是人们为了标识设备所在位置而定义的逻辑地址。
地址和身份标识信息都不会包含在实际通信的内容中。
问题3:如何保证被转发的数据能够有序、高效而又可靠地到达接收方?
在包交换网络中,发送方会将要传输的信息划分为多个数据包。而包交换网络在传输这些数据包时,也会以数据包为基本单元分别独立地对它们执行转发.
数据通信网络中,数据常常不会按照转发的先后顺序到达接收方,后发先至的情况司空见惯。
在包交换网络中,发送方和接收方之间也需要有某种机制,来保障它们可以在发送一些追求时效性的数据时,以尽可能高的效率完成数据的收发;而在发送追求可靠性的数据时,又能够根据数据的接收情况来相互协调数据的发送速率和进程等要素。
问题4:既然信息是以二进制的形式在数据网络中进行传输的,如何理解发送者想要表达的意思?
例如,给出一段数字。
十进制数(082101230509)
显然,接收者虽然能够接收到这段十进制数,但由于这段信息并没有可读性,所以接收者纵然可以读到,也还是无法真正理解发送者想要表达的意思。
假如这段数字之前,发送者和接收者约定:“在下面这段数字中,我会用每两位数代表一个拉丁字母,从A到Z,这两位数等于它们代表的拉丁字母在字母表中的位置(如08代表从A到Z的第8个拉丁字母H,表达的内容是“HUAWEI”)
约定的规则相当于一个简单的通信协议。
上例旨在说明一个道理:协议是为了让各方参与者有序推进某项事宜而定义的标准。具体到通信领域,通信协议或网络协议是人们为了确保通信各方能够相互交流,而给信息的表达、传递等方式所定义的标准或规则。
协议与功能之间的关联可以比较谨慎地解释为:多个参与方会因为共同遵循某个协议而让整个环境产生某种既定的效果,或者让设备展现出一些对应的功能,但功能仍然是参与方的属性,协议本身并不会赋予或者剥夺参与方的任何功能。
四、OSI七层模型
OSI模型的分层结构:
应用层(Application Layer):应用层的服务是提供用户接口,因此,应用层中包含了各类用户常用的协议。
表示层(Presentation Layer):表示层的服务是既保证通信各方在应用层相互发送的信息可以相互解读,也保证双方在信息的表达方式上是一致的,如加密解密、压缩解压、编码方式转换等属于表示层的服务。因此,本节开头中,将拉丁字母转换为数字的做法如果套用到网络技术领域,大致就属于表示层的功能。
会话层(Session Layer):会话层的服务是完成各方交互信息之前的会话建立准备工作,这里的工作包括确认通信方的身份,确认通信方可以执行的操作等,因此如AAA中的认证、授权等功能皆属于会话层的服务。
传输层(Transport Layer):传输层的服务是规范数据传输的功能和流程。因此,这一层的协议会针对是否执行消息确认、如何对数据进行分片和重组等制订标准。传输层的交换单元叫段,即经传输层协议封装后的数据称为数据段(Segement)。
网络层(Network Layer):网络层的服务是将数据从源转发给目的设备。由此可知,这一层的协议需要定义如地址格式、寻址方式等标准。网络层交换单元的名称是包,即经网络层协议封装后的数据称为数据包(Packet)。
数据链路层(Data Link Layer):数据链路层的服务是为相连设备或处于同一个局域网中的设备实现数据帧传输,并对传输的数据帧进行校验和控制。所以,数据链路层的协议会定义如何检测出数据在传输过程中出现的错误、如何向发送方确认接收到了数据、如何调节流量的发送速率等。数据链路层交换单元的名称是数据帧,即经数据链路层协议封装后的数据称为数据帧(Frame)。
物理层(Physical Layer):物理层的服务是实现信号在两台相邻网络实体之间的传输。因此物理层协议需要定义通信的机械、电子和功能标准。比如二进制1和0在传输时的具体描述方法、物理接口每个针脚的作用等。物理层交换单元的名称是比特(Bit)。
然而,有些人认为OSI模型过于理论化,与实际网络实现之间存在一定的差距。实际上,很多网络技术和协议并不完全符合七层模型的划分,而是在不同层级之间有一定的重叠和交叉。此外,七层模型在实际应用中并不是唯一的选择,有时也会使用其他模型或框架来描述网络通信。
五、TCP/IP参考模型
OSI模型是在对各层对应的协议缺乏充分了解的情况下定义服务的。因此,使用现有协议和OSI模型来构建网络,往往会出现搭建的网络无法满足服务规范的情况,而专门针对OSI模型开发的协议又会由于OSI模型在设计时把服务定义得过于复杂,而导致这些协议也难以实现或者实现效率很低。
TCP/IP模型则正好相反,这个模型一开始就对TCP和IP两个网络的协议做描述,因此模型定义的服务与TCP和IP协议高度吻合。
应用层(Application Layer):TCP/IP模型的应用层在功能上等同于OSI模型中应用层、表示层和会话层之和。Telnet、FTP、SMTP、HTTP等协议都是TCP/IP模型中的应用层协议。
传输层(Transport Layer):TCP/IP模型的传输层在功能上与OSI模型的传输层相同,这一层中最重要的两个协议是TCP(传输控制协议)和UDP(用户数据报协议)。
互联网层(Internet Layer):TCP/IP模型的互联网层在功能上与OSI模型的网络层类似,其目的都是让数据实现从源地址到目的地址的正确转发。IP协议就是这一层中的协议。
网络接入层(Network Access Layer):TCP/IP模型的网络接入层也可以视为是主机与线路之间的接口。这一层的功能与OSI模型最下面的两层存在一定的重叠。但TCP/IP模型的网络接入层没有制订通过介质传输信号时所使用的协议。
六、数据传输
要想传输数据,必须在传输的数据上添加相应的信息。
至于添加什么样的信息、什么样的长度和格式等具体的标准,要由对通信进行标准化的协议来进行定义,而这正是协议兑现服务的方式。
传输设备根据协议向数据负载中添加功能性信息的操作称为封装。
1.从封装角度看数据传输
当接收方通过接口接收到发送方经过层层封装的数据之后,它需要再从下到上根据各层的协议,去掉发送方添加的头部信息,将数据层层还原为发送方最初要传输的数据,这个过程叫作解封装(Decapsulation)。
2.从终端设备视角看数据传输
终端设备不为网络中的其他设备提供数据转发,它们是数据的源或目的,而非数据的中间设备,它们需要和计算机用户之间进行交互。由此可知,终端设备拥有自应用层以下的各层功能,它们的数据操作常常始于应用层(发送方)、也终于应用层(接收方)。
在图所示环境中,位于办公室的终端A正在通过FTP协议向位于咖啡厅的终端B发送数据。
由于工作在应用层的FTP协议要求传输层的TCP协议与对方建立可靠的连接,因此终端A会在传输层给数据封装TCP头部。接下来,终端A会在互联网层给数据封装IPv4头部。
在IPv4头部中,终端A会以自己的IP地址作为源地址,以终端B的IP地址作为目的地址。将数据通过线缆发送出去之前,终端A会根据以太网协议再给数据封装上以太网头部(和尾部),因为终端A连接在一个以太网环境中。
当终端B通过无线接入点(AP)接收到数据后,它的解封装流程是:首先按照网络接入层协议摘掉数据的WLAN(无线局域网协议)头部(和尾部),然后再依次去掉数据的IPv4头部和TCP头部。这样一来,终端B在将数据交由应用层进行处理之前,还原了终端A应用层中最初生成的信息。
3.从网络设备视角看数据传输
传统上,交换机工作在TCP/IP模型的网络接入层,也就是OSI模型的数据链路层,由于数据链路层位于OSI模型的第2层,因此交换机常常被称为二层设备;路由器则工作在TCP/IP模型的互联网层,也就是OSI模型的网络层,由于网络层位于OSI模型的第3层,因此路由器常常被称为三层设备。
在图中,当终端A发送的数据到达交换机时,交换机会对数据最外层封装的以太网头部信息进行查看,了解数据的目的硬件地址,在看到数据的目的硬件地址之后,交换机会把这个数据帧发送给路由器。
交换机并不会对数据帧进行解封装,因为交换机只需要知道以太网头部中包含的硬件地址信息,就已经能够正确地将数据转发给路由器了。
路由器在接收到数据之后,也会首先查看最外层封装的以太网头部信息。当发现这里的目的硬件地址是自己时,路由器就会将以太网头部解封装,查看数据的逻辑地址。
在根据数据的逻辑地址做出转发决策后,路由器会使用下一跳设备的硬件地址作为以太网头部的目的硬件地址,重新封装以太网头部并将数据转发给AP。
同样,由于路由器工作在互联网层,它不会进一步对数据进行解封装,互联网层头部提供的逻辑地址足够路由器完成数据转发工作。
数据接下来到达接入点(AP),接入点会查看以太网头部。在这之后,由于AP是一台通过WLAN与终端交换数据的无线设备,因此它会解封装数据包最外层的以太网头部,并且给数据包封装上WLAN头部,然后将数据转发给终端B。
4.从网络拓扑视角看数据传输
如图所示为一个简单的拓扑环境。两台路由器使用串行接口通过PPP协议相连。两台路由器各自下连一台交换机,每台交换机分别连接两台终端设备,而终端B正在通过FTP协议向终端C发送数据。
图中的终端都为应用层设备,而交换机和路由器则分别工作在网络接入层(OSI模型的数据链路层)和互联网层(OSI模型的网络层)。因此,当终端B准备发送数据时,它会首先在设备内部执行纵向处理,即按照自上而下的顺序,逐层对数据进行封装。然后再执行横向转发,即通过以太网线路将数据发送出去。
当交换机A接收到终端B发来的数据之后,交换机A会查看以太网头部中包含的目的硬件地址,发现该数据在这个以太网中的目的地址是路由器A,而后交换机A会执行横向处理,将数据转发给路由器A,如图所示。
当路由器A接收到数据时,它依旧会按照先纵向后横向的方式进行处理。首先,路由器A会对数据最外层的以太网头部进行解封装。当路由器A看到IP头部载明的目的逻辑地址之后,它可以通过查询路由表发现:要想将数据转发给终端C,需要将它转发给路由器B。于是,路由器A会按照转发环境重新封装数据包。在完成封装之后,路由器A会将它通过PPP链路转发出去,如图所示。
路由器B所做的处理与路由器A基本相同。它首先对数据最外层的PPP头部进行解封装。当路由器B看到IP头部载明的目的地址之后,它通过查询路由表发现:要想将数据转发给终端C,需要从与交换机B相连的以太网接口发送出去。于是,路由器B按照转发环境重新封装数据包,即使用终端C的硬件地址来为数据包封装以太网头部,并将它转发给交换机B,如图3-16所示。
交换机B的处理方式也可以类推出来。由于不具备互联网层的功能,因此交换机B和交换机A一样只会查看最外面的以太网头部。当交换机B发现该数据在这个以太网中的目的地址是终端C之后,就会将数据从与终端C相连的接口发送出去。
当终端C最终接收到数据时,会按照自下而上的顺序,逐层对数据进行解封装,直至恢复最初的数据为止,如图所示。