【计算机网络】窥探计网全貌:说说计算机网络体系结构?

标签难度考察频率
综合题⭐⭐⭐60%

这个问题在计算机网络知识体系中是一个比较重要的问题,只有完整地了解计算机网络的体系结构才能清晰地认识网络的运行原理。

在回答这个问题时,笔者认为有几个比较重要的点:

  • 首先一定要分清楚前置条件,明确面试官问的是 OSI 模型还是 TCP/IP 模型。
  • 注意各层的顺序一定要是对的。
  • 比较清晰地回答出各层级的功能以及之间的协作关系。
  • 最好回答出各层级中常见的协议或者特点。

系统性学习过计算机网络的同学应该都能找到这个问题的一个非常明显的“坑”在哪,那就是在讨论计算机网络体系结构时,我们往往会根据模型不同给出不同的分类情况,比如 OSI 七层模型、TCP/IP 四层模型等。

笔者就曾经在这个地方吃过亏,当时并不是很清楚这几种分类,在被问到网络分层问题时一律回答的都是五层,在后面学习了之后才发现这个重要的问题。

该问题其实还可以表示成以下几种情况:

  1. OSI 七层模型是什么?都有哪七层?各层的功能是什么?
  2. TCP/IP 五层模型是什么?都有哪七层?各层的功能是什么?
  3. 五层体系结构是什么?都有哪七层?各层的功能是什么?
  4. OSI 模型有几层?TCP/IP 模型有几层?
  5. 了解每一层对应的协议吗?
  6. ……

这个问题的变式还有很多,但是只要掌握了整个问题的核心内容,无论怎么变化回答的逻辑是不会变的。

下面笔者将从 TCP/IP 五层模型 出发,详细讲解各层级的功能、不同模型中各层级的区别以及在面试时应该如何回答这个问题。

为什么要分层?

在正式学习各层级之间的功能之前,我们先来搞明白这样一个问题,那就是为什么要分层?为什么不能把所有的功能集中到一起,这样不是更简单省事吗。

其实不是这样的,把所有的功能集中到一起在初期开发的过程中会给我们一种简单省事的错觉,但是在后期工程变大以及维护时就会发现其中的弊端,内容过多导致在出现问题时不好修改,出现牵一发而动全身的情况。

简化系统设计

由于计算机网络是一个极为复杂的系统,设计到众多的硬件、软件和通信协议。将其划分为若干个层次,每个层次专注于特定的功能,使得网络系统的设计、实现和维护变得更加简单和清晰。例如,在互联网中,我们不需要在设计应用程序时考虑底层的物理传输细节,只需要关注应用层的功能实现,底层的工作由其他层次负责。这样,不同层次可以独立进行设计和改进,降低了整个系统的复杂度。

实现模块化和分工协作

分层结构使得网络系统可以按照功能模块进行划分,不同的层次由不同的专业团队或人员负责开发和维护。每个层次都有明确的接口和功能定义,层与层之间通过标准的接口进行通信。这就好比汽车制造,不同的工厂分别负责生产发动机、底盘、车身等部件,然后通过标准的接口进行组装。例如,网络设备制造商可以专注于开发物理层和数据链路层的设备,如网卡、交换机等;软件开发商则可以专注于应用层和传输层的软件开发,如浏览器、电子邮件客户端等。这种分工协作提高了开发效率和系统的可维护性。

提高系统的可拓展性

在计算机行业中,我们常常会提到这样一句话:“计算机科学领域的任何问题,都是可以通过增加一个间接的中间层来解决的。

随着技术的发展和用户需求的增加,网络系统需要不断进行扩展和升级。分层结构使得系统的扩展变得更加容易,只需要在相应的层次上进行修改或添加新的功能,而不会影响到其他层次的正常运行。例如,当出现新的网络应用需求时,只需要在应用层开发新的应用程序,而不需要对底层的网络结构进行大规模的改动。同样,当网络传输技术发生变化时,只需要更新物理层和数据链路层的设备和协议,上层的应用程序可以继续正常运行。

促进标准化

