【Linux网络】计算机网络入门:网络产生与协议

目录


前言:

关于Linux系统的话题我们已经聊完了!!!

系统部分其实为我们接下来要讲的Linux网络奠定了学习基础。

截至目前,虽然我们身处网络无处不在的时代,但大家对计算机网络的认识可能只停留在意识层面,那么接下来的一段时间,我就来带大家深入的学习网络,揭开他的神秘面纱。看看你现在随手发一条微信、点开一个视频,数据是怎么横跨整个地球的?

1 ~> 网络诞生:从 "抱软盘跑断腿" 到 "全球一张网"

计算机网络的诞生,从来不是什么 "天才一拍脑袋" 的发明,而是被 "单机孤岛" 的绝望逼出来的。

1.1、没有网络的黑暗时代:数据靠 "人肉快递"

最开始的计算机有个最让人头疼的问题:计算机之间彼此独立,数据传输就有了很强的局限性

如果你在 A 实验室的电脑上算出了一份重要的科研数据,想分享给隔壁楼 B 实验室的同事,唯一的办法是:

  • 把数据拷贝到几公斤重的磁带或者软盘上
  • 抱着存储介质跑下楼,穿过校园送到 B 实验室
  • 再把介质插到对方的电脑上读取

如果两个主机相隔更远,就会导致效率非常低下,而且这种彼此之间交换存储介质的方式,很容易导致数据的损坏。

在这种环境的裹挟下就不得不逼着人们去设计一种更便捷可靠的方式去传输数据,于是,网络就诞生了。

1.2、人类第一个网络:阿帕网

美国国防部高级研究计划局(ARPA)提出了一个革命性的构想:建造一个没有中心的网络。1969 年,世界上第一个分组交换网络 ------** 阿帕网(ARPANET)** 正式诞生。起初,他仅用于五角大楼内部通信。

这种去中心化的设计,让阿帕网拥有了极强的抗毁性,也奠定了现代计算机网络的核心架构。

1.3、网络的普及到互联网

最初的阿帕网只服务于军事和学术科研领域,1974 年,温顿・瑟夫和罗伯特・卡恩提出了TCP/IP 协议簇,为全世界的计算机制定了一套统一的 "通信规则"。1983 年,阿帕网全面切换到 TCP/IP 协议。

从此,互联网彻底走出了实验室,摆脱了小众的军事科研属性,一步步普及到民用领域,最终发展成为今天覆盖全世界、支撑我们所有数字生活的核心基础设施。

2 ~>网络基础概念:局域网与广域网

通过上面的网络产生背景,网络其实就是从局部 -> 整体 ,也就是最初先有局域网,然后到广域网。

局域网:小范围地理区域内 (一个房间、一栋楼、一个校园),由多台计算机、交换机、路由器组成的私有网络。

我们家里的WiFi就是局域网,手机电脑,电视等连接一个路由器。现在的局域网,有线以以太网为主,无线以 WiFi 为主。

广域网:连接不同城市、不同国家的大型公共网络,由电信运营商(电信、联通、移动)建设和维护。局域网是广域网中独立可接入的最小网络单元 ,即局域网以俄罗斯套娃的方式组成广域网。

局域网与广域网组成网络的脉络,还有有个重要概念------协议,我们在下面单独讲解!!!

3 ~>初识协议

3.1、协议本质:一种约定

协议在生活中随处可见,交通信号灯约定了红灯停绿灯行;邮政地址约定省→市→区→街道→门牌,分层寻址;课堂举手等等。

本质上就是一种约定,大家都遵守,能够更加有效的协作,不至于混乱。

3.2、网络通信为什么要有协议?

从反面看:如果没有协议,会发生什么?

假设你买了一台华为电脑、一台苹果电脑、一部小米手机,它们用网线连在一起------但没有任何协议:

  • 物理层:华为发的是 5V 电脉冲,苹果期待的是光信号,小米只识别无线电。它们连"对方是否在发送数据"都检测不到。
  • 数据层:华为把数据切成 1024 字节一段,苹果按 512 字节解析,结果每一段都被苹果当成两段来读,全是乱码。
  • 寻址:华为用"设备编号 A01",苹果用"MAC 地址",小米用"手机号"。华为喊"A01 在吗?",苹果和小米都不知道这是在叫自己。
  • ...

结论: 没有协议,连接在一起的设备比各自独立时更混乱,压根无法通信。

因此,必须依托行业巨头、专业国际组织(如 IETF、IEEE、W3C、ITU)等中立机构来牵头制定开放的网络协议标准。

