沫璃墨染头像
关注
从零入门计算机网络系列(一):计算机网络初识——从网络发展史到TCP/IP协议》封面图

从零入门计算机网络系列(一):计算机网络初识——从网络发展史到TCP/IP协议》

伴随着Linux专栏逐渐步入尾声,我们也将正式翻开全新的篇章《计算机网络》系列。

有道是:系统网络不分家。如果说Linux带我们认识了操作系统如何管理一台计算机,那么计算机网络,将带我们探索数据如何跨越万千设备,完成一场从一端到另一端的通信。

本专栏会继续坚持由浅入深、原理与实践并重,带大家一步一步,走进计算机网络的世界。

目录

一、计算机网络的发展历史

1.1 从独立,到局部,再到整体

1.2 为什么会这样:网络发展史背后的思考

二、初步认识协议

2.1 建立初步认识:什么是协议

2.1.1 协议就是一种约定

2.1.2 科普:谁有资格制定协议标准

2.2 为什么要进行协议分层

2.2.1 初步理解什么是协议分层

2.2.2 科普:OSI七层模型

2.2.3 TCP/IP五层模型

三、深化对协议的认知

3.1 为什么需要TCP/IP协议

3.2 TCP/IP协议到底是什么

3.3 TCP/IP协议与操作系统的关系

3.4 从整体角度重新理解TCP/IP协议


一、计算机网络的发展历史

1.1 从独立,到局部,再到整体

最早的时候,计算机与计算机之间是相互独立的。

那时候要想交换数据,靠的是软盘,揣着一盒盘,从这台机器跑到那台机器,手动把数据“搬”过去。

后来,网络互联出现了:多台计算机连在一起,数据共享从此不再靠腿跑。

再往后,局域网(LAN)登场,计算机数量更多了,大家通过交换机和路由器连接在一起,形成一个局部的小天地。

紧接着,广域网(WAN)出现,让远隔千里的计算机之间也能建立联系。

局域网和广域网,其实是一个相对的概念。比如我们国家的广域网,放到全球互联网的尺度下,也可以视作一个比较大的局域网。

1.2 为什么会这样:网络发展史背后的思考

计算机是人造出来的工具,而人类从远古时代起就离不开协作。这个朴素的道理,放在机器身上也一样,计算机之间,迟早得学会互相打交道。所以,网络的诞生,几乎是命中注定的。

它的成长路径,也遵循着一条从局部到整体的客观规律:

局部产生:早期的网络,只在某个区域或某个机构内部独立生长,各玩各的。

走向整体:局部网络越连越多、越滚越大,到了全局层面,最终只能收敛到一套统一的标准上。

从时间线看,大致是这么走过来的:

保密阶段:早期以阿帕网为代表,妥妥的内部保密项目,外人根本摸不着。

公开与普及:到了九十年代前后,这些技术慢慢解密公开,随后由美国人牵头组建互联网,并在92、93年以及97、98年前后,一路加速狂奔。

再从产业生态的角度看一眼:

基础设施建设:通信公司和运营商埋头铺路,把网络基础设施搭起来,接入了成千上万的用户。

上层服务赋能:等基础设施足够厚实了,互联网公司才得以借势而起,在上面跑出五花八门的网络服务,迎来一轮又一轮的爆发。

二、初步认识协议

2.1 建立初步认识:什么是协议
2.1.1 协议就是一种约定

计算机之间的传输媒介,是光信号和电信号。信息怎么表示?靠“频率”和“强弱”来区分0和1。可光有0和1还不够,想传递千变万化的信息,双方就得先把数据格式约定清楚。

协议的本质,就是一种约定。目的很实在:减少沟通成本,快速形成共识。

但这里有个值得多想一步的问题:只要两台主机约好协议,就够了吗?

未必。协议定了,可你用频率表示0和1,我用强弱表示0和1,这就好比我讲中国话,你讲葡萄牙语。规则是同一套,语言却对不上,照样鸡同鸭讲,通信根本跑不起来。

所以,一套完善的协议,需要更多、更细致的规定,而且参与的每一方,都得老老实实遵守。

再看看现实里的局面:计算机制造厂商一大堆,操作系统五花八门,网络硬件设备更是各家各款。想让这些来自不同厂商的机器顺畅通信,怎么办?总得有人站出来,定一个共同的标准,大家都照着来,这就是网络协议。

计算机之间,正是靠着这套统一的协议标准来交互。比如ISO国际标准化组织制定的OSI标准,就是其中的经典代表。

2.1.2 科普:谁有资格制定协议标准

能定协议、立标准的,都不是等闲之辈。要么是业界公认的老牌组织,要么是江湖地位摆在那儿的巨头。下面这几类,了解一下就行。

