[ 计算机网络 ] 深入理解OSI七层模型

🎉欢迎大家观看AUGENSTERN_dc的文章(o゜▽゜)o☆✨✨

🎉感谢各位读者在百忙之中抽出时间来垂阅我的文章,我会尽我所能向的大家分享我的知识和经验📖

🎉希望我们在一篇篇的文章中能够共同进步!!!

🌈个人主页:AUGENSTERN_dc

🔥个人专栏:C语言 |Java | 数据结构 | 算法 | MySQL | RabbitMQ | Redis

⭐个人格言:

一重山有一重山的错落,我有我的平仄

一笔锋有一笔锋的着墨,我有我的舍得


目录

1. OSI七层模型

1.1 OSI七层模型

1.2 为什么要分成七个层次?

1.3 各层分别的职责:

1.3.1 应用层

1.3.1.1 主要功能: 

1.3.1.2 常见应用层的协议:

 1.3.1.3 总结

1.3.2 表示层

1.3.2.1 主要功能:

1.3.2.2 常见表示层协议:

1.3.2.3  总结

1.3.3 会话层

1.3.3.1 主要功能

1.3.3.2 常见会话层协议

1.3.3.3 总结

1.3.4 传输层

1.3.5 网络层

1.3.5.1 主要功能: 

1.3.5.2 常用协议: 

1.3.5.3 总结:

1.3.6 数据链路层

1.3.6.1 主要功能: 

1.3.6.2 常见协议

1.3.6.3 总结: 

1.3.7 物理层

1.3.7.1 主要功能: 

1.3.7.2 常见协议: 

1.3.7.3 总结: 


1. OSI七层模型

1.1 OSI七层模型

OSI(Open Systems Interconnection)七层模型是一个概念性的网络通信模型,将网络通信过程分为七个层次,每一层负责特定的功能。OSI模型的主要目的是提供一个标准化的框架,以便不同厂商的设备和软件能够互操作。

1.2 为什么要分成七个层次?

说到分层,我们可以联想一下平时我们开发一个SpringBoot后台程序时的分层,我们往往会按照每一层做不同的事情的原则,将系统分为三层(若系统复杂,则会有更多的层级) :

<1> Controller (负责前后端的数据交互)

<2> Service (负责业务操作逻辑)

<3> Repository (负责与数据库进行交互)

复杂的系统需要进行分层,因为每一层都需要专注于一类事情,就像设计模式中的 <单一责任原则>

网络分层的原理也是一样,每一层只专注于做一件事情

话说回来,我认为分层的原因主要有三点:

1. 各层之间需要相互独立: 各层之间相互独立,各层之间不需要关心其他层是如何实现的,只需要知道自己如何调用下层提供好的功能就可以了(可以简单理解为接口调用)。这个和我们对开发时系统进行分层是一个道理。

2. 提高了灵活性和可替换性:每一层都可以使用最适合的技术来实现,你只需要保证你提供的功能以及暴露的接口的规则没有改变就行了。并且,每一层都可以根据需要进行修改或替换,而不会影响到整个网络的结构。这个和我们平时开发系统的时候要求的高内聚、低耦合的原则也是可以对应上的。

3. 大问题化小分层可以将复杂的网络问题分解为许多比较小的、界线比较清晰简单的小问题来处理和解决。这样使得复杂的计算机网络系统变得易于设计,实现和标准化。 这个和我们平时开发的时候,一般会将系统功能分解,然后将复杂的问题分解为容易理解的更小的问题是相对应的,这些较小的问题具有更好的边界(目标和接口)定义.

1.3 各层分别的职责:

在OSI七层模型中,每一层的模型都会对上一层的数据进行封装(除了物理层外,物理层对数据进行转换而不是封装)

接下来我们简单介绍一下,每一层的不同的职责

1.3.1 应用层

将用户上传的数据发送给表示层做处理,或接收表示层传来的数据展示给用户

1.3.1.1 主要功能: 

<1> 提供用户接口: 应用层为用户提供直接的交互界面,使得用户能够方便的使用各种网络服务

<2> 数据格式化: 应用层负责将用户数据转换为合适的网络传输格式,以及将接受到的数据解析为用户可以理解的格式

<3> 提供网络服务: 应用层提供了多种网络服务,满足用户的不同需求

1.3.1.2 常见应用层的协议:

<1> HTTP/HTTPS

<2> SMTP/POP3/IMAP

<3> FTP/SFTP

<4> DNS

 1.3.1.3 总结

总的来说,应用层主要是用来服务于用户,与用户直接进行交互的,同时应用层是通过调用下层提供的服务来实现其功能

1.3.2 表示层

表示层会对来自于应用层的数据进行封装,传输给会话层,或接收会话层的数据,解封后传输给应用层

