计算机网络 | I/O模型、网络模型(OSI七层及TCP/IP四层)

news2024/11/25 1:01:19

在这里插入图片描述

欢迎关注博主 Mindtechnist 或加入【Linux C/C++/Python社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。


I/O模型、网络模型

  • I/O模型
    • 阻塞I/O
    • 非阻塞I/O
    • I/O复用
    • 信号驱动I/O
    • 异步I/O
  • 网络模型
    • OSI七层模型
    • TCP/IP四层模型


专栏:《网络编程》


I/O模型

阻塞I/O

在这里插入图片描述

①当上层应用app1调用recv系统调用时,如果对等方没有发送数据(缓冲区没有数据),上层应用app1将阻塞(默认行为,被linux内核阻塞);
②当对等方发送了数据,linux内核recv端缓冲区,有数据后,内核会把数据copy给用户空间。然后上层应用app1解除阻塞,执行下一步操作。

非阻塞I/O

在这里插入图片描述

①上层应用程序app2将套接字设置成非阻塞模式。
②上层应用程序app2轮询调用recv函数,接受数据。若缓冲区没有数据,上层程序app2不会阻塞,recv返回值为-1,错误码是EWOULDBLOCK
③上层应用程序不断轮询有没有数据到来。会造成上层应用忙等待。大量消耗CPU。很少直接用。应用范围小,一般和selectIO复用配合使用。

I/O复用

在这里插入图片描述

①上层应用程序app3调用select机制(该机制有linux内核支持,避免了app3忙等待。),进行轮询文件描述符的状态变化。
②当select管理的文件描述符没有数据(或者状态没有变化时),上层应用程序app3也会阻塞。
③好处select机制可以管理多个文件描述符
select可以看成一个管理者,用select来管理多个IO
一旦检测到的一个I/O或者多个IO,有我们感兴事件,发生,select函数将返回,返回值为检测到的事件个数。进而可以利用select相关api函数,操作具体事件。
select函数可以设置等待时间,避免了上层应用程序app3,长期僵死。
⑥和阻塞IO模型相比,selectI/O复用模型相当于提前阻塞了。等到有数据到来时,再调用recv就不会发生阻塞。整个系统性(applinux内核协议栈配合更好了)能优化、提供了。

信号驱动I/O

在这里插入图片描述

① 上层应用程序app4建立SIGIO信号处理程序。当缓冲区有数据到来,内核会发送信号告诉上层应用程序app4。
②上层应用程序app4接收到信号后,调用recv函数,因缓冲区有数据,recv函数一般不会阻塞。
③这种用于模型用的比较少,属于典型的“拉模式”。即:上层应用app4,需要调用recv函数把数据拉进来。

异步I/O

在这里插入图片描述

①上层应用程序app5调用aio_read函数,同时提交一个应用层的缓冲区buf;调用完毕后,不会阻塞。上层应用程序app5可以继续其他任务。
②当tcpip协议缓冲区有数据时,linux主动的把内核数据copy到用户空间。然后再给上层应用app5发送信号;告诉app5数据有了,赶快处理吧。
③典型的“推模式”。
④ 效率最高的一种形式,上层应用程序app5有异步处理的能力(在linux内核的支持下,言外之意:处理其他任务的同时,也可支持IO通讯)。

...

网络模型

OSI七层模型

OSI模型

物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
数据链路层:定义了如何让格式化数据以帧为单位进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。如:串口通信中使用到的115200、8、N、1
网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。
传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。
会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。
表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。
应用层:是最靠近用户的OSI层。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。

TCP/IP四层模型

TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。如下图所示:

TCP/IP模型

一般在应用开发过程中,讨论最多的是TCP/IP模型。

应用层 —— telent ftp 
传输层 —— tcp udp 
网络层 —— ip
链路层 —— mac 

在这里插入图片描述
在这里插入图片描述


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

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

相关文章

Python快速实现网页工具的利器

Python快速实现网页工具的利器 Streamlit是一个基于Python的Web应用程序开发框架,它具有快速开发、交互式、易于使用等特点。使用Streamlit,开发者可以很容易地将Python代码转换为漂亮的、交互式的Web应用程序,无需繁琐的前端开发经验。 如果…

什么是浪涌保护器SPD

浪涌保护器(SPD),也称为电涌保护器,是为各种电子设备,仪器和通信线路提供安全保护的电子设备。当由于外部干扰在电路或通信电路中突然产生尖峰电流或电压时,浪涌保护装置可以在很短的时间内传导和分流&…

设计模式之~策略模式

策略模式(Strategy): 它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。 结构图: 实例: 优点: 策略模式…

MySQL行锁浅析

概述 MySQL是非常流行的关系型数据库,许多系统都使用它来存储和管理数据。在高并发环境下,为了保证数据的一致性和可靠性,数据库需要实现并发控制,其中包括锁机制。MySQL提供了两种锁类型,一种是表级锁,另…

Java遍历Map集合,获取key、value等方式

首先构建一个Map集合&#xff1a; Map<String, Integer> buynew HashMap<>();buy.put("苹果手机", 2);//添加键值对buy.put("智能手表", 1);buy.put("java书", 1);buy.put("c语言书", 1);buy.put("西瓜", 2);打…

Git已经在本地提交过文件了,但又给撤销了,恢复已经撤销的内容

Git&#xff0c;我已经在本地提交过文件了&#xff0c;也就是已经执行了git commit -m "xxx"&#xff0c;但提交完之后又给撤销了&#xff0c;撤销的还能回来嘛&#xff1f; 这种情况仍然有机会恢复它。撤销提交的方法取决于你撤销提交的方式。 说白了就是&#xff0…

