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

理解网络通信的基础:OSI七层模型与TCP/IP五层模型

在今天的数字化世界中,网络通信已经成为我们日常生活和商业活动的重要组成部分。为了更好地理解和管理网络通信,网络工程师和管理员使用不同的模型来组织和解释网络协议和通信过程。本文将介绍两种最重要的网络模型:OSI七层模型和TCP/IP五层模型。

OSI七层模型

OSI(开放系统互联)模型是一种理论性的网络通信模型,由国际标准化组织(ISO)于20世纪80年代制定。该模型将网络通信过程分为七个层次,每个层次负责不同的功能,从而实现了网络通信的模块化和分层设计。以下是OSI模型的七个层次:

  1. 物理层(Physical Layer):这是最底层的层次,负责物理媒介上数据的传输。它包括了电压、电流、电缆和光纤等物理特性。物理层的主要任务是将比特流从一个节点传输到另一个节点。

  2. 数据链路层(Data Link Layer):此层负责数据帧的传输,以及识别和纠正数据传输中的错误。它通常包括了MAC(媒体访问控制)地址的管理。

  3. 网络层(Network Layer):网络层负责路由数据包,以确保数据从源节点到达目标节点。它使用IP地址来标识网络中的设备,并控制数据包的转发。

  4. 传输层(Transport Layer):传输层提供了端到端的数据传输服务,但它通常不包括错误检测和纠正功能。传输层主要负责数据的可靠传输和流量控制。TCP(传输控制协议)是一个可靠的协议,它确保数据按顺序到达目标,并在必要时重新传输丢失的数据包。UDP(用户数据报协议)是传输层的另一个协议,但它不提供可靠性保证,不进行错误检测和纠正。

  5. 会话层(Session Layer):会话层负责建立、管理和终止会话(或连接)以确保数据传输的可靠性。它还可以处理数据的同步和检查点功能。

  6. 表示层(Presentation Layer):表示层处理数据的格式转换、数据加密和解密以及数据压缩。它确保不同设备之间的数据格式兼容性。

  7. 应用层(Application Layer):应用层包含了网络应用程序,如Web浏览器、电子邮件客户端和文件传输协议。这一层为用户提供了访问网络服务的接口。

OSI 七层模型既复杂又不实用:所以 OSI 七层模型没有落地、实现。

实际组建网络时,只是以 OSI 七层模型设计中的部分分层,也即是以下 TCP/IP 五层(或四层)模型来实现。

TCP/IP五层模型 

与OSI模型不同,TCP/IP五层模型是实际互联网通信所采用的模型,通常被称为Internet模型。它更简单,但也更贴近互联网的实际工作方式。以下是TCP/IP模型的五个层次:

  1. 应用层(Application Layer):应用层负责应用程序之间的通信,提供高级别的服务,如电子邮件传输(SMTP)、文件传输协议(FTP)、Telnet等。网络编程通常是在应用层进行的。

  2. 传输层(Transport Layer):传输层负责两台主机之间的数据传输,确保数据从源主机可靠地发送到目标主机。传输控制协议 (TCP) 是一个常用的传输层协议,它提供可靠性和流控制。

  3. 网络层(Network Layer):网络层负责地址管理和路由选择,使用IP地址来标识主机,并通过路由表来规划数据传输的路线。路由器(Router)工作在网络层。

  4. 数据链路层(Data Link Layer):数据链路层负责设备之间的数据帧传输和识别,包括帧同步、冲突检测和数据差错校验。以太网、令牌环网和无线LAN都属于数据链路层的标准。交换机(Switch)工作在数据链路层。

  5. 物理层(Physical Layer):物理层负责光/电信号的传输方式,包括网线、同轴电缆、光纤、无线电磁波等。物理层的能力影响最大传输速率、传输距离和抗干扰性。集线器(Hub)工作在物理层。

网络设备所在分层 

  1. 主机(Host):一台主机的操作系统内核通常实现了TCP/IP五层模型的下四层,即从传输层到物理层。这包括了处理传输层(如TCP和UDP)、网络层(如IP)、数据链路层(如以太网)和物理层(如网线接口)的功能。

  2. 路由器(Router):路由器实现了TCP/IP五层模型的下三层,即从网络层到物理层。它主要负责路由选择和数据包的转发,因此涵盖了网络层、数据链路层和物理层的功能。

  3. 交换机(Switch):交换机实现了TCP/IP五层模型的下两层,即从数据链路层到物理层。它的主要任务是根据MAC地址交换数据帧,因此涵盖了数据链路层和物理层的功能。

  4. 集线器(Hub):集线器只实现了物理层功能。它将来自一个端口的数据复制到所有其他端口,没有智能地处理数据帧或地址,因此它只负责物理层的传输。

 

