【计算机网络】第一章——计算机概述(中篇)

ops/2024/9/25 15:23:59/

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【网络>计算机网络
本专栏旨在分享学习网络>计算机网络的一点学习笔记,欢迎大家在评论区交流讨论💌

目录

  • 一、常见的网络>计算机网络体系结构
  • 二、网络>计算机网络体系结构分层的必要性
    • 物理层
    • 数据链路层
    • 网络
    • 传输层
    • 应用层

一、常见的网络>计算机网络体系结构

国际法律标准(OSI体系结构):

  • 物理层、数据链路层、网络层、运输层、会话层、表示层、运输层。

实际上的国际标准(TCP/IP协议):

  • 网络接口层、网际层、运输层、应用层。

虽然国际上定义了国际法律标准即OSI体系结构,但是真正占领市场标准的是TCP/IP协议。所以OSI标准失败原因总结如下:

  • OSI专家缺少实际经验,在完成OSI标准时没有商业驱动力。
  • OSI协议实现起来过于复杂,且运行效率低。
  • OSI标准的指定周期长,使得按照OSI标准生产的设备无法即使投入市场。
  • OSI标准的层次划分不合理,有些功能在多个层中重复出现。

在这里插入图片描述

注意:TCP/IP在网络层使用的协议是IP协议,而IP协议的中文名称是网际协议,因此 TCP/IP协议的网络层通常称为网际层。

用户的主机要先接入因特网的话这就要求用户的主机必须使用TCP/IP协议(即使用户不接入因特网的话也可以使用TCP/IP协议),在用户主机的操作系统中通常都带有TCP/IP体系结构标准的TCP/IP协议族;而用于网络互连的路由器中也带有TCP/IP体系结构标准的TCP/IP协议族(只不过路由器一般只包含网络接口层和网际层,TCP/IP体系结构的网络接口层并没有规定什么具体的内容目的就是可以互连全世界不同的网络接口,比如有线的以太网接口和无线局域网的WIFI接口,而不限定仅使用一种或几种网络接口)。
所以本质上TCP/IP体系结构只有如下三层:应用层(包含各种应用层协议,比如HTTP协议等等)、传输层(TCP和UDP是该层的两个重要协议)、网际层(IP协议是网际层的核心协议)。

  • IP协议可以将不同的网络接口进行互连,并向上层的TCP协议和UDP协议提供网络互连服务。
  • TCP协议在享受IP协议提供的网络互连服务的基础上可向其上层即应用层的相应协议提供可靠传输的服务。而UDP协议在享受IP协议提供的网络互连服务的基础上可向其上层即应用层的相应协议提供不可靠传输的服务

IP协议作为TCP/IP体系中的核心协议,一方面负责互连不同的网络接口(IP over everything),另一方面为各种网络应用提供服务(Everything over IP)。
在TCP/IP体系结构中包含有大量的协议,而最重要的两个协议就是IP协议和TCP协议,所以用TCP协议和IP协议来表示整个协议大家族。常称为TCP/IP协议族。
在这里插入图片描述

由于TCP/IP体系结构为了将不同的网络接口进行互连,所以网络接口层并没有规定什么内容,但是为了学习网络>计算机网络相对比较完整的内容的话,所以学习计算机原理往往采取折中的办法,即综合OSI和TCP/IP的优点,采用一种五层协议的原理体系结构:物理层、数据链路层、网络层、运输层、应用层。
在这里插入图片描述

二、网络>计算机网络体系结构分层的必要性

在这里插入图片描述

物理层

先来看一个简单的情况:两台计算机通过一条网线连接起来。
在这里插入图片描述
解决了上述问题之后,两台主机就可以通过信号传输比特0和1了。
实用的网络>计算机网络一般都有多台主机构成。

物理层要解决的是使用何种信号来传输比特的问题。

数据链路层

主机A、B、C、D、E通过总线互连构成了一个总线型网络在这里插入图片描述
假设主机间已经解决了物理层的问题(即主机间可以发送信号来传输比特0和1),现通过举例来说明在这样的一个总线型网络上还需要解决哪些问题:

如图主机A要给主机C发送数据,但是数据的信号要通过总线传播到总线上的每一个主机:现在就面临的一个问题,即主机C该如何知道该信号是否是发给自己的,自己是否要接收该信号;而主机B、D、E又如何知道该数据并不是发送给自己的,自己是否应该拒绝该数据呢。在这里插入图片描述
所以,上述就引出了①如何表示网络中各主机的问题(主机编址问题,例如MAC地址),主机在发送数据时应该给主机附加上目的地址,当其它主机收到数据后应该根据自身地址和目的地址来决定是否接收数据。
由此又会引出出一个新问题,即②目的主机如何从一连串比特流中区分出地址和数据(即要解决分组的封装格式问题)
另外,如果主机B和主机D同时发送数据的话就会造成信号碰撞(因为使用的是同一条总线)的问题,这里引发的问题就是③如何协调各主机争用总线

我们将总线型网络引出的三个问题全部规划到数据链路层,综上我们可以发现如果解决了物理层和数据链路层各自面临的问题,我们就可以解决分组在一个网络上传输了。但是我们每天使用的因特网使用的因特网是由非常多的网络和路由器互连起来的,仅解决物理层和数据链路层的问题依然是不能正常工作的。

数据链路层要解决的问题就是解决分组如何在一个网络(或一段链路)中传输。

这里要说明一下,上面的总线型网络已经淘汰了,如今使用的是使用以太网交换机将多台主机互连形成的交换式以太网
在这里插入图片描述
那么以太网交换机又是如何实现将多台主机进行互连的呢?。

网络