1. 国际标准化组织

  • IEEE(电气和电子工程师协会):计算机和工程领域专家组成的技术大组织,在通信协议这块贡献极大。全球电子、电气、计算机领域大约三成的标准,都出自它手。IEEE 802系列标准,就是从局域网到广域网的各种网络技术,全是它定的。

  • ISO(国际标准化组织):由各国标准化团体凑起来的国际组织,最出名的活儿是OSI模型。七层协议结构,定义了网络通信的骨架。虽然实际应用里TCP/IP协议族更吃香,但OSI模型在学术和理论圈,地位一直稳如泰山。

  • ITU(国际电信联盟):联合国下属的专门机构,专管电信领域的国际标准。ITU-T制定的标准覆盖电话和网络通信,还跟ISO合作,确保通信技术在全世界兼容互通。

2. 区域标准化组织

  • ETSI(欧洲电信标准学会):欧洲共同体各国政府掏钱资助,电信厂商和研究机构一起参与,从研发到标准制定,一条龙。

  • ASTAP(亚洲与泛太平洋电信标准化协会):1998年由日本和韩国发起,专门推动亚太地区信息通信基础设施的标准化协作。

3. 公司

  • 有些公司也自己搞协议栈。比如泰凌微,自研低功耗蓝牙、Zigbee、Thread、Matter等各种标准的软件协议栈,还能按需定制。这是它的核心竞争力之一。泰凌微还打算重点发力智能电子价签、智能遥控、智能家居这些市场。

4. 民间国际团体

  • IETF(互联网工程师任务组):志愿者组织,负责开发和推广互联网协议,尤其是 TCP/IP 协议族。新标准、旧标准替换,都通过RFC发布。

5. 官方机构

  • FCC(联邦通信委员会):美国管通信技术的官方机构,主要职责是通过对无线电、电视和有线通信的管理,保护公众利益。通信产品的标准化技术特性,也在它的审查和监督范围之内。

这些组织或公司,都能在一定程度上定制协议标准,满足特定需求,或者推动技术往前走。

2.2 为什么要进行协议分层
2.2.1 初步理解什么是协议分层

协议这东西,骨子里也是软件。既然是软件,就得讲究模块化和解耦。于是,它被设计成了层状结构,一层叠一层,各管一摊。其实所有的软件,本质上都是层状、模块化的,网络协议栈也不例外。

这就带来了两种不同的视角。普通用户站在最顶层,只关心“我这个应用好不好使”,底下怎么折腾,一概不理;工程师则不一样,他得钻进底层,盯住每一层的实现细节,看看数据到底怎么封、怎么传、怎么拆。

同层通信:在逻辑上,同层之间看起来像是在直接对话。发送方的某一层跟接收方的同一层,仿佛隔空喊话,规矩对规矩,格式对格式。当然,物理上数据还得一层层往下走、再一层层往上传,但逻辑上,它们就是平级交流。

分层解耦:分层最大的好处,就是能“无障碍替换”。哪一层想升级、想换实现,只要接口对得上,其他层完全不受影响。系统维护和演进的成本,就这么被压了下来。

打个比方,协议分层就像一栋楼。住户只管自己房间住得舒不舒服,水电工负责管道线路,结构工程师操心承重抗震。谁也不用越界管别人的事,出了问题也容易定位,是哪一层的锅,就找哪一层。

2.2.2 科普:OSI七层模型

OSI,全称Open System Interconnection,开放系统互连。它是一套七层网络模型,也是一个逻辑上的定义和规范。

它把网络从逻辑上切成了七层。每一层,都对应着相关的物理设备,比如路由器、交换机,各管各的活儿。OSI七层模型是一种框架性的设计方法,最核心的功能,就是帮不同类型的主机实现数据传输。

它最大的优点,是把服务、接口、协议这三个概念明确地区分开来。概念清楚,理论也完整。通过这七个层次化的结构,不同的系统、不同的网络之间,才能实现可靠的通信。

但问题也来了,它既复杂,又不实用。所以实际讲网络的时候,我们用的是TCP/IP四层模型。

其实从网络角度看,OSI定义的七层模型非常完善。只是在真刀真枪的操作过程中,会话层和表示层根本接不进操作系统。所以落到工程实践里,最终落地的是五层协议。

这句话,得等我们学完网络才能真正理解。现在先记住就行。

2.2.3 TCP/IP五层模型

TCP/IP 是一组协议的代名词,底下还包含许多协议,合在一起,就是 TCP/IP 协议簇。

它采用的是五层结构,每一层都调用下一层提供的服务,来完成自己的活儿。

物理层:负责光信号和电信号的传递。网线、光纤、电磁波,都归它管。集线器(Hub)就在这一层干活。这一层的能力,直接决定了最大传输速率、传输距离和抗干扰性。

数据链路层:负责设备之间数据帧的传送和识别。网卡驱动、帧同步、冲突检测、差错校验,都是它的分内事。交换机(Switch)工作在这一层。