相关文章:

理解网络通信的基础:OSI七层模型与TCP/IP五层模型

在今天的数字化世界中,网络通信已经成为我们日常生活和商业活动的重要组成部分。为了更好地理解和管理网络通信,网络工程师和管理员使用不同的模型来组织和解释网络协议和通信过程。本文将介绍两种最重要的网络模型:OSI七层模型和TCP/IP五层模…...

Python爬虫-爬取文档内容,如何去掉文档中的表格,并保存正文内容

前言 本文是该专栏的第58篇,后面会持续分享python爬虫干货知识,记得关注。 做过爬虫项目的同学,可能或多或少爬取过文档数据,比如说“政务网站,新闻网站,小说网站”等平台的文档数据。爬取文档数据,笔者这里就不过多详述,而本文,笔者将主要介绍在爬取文档数据的过程中…...

【使用Cpolar和Qchan搭建自己的个人图床】

文章目录 前言1. Qchan网站搭建1.1 Qchan下载和安装1.2 Qchan网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar云端设置2.2 Cpolar本地设置 3. 公网访问测试总结 前言 图床作为云存储的一项重要应用场景,在大量开发人员的努力下,已经开发出大…...

flutter解决多个类名重名问题

Try using ‘as prefix’ for one of the import directives, or hiding the name from all but one of the imports. Flutter遇到这种错误,意思是你自己的import的库的类名跟一另一个导入的库,或者系统的类名名字相同.解决方法,把自己的一个类名用as 加一个前缀,使用的时候 用…...

微信小程序 按钮颜色

<button type"primary">主要按钮样式类型</button> <button type"default">默认按钮样式类型</button> <button type"warn">警告按钮样式类型</button> <view>按钮plain是否镂空</view> <bu…...

【云原生】kubectl常用命令大全

目录 一、资源管理方法 kubectl 的命令大全 二、 kubectl常用命令大全 2.2 项目的生命周期&#xff1a;创建-->发布-->更新-->回滚-->删除 1、创建 kubectl create命令 2、发布 kubectl expose命令 3、更新 kubectl set 4、回滚 kubectl rollou…...

git pull

目录 git pull 原理&#xff1a; git pull遇到问题怎么解决&#xff1a; git pull 原理&#xff1a; git pull 是 Git 版本控制系统中的一个命令&#xff0c;用于从远程存储库更新本地工作目录。它实质上是两个命令的组合&#xff1a;git fetch 和 git merge。 当你执行 gi…...

C++学习之运算符与表达式

算数运算符 基本的算数运算有加法、减法、乘法、除法和取模&#xff08;求余数&#xff09;&#xff0c;对应的算数运算符分别为&#xff1a;、-、*、/、%。至于用法&#xff0c;大家应该耳熟能详&#xff0c;这里不再过多赘述。 自增与自减运算符 运算符说明自增运算符&…...

vue使用谷歌地图实现地点查询

效果 代码 首先在index.html中引入谷歌地图资源 <script src"https://maps.googleapis.com/maps/api/js?key你的api密钥&librariesplaces"></script>页面中 <template><div class"pac-card div-style" id"pac-card"…...

前端该了解的网络知识

网络 前端开发需要了解的网络知识 URL URL(uniform resource locator,统一资源定位符)用于定位网络服务. URL是一个固定格式的字符串 它表达了: 从网络中哪台计算机(domain)中的哪个服务(port),获取服务器上资源的路径(path),以及要用什么样的协议通信(schema). 注意: 当…...

python3在虚拟环境实用vscode调试错误输出ModuleNotFoundError: No module named ‘django‘解决方法

Exception has occurred: ImportError Couldnt import Django. Are you sure its installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?File "/data/mountain-backend/src/manage.py", line 8, i…...

如何获得一个Oracle 23c免费开发者版

获取23c开发者版 简单介绍可参考这里。 获取数据库可以参考这篇文章Introducing Oracle Database 23c Free – Developer Release或这里。 Docker Image 这是最快的方法。在OCI上创建一个计算实例&#xff0c;然后就可以拉取image使用了。 docker的安装和配置不赘述了。 …...

机器学习策略二——优化深度学习系统

进行误差分析 (Carrying out error analysis) 如果你希望让学习算法能够胜任人类能做的任务&#xff0c;但你的学习算法还没有达到人类的表现&#xff0c;那么人工检查一下你的算法犯的错误也许可以让你了解接下来应该做什么。这个过程称为错误分析。 假设你正在调试猫分类器…...

