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

计算机网络:概述 --- 体系结构

目录

一.   体系结构总览

1.1   OSI七层协议体系结构

1.2   TCP/IP四层(或五层)模型结构

 二.   数据传输过程

2.1   同网段传输

2.2   跨网段传输

三.   体系结构相关概念

3.1   实体

3.2   协议

3.3   服务


这里我们专门来讲一下计算机网络中的体系结构。其实我们之前在Linux系列的《网络基础入门》中已经略微提及了一下(点此查看),今天在这里着重讲一下吧。这也算是比较重要的一节了,因为基本的框架都是基于这个模型构建的。所以仔细来学习一下吧!!!

一.   体系结构总览

1.1   OSI七层协议体系结构

计算机网络是一个非常复杂的系统。也由此产生了不同的网络体系结构,而为了让不同的网络体系结构的计算机网络都能互联,国际标准化组织 ISO 于 1977 年成立了专门机构的开放系统互联基本参考模型 OSI/RM,简称为 OSI

开放:非独家垄断的。

系统:在现实的系统中与互联有关的各部分。

 OSI模型是一个七层协议的体系结构。他是法律上的国际标准。虽然在20世纪80年代,很多公司都表示支持OSI,但是到了20世纪90年代初期,由于基于 TCP/IP 的互联网已经在全球相当大的范围成功运行了。所以现在很多人认可的是TCP/IP四层模型。

 • OSI七层模型 是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;

• 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚, 理论也比较完整。通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;

OSI(Open Systems Interconnection)七层模型每一层具有特定的功能和职责。下面是对OSI七层模型各层的详细解释:

  • 物理层(Physical Layer):物理层是最底层的一层,它负责传输数据的物理介质,如电缆、光纤等。物理层的主要任务是转换比特流(bits)为信号,并控制传输介质的物理连接。
  • 数据链路层(Data Link Layer):数据链路层负责将物理层传输的原始数据流转换为帧(Frame),并提供可靠的点对点数据传输。它在通信实体之间建立了逻辑连接,并通过差错检测和纠正机制来保证数据的可靠性。
  • 网络层(Network Layer):网络层通过IP(Internet Protocol)地址识别不同主机和网络之间的路径选择,以实现数据包的路由和转发。它负责将数据分割为数据包,并通过寻址、路由和流量控制等机制来确保数据的正确传输。
  • 传输层(Transport Layer):传输层负责提供端到端的可靠、无差错的数据传输服务。它通过协议(如TCP、UDP)和端口号来实现进程之间的通信,并提供流量控制、拥塞控制和错误恢复等功能。
  • 会话层(Session Layer):会话层为网络中两个应用程序之间建立和维护通信会话,并管理会话的控制和同步。它提供了会话的建立、维护和终止,以及数据传输的同步点标记和恢复机制。
  • 表示层(Presentation Layer):表示层负责数据的格式化和表示,确保不同系统之间的数据能够正确解释和理解。它处理数据的加密、压缩和转换等操作,以便于应用层的交互和共享。
  • 应用层(Application Layer):应用层是最高层也是最接近用户的一层,它提供了用户与网络服务的接口。应用层包含了各种网络应用和协议,如HTTP、FTP、SMTP等,用于实现特定的网络功能和服务。

1.2   TCP/IP四层(或五层)模型结构

其实在网络角度,OSI 定的协议 7 层模型其实非常完善,但是在实际操作的过程中,会话层、表示层是不可能接入到操作系统中的,所以在工程实践中,最终落地的是 5 层协议(物理层我们考虑的比较少,我们只考虑软件相关的内容. 因此很多时候我们直接称为TCP/IP 四层模型)。 

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

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

该模型去掉了OSI七层模型中的表示层、会话层以及物理层。

  

一般而言

• 对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;

• 对于一台路由器, 它实现了从网络层到物理层;

• 对于一台交换机, 它实现了从数据链路层到物理层;

• 对于集线器, 它只实现了物理层;

 所以可以知道,在模型中越在高层的一般会兼容下层的功能。

 二.   数据传输过程

2.1   同网段传输

网络传输流程如下:

用户在主机1应用层发送消息,不能直接传递到对方主机2应用层,而是往下层经过传输层、网络层、数据链路层,在经过每层时,会在数据前方添加对应层的报头,这个过程叫封装

再通过局域网发送给对方,对方拿到有多层报头修饰的数据时,由于各主机相同层报头属性相同,那么数据会在对方主机上向上层经过数据链路层、网络层、传输层,在经过每层时,会取下对应的报头,这个过程叫做解包与分用。由此对方就拿到了用户发送的数据。

下面来明确一下概念:

  • 报头部分,就是对应协议层的结构体字段,我们一般叫做报头
  • 除了报头,剩下的叫做有效载荷
  • 故,报文 = 报头 + 有效载荷

