计算机网络:概述 --- 体系结构
目录
一. 体系结构总览
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资源文件中,空格、换行以及特殊字符如何表示
空格: 例:<string name"test">test test</string> 换行:\n 例:<string name"test">test \n test</string> tab:\t …...
CUDA及GPU学习资源汇总
CUDA C Programming Guide 的中文翻译版GPU中的SM和warp的关系推荐几个不错的CUDA入门教程CUDA编程入门极简教程...

uniapp vue3 梯形选项卡组件
实现的效果图: 切换选项卡显示不同的内容,把这个选项卡做成了一个组件,需要的自取。 // 组件名为 trapezoidalTab <template> <view class"pd24"><view class"nav"><!-- 左侧 --><view cla…...
如何在微信小程序中实现WebSocket连接
微信小程序作为一种全新的应用形态,凭借其便捷性、易用性受到了广大用户的喜爱。在实际开发过程中,实时通信功能是很多小程序必备的需求。WebSocket作为一种在单个TCP连接上进行全双工通信的协议,能够实现客户端与服务器之间的实时通信。本文…...
二级等保测评中安全物理环境的重要性及高危项分析
当今数字化时代,信息安全至关重要。网络安全等级保护测评是确保信息系统安全稳定运行的重要手段之一,其中二级等保测评对于许多企业和组织来说是必须要达到的安全标准。 而安全物理环境作为等保测评的重要组成部分,其重要性不容忽视。 安全物…...

C++11——lambda
lambda lambda的介绍lambda的使用lambda的细节->捕捉列表 lambda的介绍 lambda是匿名函数,再适合的场景去使用可以提高代码的可读性。 场景: 假设有一个Goods类需要进行按照价格、数量排序 class Goods {string name;size_t _price;//价格int num;/…...
Dubbo3序列化安全问题
序列化安全 在 Dubbo 3.0 中,序列化协议的安全性得到了加强。 1. 序列化安全性升级 Triple 协议: 推荐使用 Triple 协议 的非 Wrapper 模式,该模式在安全性上更为严格。需要开发人员编写 IDL(接口描述语言)文件,这虽…...

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

【计算机网络】网络层协议解析
网络层的两种服务IPv4分类编址划分子网无分类地址 IPv4地址应用IP数据报的发送和转发过程主机发送IP数据报路由器转发IP数据报 IPv4数据报首部格式ICMP网际控制报文协议虚拟专用网VPN与网络地址转换NAT 网络层主要任务是实现网络互连,进而实现数据包在各网络之间的传…...
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 线程局部存储,简称TLS。 为什么需要Thread Local Storage 变量分为全…...

WEB攻防-JS项目Node.js框架安全识别审计验证绕过
知识点: 1、原生JS&开发框架-安全条件 2、常见安全问题-前端验证&未授权 详细点: 1、什么是JS渗透测试? 在JavaScript中也存在变量和函数,当存在可控变量及函数调用即可参数漏洞 2、流行的Js框架有哪些? …...

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

【云安全】云上资产发现与信息收集
一、云基础设施组件 1、定义 在云计算基础架构中,基础设施组件通常包括:计算、存储、网络和安全等方面的资源。例如,计算资源可以是虚拟机、容器或无服务器计算引擎;存储资源可以是对象存储或块存储;网络资源可以是虚拟…...

flask搭建微服务器并训练CNN水果识别模型应用于网页
一. 搭建flask环境 概念 flask:一个轻量级 Web 应用框架,被设计为简单、灵活,能够快速启动一个 Web 项目。CNN:深度学习模型,用于处理具有网格状拓扑结构的数据,如图像(2D网格)和视频(3D网格&a…...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...

R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...