Pytorch Advanced(三) Neural Style Transfer

神经风格迁移在之前的博客中已经用keras实现过了&#xff0c;比较复杂&#xff0c;keras版本。 这里用pytorch重新实现一次&#xff0c;原理图如下&#xff1a; from __future__ import division from torchvision import models from torchvision import transforms from PIL…...

英飞凌TC3xx--深度手撕HSM安全启动(三)--TC3xx HSM系统架构

今天聊TC3xx HSM系统,包括所用内核、UCB相关信息、Host和HSM交互方式。 1、HSM系统架构 下图来源于英飞凌官网培训材料。 TC3xx的HSM内核是一颗32位的ARM Cortex M3,主频可达100MHz,支持对称算法AES128、非对称算法PKC(Public Key Crypto) ECC256、Hash SHA2,以及T…...

黑马JVM总结(五)

&#xff08;1&#xff09;方法区 它是所有java虚拟机 线程共享的区&#xff0c;存储着跟类的结构相关的信息&#xff0c;类的成员变量&#xff0c;方法数据&#xff0c;成员方法&#xff0c;构造器方法&#xff0c;特殊方法&#xff08;类的构造器&#xff09; 方法区在虚拟机…...

C语言入门Day_18 判断和循坏的小结

目录 前言&#xff1a; 1.判断 2.循环 3.课堂笔记 4.思维导图 前言&#xff1a; 判断语句和循环语句都可以大致分为三个部分&#xff0c;第一个部分是固定的语法格式&#xff1b;第二部分是代码的执行顺序&#xff0c;第三部分是判断和循环成立与否的判断条件。 1.判断 1…...

mac 好用的工具推荐

mac 好用的工具推荐 落雪&#xff1a;全网的音乐畅听&#xff0c;下载地址&#xff1a;https://github.com/lyswhut/lx-music-desktopMotrix: 免费下载工具&#xff0c;下载地址&#xff1a;https://xclient.info/s/motrix.html#versionsDownie&#xff1a;视频下载工具&#x…...

星际争霸之小霸王之小蜜蜂(十二)--猫有九条命

系列文章目录 星际争霸之小霸王之小蜜蜂&#xff08;十一&#xff09;--杀杀杀 星际争霸之小霸王之小蜜蜂&#xff08;十&#xff09;--鼠道 星际争霸之小霸王之小蜜蜂&#xff08;九&#xff09;--狂鼠之灾 星际争霸之小霸王之小蜜蜂&#xff08;八&#xff09;--蓝皮鼠和大…...

【软件分析/静态分析】chapter8 课程11/12 指针分析—上下文敏感(Pointer Analysis - Context Sensitivity)

&#x1f517; 课程链接&#xff1a;李樾老师和谭天老师的&#xff1a; 南京大学《软件分析》课程11&#xff08;Pointer Analysis - Context Sensitivity I&#xff09;_哔哩哔哩_bilibili 南京大学《软件分析》课程12&#xff08;Pointer Analysis - Context Sensitivity II&…...

时间复杂度与空间复杂度详解

时间复杂度与空间复杂度详解&#x1f996; 一、算法效率1.1 如何衡量一个算法的好坏1.2 算法的复杂度 二、时间复杂度2.1 时间复杂度的定义2.2 大O的渐进表示法2.3 如何记录表示算法复杂度 三、空间复杂度3.1 空间复杂度的定义3.2 小试牛刀 一、算法效率 1.1 如何衡量一个算法…...

目录操作函数

mkdir函数 rmdir函数 删除空目录 rename函数 换名 chdir函数 修改当前的工作目录 getcwd函数 获取当前工作的路径...

PlantUML入门教程:画时序图

软件工程中会用到各种UML图&#xff0c;例如用例图、时序图等。那我们能不能像写代码一样去画图呢&#xff1f; 今天推荐一款软件工程师的作图利器--PlantUML&#xff0c;它能让你用写代码的方式快速画出UML图。 一、什么是PlantUML&#xff1f; PlantUML是一个允许你快速作出…...

C#范围运算符

C#8.0语法中&#xff0c;范围运算符是一种用于快速截取序列的运算符&#xff0c;其语法为 “start…end”&#xff0c;表示从序列的 “start” 索引处开始&#xff0c;一直截取到"end" 索引处为止&#xff08;包括 “end” 索引处的元素&#xff09;。范围运算符主要…...

云数据库知识学习——云数据库产品、云数据库系统架构

