编织世界:协议,计算机的“通用语”
本文最后更新于 2026年5月19日 晚上
不同配置、不同厂商的计算机是怎么做到相互通信的?这其中离不开“协议”的功劳。
互联网和现代局域网最核心的协议是TCP/IP协议族(包括IP、TCP、UDP等)。而在早期,局域网中曾流行过由Novell公司开发的IPX/SPX协议。此外还有仅限苹果计算机的AppleTalk,IBM公司开发的用于构建大型机网络的SNA,DEC公司开发的DECnet,以及施乐的XNS等。
协议,就是计算机与计算机之间通过网络通信时事先达成的一种约定。这一约定使不同厂商,不同配置的计算机能够相互通信。而如果,两个计算机之间遵循的协议不同,它们之间就不能通信。
打比方说,人与人交流需要靠语言,计算机之间也需要,而计算机用于相互通信的语言就是“协议”。使用同一种协议的两个计算机,就像说同一种语言的两人。而使用不同语言的两人,就是使用不同协议的两台计算机,两者无法交流。不同国家的人之间进行交流可以借助于翻译器,在计算机网络中,充当翻译器功能的是网关。
为什么计算机之间需要相同的协议才能通信?
这要说到计算机的结构。
CPU,也叫中央处理器,计算机的每个程序都是靠它调度执行的,可以说、一台电脑的性能高低,很大程度上取决于CPU的性能。有人说,计算机的发展史实际上是CPU的发展史。目前常用的CPU有Intel Core、Intel Atom,以及基于ARM架构的处理器,如高通的骁龙,苹果的M芯片等。
OS,即操作系统,是计算机基础软件,集合了CPU管理、内存管理、计算机外围设备管理以及程序运行管理等重要功能。一般情况下,TCP/IP协议的处理已经内嵌到了OS之中。常见的OS有UNIX、Windows、Mac OS X、Linux等。
CPU和OS的不同,导致计算机执行同一条指令有差异。如果将针对某些特定的CPU和OS制作的程序复制到不同的CPU和OS上,可能会导致运行失败。计算机所储存的数据,也因为CPU和OS的不同而不同。因此,如果要让CPU和OS不同的计算机之间相互通信,必须要有一个各方都支持并遵循的协议。
除此之外,一个CPU在同一时间只能运行一个程序。为了让多个程序同时运行,操作系统会采用CPU时间片轮转机制,在多个程序之间合理调度。这种方法叫做多任务调度。上一篇文章提到的分时系统便是应用了这种方法。
不止联网时需要协议,从物理连接层到应用程序的软件层都需要协议。因此,在设计计算机程序和硬件时,必须遵循既定协议。此外,与人不同,计算机不能通过对方的“语义”、“声音”和“表情”来揣测数据的原意。所以,在设计计算机程序与软件时必须充分考虑各种异常和对异常的处理。在遇到问题时也必须具备相应的程序与设备来应对。
协议实现了不同计算机之间的通信,那么,计算机之间的通信是以怎样的方式来完成的呢?
这就不得不提到我们之前说过的分组交换技术。
分组交换,就是将大数据拆分成一个个叫做“包”(Packet)的小单位进行传输的方法。
打比方说,你需要从北京运送1000本书送到上海,你可以整辆货车运输,这被叫做电路交换。在计算机网络之中,整辆货车运输需要先建立连接,即使用车道,而且这条车道在你使用的时候不能有其他车辆使用,你独占了这条车道。当货车到达上海,确认收到货之后,车道才能让别人用。
这种方法的问题在于建立连接时速度过慢,而且容易造成资源浪费。如果路上堵车或者货车开的慢,这条车道就一直被你占用,其他人无法通行。而且一但道路出现意外,都会导致整个通信中断。
而分组交换就是你将1000本书拆成10个包裹,每个包裹贴好标签,也就是包头,写清楚送货地址,收货地址,包裹序号。之后,将这10个包裹分别交给快递公司。快递公司不保证所有包裹都走同一条线。公司会根据实时路况,选择最快的路线。上海的收件人收到包裹后,根据书上的序号将书按顺序重新排列好。
分组交换的优势在于高效利用网络,并且面对不确定和不稳定性时能保持稳定高效,因为如果某条路线意外中断,后续包裹也会自动选择其他路线,保证通信不会中断。而且灵活性强,可以同时传送不同用户的包裹去往不同的目的地。同时还可以设定优先级,比如若语音通话包比电子邮件包高级,快递公司则会优先运送语音通话包。在分组交换中发送方和接收方不用保持完全同步,发送方可随时产生和发送数据包。
在计算机网络中,包裹上所写的信息叫做“报文首部”。通常,通信协议会规定报文首部会写什么,应当如何处理这些信息。计算机相互通信时则根据协议产生报文首部,读取首部内容。
但是在协议诞生之初,各种协议八仙过海,谁也不服谁,这时,就需要对协议进行标准化。
在计算机通信诞生之初,系统化和标准化并未引人注目,各厂商都出产自己的网络产品来实现计算机通信。对于协议的系统化,分层化没有强烈的认识。
1974年,IBM发布了SNA,将自己的计算机通信技术当做系统化网络体系结构公之于众,一时间各厂商纷纷发布各自的网络体系结构,大大推动了协议的系统化进程。
但各个厂商的网络体系结构、协议都不尽相同且不兼容,对用户来说,这意味着起初采取了
那家公司的计算机网络,就要一直使用同一厂商的产品。如果厂商破产,或者服务超过期限,就要将整套设备换掉。灵活性和可拓展性的缺乏对用户来说极其不便。
随着计算机地位的不断提高,不同计算机之间的兼容问题提上日程,OSI应运而生。
标准化是指使不同厂商所生产的异构产品之间具有兼容性、便于使用的规范化过程。家用电源插头和插座在没有统一标准之前,形状千奇百怪,电压和频率也有不同,而且安全规范缺乏,容易发生危险,在各个标准化组织的推动之下,电源插头和插座才如此安全,并且便利性极大,通用配置改变了一个电器有一个专门插座的情况,降低了生活成本。如今,插头插座随处可见,在图书馆,机场等地方,随插随用。可见标准化对我们的生活具有非常重要的影响。
标准化组织大致分为三类。第一类是国际级标准化组织,如ISO、ITU-U等。第二类是国家级组织,如中国的CAS,日本JISC,美国的ANSI。第三类是民间组织,如IETF等。
为了解决兼容问题,国际标准化组织(ISO)制定了OSI,对通信系统进行了标准化。虽然OSI协议并未普及,但OSI设计之初用作参考的OSI模型却经常被用于其他网络协议的制定。
TCP/IP并非ISO制定的国际标准,而是来自一个民间组织IETF。在当时,大学和计算机企业是推动TCP/IP标准化的中心力量。如今,TCP/IP作为一种业界标准,已经成为全世界广泛使用的通信协议。
协议的标准化使所有遵循标准协议的设备不再因为CPU或OS的差异而无法通信。可以说,协议的标准化推动了计算机网络的普及。
就这样,TCP/IP在实践中胜出,成为了计算机通信的通用语言。然而,在它背后,一套更为理论化、系统化的模型——OSI参考模型,为我们理解网络通信的每一个细节,提供了一张无可替代的地图。读懂这张地图,便能透彻地理解从物理线缆到软件应用的整个通信旅程。
据《图解TCP/IP》(第五版)第一章 网络基础知识 1.3协议 1.4协议由谁规定 整理
后记(2026.05.17)
依旧是公众号的旧文,我感觉没什么可以写的后记了,从现在的眼光来看当时的自己其实自己是进步还是没有进步?我看不出来,但是我觉得应该是进步了吧,至少以前的我不可能会建网站(笑)