【计算机网络】第 3 课 - 计算机网络体系结构

        欢迎来到博主 Apeiron 的博客,祝您旅程愉快 ! 时止则止,时行则行。动静不失其时,其道光明。


 

目录

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

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

2.1、物理层

2.2、数据链路层

2.3、网路层

2.4、运输层

2.5、应用层

3、计算机网络体系结构中的专业术语

4、总结 


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

        为了使不同体系结构的计算机网络都能互连,国际标准化组织于 1977 年成立了专门机构研究该问题。不久,他们就提出了一个试图使各种计算机在世界范围内互连成网的标准框架,也就是著名的 “开放系统互连参考模型”,简称为 OSI(Open Systems Interconnection)

        到了 20 世纪 90 年代初期,虽然整套的 OSI 国际标准都已经制订出来了,但这时因特网已抢先在全世界覆盖了相当大的范围。因特网从 1983 年开始使用 TCP/IP 协议族,并逐步演变成 TCP/IP 参考模型。

         在过去制订标准的组织中往往以专家、学者为主。但现在,许多公司都纷纷挤进各种各样的标准化组织,使得技术标准有着浓厚的商业气息。一个新标准的出现,有时不一定反映出其技术水平是最先进的,而是往往有着一定的市场背景。从这种意义上说,能够占领市场的就是标准。

OSI 标准失败的原因可归纳为:

①  OSI 的专家们缺乏实际经验,它们在完成 OSI 标准时没有商业驱动力

②  OSI 的协议实现起来过分复杂,而且运行效率很低

③  OSI 标准的制订周期太长,因而使得按 OSI 标准生产的设备无法及时进入市场 

④  OSI 的层次划分也不太合理,有些功能在多个层次中重复出现

        TCP/IP 体系结构的网络接口层并没有规定什么具体的内容,这样做的目的是 可以互连全世界各种不同的网络接口,例如有线的以太网接口,无线局域网的 WIFI 接口,而不限定使用一种或几种网络接口。因此,本质上 TCP/IP 体系结构只有上面的三层。

        IP 协议是 TCP/IP 体系结构网际层的核心协议。TCP 和 UDP 是 TCP/IP 体系结构运输层的两个重要协议。 TCP/IP 体系结构的应用层包含了大量的应用层协议,例如 HTTP,SMTP,DNS,RTP 等。

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

        由于 TCP/IP 体系结构为了将不同的网络接口进行互连,因此它的网络接口层并没有规定什么具体的内容。然而,这对于我们学习计算机网络的完整体系而言,就会缺少一部分内容,即缺少的是物理层内容。因此,在学习计算机网络原理时往往采取折中的办法,也就是综合 OSI 和 TCP/IP 的优点,采用一种 五层协议的原理体系结构

        可以看出,五层协议的原理体系结构,将 TCP/IP 体系结构的网络接口层又重新划分为了物理层和数据链路层。这样,更有利于我们对计算机网络原理的学习。


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

        “分层” 可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。

        下面,我们按照由简单到复杂的顺序,来看看实现计算机网络要面临哪些主要的问题,以及如何将这些问题划分到相应的层次,层层处理。


2.1、物理层

物理层(Physical Layer):这是最底层的层次,负责定义传输介质和数据传输的物理规范,例如电缆、光纤、无线信号等。 

        首先,来看最简单的情况,两台计算机通过一条网线连接起来。

         对于这种最简单的情况,我们需要考虑以下问题:

①  采用怎样的传输媒体(介质)

        例如,这是我们常见的双绞线网线。 

②  采用怎样的物理接口

  

        例如,这是 RJ45 以太网接口。 

③  使用怎样的信号表示比特 0 和 1

        例如,使用这样的方波信号,低电平表示 0,高电平表示 1。(这里,我们需要说明两点,① 严格来说,传输媒体并不属于物理层,它并不包含在体系结构之中。② 计算机网络中传输的信号,并不是我们举例的方波信号,我们之所以举例成方波信号,是为了让初学者容易理解。)

        解决了这些问题,两台计算机就可以通过信号来传输比特 0 或 1 了。我们可以将这些问题划规到 物理层。 


2.2、数据链路层

