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

计算机网络的组成

从不同的角度入手,我们可以先从计算机网络的一个基本架子的组成来看一下。

一、从组成部分上

它是由硬件软件协议(一系列规则和约定的结合) 这三大组要要素在一起构成了计算机网络。

  • 硬件:这个端系统以及中间的这些路由器、交换机等等的中间设备
  • 软件:就是附在端系统上,甚至是包括这个中间设备上面也有一定的软件,将这些软件步到这些硬件上
  • 再通过协议穿梭于各个硬件中,就构成了一个计算机网络

image-20240611080256437

计算机网络每一个层次它其实是有很多协议的,根据这些协议,我们就可以规定这个数据如何封装、如何打包、如何传输、如何从这一端到你的另一端,这些都是协议要包含要学习的内容。


二、从工作方式上

从工作方式上我们可以将计算机网络分为

  • 边缘部分
  • 核心部分

1)边缘部分

虽然它称之为边缘部分,但是它也非常的重要。把一部分就是由一系列的端系统组成的,这些端系统不仅包括一些计算机,也可以包括非常庞大的一些服务器,和大型计算机,甚至还可以包括是非常小的计算机网络摄像头,它可以实时的捕获到一些信息,并且把这些信息实时的发布出去,这些都是边缘部分。

但计算机网络只有边缘部分还不够,它需要使用核心部分的一些服务,也就是通过核心部分提供服务,边缘部分才能实现端系统与端系统之间的这样一个通信。

端系统之间的通信强调的是进程之间的通信,也就是我们主机A和主机B在通信,其实讲的是主机A当中的某个进程和主机B当中的某个进程之间的通信。例如我们在打开QQ的时候,登录后,我在界面上输入要发出的文件,此时QQ就是我电脑中正在运行的一个程序,而B这边也有人打开了QQ,在这边接收我的消息,或者他给别人发信息,那它使用的QQ也是一个正在运行的程序,也是一个进程。

image-20240611080304162

所以在这里再强调一下,就是端和端之间的通信其实只的是两个端系统之间的进程通信,那么这两个端系统之间的进程通信包括两种方式:

  • C/S方式:Client and Server,即客户/服务器的方式,这种方式是因特网上最常用的,也是最传统的一种方式,它描述的是这两个端系统之间的进程,呈现着一种服务与被服务的关系,client客户就是被服务的,server就是为客户提供服务的。

例如我们在使用微信的时候,在给别人发消息的时候,就需要把消息发给腾讯的服务器,然后由这个服务器处理我们的这个请求,再把消息传递给另一个人。但此时此刻不止我一个人在发微信,有可能正在看我笔记的你也在发微信,有很多很多人都在发微信,就会像这个服务器发出很多请求,这个服务器就需要一次处理这些请求,并且执行这个请求当中的一些任务。

所以发出请求的我们,即客户,承接我们请求的这个服务器就是这个CS方式中的server。

但由于资源是有限的,当访问的人越多的时候,我们就可以知道这个速度是越慢的。

举个例子:在我们微信、支付宝等平台上抢红包的时候,大家经常会出现卡顿,正是因为这个服务器要接收很多很多请求,所以由于它的资源有限,就会导致访问这个服务器的请求越多,那么得到这个响应的速度就越慢。

除了 C/S 外,还有一个叫做 B/S方式C/S方式 通常指的是你要下载一些客户端的软件,包括QQ、微信客户端等。而B/S 中的 B 指的就是 Browser,即浏览器的意思。B/S方式C/S方式 其实都很类似,只不过把我们这个客户端换成浏览器了而已。


  • P2P方式(peer-to-peer,即对等的连接):这个情况下大家都是对等的,没有一台主机说我一定是服务器,也没有一台主机说我永远是一个客户机,在这种方式下所有的主机都有两个身份:一面试提供服务的服务者,另一面就是使用服务的享受者,即客户,所以这里面的每一个端系统它同时又是客户,又是服务器。

简单来说:假设A它现在手里有一个500M的大片,然后现在有B、C、D三个人都想下这个片子。P2P下载 其实就是将一个大的文件切分成几个大小不等或者大小相等的数据块,假设B先拿到一部分数据,例如它下了250M的片子,下了这250M之后,马上就给C传了200M,同时B还会继续从A下载电影,那么C收到200M之后,它很功德无量,继续把这个东西分享给小D,假设分到了150M,这个小D同时又可以向A发出请求:你再分我一点,此时C和A其实都可以一起资助D,那么A又给D传了一部分视频,所以D在很快的时间内就可以下完这个片子了。当然D其实也可以向B请求服务,B同时也可以把自己片子中已经下好的一部分再继续上传给D,这样看D又收到了B的恩惠,所以可以看到在 P2P 下载的这种情况下,其实是一个我为人人人人为我的情况。