分层结构为网络协议的标准化提供了良好的基础。每个层次都有明确的功能和接口定义,不同的厂商可以根据这些标准来开发自己的产品,从而保证了不同厂商的产品之间的兼容性和互操作性。例如,国际标准化组织(ISO)制定的开放系统互连(OSI)参考模型,为计算机网络的标准化提供了一个通用的框架。不同的厂商按照这个标准来开发网络设备和软件,使得不同的网络系统可以相互连接和通信。

几种分类方式

计算机网络体系结构通过复杂的网络通信分解成不同的层次,来标准化交互的过程。常见的模型包括 OSI 七层模型TCP/IP 四层模型五层体系结构

  • OSI 是理论上的网络通信模型,这模型很牛逼。但是现在基本是存在教科书的啦,学习网络的同学都是知道有这个模型,实际情况使用很少的。
  • TCP/IP 是实际应用层面上的网络通信模型,在日常工作中接触最多的是上两层,偶尔会去触碰网络层。网络接口层不是软件开发工程师的工作范围。当然如果是一些专门的网络安全部门,网管等岗位,下面几层就是非常熟悉的。
  • 五层结构是为了方便理解和记忆。

应用层

最上层的,也是我们能直接接触到的就是应用层(Application Layer)

应用层时计算机网络与用户交互的接口或界面,直接向用户提供服务。

我们的电脑或手机使用的应用软件都是在应用层实现的。那么,当两个不同的设备的应用需要通信的时候,应用九八应用数据传输给下一层,也就是传输层。

应用层只需要专注于为用户提供应用功能,比如 HTTP、FTP、Telnet、DNS、SMTP等。

所以很明了,应用层解决的问题就是如何为用户提供服务,以及提供高效、可靠、满意的服务。应用层是不用去关心数据是如何传输的,就类似于我们寄快递的时候,只需要把包裹交给快递员,由他负责运输快递,我们不需要关心快递是如何被运输的。

而且应用层是工作在操作系统中的用户态,传输层及以下则工作在内核态。

总结下应用层是为用户提供服务接口或者界面,同时要解决服务的高效、可靠、满意。

在 OSI 七层模型中,应用层和传输层之间还会有下面两个层级,即表示层和会话层。

表示层

表示层要解决的问题就是确保一个系统发送的信息可以被另一个系统的应用层读取。它负责的是数据的转换、压缩和加密

例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。

会话层

管理用户的会话,控制网络上两节点间的会话和数据交换的管理。它负责建立、维护和终止会话

通过传输层(端口号:传输端口接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是 IP 也可以是 MAC 或者是主机名)。

传输层(段)

应用层的数据包会传给传输层(Transport Layer)是为了给应用层提供网络支持的。

负责端到端的通信,是面向网络通信的第三层和面向信息处理的高三层之间的中间一层,起到桥梁作用。很明显了,传输层要解决的问题就是端到端的传输问题

在传输层会有两个传输协议,分别是 TCP 和 UDP。

TCP 的全称为传输控制协议(Transmission Control Protocol),大部分应用使用的正是 TCP 传输层协议,比如 HTTP 应用层协议。TCP 比 UDP 多了很多特性,比如流量控制、超时重传、拥塞控制等,这些都是为了保证数据包能可靠地传输给对方。

UDP 相对来说就很简单,简单到只负责发送数据包,不保证数据包是否能抵达对方,但它实时性相对更好,传输效率也高。当然,UDP 也可以实现可靠传输,把TCP的特性在应用层上实现就可以,不过要实现一个商用的可靠 UDP 传输协议,也不是一件简单的事情。

应用需要传输的数据可能会非常大,如果直接传输就不好控制,因此当传输层的数据包大小超过 MSS(TCP最大报文段长度),就要将数据包分块,这样即使中途有一个分块丢失或损坏了,只需要重新发送这一个分块,而不用重新发送整个数据包。在 TCP 协议中,我们把每个分块称为一个 TCP 段(TCP Segment)。

当设备作为接收方时,传输层则要负责把数据包传给应用,但是一台设备上可能会有很多应用在接收或者传输数据,因此需要用一个编号将应用区分开来,这个编号就是端口。

比如 80 端口通常是 Web 服务器用的,22 端口通常是远程登录服务器用的。而对于浏览器(客户端)中的每个标签栏都是一个独立的进程,操作系统会为这些进程分配临时的端口号

由于传输层的报文中会携带端口号,因此接收方可以识别出该报文是发送给哪个应用。