数据链路层(Data Link Layer):在物理层之上,负责数据的分帧、差错检测和纠正,以确保数据在物理层的可靠传输。

        实用的计算机网络,一般都由多台主机构成。

        假设,我们已经解决了物理层的问题,也就是说,主机间可以发送信号来传输比特 0 或 1 了。我们来看看,在这样一个 总线型的网络 上,还面临什么需要解决的问题呢?

        如图所示,主机 A 要给主机 C 发送数据,但是,表示数据的信号会通过总线传播到总线上的每一个主机。那么问题来了,主机 C 如何知道该数据是发送给自己的,自己要接受?而主机 B,D,E 又如何知道该数据并不是发送给自己的,自己应该拒绝呢?这就很自然地引出了 如何标识网络中各主机的问题(主机编址问题,例如 MAC 地址)。 

        主机在发送数据时,应该给数据附加上目的地址,当其他主机收到之后,根据目的地址和自身地址,来决定是否接受数据。这就又引出了一个问题:目的主机从信号所表示的一连串比特流中区分出地址和数据,也就是需要解决分组的封装格式问题

        另外,对于总线型网络,还会出现下面这种典型的问题。例如,在某个时刻总线是空闲的,也就是没有主机使用总线来发送数据。片刻之后,主机 B 和 D 同时向总线发送数据,这必然会造成信号碰撞。因此,如何协调各主机争用总线,也是必须要解决的问题

        需要说明的是,这种总线型的网络早已淘汰,现在常用的是使用 以太网交换机 将多台主机互相形成的 交换式以太网

        那么,以太网交换机是如何实现的呢?我们将这些问题,全部划归到 数据链路层。到这里,大家可能会发现,只要解决了物理层和数据链路层各自所面临的问题,我们就可以实现分组在一个网络上传输了


2.3、网路层

网络层(Network Layer):这一层负责网络中不同设备之间的寻址和路由,以确定数据在网络中的最佳路径。

        我们每天都会使用的因特网,是由非常多的网络和路由器互连起来的,仅解决物理层和数据链路层还是不能正常工作。我们来看下面这个例子,这是由 3 个路由器,4 个网络互连起来的小型互连网,我们可以把它看作是因特网中很小的一部分。 

        在之前的例子中,只有一个网络,我们不需要对网络进行标识。而在本例中,有多个网络,很显然,我们面临着 如何标识 “各网络” 以及 “网络中各主机” 的问题(网络和主机共同编址问题,例如 IP 地址)

        例如,这是网络 N1 中各设备的 IP 地址。该类 IP 地址的前三个十进制数用来标识网络,第四个十进制数用来标识主机。

        我们在来看另外一个问题,源主机与目的主机之间的传输路径往往不止一条,分组从源主机到目的主机可走不同的路径。这样就引出了路由器如何转发分组的问题以及如何进行路由选择的问题 。我们将这些问题全部划分到 网络层


2.4、运输层

传输层(Transport  Layer):传输层提供端到端的通信,负责将数据分割为较小的数据段,并提供流量控制和可靠性保证,例如通过TCP(传输控制协议)实现的可靠数据传输。

        如果我们解决了物理层、数据链路层以及网络层各自的问题,则可以实现分组在网络间传输的问题。但是,对于计算机网络应用而言,这仍然不够。例如,假设这台主机中运行着两个与网络通信相关的应用进程,一个是浏览器进程,另一个是 QQ 进程。这台服务器中运行着与网络通信相关的服务器进程。

        某个时刻,主机收到了来自服务器的分组,那么,这些分组应该交给浏览器进程处理呢,还是应该交给 QQ 进程处理呢?这就引出了我们如何标识与网络通信相关的应用进程,进而解决进程之间基于网络的通信问题。

        另外,如果某个分组在传输过程中出现了误码,或者由于路由器繁忙,导致路由器丢弃分组,这应该如何处理呢?我们将这些问题都全部划归到 运输层


2.5、应用层

        我们已经解决了物理层,数据链路层,网络层和传输层各自的问题,则可以实现进程之间基于网络的通信。在此基础上,只需制定各种应用层协议,并按协议标准编写相应的应用程序,通过应用进程间的交互来完成特定的网络应用。例如,支持万维网应用的 HTTP 协议,支持电子邮件的 SMTP 协议,支持文件传送的 FTP 协议,我们将这些问题全部划分到应用层。

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


3、计算机网络体系结构中的专业术语

(1)实体:任何可发送或接收信息的硬件或软件进程

(2)对等实体:收发双方相同层次中的实体

(3)协议的三要素

①  语法:定义所交换信息的格式 

②  语义:定义收发双方所要完成的操作

        例如,主机要访问远程 Web 服务器,他会构建一个 HTTP 的 GET 请求报文,然后将其发送给 Web 服务器。

        Web 服务器收到该报文并进行解析,知道这是一个 HTTP 的 GET 请求报文,于是就在自身内部查找所请求的内容,并将所找到的内容封装在一个 HTTP 响应报文中发回给主机。

        主机收到 HTTP 响应报文后,对其进行解析,取出所请求的内容,并由浏览器解析显示。这个例子就可以体现出通信双方收到分组后完成怎么样的操作。这是 HTTP 协议的语义所定义的。