例如B跟C这两个既是服务器,同时又是客户,因为它们两个即承担了上传的功能,同时它们也享受到了下载服务。

我们再来看这个小D,小D它同时有A、B、C3个人一起给他传文件,可想而知这个D获得这个文件的速度应该非常快,所以在 P2P下载 的环境中,当这个主机越多越好,我们下载的速度就越快,刚好和 C/S 是相反的,C/S 由于只有固定的几个机器做服务器,所以请求他们这个服务的人越多,就会导致这个服务器的相应越慢;但是 P2P 却相反,因为每一个人,即每一个端系统既可以是客户,同时也可以是服务器。

image-20240611080315186


2)核心部分

核心部分其实就是被边缘部分服务的,包括路由器、一些中间设备,还有一些网络连接起来,那么核心部分和边缘部分连接在一起就构成了计算机网络,这也是在工作方式上面对于计算机网络组成的一个划分。

image-20240611080320199


三、从功能组成方面

这也是非常重要的一点,在上节课我们学过计算机网络主要有两个功能呢,分别是数据通信以及资源共享。

根据这两个功能我们就可以将计算机网络分成 通信子网资源子网

  • 通信子网:实现数据通信
  • 资源子网:实现资源共享 / 数据处理

计算机网络我们可以给它按照层次来划分,在OSI参考模型中它是被划分成了七层。

在这七层中,下三层代表的就是通信子网,因为它们是由各种传输介质、通信设备、相应的网络协议所组成,它可以让这个网络具有传输交换、控制和存储的能力,同时还可以实现联网计算机之间的数据通信。

那在这三个层次当中,实现数据通信的主要设备就是包括网络层的路由器、链路层的交换机、网桥、网络层的集线器和中继器等等。

下面三层实现的是通信子网,相当于把这个公路铺好。

那么上面三层其实就是资源子网,实现资源共享功能的设备和软件的集合,资源子网就可以向网络用户提供共享其它计算机上的硬件资源、软件资源和数据资源等等的服务。

那其实可以理解为上三层就是对数据进行一个封装和处理,下三层就是把这个数据送上路;那中间这个传输层起到一个非常重要的融会贯通的作用,这个传输层主要是为了弥补上面三层要求的服务和网络层提供的服务之间的差距,并且向高层用户屏蔽这个通信子网中的一些细节,所以这个层次也是非常重要的。

image-20240611080326184

相关文章:

  • 计算机视觉与深度学习实战,Python为工具,基于计算机视觉的自动驾驶应用
  • 【数据结构与算法 经典例题】括号匹配问题
  • 代码随想录算法训练营第三十三天| 1005.K次取反后最大化的数组和,134. 加油站,135. 分发糖果
  • 串口通信实战:STM32与多种设备的连接方法
  • JVM常用概念之线程本地分配缓冲区(ThreadLocal Allocation Buffer,TLAB)
  • vivado HW_SERVER
  • C++ STL 中的 priority_queue::push() 和 priority_queue::pop()
  • stm32MP135裸机编程:启动流程分析
  • 假设Python脚本包含引用了大量的第三方库,如何打包成.exe文件,并且可以在没有环境的服务器下正常运行
  • vue-2 组件传值
  • Django学习(2)项目实战
  • React 18
  • ISO 19115-2:2019 第6章 获取和处理元数据
  • 【C++】STL中list的使用
  • powerdesigner各种字体设置
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 「面试题」如何实现一个圣杯布局?
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • Android组件 - 收藏集 - 掘金
  • Angular Elements 及其运作原理
  • C++类中的特殊成员函数
  • idea + plantuml 画流程图
  • javascript 总结(常用工具类的封装)
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Material Design
  • Promise初体验
  • Promise面试题2实现异步串行执行
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • SQLServer之索引简介
  • vue2.0项目引入element-ui
  • XML已死 ?
  • 反思总结然后整装待发
  • 基于HAProxy的高性能缓存服务器nuster
  • 京东美团研发面经
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 学习使用ExpressJS 4.0中的新Router
  • Linux权限管理(week1_day5)--技术流ken
  • ​2020 年大前端技术趋势解读
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • ​用户画像从0到100的构建思路
  • ​字​节​一​面​
  • # 利刃出鞘_Tomcat 核心原理解析(二)
  • #Linux(make工具和makefile文件以及makefile语法)
  • #pragma once与条件编译
  • #知识分享#笔记#学习方法
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (SpringBoot)第七章:SpringBoot日志文件
  • (undone) MIT6.824 Lecture1 笔记
  • (含笔试题)深度解析数据在内存中的存储
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路