计算机网络发展

  1. 第一代:单机通信(50 年代) 一台主机,多个终端共用,终端没有计算能力,只是简单收发。

  2. 第二代:分组交换网络(60 年代,ARPANET阿帕网) 美苏冷战催生 ARPANET,提出分组交换;多个主机可以互相通信,现代网络雏形出现。

  3. 第三代:体系结构与标准(70~80 年代) 诞生 OSI 七层模型、TCP/IP 协议栈;局域网 LAN(以太网)广域网WAN普及,不同网络开始寻求互联互通。

  4. 第四代:互联网(90 年代至今) TCP/IP 成为主流,ARPANET 演化成 Internet;万维网 WWW 出现,PC 普及;随后移动互联网、光纤、5G、云计算网络相继发展。

初识协议

协议本质:通信双方提前说好的一套沟通规矩

计算机之间的传输媒介是光信号和电信号。通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息。要想传递各种不同的信息,就需要约定好双方的数据格式.

  • 定好协议,但是你用频率表示 01,我用强弱表示 01,就好比我用中国话,你用葡萄牙语一样,虽然大家可能遵守的一套通信规则,但是语言不同,即是订好了基本的协议,也是无法正常通信的

所以,完善的协议,需要更多更细致的规定,并让参与的人都要遵守:

计算机生产厂商,计算机操作系统,计算机网络硬件设备

如何让这些不同厂商之间生产的计算机能够相互顺畅的通信?就需要有人站出来,约定一个共同的标准,大家都来遵守,这就是网络协议;

协议分层

协议分层核心思想

协议本质属于软件,设计成分层结构,目的:模块化、解耦。 所有大型软件普遍采用分层模块化思路。

两层:语言层 + 通信设备层

  • A、C 在语言层用汉语交流(同层通信)
  • 上下层依靠接口交互 优势:
  1. 只想换手机(仅改动通信设备层),说话语言不用改;
  2. 只想换语种(仅改动语言层),电话机不用换。

结论:

  • 对等层(同层)之间逻辑上直接通信
  • 分层带来解耦:可以单独替换任意一层,不影响其他层

OSI七层模型

OSI 分层太复杂,实现难度大,是纸上精细理论;TCP/IP 是简化、实战跑在互联网上的标准。所以我们主要讨论的也是后者

TCP/IP五层(或四层)模型

原始 TCP/IP 只有四层(应用层,传输层,互联网层,网卡层);方便和 OSI 七层对着学习,强行拆成五层,网卡层 → 拆成 数据链路层 + 物理层 , 互联网层改名叫 网络层

物理层我们考虑的比较少,我们只考虑软件相关的内容.因此很多时候我们直接称为TCP/IP四层模型

3者关系:

为什么要有TCP/IP五层协议?

本地通信(计算机内部,红诺伊曼结构就是一个网络通信结构)和网络通信本质都是设备之间传输数据,唯一最大区别:通信距离变长了。 距离拉长后,一堆新难题冒出来,TCP/IP 协议就是一套专门解决远距离跨主机通信的完整方案

远距离通信产生四大核心问题

  • 寻址定位:茫茫网络,怎么找到目标主机?--网络层(互联网层)
  • 路由选择:中间经过很多路由器,数据该走哪条路径转发?--数据链路层(网卡层)
  • 数据丢失:传输途中数据包丢了怎么办?--传输层
  • 数据乱序:数据包到达顺序错乱,如何还原;如何保证数据准确送达(到底该以什么方式处理数据)--应用层

通过协议分层我们就能在协议每一层找到对应问题的解决方法

什么是TCP/IP协议?

• TCP/IP协议的本质是⼀种解决方案

• TCP/IP协议能分层,前提是因为问题们本身能分层

 TCP/IP协议与操作系统的关系(宏观上,怎么实现的)

为什么 Windows 和 Linux 能互相通信

操作系统可以不一样,但是两端的网络协议栈必须遵守同一套标准

各层在系统中的位置

  • 应用层:操作系统之上,由用户应用程序实现
  • 传输层、网络层:集成在操作系统内核
  • 数据链路层:网卡驱动程序中
  • 网卡:底层硬件

TCP/IP 名字由来

这套协议栈最核心两层:TCP(传输层) + IP(网络层),因此整套协议统称为 TCP/IP 协议。

网络协议栈贯穿:硬件 → 驱动 → OS 内核 → 用户应用。 想要网络互通,硬件厂商、操作系统、各方都要遵守统一协议标准。

因为操作系统也是分层的所以也可以确定网路协议栈也必定是分层的

再谈什么是协议

协议本质:通信双方共同认可的结构化数据格式(可以类比 C 语言结构体)

1.如果收发两端定义一模一样的结构体:

struct protocol
{
    int a;
    int b;
    int c;
};

发送方填充数据发出,接收方就能按照相同结构解析,读懂里面 a、b、c 的值,这就是约定,也就是协议。

2.延伸到网络协议栈,协议是分层的,每一层都有自己对应的协议。 同层双方拥有相同协议结构,同层之间可以识别对方的数据

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