1.3.2.1 主要功能:

<1> 数据表示和转换: 表示层负责将数据转换为适合网络传输的格式,以及将接收到的数据转换为应用程序可以理解的格式。

例如:将ASCII转换为Unicode编码格式,将图像音频等转换成合适的传输形式

<2> 数据加密和解密: 表示层提供数据加密和解密服务,确保数据在传输过程中的安全性和隐私性。

例如在HTTP的基础上,通过SSL/TLS协议对数据进行加密,确保数据在传输过程中不被窃取或篡改

<3> 数据压缩和解压缩: 表示层提供数据压缩和解压缩服务,减少数据传输的大小,提高传输效率。

例如: 将文件压缩成ZIP文件进行传输,压缩文件大小,提高传输效率

1.3.2.2 常见表示层协议:

SSL/TLS(Secure Sockets Layer/Transport Layer Security)

1.3.2.3  总结

表示层主要负责处理应用层数据的表示,转换,加密和压缩,确保数据在不同的系统之间能够正确的理解和处理

1.3.3 会话层

会话层接收表示层的数据并进行封装,发送给传输层,或接收传输层的数据解封发送给表示层

1.3.3.1 主要功能

<1> 建立会话: 会话层负责在通信双方之间建立会话

<2> 管理会话: 会话层负责管理会话的整个生命周期,包括数据传输、会话恢复和会话终止。

<3> 同步和检查点: 会话层在数据传输过程中设置同步点和检查点,确保数据的完整性和一致性。

<4> 对话控制: 会话层支持双向通信,并可以控制会话的方向。

1.3.3.2 常见会话层协议

<1> RPC (Remote Procedure Call)

<2> NetBIOS (Network Basic Input/Output System)

<3> SMB(Server Message Block)

1.3.3.3 总结

会话层主要负责管理和协调通信双方之间的会话,通过各种协议实现其功能,确保数据在会话期间正确、有序地传输。

1.3.4 传输层

传输层的主要职责是提供端到端的可靠或不可靠数据传输服务,确保数据能够在网络中正确、完整地传输。

1.3.4.1 主要功能

<1> 端到端的通信: 传输层负责在源主机和目标主机之间建立和管理端到端的通信。

<2> 可靠传输: 传输层提供可靠的数据传输服务,确保数据能够完整、无误地到达目的地。

<3> 不可靠传输: 传输层也提供不可靠的数据传输服务,不保证数据的可靠传输,但提供快速传输。

<4> 多任务管理: 传输层可以同时管理多个应用程序的通信,每个应用程序使用不同的端口号。

1.3.4.2 常见协议

<1> TCP (Transmission Control Protocol)

<2> UDP(User Datagram Protocol)

1.3.4.3 总结

传输层通过TCP和UDP两种协议实现其功能,确保数据能够在网络中正确、完整地传输。

1.3.5 网络层

1.3.5.1 主要功能: 

<1> 路由选择: 网络层负责选择最佳路径,将数据报从源主机传输到目标主机。

<2> 逻辑地址处理: 网络层使用逻辑地址(如IP地址)来标识网络中的设备。IP地址是网络层的核心,用于路由选择和数据报的传输。

<3> 数据报传输: 网络层将传输层的数据(如TCP段或UDP数据报)封装成网络层的数据报(如IP数据报),接收方的网络层将接收到的数据报解封装,提取出传输层的数据并传递给上层。

<4> 错误检测: 网络层在数据报中添加校验和,用于检测数据在传输过程中是否发生错误。如果检测到错误,网络层会丢弃错误的数据报,由传输层负责重传。

1.3.5.2 常用协议: 

<1> IP(Internet Protocol)IP是网络层的核心协议,负责将数据报从源主机传输到目标主机。

<2> ICMP(Internet Control Message Protocol):ICMP用于发送错误消息和控制消息,帮助网络层更好地管理数据报的传输。

<3> IGMP(Internet Group Management Protocol):IGMP用于管理多播组成员关系,支持多播通信。

1.3.5.3 总结:

网络层通过IP协议、ICMP协议等实现其功能,确保数据能够在复杂的网络环境中高效、可靠地传输。

1.3.6 数据链路层

1.3.6.1 主要功能: 

<1> 帧的封装与解封装: 数据链路层将网络层的数据(如IP数据报)封装成帧。帧是数据链路层的数据单元,包含帧头、数据部分和帧尾。

<2> 可靠传输: 数据链路层通过校验码(如CRC)检测传输过程中是否发生错误。某些数据链路层协议(如HDLC)可以纠正单比特错误。数据链路层可以通过确认应答(ACK)和超时重传机制确保数据的可靠传输。