思考一个问题:网络层不是已经把数据转发到对应的主机了吗,为什么还要需要传输层?

位于两台网络主机间的真正数据通信主体不是这两台主机,而是两台主机中的各种网络应用进程,也就是应用程序。一台主机上有很多应用程序,很多应用程序都在进行网络通信,这时候就必须使用到传输层的知识去解决了。

怎样完成端到端的传输呢?分为两个步骤:

  • 一是虚拟传输连接的建立(此处仍仅针对面向连接的传输层协议);
  • 二是源端用户数据沿着传输连接传送到目的端;

在整个数据传输过程中,传输层服务需要完成以下8个方面的基本功能:传输层寻址、传输连接建立、数据传输、传输连接释放、流量控制、拥塞控制、多路复用和解复用、崩溃恢复

总结下,传输层主要是为了解决端到端(这里的端到端指的是进程到进程)的通信,起到网络通信桥梁作用。

网络层(包)

网络层也被称为中转层,是网络体系结构中非常重要的一层,在技术上又是非常复杂的一层,因为它既要解决不同网络的节点间通信的路由和协议识别问题,又要通过路由选择策略解决网络拥塞问题,尽可能提高网络通信的可靠性。

网络层解决的主要问题是,从A主机把数据运送到B主机是走高速呢、飞机呢、还是火车呢或者是多种混合的方案呢。一句话就是,网络层关注的是如何将分组从源端沿着网络路径传送到目的端(这个端指的是主机不是应用程序)。

为了实现这个目标,网络层必须知道通信子网的拓扑结构,并且在拓扑结构中选择适当的路径。同时网络层还必须谨慎地选择路由路径,以避免发生某些通信线路和路由器负载过重,而其他线路和路由器空闲的情形。

总结下网络层主要是为了解决不同网络之间数据传输和转发问题。

数据链路层(帧)

物理层中也有许多规程或协议,但它们是用来构建物理传输线路、建立物理意义的网络通信,不是用来控制数据传输的。

设计数据链路层的主要解决的问题就是在原始的、有差错的物理传输线路的基础上,采取差错检测、差错控制与流量控制等方法,将有差错的物理线路改进成逻辑上无差错的数据链路,以便向它的上一层(网络层)提供高质量的服务。一句话总结就是控制数据传输

总结下,数据链路层是为了解决数据传输的控制作用

物理层 (比特流)

物理层位于各计算机网络体系结构的最底层,主要负责在物理介质上为数据链路层提供原始比特流传输的物理链接

物理层解决的问题就是数据传输。上面的所有层都是封装数据和管理,物理层是传输数据的唯一出口,所有数据到达物理层都会变成二进制的载波信号。

总结下,物理层就是真正传输数据。

如何回答?

OSI 七层模型

OSI(Open System Interconnection)七层参考模型是一个网络架构模型,有网络标准化组织(ISO)提出,用于描述和标准化计算机网络的功能和过程。这七层从低到高分别是:

  1. 应用层:最靠近用户的层,负责处理待定的应用程序细节。这一层提供了网络服务与用户应用软件之间的接口。例如:Web 浏览器、FTP 客户端和服务器、电子邮件客户端等。
  2. 表示层:确保一个系统发送的信息可以被另一个系统的应用层读取,它负责数据的转换、压缩和加密。例如:确保数据从一种编码格式转换为另一种,如 ASCII 到 EBCDIC。
  3. 会话层:管理用户的会话,控制网络上两节点间的会话和数据交换的管理。它负责建立、维护和终止会话。例如:建立一个会话令牌,以便在网络上的两个节点之间传递。
  4. 传输层:提供端到端的通信服务,保证数据的完整性正确顺序。这一层包括 TCP 和 UDP。
  5. 网络层:负责在多个网络之间进行数据传输,确保数据能够在复杂的网络结构中找到从源到目的地的最佳路径,这层使用的是 IP(Internet Protocol)协议。
  6. 数据链路层:在物理连接中提供可靠的传输,负责建立和维护两个相邻节点的链路。包括帧同步、MAC(媒体访问控制)。
  7. 物理层:负责在物理媒介上实现原始的数据传输,比如电缆、管线和无线信号传输。设计的内容包括电压、接口、针脚、电缆的规格和传输速率。