这是一个由3个路由器和4个网络互连起来的小型互联网(将其看作是因特网中很小的一部分)。在这里插入图片描述
在本例中,存在多个网络,所以面临着如何标识各个网络以及网络中各主机的问题。(网络和主机共同编址的问题
在这里插入图片描述

  • 上图中,网络N1的网络号为192,168,1,该网络上的笔记本电脑、服务器以及路由器接口的IP地址的前三个数都应该是192,168,1。因为它们都在网络N1上。而第四个十进制数分别为1,2,254各不相同,用于标识它们自己。网络N2的各设备的IP地址同理。

现在来看另一个问题:分组从源主机到目的主机可走不同的路径。 由此引发了路由器如何转发分组以及如何进行路由选择的问题

在这里插入图片描述
我们将上图中的问题全部划归到网络层。至此解决了物理层、数据链路层、网络层的问题之后可以实现分组在网络间传输的问题,但是对于网络>计算机网络应用而言仍然是不够的。

网络层要面临的问题就是解决分组在多个网络上传输(路由)的问题

我们接着往下看下个例子。

传输层

实现了分组在网络间传输的问题之后,我们来看这样的例子:

在这里插入图片描述
主机中运行着两个与网络通信相关的应用进程(浏览器和qq进程)。N1网络中的服务器运行着与网络通信相关的服务器进程。
某个时刻,主机受到了来自服务器的分组,这些分组应该交给浏览器进程处理还是交给qq进程进行处理呢?由此引出一个问题即如何解决进程间基于网络的通信问题。
另外,如果某个路由器在传输过程中出现了误码或者由于路由器繁忙导致路由器丢弃分组。即引发的问题就是如果出现传输错误,则应如何处理

在这里插入图片描述
将图中的问题划归到运输层。
至此解决了物理层、数据链路层、网络成、运输层各自的问题之后可以实现进程间基于网络进行通信。

传输层面临的问题就是解决进程之间基于网络的通信问题。

应用层

在此基础上,只需要制定各种应用层协议并按协议标准编写相应的应用程序,通过应用进程的交互来完成特定的网络应用。例如:支持万维网应用的HTTP协议、支持电子邮件的SMTP协议、支持文件传送的FTP协议等。将上述的问题划归到应用层。
在这里插入图片描述

应用层要解决的问题就是解决通过应用进程的交互来实现特定网络应用的问题。

现在我们将实现网络>计算机网络所需要解决的各种主要问题划分到了物理层、数据链路层、网络层、传输层、应用层。进而构成了五层协议的原理体系结构。

在这里插入图片描述

以上就是本文中网络>计算机网络进行分层的重要性。

本文到这里就结束了,希望友友们可以支持一下一键三连哈。嗯,就到这里吧,再见啦!!!

在这里插入图片描述


http://www.ppmy.cn/ops/35751.html

相关文章

C语言练习百题之计算字符串中子串出现的次数

程序分析 计算字符串中子串出现的次数,一种直观的方法是遍历整个字符串,在每个位置检查子串是否匹配。另一种方法是利用字符串匹配算法来优化搜索过程,减少时间复杂度。 方法一:暴力法 解题思路: 在主串中依次遍历…

云原生周刊:Terraform 1.8 发布 | 2024.5.6

开源项目推荐 xlskubectl 用于控制 Kubernetes 集群的电子表格。xlskubectl 将 Google Spreadsheet 与 Kubernetes 集成。你可以通过用于跟踪费用的同一电子表格来管理集群。 git-sync git-sync 是一个简单的命令,它将 git 存储库拉入本地目录,等待一…

运行容器时发现内存不足(<2G)--docker版本低:重装docker

一、卸载: sudo yum install -y yum-utilssudo yum remove docker-ce docker-ce-cli containerd.iosudo rm -rf /var/lib/dockersudo rm -rf /var/lib/containerd 二、安装: sudo yum-config-manager --add-repo https://download.docker.com/linux/ce…

linux上Redis安装使用

环境centOS8 redis是缓存数据库,主要是用于在内存中存储数据,内存的读写很快,加快系统读写数据库的速度 一、Linux 安装 Redis 1. 下载Redis 官网下载Downloads - Redis 历史版本Index of /releases/ 本文中安装的版本为:h…

百度语音识别开发笔记

目录 简述 开发环境 1、按照官方文档步骤开通短语音识别-普通话 2、创建应用 3、下载SDK 4、SDK集成 5、相关接口简单说明 5.1权限和key 5.2初始化 5.3注册回调消息 5.4开始转换 5.5停止转换 6、问题 简述 最近想做一些语音识别的应用,对比了几个大厂…

杰发科技AC7801——支持的纠错功能

1. 复位寄存器保留复位类型 低压检测复位(LVD Reset) 集成了一个低压保护系统,以便在电源电压发生变化期间保护存储器内容和控制 MCU 系统状态。该系统由上电复位(POR)电路和 LVD 电路组成,LVD 可以配置为不同的复位基准&#x…

ComfyUI 基础教程(十三):ComfyUI-Impact-Pack 面部修复

SD的WebUI 中的面部修复神器 ADetailer,无法在ComfyUI 中使用。那么如何在ComfyUI中进行面部处理呢?ComfyUI 中也有几个面部修复功能,比如ComfyUI Impact Pack(FaceDetailer),以及换脸插件Reactor和IPAdapter。 ComfyUI-Impact-Pack 是一个功能强大的插件,专为 ComfyUI …

Node.js及其生态:分享Node.js的基础知识,包括调试,流,模块等。同时也可以介绍一些流行框架如Express,Koa,NestJS等

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞 I/O 模型,使其轻量又高效。Node.js 的包生态系统(npm)是全球最大的开源库生态系统。 一些基础概念: 调试:你可以使用…