③  同步:定义收发双方的时序关系 

        请注意,这里的同步并不是指时钟频率同步。例如,这是 TCP 采用 “三报文握手” 建立连接的过程。要想进行运输层 TCP 实体间的逻辑通信,首先,必须建立连接。从连接建立的过程就可以看出 TCP 客户端和 TCP 服务器之间的时序关系,以及各自的状态转换。只有双方建立连接后,才能进行 TCP 数据传输。这个例子可以充分体现计算机网络协议三要素中的同步。 

 

(4)服务

        在协议的控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下面一层所提供的服务。协议是 “水平的”,服务是 “垂直的” 。

        实体看得见相邻下层所提供的服务,但并不知道实现该服务的具体协议。也就是说,下面的协议对上面的实体是 “透明” 的。 

(5)服务访问点

        在同一系统中 相邻两层的实体交换信息的逻辑接口,用于区分不同的服务类型。

①  数据链路层的服务访问点为帧的 “类型” 字段

②  网络层的服务访问点为 IP 数据报首部中的 “协议字段” 。

③  运输层的服务访问点为 “端口号” 。

(6)服务原语 

        上层使用下层所提供的服务必须通过与下层 交换一些命令,这些命令称为服务原语。

(7)数据单元

①  协议数据单元 PDU

        在计算机网络体系结构中,对通信双方所交互的数据包有专门的术语。我们把 对等层次之间传送的数据包 称为该层的协议数据单元。

②  服务数据单元 SDU

        同一系统内层与层之间交换的数据包 称为服务数据单元。

③  多个 SDU 可以合成为一个 PDU;一个 SDU 也可划分为几个 PDU

 


4、总结 

        本期的分享总结就到这里了,如果有疑问的小伙伴儿,我们在评论区交流嗷~~~,笔者必回,我们下期再见啦 !!!

博客中难免存在疏漏和错误之处,皆归因于作者水平有限,诚请各位读者不吝指正 !

<计算机网络> 专栏系列持续更新,欢迎订阅关注 !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/11859.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sentinel nacos spring cloud 持久化配置---分布式/微服务流量控制

文章目录 sentinel控制台安装目标实现代码地址版本说明maven spring-cloud-starter-alibaba-sentinel依赖yml文件Nacos业务规则配置看源码配置规则SentinelProperties 总配置加载DataSourcePropertiesConfiguration 配置标准的nacos配置注册具体sentinel配置 外传 sentinel控制…

Chrome 115 有哪些值得关注的新特性?

今天带大家一起来了解一下 Chrome 115 值得关注的新特性。 滚动动画 用滚动驱动的动画是网站上非常常见的用户体验模式&#xff0c;比如当页面向前或向后滚动时&#xff0c;对应的动画也会向前或向后移动。 比如下面图中这种比较常见的&#xff0c;页面顶部的进度条随着滚动…

华为OD机试真题 Java 实现【数字涂色】【2022Q4 100分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#xff09;》。 刷的越多&…

Flowable-UI

title: Flowable-UI date: 2023-7-23 12:19:20 tags: - Flowable Flowable-UI 安装 手把手教大家画了这样一个流程图&#xff0c;虽然说它不是特别好用&#xff0c;但是也不是不能用&#xff0c;也能用。好了&#xff0c;那么接下来的话&#xff0c;我们这个就先告一个段落&…

客户方数据库服务器CPU负载高优化案例

客户方数据库服务器CPU负载高优化案例 背景 上周线上服务出现一个问题&#xff0c;打开某个页面&#xff0c;会导致其它接口请求响应超时&#xff0c;排查后发现数据库响应超400s&#xff0c;之前1s就可查到数据。 具体原因是有个大屏统计页面&#xff0c;会实时查看各业务服…

Netty学习(三)

文章目录 三. Netty 进阶1. 粘包与半包1.1 粘包现象服务端代码客户端代码 1.2 半包现象服务端代码客户端代码 1.3 现象分析粘包半包缘由滑动窗口MSS 限制Nagle 算法 1.4 解决方案方法1&#xff0c;短链接方法2&#xff0c;固定长度方法3&#xff0c;固定分隔符方法4&#xff0c…

QT之QMediaPlayer使用播放音频

简介 使用QMediaPlayer播放MP3格式音乐。 播放相关状态流程简述 操作&#xff1a;m_pMediaPlayer->setMedia(); &#xff08;初始化加载&#xff0c;为play()&#xff09; 状态&#xff1a; __onMediaChanged QUrl(“qrc:/sounds/Sounds/Big.mp3”) __onMediaStatusChang…

【javaSE】初识Java

目录 Java是什么 Java语言发展简史 初识Java的main方法 运行Java程序 JDK、JRE、JVM之间的关系 Java中的标识符 Java是什么 Java是一种优秀的程序设计语言&#xff0c;它具有令人赏心悦目的语法和易于理解的语义. 不仅如此&#xff0c;Java还是一个有一系列计算机软件和规…

