当前位置: 首页 > news >正文

网络基础——协议认识

文章目录

  • 网络基础
    • 网络的发展——引出一些概念
    • 协议认识
      • 初识协议
      • 协议分层
      • 协议分层的模型
      • 再谈协议
        • 为什么要有TCP/IP协议
        • TCP/IP协议的宏观认识
        • 宏观理解TCP/IP协议和操作系统的关系
      • 协议的真正本质

网络基础

本篇文章,我们将正式进入网络部分的学习。这是网络部分的第一篇文章,我们需要简单了解一下网络的发展历史,引出一些概念。这利于我们后序的学习!

网络的发展——引出一些概念

早期的网络
早期的计算机,其实都是独立的!即不能像我们现在一样,通过使用某些功能,就通过网络把对应的数据信息传到另外一台计算机上了!

在这里插入图片描述
就如上图所示,早期的计算机是没有网络的概念的!

早期的计算机,那是一些比较大型的学术机构和科研机构在使用。那他们肯定是有协作需求的!但是,早期的计算机没有办法直接进行通信。
所以,必然的,就需要人主动参与到数据的传送。但是,这样的效率可想是比较低效的!

而计算机本质就是个工具,是人在使用 -> 又因为人需要写作 -> 导致了计算机之间需要协作!
所以,网络的产生是必然的!因为网络就是用于计算机之间通信写作的!这是规律。


网络技术的发展
后来,因为有了需求,所以那些持有计算机使用的机构必然需要想办法让计算机之间进行通信!所以,就衍生出了一系列网络技术。

简单一点的办法就是让一台计算机专门充当服务器,然后所有主机通过网线相连:
在这里插入图片描述

当然,随着需要通信的主机变多,就衍生出了新的通信方式(局域网 LAN),也诞生新的设备(交换机、路由器):
在这里插入图片描述

再后来,有衍生出了广域网(WAN)的技术:
在这里插入图片描述
就可以通过技术迭代升级 + 市场消费需求提升,不断地促进网络技术的发展。让不同地方的人都可以通过这样的设备来进行通信交流!

当然,WAN和LAN是一个相对的概念。比如我们知道,我们国家的网络是和外界不太一样的。所以,我们国家的网络在整个世界来看,就是一个巨大的局域网


网络整体发展历史
网络,其实最早是由美国的一些科学家研究出来的,而且是军用级别的!所以,很多国家在网络技术上的发展其实是有一定差距的!直到上世纪90年代,美国把第一代网络技术(阿帕网)给公布出来。这时候全世界的国家都在竞相发展网络技术!

然后就有一大批的网络技术公司(互联网公司)成立,研发新的技术!
但是,我们需要铭记:任何新的技术发展,都需要有新的设备!

我们不能光看到表面上的一些互联网公司。网络技术的发展,必然是需要大量的网络通信设备的!所以,这些公司也是在发展,如NOKIA

所以,这些公司可以认为是互相进步发展的!在网络公司和通信设备制造公司中,横亘着一个叫做运营商的角色!他们负责收购大量的通信设备,完善一些基础设施。推广市场。这也就是为什么现在如此多的网民的原因!


输出结论

最后要说明的是:

1.因为人要协作 -> 计算机之间也要协作 -> 网络的诞生是必然的!
2.网络,是有局部发展到整体的!

协议认识

我们在网络世界里,经常会听到协议这个概念。这里,我们就来简单了解一下!

初识协议

首先,协议的本质就是一种约定!
比如两个人之间规定的暗号,听到什么暗号就要对应做出什么回应!这种协议是双方都看得懂的!而且都要遵守该协议。

再举一个例子:

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

但是,并不是简单地规定好了协议双方就能够直接进行通信的!
比如一个中国人和一个西班牙人,双方都听不懂对方在说什么!虽然规定了听到0/1应该做什么,但是,由于双方语言的不通,导致即使知道协议规则,也不知道对方说啥,应该做啥。

