计算机网络:计算机网络体系结构 —— OSI 模型 与 TCP/IP 模型
文章目录
- 计算机网络体系结构
- OSI 参考模型
- TCP/IP 参考模型
- 分层的必要性
- 物理层的主要问题
- 数据链路层的主要问题
- 网络层的主要问题
- 运输层的主要问题
- 应用层的主要问题
- 分层思想的处理方法
- 发送请求
- 路由器转发
- 接受请求
- 发送响应
- 接收响应
计算机网络体系结构
计算机网络体系结构是指将计算机网络分为不同的层次和功能模块,以实现可靠的数据传输和通信的架构模型。
由于计算机网络从底层的传输到高层的软件设计十分复杂,要合理地设计计算机网络模型,必须采用分层模型,每一层负责处理自己的操作。
OSI 参考模型
OSI
(Open System Interconnect)网络模型是 ISO 组织定义的一个计算机互联的标准模型。它只是一个定义,目的是为了简化网络各层的操作,提供标准接口便于实现和维护。
这个模型从底层到高层依次是:
-
物理层(Physical Layer):该层负责传输原始的比特数据流,以及定义传输介质和物理连接的电气特性,如电压、数据传输速率等。
-
数据链路层(Data Link Layer):该层负责将数据分割成帧,进行错误检测和纠正,并确保数据在物理介质上的可靠传输。它还处理数据包的寻址和传输控制。
-
网络层(Network Layer):该层负责在网络中实现数据包的路由和转发。根据目标地址选择路由来传输数据,确定最佳路径,并能够处理跨越不同网络的数据传输。
-
传输层(Transport Layer):该层提供端到端的可靠数据传输服务,确保数据的完整性、排序和可靠性。常见的传输层协议有 TCP(传输控制协议)和 UDP(用户数据报协议)。
-
会话层(Session Layer):该层负责建立、管理和终止通信会话,以实现不同计算机之间的交互。
-
表示层(Presentation Layer):该层负责数据格式的表示和转换,以确保不同系统之间的数据可以正确解释和处理。常见的任务包括数据加解密、数据压缩和数据格式转换。
-
应用层(Application Layer):该层是用户和应用程序直接接触的层,它提供了不同应用程序之间交换数据所需的服务和协议。常见的应用层协议有 HTTP(超文本传输协议)、SMTP(简单邮件传输协议)等。
TCP/IP 参考模型
TCP/IP 协议(Transmission Control Protocol/Internet Protocol
)是互联网中最常用的协议之一,是网络通信所必须的基本协议。使用其他网络协议(例如 NetBIOS、AppleTalk 协议等)是无法联入互联网的
TCP/IP 协议以层次化的 TCP/IP 参考模型的方式组织起来,分为四个层次:
-
应用层(Application Layer):该层是应用程序直接使用的,它规定了不同应用之间的信息交互格式和交互方式。常见的应用层协议包括 [[#HTTP]]、FTP、SMTP 等。
-
传输层(Transport Layer):该层提供端到端的数据传输服务,为应用层提供可靠的数据传输机制。TCP(传输控制协议)和 UDP(用户数据报协议)是传输层协议。
-
网络层(Network Layer):该层负责一组数据包从源头到目标地的传输,提供了一种数据传输方式,也就是互联网。IP(互联网协议)是网络层中最主要的协议。
-
网络接口(数据链路)层(Link Layer):该层负责将数据帧组装成字节流,送到物理层中作为比特流进行传输。在实际应用中,链路层包含了许多子层,主要子层有以太网、WiFi、蓝牙、DSL 等。
互联网实际使用的 TCP/IP 模型并不是对应到 OSI 的 7 层模型,而是大致对应 OSI 的 5 层模型:
TCP/IP 协议是互联网的基础,支持复杂的网络架构和千变万化的应用,它主要用于传输各种不同形式的数据,如文件、邮件、多媒体等。
分层的必要性
计算机网络是一个非常复杂的系统,“分层”可将庞大复杂的问题转化为若干较小的局部问题
物理层的主要问题
-
采用什么传输媒介作为传输链路(物理层之下)
-
用户主机、交换机、路由器等网络设备采用什么物理接口连接传输介质。
-
采用哪种信号表示比特 0 和 1
数据链路层的主要问题
数据链路层主要解决数据包在一个网络或一段链路上传输的问题
-
如何标识网络中的各主机(主机编址,如 MAC 地址)
-
目的主机如何从一连串的比特流中区分出地址和数据(数据封装格式问题)
-
总线型网络中的信号碰撞问题,如何协调各主机争用总线(媒体介入控制)。总线型网络已淘汰,如今常用使用以太网交换机,将多台主机互联而成的交换式以太网,多个主机可以同时通信而不会产生碰撞。
-
以太网交换机的实现(自学习和转发帧)
-
有线网络很少出现误码,而无线网络容易出现误码问题。需检查数据在传输过程中是否出现误码(差错检测)
-
当检测到数据包出现误码时,如何处理传输差错问题(可靠传输和不可靠传输)
-
接收方控制发送方注入网络的数据量(流量控制)
网络层的主要问题
网络层主要解决数据包在多个网络之间传输和路由的问题
- 标识网络和网络中的各主机(网络和主机共同编址(网络号相同,主机号不同),如 IP 地址)
- 路由器转发分组(路由选择协议、路由表、转发表)
运输层的主要问题
-
标识与网络通信相关的应用进程,解决进程之间基于网络通信的问题(进程的标识,如端口号)
-
出现传输差错时如何处理(可靠传输和不可靠传输)
应用层的主要问题
-
制定应用协议,并按协议标准编写相应的应用程序,通过应用进程的交互来完成特定的网络应用
-
应用进程基于网络通信时的会话管理和数据表示问题
分层思想的处理方法
通过一个实例理解分层思想的处理方法。
如图所示,主机属于 网络N1
,Web 服务器属于 网络N2
,N1
和 N2
通过路由器互连,用户在主机中使用浏览器访问 Web 服务器。
主机会向 Web 服务器发送一个请求报文,Web 服务器收到请求报文后,执行相应的操作,然后给主机发送响应报文,主机收到响应报文后,由浏览器负责解析和渲染解释。
主机和 Web 服务器之间基于网络的通信,实际上是主机中的浏览器应用进程和 Web 服务器中的 Web 服务器应用进程之间基于网络的通信。
发送请求
发送请求时:
-
主机中的应用层根据 HTTP 协议的规定,构建一个 HTTP 请求报文,用于请求 Web 服务器执行相应操作。应用层将构建好的 HTTP 请求报文向下交付给运输层
-
运输层给 HTTP 请求报文添加一个 TCP 首部,将其封装成为 TCP 报文段,用于区分应用进程,实现可靠传输。运输层将封装好的 TCP 报文段向下交付给网络层
-
网络层给 TCP 报文段添加一个 IP 首部(主要作用是 IP 寻址和路由),将其封装成为 IP 数据报,网络层将封装好的 IP 数据报向下交付给数据链路层
-
数据链路层给 IP 数据报 添加一个首部和一个尾部,并将其封装成为帧,帧的首部和尾部的主要作用是 MAC 寻址和帧校验。数据链路层将封装好的帧向下交付给物理层
-
物理层将封装好的帧视为比特流(由二进制组成的数据流),将其转换为电信号进行发送。对于以太网,物理层还会在比特流前添加前导码,使接收方的时钟同步,做好接受准备。
路由器转发
-
主机的物理层将电信号发送给路由器后,其物理层将电信号转换为比特流。若为以太网,会将比特流的前导码去掉。物理层将帧向上交付给数据链路层
-
数据链路层将帧首部和尾部去掉后,将 IP 数据报向上交付给网络层。
-
网络层从 IP 数据报的首部中提取出目的 IP 地址,路由器根据目的 IP 地址查找自己的转发表,确定转发该 IP 数据报的接口,同时,对首部中的某些字段值,如生存时间 TTL 字段的值进行相应的修改。将该 IP 数据报向下交付给数据链路层。
-
数据链路层为 IP 数据报添加一个首部和一个尾部,将其封装成为帧。将帧向下交付给物理层
-
物理层将帧视为比特流(对于以太网会添加前导码),将其转换为电信号后发送出去。
接受请求
Web 服务器接收到数据包后,会按照网络体系结构自下而上的顺序将其进行逐层解封,解封出 HTTP 请求报文。
发送响应
接收到 HTTP 请求报文后,执行相应的操作。然后给主机发送包含有浏览器请求内容的 HTTP 响应报文。
与浏览器发送 HTTP 请求报文的过程类似,HTTP 响应报文需要在 Web 服务器层层封装后才能发送。
接收响应
数据包经过路由器的转发到达主机,主机对收到的数据包按照网络体系结构自下而上的顺序将其进行逐层解封,解封出 HTTP 响应报文。
相关文章:

计算机网络:计算机网络体系结构 —— OSI 模型 与 TCP/IP 模型
文章目录 计算机网络体系结构OSI 参考模型TCP/IP 参考模型分层的必要性物理层的主要问题数据链路层的主要问题网络层的主要问题运输层的主要问题应用层的主要问题 分层思想的处理方法发送请求路由器转发接受请求发送响应接收响应 计算机网络体系结构 计算机网络体系结构是指将…...
【openwrt-21.02】T750 openwrt switch划分VLAN之后网口插拔状态异常问题分析及解决方案
Openwrt版本 NAME="OpenWrt" VERSION="21.02-SNAPSHOT" ID="openwrt" ID_LIKE="lede openwrt" PRETTY_NAME="OpenWrt 21.02-SNAPSHOT" VERSION_ID="21.02-snapshot" HOME_URL="https://openwrt.org/" …...
C++随心记
C随心记 C中的 CONST C中的const是表示不可修改 int main() {/* 对于变量而言 */// 不可修改的常量const int A 10;// 不可修改的指针指向const int* pointer_0 nullptr;int const* poniter_1 nullptr;// 不可修改指针指向的内容int* const poniter_2 nullptr; }const也…...

【微服务即时通讯系统】——brpc远程过程调用、百度开源的RPC框架、brpc的介绍、brpc的安装、brpc使用和功能测试
文章目录 brpc1. brpc的介绍1.1 rpc的介绍1.2 rpc的原理1.3 grpc和brpc 2. brpc的安装3. brpc使用3.1 brpc接口介绍 4. brpc使用测试4.1 brpc同步和异步调用 brpc 1. brpc的介绍 1.1 rpc的介绍 RPC(Remote Procedure Call)远程过程调用,是一…...

鸿蒙开发(NEXT/API 12)【状态查询与订阅】手机侧应用开发
注意 该接口的调用需要在开发者联盟申请设备基础信息权限与穿戴用户状态权限,穿戴用户状态权限还需获得用户授权。 实时查询穿戴设备可用空间、电量状态。订阅穿戴设备连接状态、低电量告警、用户心率告警。查询和订阅穿戴设备充电状态、佩戴状态、设备模式。 使…...

vite中sass警告JS API过期
1.问题 在Vite创建项目中引入Sass弹出The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0 - vite中sass警告JS API过期 The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0警告提示表明你当前正在使用的 Dart Sass 版本中&#…...

睢宁自闭症寄宿学校:培养特殊孩子的未来
在自闭症儿童的教育与康复领域,每一所学校的努力都是对孩子们未来无限可能的一次深刻诠释。从江苏睢宁到广东广州,自闭症寄宿学校正以不同的方式,为这些特殊的孩子铺设一条通往未来的希望之路。其中,广州的星贝育园自闭症儿童寄宿…...

【Canvas与徽章】金圈蓝底国庆75周年徽章
【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>金边黑盾75周年</title><style type"text/css"&g…...

Java Servlet 详解
Java Servlet 是 Java 企业级应用 中的一个核心组件,特别是在 Web 应用开发中,它为服务器端处理请求提供了基础。每次用户发出请求时,Servlet 都会动态生成响应,这在构建复杂、交互式的 Web 应用时尤为重要。 什么是 Servlet&am…...

yolov8/9/10模型在安全帽、安全衣检测中的应用【代码+数据集+python环境+GUI系统】
yolov8910模型安全帽、安全衣检测中的应用【代码数据集python环境GUI系统】 yolov8/9/10模型在安全帽、安全衣检测中的应用【代码数据集python环境GUI系统】 背景意义 安全帽和安全衣在工业生产、建筑施工等高风险作业环境中是保护工人免受意外伤害的重要装备。然而࿰…...

算力共享系统中数据平面和控制平面
目录 算力共享系统中数据平面和控制平面 数据平面 控制平面 算力共享系统举例 控制流程和业务流程,在算力共享系统中举例说明 控制流程 业务流程 算力共享系统中数据平面和控制平面 在算力共享系统中,数据平面和控制平面是两个关键组成部分,它们各自承担着不同的角色…...

C++语言学习(4): identifier 的概念
1. 什么是 identifier identifier 中文意思是标识符,在 cppreference 中明确提到,identifier 是任意长度的数字、下划线、大写字母、小写字母、unicode 字符 的序列: An identifier is an arbitrarily long sequence of digits, underscores…...
浅谈计算机神经网络基础与应用
1. 绪论 随着科技的飞速发展,人工智能(AI)已经逐渐渗透到我们生活的方方面面。作为AI技术的核心组成部分,神经网络在推动这一领域的发展上扮演着至关重要的角色。本报告旨在探讨AI中的不同类型神经网络及其在实际应用中的表现和影响。我们将从神经网络的基本概念入手,逐步…...

【SpringBoot详细教程】-08-MybatisPlus详细教程以及SpringBoot整合Mybatis-plus【持续更新】
目录 🌲 MyBatis Plus 简介 🌾入门案例 🌾 MP 简介 🌲 MP 的CRUD 🌾 新增 🌾 删除 🌾 修改在进行 🌾 根据ID查询 🌾 查询所有 🌲 分页功能 🌾 设置分页参数 🌾 设置分页拦截器 🌲 优化启动 🌾 取消mbatisPlusBanner 🌾 取消Sprin…...
[20241002] OpenAI融资文件曝光,ChatGPT年收入涨4倍,月费5年内翻倍
智东西9月29日消息,据《纽约时报》9月27日报道,OpenAI的内部文件显示,该公司在8月份的月收入达到3亿美元,自2023年初以来增长了1700%,预计今年年度销售额将达到37亿美元,其中ChatGPT将带来27亿美元的收入。…...

工业缺陷检测——Windows 10本地部署AnomalyGPT工业缺陷检测大模型
0. 引言 在缺陷检测中,由于真实世界样本中的缺陷数据极为稀少,有时在几千甚至几万个样品中才会出现一个缺陷数据。因此,以往的模型只需在正常样本上进行训练,学习正常样品的数据分布。在测试时,需要手动指定阈值来区分…...
单元测试进阶-Mock使用和插桩
目录 一、基本概念 1、Mock 2、插桩(Sutbbing) 二、参考文章 一、基本概念 1、Mock Mock的作用就是不直接new对象,而是使用Mock方法或者注解Mock一个对象。 这个对象他不是new创建的对象,Mock对该对象的一些成员变量和方法…...
适用conda安装虚拟的python3环境
由于jupyter notebook 7以上的版本与jupyter_contrib_nbextensions存在冲突,导致以前使用顺手的插件无法使用了,就考虑建立一个虚拟环境,在里面使用jupyter notebook 6,以便和jupyter_contrib_nbextensions兼容。 conda简介和优势 Conda 是一个包管理器和环境管理器,它不…...

【C++】“list”的介绍和常用接口的模拟实现
【C】“list”的介绍和常用接口的模拟实现 一. list的介绍1. list常见的重要接口2. list的迭代器失效 二. list常用接口的模拟实现(含注释)三. list与vector的对比 一. list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器…...

第九篇——数列和级数(二):传销骗局的数学原理
目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 文章不长,但是道理深刻;相邻两个数的差值…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...