<3> 介质访问控制: 数据链路层负责管理多个设备共享同一物理介质(如以太网电缆)时的访问控制。

<4> 流量控制: 数据链路层可以通过流量控制机制(如滑动窗口协议)控制发送方的数据流量,避免接收方缓冲区溢出

1.3.6.2 常见协议

<1> 以太网(Ethernet)

<2> Wi-Fi(IEEE 802.11)

<3> PPP(Point-to-Point Protocol)

1.3.6.3 总结: 

数据链路层主要负责将物理层传输的原始比特流封装成帧,并提供可靠的数据传输服务。

1.3.7 物理层

1.3.7.1 主要功能: 

<1> 物理连接: 物理层负责建立和维护物理连接,确保数据能够在物理介质上传输。

<2> 比特流传输: 物理层负责在物理介质上透明地传输原始的比特流。

<3> 信号编码: 物理层将数据编码为适合物理介质传输的信号。

1.3.7.2 常见协议: 

<1> 以太网(Ethernet)

<2> 光纤通信

<3> 无线通信

1.3.7.3 总结: 

物理层通过各种协议和标准(如以太网、光纤通信、无线通信)实现其功能,确保数据能够在物理介质上正确传输。

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

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

相关文章

线性代数之张量计算,支撑AI算法的数学原理

目录 一、张量计算的数学本质 1、线性代数:张量的几何与代数性质 2、微积分:梯度与自动微分 3、优化理论:张量分解与正则化 4、张量计算的核心操作 二、张量计算在AI算法中的作用 1、数据表示与处理 2、神经网络的参数表示 3、梯度计算与优化 三、张量计算在AI中的…

打造一个支持MySQL查询的MCP同步插件:Java实现

打造一个支持MySQL查询的MCP同步插件&#xff1a;Java实现 用Java实现一个MCP本地插件&#xff0c;直接通过JDBC操作本地MySQL&#xff0c;并通过STDIO与上层MCP客户端&#xff08;例如Cursor&#xff09;通信。插件注册一个名为mysql 的同步工具&#xff0c;接收连接参数及SQL…

【数据架构01】数据技术架构篇

✅ 9张高质量数据架构图&#xff1a;大数据平台功能架构、数据全生命周期管理图、AI技术融合架构等&#xff1b; &#x1f680;无论你是数据架构师、治理专家&#xff0c;还是数字化转型负责人&#xff0c;这份资料库都能为你提供体系化参考&#xff0c;高效解决“架构设计难、…

java三种常见设计模式,工厂、策略、责任链

设计模式实战解析 一、工厂模式&#xff08;点外卖模式&#xff09; 1. 核心思想 代替直接new对象像点外卖一样获取对象 2. 实际应用 Spring框架&#xff1a;BeanFactoryJDBC&#xff1a;DriverManager.getConnection() 3. 三种变体对比 类型特点示例场景简单工厂一个工…

jenkins使用Send build artifacts over SSH发布jar包目录配置