所以,协议并不是简单地约定规则,而是需要一套完善的机制!
在计算机世界中,协议并不看似只有通信的计算机需要遵守!而是计算机中对应的一整套硬件体系、操作系统都要支持某种协议。这样子,才能进行通信!

所以,如果说世界上的所有计算机都需要通信,那么,势必要有一种统一的协议——即网络协议!让所有的设备都支持该协议,进行通信!

所以,一般具有定制协议或者标准的资格的组织或者公司都必须是业界公认或者具有江湖地
位的组织或者公司!下面我们来认识一下这些组织即可:

  1. IETF (Internet Engineering Task Force)

    • 参与领域: 互联网核心协议(如TCP/IP、HTTP、DNS、QUIC等)
    • 备注: 发布RFC文档,实际互联网标准的主要制定者
  2. IEEE (Institute of Electrical and Electronics Engineers)

  • 参与领域:
    • IEEE 802系列(以太网/Wi-Fi等局域网标准)
    • 无线通信协议(如802.11ac/ax)
  1. ITU-T (国际电信联盟电信标准局)
  • 参与领域:
    • 电信网络标准(如光传输/SDH)
    • 视频编码标准(H.26x系列)
    • 5G网络部分标准
  1. W3C (World Wide Web Consortium)
  • 参与领域:
    • Web技术标准(HTML5、CSS、WebAssembly等)
    • Web安全协议(如CORS)
  1. 3GPP (移动通信标准化组织)
  • 参与领域:
    • 蜂窝网络标准(5G/4G/LTE协议栈)
    • 移动通信安全架构
  1. ISO (国际标准化组织)
  • 参与领域:
    • OSI七层模型(理论框架)
    • 通用数据格式标准(如ASN.1)
  1. 主要科技公司贡献
  • Google:
    • QUIC协议(后成为HTTP/3基础)
    • SPDY(HTTP/2前身)
  • Microsoft:
    • SMB文件共享协议
    • Active Directory相关协议
  • Cisco:
    • 路由协议(如EIGRP)
    • 网络设备管理协议
  • Mozilla/Apple/Google:
    • 联合推动WebRTC标准

规定了相关的协议后,只要是需要参与网络通信的设别,都需要支持这种通用的协议!

协议分层

如果有学过《计算机网络》这门课程的同学就知道,网络通信是被分层的:
在这里插入图片描述
如常见的两种模型!OSI模型和TCP/IP模型!


我们肯定会有一个疑问,为什么要分层?有什么好处吗?

我们回看一下这一张图——操作系统体系结构图:
在这里插入图片描述
我们知道,操作系统是一款管理计算机中软硬件资源的软件!它的设计就是分层的,为什么?
因为这样子可以明确每一层的任务职能,还能最大程度上地解耦合

所以,我们至少可以知道一点:网络协议地分层是满足高内聚、低耦合的!

输出结论:

  1. 网络协议分层,被称为网络协议栈!
  2. 网络协议本质也是软件,在设计上为了更好的进行模块化,解耦合,也是被设计成为
    层状结构的!在未来的开发中,亦是如此!

这里的两个结论目前是没办法解释!我们等到后面部分再来细说!!!


这里来看一个例子:
在这里插入图片描述
即两个人打电话的过程:

在我们打电话的用户来看,就是两个人拿着电话在进行对话!
但是,在实现电话功能的工程师看来,打电话没有那么简单!而是先要一方说话,把信息传递给底层通信层,然后通信层通过某种协议发送给另一台电话的通信层。然后再处理后交付给另外一边的用户!

但是,如果通信设备需要替换了呢?如果不进行分层解耦,如果说我们发出声音会直接影响到底层设备的通信,那么就没那么容易替换了!
这就好比我们在操作系统中:如果操作系统中文件管理模块和进程管理模块有大量直接交互,那么想要修改代码那是很麻烦的!

所以,分层的最大好处就是——在设计上为了更好的进行模块化,解耦合

协议分层的模型

协议分层的模型,最常用的,也是大部分遵守的标准:
OSI模型 或 TCP/IP模型