这些协议并不强制统一各设备的内部实现,而是统一彼此之间的"交互接口"------即约定数据的格式、寻址方式、传输时序和错误处理规则。

当不同厂商、不同架构的设备都遵循同一套协议时,它们底层的硬件差异和软件差异便被协议层"封装 "和"隔离 ";对外,它们只需使用这套标准化的"协议语言"进行对话。

这样一来,当不同设备通信时,无需关心对方使用什么芯片、什么操作系统、什么编程语言,只需按照协议规定的格式收发数据,就能实现跨平台、跨网络、跨地域的可靠互联互通。

3.3、协议解决问题实例

场景:

一根Type-C 充电线和一个小充电器,晚上给两台设备充电:

  • iPhone 15(苹果自己的电源芯片)
  • 小米 14(高通芯片)

这两台设备内部的电池容量、电路设计、电源管理芯片完全不同,甚至工作电压都不一样。

USB PD(Power Delivery)协议就是它们之间的"统一交互接口":

  1. 物理接口统一:Type-C 插头形状一样
  2. 握手对话:插上的瞬间,充电器和手机通过协议"交谈":
  • 充电器:"我能提供 5V、9V、15V、20V,你要哪个?"
  • iPhone 15:"我要 9V 2A。"
  • 小米 14:"我要 15V 3A。"
  1. 按需供给:充电器根据协议协商结果,动态调整输出,绝不会乱给电压。

4 ~> 协议分层的解耦艺术

4.1、Why?

网络通信无非以下几点:

  • 怎么把数据从一个主机发送到另一个主机?
  • 数据要发送到哪里去?
  • 怎么保证数据不会丢失?
  • 收到数据怎么交给用户?

如果让一个全能协议回答上面的4个问题,会导致什么后果?

这个协议一定非常臃肿,想象一个快递员把一个包裹从上海发送到远在甘肃的你的手中,不仅要给你发货,还要负责签收,甚至搭建一个物流路线。如果一处发生改动,整个协议或设备就要跟着变,无法维护。

相比于上面牵一发动全身的糟糕设计,工程师引入了分而治之的设计思想:协议分层

就像一家企业会分成物流部、调度部、客服部,各自有明确的职责边界和交接流程;网络协议也将复杂的通信问题拆分为若干层,每一层只专注回答一个核心问题,通过层间接口协作,而不侵入彼此的内部实现

一个环节出问题,不影响其他环节,彼此独立,可维护性增强,维护成本降低,实现了解耦合

通信:语言层 + 通信设备层(实际还会有其他的协议层参与,这里只是帮助理解)。协议分层之后,我们任意替换某一层,对其他层没有影响,正常工作。我们把电话换成无线电也能实现交流,不同语言通过电话也能交流。

4.2、OSI七层模型

OSI 七层模型(Open Systems Interconnection)是国际标准化组织(ISO)于 1984 年提出的网络通信理论参考模型 。它把网络通信从"物理信号"到"用户应用"的完整过程,抽象为七个严格分层的步骤,每一层只与相邻的上下层交互。

由于七层模型过于复杂且不实用,OSI只作为参考,实际实现过程中对其作了简化。

层级 名称 功能
7 应用层 为应用程序提供网络服务接口(如浏览网页、收发邮件)
6 表示层 数据格式转换、加密解密、压缩解压
5 会话层 建立、管理和终止应用程序之间的会话连接
4 传输层 端到端的数据传输,提供可靠(TCP)或不可靠(UDP)服务
3 网络层 逻辑寻址与路由选择,让数据包跨网络到达目的主机
2 数据链路层 局域网内相邻节点的直接传输,物理寻址(MAC)与差错检测
1 物理层 比特流的物理传输(电/光/无线信号)

4.3、TCP/IP五层(四层)协议

TCP/IP是一个协议簇。它将 OSI 的上三层整合为应用层,专注于软件逻辑;中间是传输层(如 TCP)和网络层(如 IP);底层则是数据链路层和物理层。但只定义了四个协议:应用层、传输层、网络层(互联网层)、网络接口层。但为了方便理解,将网络接口层拆成了数据链路层和物理层。

TCP/IP协议如何解决网络通信四大核心问题

