网络协议栈和os的关系(网络协议栈和计算机体系结构图相结合),用户如何从网络获取数据+本质,简述网络通信的本质

news/发布时间2024/9/20 8:15:53

目录

网络协议栈和os的关系

思考联系

实际

用户从网络获取数据的过程

本质

如何获取 -- 系统调用

图示 

不同的os

网络通信的本质

两台主机通信流程


网络协议栈和os的关系

思考联系

网络协议栈涵盖了硬件和软件,而os正是管理软硬件资源的中枢

os是计算机体系结构的一部分,计算机体系结构中也囊括了软硬件:

如果我们将网络协议栈和体系结构图对比着一起看

  • 硬件层正好和底层硬件中的网卡相匹配
  • 而数据链路层正好是软硬件的分界线,它必然和驱动程序有着异曲同工之妙
  • 恰好,再上两层(运输层,网络层)被写在了os中,是os的一部分
  • 到了最上层的应用层,也与用户部分匹配,用户看到的正是经过应用层处理过的数据

实际

而实际上的情况也和我们的想法一致

  • 用户从网络上获取数据,都是通过网卡这个硬件设备得到的
  • 数据链路层属于网卡驱动的一部分
  • 传输层和网络层是真正在os中实现的模块,是os的一部分(所以学习了文件管理/进程管理,其实也就学习了这两层是如何运作的,原理都大差不差)

当然,网络协议栈里不只有这些与计算机体系结构相对应 

用户从网络获取数据的过程

本质

用户从网络上获取数据,都通过网卡这个硬件设备 (网卡将用户请求传输给远端服务器,再将返回的数据上传到本地主机)

  • 所以,[用户从网络上获取数据]的过程,本质就是在访问硬件(是一种基于网络的输入/输出操作)
  • 之前我们梳理过的,使用printf函数实际是在访问显示器,使用文件操作接口实际是访问硬盘,这些操作本质上都是一样的

如何获取 -- 系统调用

由于用户无法直接操作硬件,硬件是由os管理的,但os不允许用户直接访问其内部(安全性问题)

  • 所以需要让用户给os发送请求,然后os进行相应操作
  • 既然用户有了需求,那么os自然要为我们提供服务
  • 用户需要向os发送请求,怎么发送呢? -- 也就是os为我们提供系统调用接口
  • (这是不是就和之前学其他硬件是一样的?都需要系统调用这个中间介质)
  • 所以,网络协议栈中也会使用系统调用接口

然后开发者会基于这些系统调用,制定出非常多的应用层协议供用户使用

图示 

可以看出来,网络协议栈和操作系统密切相关

  • 网络协议栈是一组协议的层次结构,用于在计算机网络中进行通信
  • 而操作系统提供了网络协议栈的实现和支持

不同的os

从图中我们也可以看出来,两者虽然互相协作,但网络功能的实现并不关心实际计算机的结构如何实现

  • 比如,是否有独立线程结构/是否有图形界面
  • osi模型是一个标准,它既然已经定下了,肯定不是只适用于一种操作系统,对linux/windows等os都是一视同仁的
  • 无论他们内部是如何实现的,网络协议栈都必须是相同的,否则该操作系统无法联网

 

网络通信的本质

两台主机通信流程

基于上面的图,我们可以简述一下两台主机是如何通信的:

  • 两台主机在通信时,从一方主机的用户层开始向下传输数据,一直到网卡,然后网卡间通信,对方的网卡再将接收到的数据向上传输到用户层
  • 和打电话的例子相同 -- 在逻辑上,相同层之间都认为是在互相直接通信(因为相同层使用的协议是一样的,同层间可以正常通信,在逻辑上,不同层无法交流)
  • 而两台主机上遵守相同的网络协议栈,所以每一层都可以完美匹配
  • 所以,上面那一系列过程,都是可以正常完成的
  • 总结 -- 网络通信的本质就是贯穿协议栈的过程(只是方向有两个而已)

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

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

相关文章

sqlserver保存微信Emoji表情

首先将数据库字段,设置类型为 nvarchar(200)一个emoji表情,占4字节就可以了,web前端展示不用改任何东西,直接提交数据保存;回显也会没有问题,C#代码不用做任何处理; 不哭不闹要睡觉&#x1f31…

AWS 认证报名考试流程

AWS认证的考试包括,可以申请线上或者线下考试。 考试类型 线上: 优点:方便快捷无需通勤,随时约随时考,基本上每天都可以 缺点:对环境要求较高,屋子里只能有自己,而且不能有其他声音…

WordPress分类目录ID怎么看?如何查找WordPress标签ID?

在WordPress网站中,我们需要判断某篇文章是否属于某个分类目录,或者是否拥有某个标签,那么就需要用到分类目录ID和标签ID,那么WordPress分类目录ID怎么看?如何查找WordPress标签ID?下面boke112百科就跟大家…

Java基于springboot的厨艺交流平台的设计与实现代码

摘 要 使用旧方法对厨艺交流信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在厨艺交流信息的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。 这次开发的厨艺交流平台功…

Office/WPS 好用的PPT插件-智能选择布局