Psim 2022仿真软件的安装--Psim电力仿真实战教程

文章目录 Psim 2022 仿真软件安装及使用教程软件介绍1.下载psim 2022安装软件&#xff0c;有需要的亲请联系作者。2.点击安装文件3.点击进行安装&#xff1a;4.安装完成&#xff0c;打开软件&#xff0c;开始仿真5.仿真模型介绍5.1.单相全控整流电路仿真5.2 三相PFC可控整流电路…

红黑树深入剖析【C++】

目录 一、红黑树概念 二、红黑树节点结构设计 三、插入操作 处理情况1 处理情况2 处理情况3 插入总结&#xff1a; 四、插入操作源码 五、红黑树验证 一、红黑树概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0…

Selenium+Java环境搭建(测试系列6)

目录 前言&#xff1a; 1.浏览器 1.1下载Chrome浏览器 1.2查看Chrome浏览器版本 1.3下载Chrome浏览器的驱动 2.配置系统环境变量path 3.验证是否成功 4.出现的问题 结束语&#xff1a; 前言&#xff1a; 这节中小编给大家讲解一下有关于Selenium Java环境的搭建&…

Docker 的数据管理 与 Dockerfile

目录 Docker 的数据管理容器互联&#xff08;使用centos镜像&#xff09;Docker 镜像的创建1&#xff0e;基于现有镜像创建2&#xff0e;基于本地模板创建3&#xff0e;基于Dockerfile 创建镜像加载原理 Dockerfile 操作常用的指令&#xff08;1&#xff09;FROM 镜像&#xff…

docker—springboot服务通信

文章目录 docker—springboot服务通信一、方式1、host 二、坑点末、参考资料 docker—springboot服务通信 一、方式 1、host 步骤&#xff1a; host文件增加域名解析&#xff1a; 127.0.0.1 rabbitmqapplication.yml&#xff1a; application.yml中&#xff0c;连接方式使用…

[STL]list使用介绍

[STL]list使用 注&#xff1a;本文测试环境是visual studio2019。 文章目录 [STL]list使用1. list介绍2. 构造函数3. 迭代器相关函数begin函数和end函数rbegin函数和rend函数 4. 容量相关函数empty函数size函数 5. 数据修改函数push_back函数和pop_back函数push_front函数和pop…

Python MySQL

pymysql 除了使用图形化工具以外&#xff0c;我们也可以使用编程语言来执行SQL从而操作数据库。 在Python中&#xff0c;使用第三方库&#xff1a;pymysql 来完成对MySQL数据库的操作。 安装&#xff1a; pip install pymysql 或在pycharm中搜索pymysql插件安装 创建到MySQ…

C++(14):重载运算与类型转换

当运算符被用于类类型的对象时&#xff0c;允许我们为其指定新的含义&#xff1b;同时&#xff0c;也能自定义类类型之间的转换规则。和内置类型的转换一样&#xff0c;类类型转换隐式地将一种类型的对象转换成另一种我们所需类型的对象。 当运算符作用于类类型的运算对象时&a…

手机图片转pdf?两种方法介绍

手机图片转pdf&#xff1f;如今&#xff0c;随着生活的数字化&#xff0c;我们的手机中储存了大量的照片。但是&#xff0c;如果需要将这些照片转换成PDF格式&#xff0c;该怎么办呢&#xff1f;下面&#xff0c;小编就给大家介绍三种方法来实现这一目标。 第一种方法&#xff…

12页线性代数图解教程,github星标9.1k,适合小白

线性代数“困难户”注意&#xff0c;今天我给大家分享一个超适合小白的线性代数学习笔记&#xff0c;只有12页纸&#xff0c;一半都是图解&#xff0c;不用担心看不懂。 这份笔记名为《线性代数的艺术》&#xff0c;是日本学者Kenji Hiranabe基于Gilbert Strang教授的《每个人…

JS常用操作数组的方法整理

JavaScript提供了许多用于操作数组的方法。以下是其中一些常见的方法&#xff1a; 1. push() : 将一个或多个元素添加到数组的末尾&#xff0c;并返回新数组的长度。 2. pop() : 移除并返回数组的最后一个元素。 3. unshift() : 将一个或多个元素添加到数组的开头&#xff0…

Lambda表达式常见的Local variable must be final or effectively final原因及解决办法

目录 Local variable must be final or effectively final错误原因 解决办法按照要求定义为final&#xff08;不符合实情&#xff0c;很多时候是查库获取的变量值&#xff09;使用原子类存储变量&#xff0c;保证一致性AtomicReference常用原子类 其它 Local variable must be …