本测试用ruoyi-plus的代码。 1 [GitLab 自动触发 Jenkins 构建_jenkins构建触发器没有build when a change is pushed to git-CSDN博客](https://blog.csdn.net/wangyiyungw/article/details/81776972) 2 [jenkins使用Send build artifacts over SSH遇到的坑-CSDN博客](https…

vscode打开vue + element项目

好嘞&#xff0c;我帮你详细整理一个用 VS Code 来可视化开发 Vue Element UI 的完整步骤&#xff0c;让你能舒服地写代码、预览界面、调试和管理项目。 用 VS Code 可视化开发 Vue Element UI 全流程指南 一、准备工作 安装 VS Code 官网下载安装&#xff1a;https://code…

黑马程序员C++2024新版笔记 第4章 函数和结构体

目录 1.结构体的基本应用 2.结构体成员的默认值 3.结构体数组 4.结构体指针 ->操作符 5.结构体指针数组 1.引入已存在的结构体数组地址 2.通过new操作符申请指针数组空间 6.函数的概念 7.函数的基础语法 8.无返回值函数和void类型 9.空参函数 10.函数的嵌套调用…

高级前端工程师必备的 JS 设计模式入门教程,常用设计模式案例分享

目录 高级前端工程师必备的 JS 设计模式入门教程&#xff0c;常用设计模式案例分享 一、什么是设计模式&#xff1f;为什么前端也要学&#xff1f; 1、设计模式是什么 2、设计模式的产出 二、设计模式在 JS 里的分类 三、常用设计模式实战讲解 1、单例模式&#xff08;S…

Ubuntu+Docker+内网穿透:保姆级教程实现安卓开发环境远程部署

文章目录 前言1. 虚拟化环境检查2. Android 模拟器部署3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问小结 6. 固定Cpolar公网地址7. 固定地址访问 前言 本文将详细介绍一种创新性的云开发架构&#xff1a;基于Ubuntu系统构建Android仿真容器环境&#xff0c;并集成安全隧道技…

Linux Kernel调试:强大的printk(一)

引言 想了好久&#xff0c;还是觉得这个标题才配得上printk&#xff01;^_^ 我相信&#xff0c;不管做什么开发&#xff0c;使用最多的调试手段应该就是打印了&#xff0c;从我们学习编程语言第一课开始&#xff0c;写的第一段代码&#xff0c;就是打印"Hello, world&qu…

基于NLP技术的客户投诉与需求文本分类方法研究

目录 摘要 1. 引言 2. 文本分类基础 2.1 文本分类的定义与类型 2.2 文本分类的评价指标 3. 传统文本分类方法 3.1 基于TF-IDF和SVM的方法 3.2 基于主题模型和词向量的改进方法 4. 深度学习文本分类方法 4.1 TextCNN模型 4.2 BiLSTM模型 4.3 注意力机制与Transformer…

#RabbitMQ# 消息队列入门

目录 一 MQ技术选型 1 运行rabbitmq 2 基本介绍 3 快速入门 1 交换机负责路由消息给队列 2 数据隔离 二 Java客户端 1 快速入门 2 WorkQueue 3 FanOut交换机 4 Direct交换机 5 Topic交换机 *6 声明队列交换机 1 在配置类当中声明 2 使用注解的方式指定 7 消息转…

【深度学习】多目标融合算法(六):渐进式分层提取模型PLE(Progressive Layered Extraction)

目录 一、引言 二、PLE&#xff08;Progressive Layered Extraction&#xff0c;渐进式分层提取模型&#xff09; 2.1 技术原理 2.2 技术优缺点 2.3 业务代码实践 2.3.1 业务场景与建模 2.3.2 模型代码实现 2.3.3 模型训练与推理测试 2.3.4 打印模型结构 三、总结 一…

【Java开发日记】如何使用Java开发在线生成 pdf 文档

一、介绍 在实际的业务开发的时候&#xff0c;研发人员往往会碰到很多这样的一些场景&#xff0c;需要提供相关的电子凭证信息给用户&#xff0c;例如网银&#xff0f;支付宝&#xff0f;微信购物支付的电子发票、订单的库存打印单、各种电子签署合同等等&#xff0c;以方便用…

Oracle 11g 单实例使用+asm修改主机名导致ORA-29701 故障分析

解决 把服务器名修改为原来的&#xff0c;重启服务器。 故障 建表空间失败。 分析 查看告警日志 ORA-1119 signalled during: create tablespace splex datafile ‘DATA’ size 2000M… Tue May 20 18:04:28 2025 create tablespace splex datafile ‘DATA/option/dataf…

消息队列的使用

使用内存队列来处理基于内存的【生产者-消费者】场景 思考和使用Disruptor Disruptor可以实现单个或多个生产者生产消息&#xff0c;单个或多个消费者消息&#xff0c;且消费者之间可以存在消费消息的依赖关系 使用Disruptor需要结合业务特性&#xff0c;设计要灵活 什么业务…

《帝国时代1》游戏秘籍

资源类 PEPPERONI PIZZA&#xff1a;获得 1000 食物。COINAGE&#xff1a;获得 1000 金。WOODSTOCK&#xff1a;获得 1000 木头。QUARRY&#xff1a;获得 1000 石头。 建筑与生产类 STEROIDS&#xff1a;快速建筑。 地图类 REVEAL MAP&#xff1a;显示所有地图。NO FOG&#xf…

使用JSP踩过的坑

虽然说jsp已经过时了&#xff0c;但是有时维护比较老的项目还是需要的。 下面说下&#xff0c;我使用jsp踩过的坑&#xff1a; 1.关于打印输出 在jsp中输出使用 out.println("hello");而不是 System.out.println("hello");如果在定义函数部分需要打印…

redis集群创建时手动指定主从关系的方法

适用场景&#xff1a; 创建主从关系时默认参数 --cluster-replicas 1 会自动分配从节点。 为了能精确控制 Redis Cluster 的主从拓扑结构&#xff0c;我们通过 Redis Cluster 的手动分片功能来实现 一、手动指定主从关系的方法 使用 redis-cli --cluster-replicas 0 先创建纯…

ROS合集(七)SVIn2声呐模块分析

文章目录 一、整体思想二、具体误差建模流程三、总结明确&#xff08;预测值与观测值&#xff09;四、选点逻辑五、Sonar 数据处理流水线1. ROS Launch 配置&#xff08;imagenex831l.launch&#xff09;2. SonarNode 节点&#xff08;sonar_node.py&#xff09;3. Subscriber …