然后,我们在明确一下不同层的完整报文的叫法:

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).
  • 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理.

那么不同层对应的协议:

 

2.2   跨网段传输

上述是同一个网段(以太网)内传输,那么如果两台主机分别位于不同的网段呢?

跨网段的主机的数据传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器

根据封装与解包流程:

三.   体系结构相关概念

3.1   实体

我们首先来看实体,实体是指任何可发送或接收信息的硬件或软件进程。例如这是通信双方的五层原理体系结构,我们在他们的各层中用标有字母的小方格来表示实体。

有了实体的概念,那么对等实体就是指通信双方相同层次中的实体

例如,A与F就是对等实体。

3.2   协议

介绍完实体,我们再来介绍协议,协议是控制两个对等实体进行逻辑通信的规则的集合

在网络中,为了确保数据传输的稳定性、高效性,实现互联互通,也定义了属于网络的协议-----网络协议。那为什么要存在网络协议呢?以及网络协议解决了什么问题?

我们可以看到,随着网络的发展,客观事实是主机之间距离越来越远了,这就产生了问题:

  • 如何使用数据的问题
  • 可靠性问题
  • 主机定位问题
  • 数据包局域网转发的问题

那我们就需要一种解决方法来解决这些问题。即我们的网络协议,也就是说,网络协议是一种解决方案。

在实际生活中,网络协议是按层划分的。为什么呢?是因为这样层与层之间是松耦合的,方便维护与随时替换。

3.3   服务

我们再来介绍一下服务:在协议的控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务。

每个层次在实现本层功能之前,本层协议还需要使用下面一层所提供的服务:

很明显,协议是水平的,而服务是垂直的。需要特别注意的是,实体看得见下层所提供的服务,但并不知道实现该服务的具体协议。换句话说,下层的协议对上层的实体是透明的,这就好比我们肯定看得见电脑为我们提供的各种服务,但我们只是享受这些服务,而没有必要弄懂电脑的工作原理。


总结:

好了,到这里今天的知识就讲完了,大家有错误一点要在评论指出,我怕我一人搁这瞎bb,没人告诉我错误就寄了。

祝大家越来越好,不用关注我(疯狂暗示)

相关文章:

计算机网络:概述 --- 体系结构

目录 一. 体系结构总览 1.1 OSI七层协议体系结构 1.2 TCP/IP四层(或五层)模型结构 二. 数据传输过程 2.1 同网段传输 2.2 跨网段传输 三. 体系结构相关概念 3.1 实体 3.2 协议 3.3 服务 这里我们专门来讲一下计算机网络中的体系结构。其实我们之前…...

DEPLOT: One-shot visual language reasoning by plot-to-table translation论文阅读

文章链接:https://arxiv.org/abs/2308.01979http://arxiv.org/abs/2212.10505https://arxiv.org/abs/2308.01979 源码链接:https://github.com/cse-ai-lab/RealCQA 启发:two-stage方法可能是未来主要研究方向,能够增强模型可解释…...

从 HDFS 迁移到 MinIO 企业对象存储

云原生、面向 Kubernetes 、基于微服务的架构推动了对 MinIO 等网络存储的需求。在云原生环境中,对象存储的优势很多 - 它允许独立于存储硬件对计算硬件进行弹性扩展。它使应用程序无状态,因为状态是通过网络存储的,并且通过降低操作复杂性&a…...

Rust 常见问题汇总

问题1: cargo build 一直提示Blocking waiting for file lock on package cache。 在 cargo.toml 文件中添加了依赖之后,运行 cargo build 命令时,如果卡在 blocking waiting for file lock on package cache lock 这里, 后来发…...

java泛型类与泛型方法

Java泛型类和泛型方法是Java泛型编程中的重要组成部分。它们允许开发者编写类型安全且高度复用的代码。下面详细介绍泛型类和泛型方法的概念、用法和示例。 泛型类 泛型类是在类定义中使用类型参数的类,可以指定具体的类型实例化该类。这样可以确保类型安全&#…...

Android String资源文件中,空格、换行以及特殊字符如何表示

空格&#xff1a; 例&#xff1a;<string name"test">test test</string> 换行&#xff1a;\n 例&#xff1a;<string name"test">test \n test</string> tab&#xff1a;\t …...

CUDA及GPU学习资源汇总

CUDA C Programming Guide 的中文翻译版GPU中的SM和warp的关系推荐几个不错的CUDA入门教程CUDA编程入门极简教程...

uniapp vue3 梯形选项卡组件

实现的效果图&#xff1a; 切换选项卡显示不同的内容&#xff0c;把这个选项卡做成了一个组件&#xff0c;需要的自取。 // 组件名为 trapezoidalTab <template> <view class"pd24"><view class"nav"><!-- 左侧 --><view cla…...