TCP/IP 四层模型

TCP/IP 四层模型是互联网的核心,定义了一系列协议和标准,确保设备可以可靠地进行数据传输。

  1. 应用层:直接面向用户和应用程序,提供各种网络服务。它包含了用于特定应用的协议和服务,如 HTTP、FTP、SMTP 等。
  2. 传输层:提供端到端的通信服务,确保数据的可靠传输。它负责分段数据、流量控制、错误检测和纠正。常见的传输层协议有 TCP 和 UDP。
  3. 网际层:或者叫网络层,负责在不同网络之间路由数据包,提供逻辑地址(IP 地址)和网络寻址功能,用于处理数据包的分组、转发和路由选择,确保数据可以从源端传输到目的端。
  4. 网络接口层:或者叫链路层,负责奖数字信号在物理通道中准确传输,定义了如何在单一网络链路上传输数据,如何处理数据帧的发送和接受,包括物理地址(MAC 地址)的解析。

五层体系结构

  1. 应用层:作为网络服务和最终用户之间的接口。它提供了一系列供应用程序使用的协议,如 HTTP(网页)、FTP(文件传输)、SMTP(邮件传输)等。使用户的应用程序可以访问网络服务。
  2. 传输层:提供进程到进程的通信管理,这一层确保数据按顺序、无错误地传输。主要协议包括 TCP 和 UDP。
  3. 网络层:负责数据包从源到目的地的传输和路由选择,包括跨越多个网络(即互联网)。它使用逻辑地址(如 IP 地址)来唯一标识设备。路由器是网络层设备。
  4. 数据链路层:确保从一个节点到另一个节点的可靠、有效的数据传输。交换机、网桥是数据链路层设备。
  5. 物理层:电缆、光纤、无线电频谱、网络适配器等。

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

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

相关文章

【前端】【CSS3】基础入门知识

目录 如何学习CSS 1.1什么是CSS​编辑 1.2发展史 1.三种导入方式 1.1、行内样式 1.2、外部样式 1.3、嵌入方式 2.选择器 2.1、基本选择器 (1)元素选择器 (2)类选择器 (3)id选择器:必…

【解决】okhttp的java.lang.IllegalStateException: closed错误

问题 Android 使用OKHttp进行后端通信,后端处理结果,反馈给前端的responseBody中其实有值,但是一直报异常,后来才发现主要是OkHttp请求回调中response.body().string()只能有效调用一次,而我使用了两次: 解…

从硬件设备看Linux

一、介绍 DM3730通过各种连接方式连接了各种设备,输入输出设备根据不同的类型大体可 以分为电源管理、用户输人、显示输出、图像采集、存储以及无线设备等。我们可以将DM 3730与这些设备的数据接口分为总线和单一的数据接口总线。总线的显著特点是单个总线上可以连…

【优选算法】DC-Quicksort-Mysteries:分治-快排的算法之迷

文章目录 1.概念解析2.颜色分类3.排序数组4.数组中的第k个最大元素5.库存管理Ⅲ希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力! 本篇是优选算法之分治-快排,快排可以在更短的时间内完成相同规模数据的排序任务,大大提升了…

浅谈云计算09 | 服务器虚拟化

服务器虚拟化基础 一、虚拟化的定义二、系统虚拟化三、服务器虚拟化的核心要义四、典型实现:探索不同路径五、全虚拟化与半虚拟化六、主流服务器虚拟化技术 一、虚拟化的定义 虚拟化是一种将物理资源抽象为逻辑资源的技术,通过在物理硬件与操作系统、应…

解析OVN架构及其在OpenStack中的集成

引言 随着云计算技术的发展,虚拟化网络成为云平台不可或缺的一部分。为了更好地管理和控制虚拟网络,Open Virtual Network (OVN) 应运而生。作为Open vSwitch (OVS) 的扩展,OVN 提供了对虚拟网络抽象的支持,使得大规模部署和管理…

第三十六章 Spring之假如让你来写MVC——拦截器篇

Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…

CSS 盒模型