背景 | 基于 Transformers 的编码器-解码器模型

!pip install transformers4.2.1 !pip install sentencepiece0.1.95 Vaswani 等人在其名作 Attention is all you need 中首创了 基于 transformer 的编码器-解码器模型&#xff0c;如今已成为自然语言处理 (natural language processing&#xff0c;NLP) 领域编码器-解码器架构…

深度解读生命周期函数

目录 前言什么是生命周期&#xff1f;生命周期的流程创建组件初始化事件和生命周期初始化组件判断渲染结构的数据与模板生成HTML结构渲染HTML结构数据更新初步销毁组件销毁组件 生命周期函数beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeDestroydestroyed 前…

视觉SLAM数据集(二):EuRoC DataSet

本文展示了在微型飞行器&#xff08;MAV&#xff09;上收集的视觉惯性数据集。数据集包含立体图像、同步 IMU 测量以及精确的运动和结构地面实况。 这些数据集发表于&#xff1a;M. Burri&#xff0c;J. Nikolic&#xff0c;P. Gohl&#xff0c;T. Schneider&#xff0c;J. Reh…

运维监控Zabbix部署——详细图文讲解

运维监控Zabbix部署 简介 Zabbix 由 Alexei Vladishev 创建&#xff0c;目前由其成立的公司—— Zabbix SIA 积极的持续开发更新维护&#xff0c; 并为用户提供技术支持服务。 Zabbix 是一个企业级分布式开源监控解决方案。 Zabbix 软件能够监控众多网络参数和服务器的健康…

StarRocks案例2: 升级后性能变慢

文章目录 一. 问题描述二. 解决方案2.1 从慢查询定位2.2 定位CPU解析时间就的问题 一. 问题描述 2023-05-18 将StarRocks从2.3.0升级到2.5.5。 升级完成后&#xff0c;所有的查询均比较慢&#xff0c;前端报表页面点开也卡。 二. 解决方案 2.1 从慢查询定位 StarRocks慢查询…

智慧档案馆十防一体化建设主要设计依据

1、《中华人民共和国档案法》 2、《中华人民共和国档案实施办法》 3、GB/T 9386-1988《计算机软件测试文件编制规范》 4、GB/T 15532-1995《计算机软件单元测试规范》 5、GB/T 30961-2014 嵌入式软件质量度量 6、GB2421-89 电工电子产品基本环境试验规程 7、GB16796-2009…

阿里影业业绩:2023财年经调整EBITA盈利2.95亿元,同比增加106%

今年以来&#xff0c;社会经济加速恢复&#xff0c;影视业也在加速抓住市场机遇&#xff0c;走进电影院的佳作和消费者都在顺势增长。 5月31日&#xff0c;阿里影业&#xff08;01060&#xff09;发布2022/23财年业绩&#xff0c;得益于业务结构的多样化建设及运营效率的持续提…

调试代码可能会成为潜在的安全漏洞

有时候&#xff0c;我们不得不开发一些所谓的”调试用”代码。 但是&#xff0c;不要忘记了&#xff0c;虽然这些调试代码只是用来调试的&#xff0c;但是并不意味着我们就可以忽略掉安全性。 我记得&#xff0c;曾经有一位客户问过如下的问题&#xff1a; 我们正在开发一个后…

一文带你搞懂防盗链

防盗链 举个例子。我们平时在网上看到图片&#xff0c;觉得不错&#xff0c;想要复制地址。有的复制地址后我们可以拿来用&#xff0c;但是有的&#xff0c;就算是复制地址&#xff0c;用到我们自己的img上&#xff0c;还是没效果。 原因是&#xff0c;有的图片所在服务有自己…

跨境电商客户服务五步法

互联网技术的革新与升级对商务客服产生了巨大的影响&#xff0c;过去由在线客服与客户直接电联的单一服务形式被全渠道客服系统所替代。在电子商务时代&#xff0c;商家与客户之间的互动变得尤为重要&#xff1a;一方面&#xff0c;卖家通过分析客户喜好及消费趋向来针对性处理…

WhatsApp-跨境电商必争之地

作为世界上最受欢迎的即时通讯软件&#xff0c;WhatsApp在全球拥有超过20亿的月活跃用户&#xff0c;覆盖180多个国家&#xff0c;每天通过WhatsApp发送的消息数量超过了1000亿条。作为中国企业出海的热门国家&#xff0c;印度、巴西、美国、印尼...同时也是WhatsApp受众排名前…

数据在内存中的存储(2)——浮点数

目录 1、什么是浮点数 2、浮点数与整数存储方式相同吗&#xff1f; 3、浮点数的存储规则 3.1 、国际标准IEEE&#xff08;电气和电子工程协会&#xff09; 754 3.2、IEEE 754规定&#xff1a; 3.3、IEEE 754对有效数字M的规定。 3.4、IEE 754对有效数字E的规定 E不全为0或不全…

Day58【单调栈】739.每日温度、496.下一个更大元素 I

739.每日温度 力扣题目链接/文章讲解 视频讲解 暴力解法很容易想到。外层 for 遍历填充 answer&#xff0c;内层 for 针对每一天去寻找下一个更高温度 直接超时 本题可以采用单调栈解决&#xff01; 什么是单调栈&#xff1f; 从名字上就听的出来&#xff0c;单调栈中…

创建型设计模式05-抽象工厂模式

✨作者&#xff1a;猫十二懿 ❤️‍&#x1f525;账号&#xff1a;CSDN 、掘金 、个人博客 、Github &#x1f389;公众号&#xff1a;猫十二懿 抽象工厂模式 1、抽象工厂模式介绍 抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;是一种创建型设计模式&#x…