软件介绍 PPT大珩助手是一款全新设计的Office PPT插件,它是一款功能强大且实用的PPT辅助工具,能够轻松帮助您修改、优化和管理幻灯片。凭借丰富的功能和用户友好的界面,PPT大珩助手能够助力您打造出精美而专业的演示文稿。我们致力于为用户提…

如何利用Flutter来写后端 服务端应用

前言 Flutter是谷歌推出的一款跨平台开发框架,现在属于此领域star最多的框架,其被广泛应用于构建前台界面,但或许很少人知道,他也可以写后端应用。 本文主角 flutter非常著名的getx库推出的get server jonataslaw/get_server:…

idea使用maven创建springboot项目

按照图片中的流程来,就可以创建springboot项目,我这个主要是想做一个JavaWeb项目 有用的话,点个小赞赞再走呀~

【STM32】江科大STM32学习笔记汇总(50)

00. 目录 文章目录 00. 目录01. STM32学习笔记汇总02. 相关资料下载03. 附录 01. STM32学习笔记汇总 【STM32】STM32学习笔记-课程简介(01) 【STM32】STM32学习笔记-STM32简介(02) 【STM32】STM32学习笔记-软件安装(03) 【STM32】STM32学习笔记-新建工程(04) 【STM32】STM…

day08_分类品牌管理商品规格管理商品管理

文章目录 1 分类品牌管理1.1 菜单添加1.2 表结构介绍1.3 页面制作1.4 品牌列表加载1.4.1 后端接口BrandControllerBrandServiceBrandMapperBrandMapper.xml 1.4.2 前端对接brand.jscategoryBrand.vue 1.5 分类数据加载1.6 列表查询1.6.1 需求说明1.6.2 后端接口需求分析Categor…

亿道信息轻工业三防EM-T195,零售、制造、仓储一网打尽

厚度仅10.5mm,重量仅0.65千克的EM-T195,其紧凑而纤薄的设计为以往加固型平板带来了全新的轻薄概念。尽管设计时尚、轻薄,但经过军用认证的强固性仍然能够承受所有具有挑战性的环境条件。随身携带无负担的轻便性加上抗震功能使其成为餐厅、酒店…

人脸识别技术应用哪些地方?

人脸识别技术,作为现代科技的一大突破,已经在众多领域找到了应用之地。从公共安全到商业营销,从医疗健康到教育娱乐,人脸识别技术以其独特的优势,正在逐渐改变我们的生活方式。 在公共安全领域,人脸识别技术…

鸿蒙 渲染控制

前提:基于官网3.1/4.0文档。参考官网文档 基于Android开发体系来进行比较和思考。(或有偏颇,自行斟酌) 1.概念 ArkUI通过自定义组件的build()函数和builder装饰器中的声明式UI描述语句构建相应的UI。在声明式描述语句中开发者除了…

npm与包

包 包的概念 Node.js中的第三方模块又叫做包。包的来源 由第三方个人或团队开发出来的,免费提供给所有人使用。为什么需要包 由于Node.js内置模块仅提供了一些底层的API,导致在基于内置模块进行项目开发时,效率很低。包是基于内置模块封装出…

Vue.js的双向绑定原理

Vue的双向绑定 vue双向绑定是其最重要的核心亮点,其原理也很简单,这里做个简单总结 vue2的双向绑定是利用的Object.definePropertyvue3的双向绑定是利用的 ES6Porxy中的defineProperty(target, propKey, propDesc 其作用类似于Object.defineProperty …

【脑切片图像分割】MATLAB 图像处理 源码

1. 简单图像处理 加载图像 Brain.jpg,使用直方图和颜色分割成区域这些区域有不同的颜色。 这是一个更高级的问题,有多个解决它的方法。 例如,您可以计算具有特定数字的图像的直方图(例如 16 - 32),找到直方…

在 Rust 中实现 TCP : 1. 联通内核与用户空间的桥梁

内核-用户空间鸿沟 构建自己的 TCP栈是一项极具挑战的任务。通常,当用户空间应用程序需要互联网连接时,它们会调用操作系统内核提供的高级 API。这些 API 帮助应用程序 连接网络创建、发送和接收数据,从而消除了直接处理原始数据包的复杂性。…

SpringBoot底层原理

SpringBoot底层原理 一 配置优先级 1.配置方式 Springboot中支持三种配置方式,分别为: application.propertiesapplication.ymlapplication.yaml 2.配置优先级 当存在多份配置文件时,配置文件会按照它们的优先级生效。 优先级从高到底…

uniapp 编译微信小程序的离谱报错

上图: 如图所示:在同一个元素上同时出现了 wx:if 和 wx:else 就很离谱

LeetCode215.数组中的第K个最大元素

题目 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 输入: [3,2,1,5,6,4], …

RISC-V特权架构 - 机器模式下的异常处理

RISC-V特权架构 - 机器模式下的异常处理 1 进入异常1.1 从mtvec 定义的PC 地址开始执行1.2 更新CSR 寄存器mcause1.3 更新CSR 寄存器mepc1.4 更新CSR 寄存器mtval1.5 更新CSR 寄存器mstatus 2 退出异常2.1 从mepc 定义的PC 地址开始执行2.2 更新CSR 寄存器mstatus 3 异常服务程…
推荐文章