盒模型 CSS盒模型是网页布局的核心概念之一,它描述了网页元素的物理结构和元素内容与周围元素之间的关系。根据W3C规范,每个HTML元素都被视为一个矩形盒子,这个盒子由以下四个部分组成: 内容区(Content area&#xff…

JVM:ZGC详解(染色指针,内存管理,算法流程,分代ZGC)

1,ZGC(JDK21之前) ZGC 的核心是一个并发垃圾收集器,所有繁重的工作都在Java 线程继续执行的同时完成。这极大地降低了垃圾收集对应用程序响应时间的影响。 ZGC为了支持太字节(TB)级内存,设计了基…

OpenCV基于均值漂移算法(pyrMeanShiftFiltering)的水彩画特效

1、均值漂移算法原理 pyrMeanShiftFiltering算法结合了均值迁移(Mean Shift)算法和图像金字塔(Image Pyramid)的概念,用于图像分割和平滑处理。以下是该算法的详细原理: 1.1 、均值迁移(Mean …

【数学】概率论与数理统计(五)

文章目录 [toc] 二维随机向量及其分布随机向量离散型随机向量的概率分布律性质示例问题解答 连续型随机向量的概率密度函数随机向量的分布函数性质连续型随机向量均匀分布 边缘分布边缘概率分布律边缘概率密度函数二维正态分布示例问题解答 边缘分布函数 二维随机向量及其分布 …

四 BH1750 光感驱动调试2

之前调通了用户态接口,android 使用还是不方便,要包装jni使用。 这里集成了内核 iio 驱动 ,提供 sys-fs 文件接口 可供固件以及 ANDROID 应用层使用 一 驱动集成 : 1.1 dts 修改 修改文件 : kernel/arch/arm64/boot/dts/rockchip/rp-rk3568.dts 在 i2c5 增加设备,如…

Redis持久化双雄

Redis持久化 Redis 的持久化是指将内存中的数据保存到硬盘,以防止服务器宕机导致数据丢失的机制。 redis 提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。 RDB,简…

工业视觉2-相机选型

工业视觉2-相机选型 一、按芯片类型二、按传感器结构特征三、按扫描方式四、按分辨率大小五、按输出信号六、按输出色彩接口类型 这张图片对工业相机的分类方式进行了总结,具体如下: 一、按芯片类型 CCD相机:采用电荷耦合器件(CC…

数字证书管理服务

阿里云数字证书管理服务(Aliyun Certificate Management Service, ACM)是一种云端服务,专门用于帮助企业管理和颁发数字证书。数字证书是网络安全中的重要组成部分,它可以确保通信的安全性、身份认证以及数据的完整性。通过阿里云…

《跟我学Spring Boot开发》系列文章索引❤(2025.01.09更新)

章节文章名备注第1节Spring Boot(1)基于Eclipse搭建Spring Boot开发环境环境搭建第2节Spring Boot(2)解决Maven下载依赖缓慢的问题给火车头提提速第3节Spring Boot(3)教你手工搭建Spring Boot项目纯手工玩法…

Zookeeper概览

个人博客地址:Zookeeper概览 | 一张假钞的真实世界 设计目标 简单的:方便使用以实现复杂的业务应用。复制式的:跟Zookeeper协调的分布式进程一样,它也是在一组服务器上复制的。集群的每个节点间互相知道。它们维护一个状态数据在…

播放音频文件同步音频文本

播放音频同步音频文本 对应单个文本高亮显示 使用audio音频文件对应音频文本资源 音频文本内容(Json) [{"end": 4875,"index": 0,"speaker": 0,"start": 30,"text": "70号二啊,","tex…

React中ElementFiber对象、WorkInProgress双缓存、ReconcileRenderCommit、第一次挂载过程详解

基础概念 Element对象与Fiber对象 Element对象与Fiber对象 Element 对象 定义 React 的 Element 对象是一个描述用户界面(UI)的普通 JavaScript 对象,通常由 React.createElement 或 JSX 语法生成。 作用 它是 React 应用中的一种描述 …

【airtest】自动化入门教程Poco元素定位

1. 前言 本文将详细讲解Poco控件定位的各种方式,利用这些方法可以帮助我们编写出目标控件的定位脚本。我们在IDE录制的poco脚本,常见的都是类似 poco(“star_single”).click()这样的脚本,其中 poco(“star_single”) 这块就属于Poco控件定位…