核心问题 对应TCP/IP层 核心解决机制 关键协议
怎么把数据从一个主机发送到另一个主机? 数据链路层 + 物理层 1. 将IP数据包封装成"帧" 2. 通过MAC地址识别相邻设备 3. CRC循环冗余校验 4. 数字信号与物理信号转换 以太网(Ethernet)、WiFi(802.11)
数据要发送到哪里去? 网络层(互联网层) 1. 给每个数据包加上源IP和目标IP 2. 路由器根据路由表逐跳转发 3. ARP协议将IP地址转换为MAC地址 IP、ARP、ICMP、IGMP
怎么保证数据不会丢失? 传输层 1. TCP :提供可靠传输(三次握手、确认重传、流量控制、拥塞控制) 2. UDP:不提供任何保证,尽最大努力交付 TCP、UDP、SCTP、QUIC
收到数据怎么交给用户? 传输层 + 应用层 1. 传输层通过端口号 区分同一台电脑上的不同应用程序 2. 应用层按照约定的格式解析数据 3. 将最终结果展示给用户 TCP、UDP、HTTP、HTTPS、DNS、FTP、SSH

5~>再识协议

5.1、TCP/IP协议分层与实现的本质

上面已经介绍了网络通信的实质:

  • 数据链路层:怎么把数据从一个主机发送到另一个主机?
  • 网络层:数据要发送到哪里去?
  • 传输层:怎么保证数据不会丢失?
  • 应用层:收到数据怎么交给用户?

由于问题本身能够分层,才决定了TCP/IP协议分层。既然通信就是解决一个个问题,那么协议不就是解决方案嘛!!!

那么怎么制定对应的解决方案(协议)呢?

协议是通信问题的分层解决方案。因为数据必须在层与层之间传递和交接,所以每一层都需要在数据中携带"我是谁、我要去哪、我有多长"的元信息------这就决定了我们发送的不能是简单的一个整数或者字符,而必须是高度结构化的"数据包 "。协议的本质,就是规定这些数据包的长什么样、每个字段在什么位置、代表什么意思,从而确保每一层都能精确地解析、处理、并转发给下一层。

所以,协议的本质可以理解为一个结构体。

当发送端填充好这个结构体发送出去,接收端按照同样的结构进行解析,双方就达成了"共识"。

5.2、TCP/IP协议与操作系统关系

TCP/IP 协议栈是操作系统内核的核心组件之一。操作系统不仅是 TCP/IP 的"运行平台",更是它的"实现载体"和"管理者"。

TCP/IP 是一纸规范,操作系统是执行这份规范的"机器"。没有操作系统,TCP/IP 无法发送一个数据包;没有 TCP/IP,操作系统就失去了连接世界的能力。

看到这里,你可能会说TCP/IP协议不是操作系统组件吗,怎么TCP/IP协议簇的有些层不在OS。TCP是传输层最著名的协议,IP是网络层最著名的协议,而传输层与网络层位于操作系统内核,是整个协议簇的核心,所以,命名为TCP/IP协议。

操作系统提供了一套标准的系统接口(Socket API)来使用 TCP/IP 协议。

6 ~> 总结

今天的学习到此结束!

  • 而网络最重要的就是要解决通信双方长距离的数据传输问题,TCP/IP协议如何实现?
  • 以及今天提到的协议栈为什么叫协议栈?
  • 还有TCP/IP协议在Windows和Linux操作系统有差异的情况下还能实现彼此数据交互呢?

这些问题,我会在下一篇博客中为大家解答,不见不散哦!!!

相关推荐
青草地溪水旁1 小时前
CAN通道的“一对一”与“选择性”:物理线束、CanSM通道与网络报文实践解析
网络·autosar cp
稳联技术老娜8 小时前
DeviceNet主站怎么连接西门子PLC,Profinet网关配置手册(那智机器人)
服务器·网络·数据库
9分钟带帽8 小时前
linux_系统开机自动执行shell脚本
linux·服务器
志栋智能10 小时前
AI驱动无代码:降低巡检超自动化的门槛
大数据·运维·网络·人工智能·自动化
专业机床数据采集10 小时前
C# 精雕数控 数据采集 Demo|实时读取精雕机床坐标、主轴、负载、加工工时全量参数
网络·网络协议·tcp/ip·mes·精雕数控数据采集
嵌入式小能手10 小时前
飞凌嵌入式ElfBoard-进程间的通信之命名管道
linux·服务器·算法
AOwhisky10 小时前
Ceph系列第六期:Ceph 文件系统(CephFS)精讲
linux·运维·网络·笔记·ceph
我爱C编程10 小时前
基于ECC簇内分组密钥管理算法的无线传感器网络matlab性能仿真
网络·matlab·ecc·密钥管理·无线传感器网络·簇内分组
Starry-sky(jing)11 小时前
# Linux 下 Qt 应用无障碍自动化:记一次wx无人值守系统的架构演进
linux·qt·自动化