如何在微信小程序中实现WebSocket连接

微信小程序作为一种全新的应用形态&#xff0c;凭借其便捷性、易用性受到了广大用户的喜爱。在实际开发过程中&#xff0c;实时通信功能是很多小程序必备的需求。WebSocket作为一种在单个TCP连接上进行全双工通信的协议&#xff0c;能够实现客户端与服务器之间的实时通信。本文…...

二级等保测评中安全物理环境的重要性及高危项分析

当今数字化时代&#xff0c;信息安全至关重要。网络安全等级保护测评是确保信息系统安全稳定运行的重要手段之一&#xff0c;其中二级等保测评对于许多企业和组织来说是必须要达到的安全标准。 而安全物理环境作为等保测评的重要组成部分&#xff0c;其重要性不容忽视。 安全物…...

C++11——lambda

lambda lambda的介绍lambda的使用lambda的细节->捕捉列表 lambda的介绍 lambda是匿名函数&#xff0c;再适合的场景去使用可以提高代码的可读性。 场景&#xff1a; 假设有一个Goods类需要进行按照价格、数量排序 class Goods {string name;size_t _price;//价格int num;/…...

Dubbo3序列化安全问题

序列化安全 在 Dubbo 3.0 中&#xff0c;序列化协议的安全性得到了加强。 1. 序列化安全性升级 Triple 协议: 推荐使用 Triple 协议 的非 Wrapper 模式&#xff0c;该模式在安全性上更为严格。需要开发人员编写 IDL&#xff08;接口描述语言&#xff09;文件&#xff0c;这虽…...

秒懂Linux之共享内存

目录 共享内存概念 模拟实现共享内存 创建key阶段 ​编辑创建共享内存阶段 删除共享内存阶段 查看共享内存属性阶段 挂接共享内存到进程阶段 取消共享内存与进程挂接阶段 进程通信阶段 添加管道改进版 共享内存函数 shmget函数 shmat函数 shmdt函数 shmctl函数 共享内存概念 共…...

【计算机网络】网络层协议解析

网络层的两种服务IPv4分类编址划分子网无分类地址 IPv4地址应用IP数据报的发送和转发过程主机发送IP数据报路由器转发IP数据报 IPv4数据报首部格式ICMP网际控制报文协议虚拟专用网VPN与网络地址转换NAT 网络层主要任务是实现网络互连&#xff0c;进而实现数据包在各网络之间的传…...

sqlist void reverse(SqList A)

#include <stdlib.h> #include <stdio.h> #include <iostream> using namespace std; #define INIT_SIZE 5 #define INCREMENT 10 # define OK 1 # define ERROR 0/* 定义ElemType为int类型 */ typedef int ElemType; void input(ElemType &s); void out…...

聊聊Thread Local Storage

聊聊ThreadLocal 为什么需要Thread Local StorageThread Local Storage的实现PThread库实现操作系统实现GCC __thread关键字实现C11 thread_local实现JAVA ThreadLocal实现 Thread Local Storage 线程局部存储&#xff0c;简称TLS。 为什么需要Thread Local Storage 变量分为全…...

WEB攻防-JS项目Node.js框架安全识别审计验证绕过

知识点&#xff1a; 1、原生JS&开发框架-安全条件 2、常见安全问题-前端验证&未授权 详细点&#xff1a; 1、什么是JS渗透测试&#xff1f; 在JavaScript中也存在变量和函数&#xff0c;当存在可控变量及函数调用即可参数漏洞 2、流行的Js框架有哪些&#xff1f; …...

STM32——SPI

1.SPI简介 SPI&#xff0c;是英语Serial Peripheral Interface的缩写&#xff0c;顾名思义就是串行外围设备接口。SPI&#xff0c;是一种高速的&#xff0c;全双工&#xff0c;同步的通信总线&#xff0c;并且在芯片的管脚上只占用四根线&#xff0c;节约了芯片的管脚&#xf…...

【云安全】云上资产发现与信息收集

一、云基础设施组件 1、定义 在云计算基础架构中&#xff0c;基础设施组件通常包括&#xff1a;计算、存储、网络和安全等方面的资源。例如&#xff0c;计算资源可以是虚拟机、容器或无服务器计算引擎&#xff1b;存储资源可以是对象存储或块存储&#xff1b;网络资源可以是虚拟…...

flask搭建微服务器并训练CNN水果识别模型应用于网页

一. 搭建flask环境 概念 flask:一个轻量级 Web 应用框架&#xff0c;被设计为简单、灵活&#xff0c;能够快速启动一个 Web 项目。CNN:深度学习模型&#xff0c;用于处理具有网格状拓扑结构的数据&#xff0c;如图像&#xff08;2D网格&#xff09;和视频&#xff08;3D网格&a…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...