OSI模型
在这里插入图片描述

  • OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;
  • 把网络从逻辑上分为了7层,每一层都有相关、相对应的物理设备,比如路由器、交换机;
  • OSI七层模型是一种框架性的设计方法,其最主要的功能是帮助不同类型的主机实现数据传输;
  • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整。通过七个层次化的结构模型使不同的系统、不同的网络之间实现可靠的通讯;
  • 但是,它既复杂又不实用,所以我们按照TCP/IP模型来讲解。

其实,OSI协议规定的非常好!但是,实现起来是非常复杂的!所以更多的时候,都是使用的TCP/IP协议!这个协议是五层的。

TCP/IP模型
TCP/IP 是一组协议的代名词,它还包括许多协议,组成了 TCP/IP 协议簇。TCP/IP 通讯协议采用了 5 层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

只不过,后序我们谈论的时候,都是了解四层即可!因为最底层的物理层是和硬件强相关的,我们目前了解一下即可:

  • 物理层:负责光/电信号的传递方式。比如现在以太网通用的网线(双绞线)、早期以太网采用的同轴电缆(现在主要用于有线电视)、光纤,以及现在的Wi-Fi无线网使用的电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。
  • 数据链路层:负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(检测信号以确定新帧的开始)、冲突检测(检测到冲突时自动重发)、数据差错校验等工作。常见的标准包括以太网、令牌环网、无线LAN等。交换机(Switch)工作在数据链路层。
  • 网络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址标识主机,并利用路由表规划数据传输路径。路由器(Router)工作在网络层。
  • 传输层:负责两台主机之间的数据传输。如传输控制协议(TCP),确保数据可靠地从源主机发送到目标主机。
  • 应用层:负责应用程序间的通信,如简单邮件传输协议(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。网络编程主要针对应用层。

在这里插入图片描述
其实TCP/IP模型就是OSI模型的简易版本!(应用、表示、会话合三为一)。

再谈协议

为什么要有TCP/IP协议

首先,我们来理解一下为什么要有这样的协议!

首先,我们知道一个结论就是:主机之间拿着条线直接相连也是可以进行通信的!而且,内部的CPU、显卡、内存都是直接根据对应的协议进行通信的!(没错,硬件也有通信协议!)

所以,如果说一台机器的不同设备使用电线连着,让它们分别处于我国的东西南北中方位,也一样能够通信!只不过说,效率会变得特别低!
->计算机内得冯诺依曼体系结构,也可以是一个网络结构!

多台主机其实就和上面得例子是类似的,通信的时候也是会受到距离得影响的!


所以,网络通信就面临着巨大的问题,在通信距离变得很长的情况下(新技术 -> 新问题):

1.如何保证数据的安全?即不丢失!
2.怎么找到要通信的位置?怎么确定通信路径?
3.怎么解决当下要通信的下一个节点位置?(通信距离长,需要通过一个个节点发送)

还有一个问题,这个不是网络通信独有的。即如何处理通信数据?


上述的答案是:通过规定网络协议层,即TCP/IP来解决!

在这里插入图片描述

TCP/IP协议的宏观认识

• TCP/IP 协议的本质是一种解决方案
• TCP/IP 协议能分层,前提是因为问题们本身能分层

即上述所说到几点问题,是可以解耦合放在不同的层进行处理的!

这样子,就可以让全世界一些比较权威的机构、组织、公司等代表进行讨论设计标准!这种标准是国际化的!是非常合理的!然后让所有和网络通信相关的通信设备都要遵守该标准!

宏观理解TCP/IP协议和操作系统的关系

了解完了协议基本概念和一种具体的协议——TCP/IP协议。我们肯定会想到一个问题:
即我们的计算机,是通关操作系统来管理的!那么,操作系统和TCP/IP协议有什么关系呢?

我们先以Linux系统来进行讲解:
在这里插入图片描述

  • 物理层,即用来进行数据通信的硬件,一般就是网卡!它是属于硬件的,所以在操作系统的硬件层中也会有网卡设备!
  • 数据链路层,其实就是解决如何找到下一个要去的节点!这个是属于驱动程序的!
  • 传输层和网络层是在操作系统这一层进行实现的!其中,传输层使用的是TCP协议,网络层使用的是IP协议!所以,这就是为什么这个协议叫做TCP/IP协议
  • 最后是应用层,应用层就是用户层的使用和用户对应的接口

最终,我们可以明白一个道理:
网络,其实是操作系统的一部分! 未来要进行网络通信的时候,用户层依然是可以使用大量的系统层面提供的系统调用接口!


我们来看看不同的操作系统下:
在这里插入图片描述
市面上系统都是如此。因为最终它们都需要进行网络通信!需要网络通信,它们又都会满足同一种协议!所以,势必它们的网络部分实现的代码是高度相似的!

无论不同的操作系统底层如何实现、如何管理的!但是,网络部分一样!必然可以进行网络通信!这也就是为什么不同的系统之间也是可以进行通信的!

在这里插入图片描述

协议的真正本质

最后,我们再来探讨一下,协议究竟是什么?我们到现在也不知道它是以什么形式存在的。

我们知道:OS的源码,基本都是c/c++:
在这里插入图片描述
协议又是通信的双方做出的通信约定!每一层都有对应的通信协议!
我们又知道,协议本质上也是软件!

综上所述,通信双方的一些约定、要发送的数据、处理方法,其实都是可以用结构体来进行描述的。然后再组织起来! -> 协议,就是双方约定好的数据结构!


所以,双方的同一层都规定好一种协议(结构体),把需要通信的数据、处理方法、对应字段都约定到一个结构体内。又因为都遵守同一个网络通信协议!所以,网络部分的代码是一样的!
所以,一方发过来的结构体,另一方也一定能够看得懂!这样就可以通信了!

所以,所谓的协议,其实就是一种结构体!这是双方约定的一种计算机式的表达!

如同我们上网购物一样,发快递的时候,快递单子上会有一系列的信息。这个其实就是买卖双方规定好的一种协议!又或是我们自己使用的c++类,这本质上编写一个类,就是在编写一个使用协议!使用者可以通过一些方式来明白使用方法!

http://www.dtcms.com/a/337140.html

相关文章:

  • Linux权限的学习
  • 抽象类与接口的区别
  • 【C语言篇】操作符详解
  • Ubuntu下无法在huggingface下载指定模型的解决方法
  • Read Frog:一款开源AI浏览器语言学习扩展
  • 如何解决IDEA/Datagrip无法连接数据库的问题:解决方法为添加参数-Djava.net.preferIPv4Stack=true
  • Java原子类详解
  • 并发编程原理与实战(二十四)Java并发基石LockSupport park/unpark机制全解析
  • 车e估牵头正式启动乘用车金融价值评估师编制
  • AI出题人给出的Java后端面经(十八)(日更)
  • Java基础八股复习3 jvm-内存结构
  • 数据仓库理论
  • 具身智能2硬件架构(人形机器人)摘自Openloong社区
  • Vue3 中使用 Element Plus 完整指南
  • 博客项目 Spring + Redis + Mysql
  • 利用DeepSeek辅助WPS电子表格ET格式分析
  • 代码随想录算法训练营四十五天|图论part03
  • flask——4:请求与响应
  • 机器学习(决策树)
  • pytest的前置与后置
  • 决策树:机器学习中的直观分类与回归工具
  • CPTS---Active 复现
  • Python netifaces 库详解:跨平台网络接口与 IP 地址管理
  • Alma Linux 8 中解决掉 Failed to set locale, defaulting to C.UTF-8
  • vue3入门-v-model、ref和reactive讲解
  • Flink Stream API - 源码开发需求描述
  • Apache IoTDB集群部署实战:1C2D架构的高性能时序数据库搭建与优化指南
  • Claude Code 代理商汇总:2025年最新评测
  • 【Vivado TCL教程】从零开始掌握Xilinx Vivado TCL脚本编程(一)
  • 【Jenkins】03 - 自动构建和docker构建