一、云数据库产品 1.1、云数据库厂商概述 云数据库供应商主要分为三类。 ① 传统的数据库厂商&#xff0c;如 Teradata、Oracle、IBM DB2 和 Microsoft SQL Server 等。 ② 涉足数据库市场的云供应商&#xff0c;如 Amazon、Google、Yahoo!、阿里、百度、腾讯…...

C++中引用详解!

前言&#xff1a; 本文旨在讲解C中引用的相关操作&#xff0c;以及引用的一些注意事项&#xff01;搬好小板凳&#xff0c;干货来了&#xff01; 引用的概念 何谓引用呢&#xff1f;引用其实很容易理解&#xff0c;比如李华这个同学&#xff0c;他因为很调皮&#xff0c;所以…...

VUE3+TS项目无法找到模块“../version/version.js”的声明文件

问题描述 在导入 ../version/version.js 文件时&#xff0c;提示无法找到模块 解决方法 将version.js改为version.ts可以正常导入 注意&#xff0c;因为version.js是我自己写的模块&#xff0c;我可以直接该没有关系&#xff0c;但是如果是引入的其他的第三方包&#xff0c…...

数据结构-堆的实现及应用(堆排序和TOP-K问题)

数据结构-堆的实现及应用[堆排序和TOP-K问题] 一.堆的基本知识点1.知识点 二.堆的实现1.堆的结构2.向上调整算法与堆的插入2.向下调整算法与堆的删除 三.整体代码四.利用回调函数避免对向上和向下调整算法的修改1.向上调整算法的修改2.向下调整算法的修改3.插入元素和删除元素函…...

Spring 条件注解没生效?咋回事

条件注解相信各位小伙伴都用过&#xff0c;Spring 中的多环境配置 profile 底层就是通过条件注解来实现的&#xff0c;松哥在之前的 Spring 视频中也有和大家详细介绍过条件注解的使用&#xff0c;感兴趣的小伙伴戳这里&#xff1a;Spring源码应该怎么学&#xff1f;。 从 Spr…...

96. 不同的二叉搜索树

class Solution { public:int numTrees(int n) {if (n0) {return 1;}vector<int> dp(n1, 0);dp[0] 1;dp[1] 0;for (int i 1; i < n; i) {for (int j 0; j < i; j) {dp[i] dp[j] * dp[i - 1 - j];}}return dp[n];} };...

网站建设合同.doc/有创意的营销案例

guan大数据挖掘最深入人心的一个故事应该是“啤酒与尿布”&#xff0c;这个规律就是用关联分析发现的。今天我们就来点关联分析&#xff0c;刚刚学到的&#xff0c;现学现分享?。下面假设是某超市的交易记录&#xff08;我编造的&#xff09;基本概念我们在关联分析之前先了解…...

网站建设预算表/公司推广渠道

转自&#xff1a;http://www.yopoing.com/2011/12/secret_sql_database_performance_optimization_techniques_to_improve/ 这篇文章是以 MySQL 为背景&#xff0c;很多内容同时适用于其他关系型数据库&#xff0c;需要有一些索引知识为基础,重点讲述如何优化SQL&#xff0c;来…...

四川杰新建设工程网站/培训课程有哪些

平时我们在使用git的时候&#xff0c;很少去关注其配置是如何&#xff0c;而在实际开发中&#xff0c;对git config这个命令的使用也并不是很多&#xff0c;但是配置对一个程序和项目来说都是很重要的&#xff0c;我们今天来看看git的配置以及git config的初步应用。 1. git co…...

知名营销网站/如何让别人在百度上搜到自己公司

在一个排列中&#xff0c;如果一对数的前后位置与大小顺序相反&#xff0c;即前面的数大于后面的数&#xff0c;那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。一个排列中所有逆序总数叫做这个排列的逆序数。也就是说&#xff0c;对于n个不同的元素&am…...

怎么建一个网站卖东西/百度权重划分等级

这两天收集到了些象棋的残局棋谱。中国象棋有名的排局之首&#xff1a;《七星聚会》&#xff0c;排法图和解法如下&#xff1a;《七星聚会》解法&#xff1a;&#xff08;红和&#xff09; &#xff11;、炮二平四  卒&#xff15;平&#xff16;   &#xff12;、兵四…...

盘锦做网站价格/营销案例分析

概念Java中数组属于引用类型。数组使用场合较多&#xff0c;对于数组的操作具有一定重复性&#xff0c;例如&#xff1a;数组拷贝&#xff0c;转换字符串&#xff0c;转换成数组&#xff0c;排序等等。既然重复的操作与需求多&#xff0c;那么对于数组操作的支持就成了JDK中的一…...