网络层:负责地址管理和路由选择。IP协议就在这儿,用IP地址标识一台主机,靠路由表规划出两台主机之间的传输线路。路由器(Router)在这一层。

传输层:负责两台主机之间的数据传输。TCP协议就在这里,保证数据可靠地从源主机送到目标主机。

应用层:负责应用程序之间的沟通,比如SMTP、FTP、Telnet。我们后面要讲的网络编程,主要就是针对这一层。

物理层这块,我们平时聊得不多,重点还是放在软件相关的内容上。所以很多时候,干脆把TCP/IP模型简化成四层来说,物理层就不单独拎出来了。

大致上,各类设备各自实现到哪一层,有这么个对应关系:

  • 一台主机:操作系统内核把传输层到物理层全包了。

  • 一台路由器:实现了网络层到物理层。

  • 一台交换机:实现了数据链路层到物理层。

  • 一台集线器:只实现了物理层。

当然,这也不是绝对的。很多交换机也能干网络层转发的活,不少路由器也实现了部分传输层的内容,比如端口转发。设备的职责边界,随着技术发展,早就没那么泾渭分明了。

三、深化对协议的认知

3.1 为什么需要TCP/IP协议

多台主机通过网络通信,本质上,还是设备到设备的通信。

本地通信 vs 网络通信:所有设备,说到底都是靠“线”连起来的。计算机内部,CPU、内存、磁盘,基于冯·诺依曼体系,本身就是一个网络结构,只不过规模小、距离近。

核心区别:网络通信比起本地通信,唯一的差别就是传输距离变长了。本地通信,数据在机箱里跑;网络通信,数据要跨越大半个地球。

距离一拉长,新麻烦就冒出来了:

  • 数据怎么处理?

  • 数据丢了怎么办?

  • 怎么定位目标主机?

  • 当下立刻要去哪里?

问题一冒出来,就得有人给方案。

TCP/IP协议的本质,就是一套针对网络长距离通信的解决方案。 距离带来的那些麻烦,它一条条接住,一个个解决。

3.2 TCP/IP协议到底是什么

TCP/IP协议的本质,就是一种解决方案。

它能分层,前提是因为问题本身就能分层。距离带来的麻烦不是铁板一块,寻址是一个问题,可靠传输是另一个问题,信号怎么传又是一个问题。问题分得开,解决方案自然也能拆成一层一层,各管各的。

3.3 TCP/IP协议与操作系统的关系

这张图大家一定很眼熟,之前的文章里我们详细讲过。

操作系统的体系结构是层状的,注定了网络协议栈也是层状的,因为网络本来就是操作系统的一部分。

各层各解决什么问题,对应得很清楚:

  • 应用层:解决“应用程序之间怎么沟通”。

  • 传输层:解决“两端主机之间怎么可靠传输”。

  • 网络层:解决“数据怎么找到目标主机、走哪条路”。

  • 数据链路层:解决“相邻设备之间怎么识别和传送数据帧”。

  • 物理层:解决“0 和 1 怎么变成光/电信号传出去”。

于是,两种不同的操作系统,哪怕底层原理千差万别,网络部分一定是一样的。因为网络协议栈要跟外界对话,它必须遵守同一套标准。操作系统内部可以各显神通,但只要上了网,大家都得说同一种语言。

3.4 从整体角度重新理解TCP/IP协议

协议的本质,说穿了,就是约定好的结构体。结构体,就是协议在计算机世界里的落地表达方式。

举个例子。假设双方约定好这样一个结构体:

struct protocol {
    int a;
    int b;
    int c;
    char data[1024];
};

现在问题来了:主机B能识别对方发来的data,并且准确地把a=10、b=20、c=30提取出来吗?

答案是肯定的。原因很简单,双方都有同样的结构体类型struct protocol。用同样的代码实现协议,用同样的自定义数据类型,天然就形成了一种“共识”。你按这个结构体打包,我按这个结构体拆包,字段一个一个对得上,数据自然读得准。这,不就是约定吗?

所以,对协议有一个最朴素的理解:

所谓协议,就是通信双方都认识的结构化的数据类型。

因为协议栈是分层的,每一层都有自己的协议。同层之间,互相认识对方发来的结构体,各自拆解、各自处理,互不越界。

打个比方,协议就像一张快递单。它贴在数据的最外层,记录着源地址、目标地址这些关键控制信息。快递员不关心包裹里装的是什么,只认快递单上的字段,收件人是谁、发件人是谁、送到哪儿。数据每经过一层,就被贴上一张对应层的“快递单”,到了对端,再一层层撕开,按结构体读取信息。

这就是协议,一种约定,一种结构体,一种双方都能读懂的“共同语言”。


如果这篇文章对你有帮助,别忘了点个赞、点个收藏、点个关注。你的每一次反馈,都是我继续硬核输出的最大动力。我们下篇见。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/2201_76111162/article/details/167220116

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--