自己做文字壁纸的网站/搜狗站长

自己做文字壁纸的网站,搜狗站长,什么app推广佣金多,怎么做微信公众号小程序网络协议栈的位置 用户在应用层的各种请求最终会下达给操作系统,操作系统内除了进程管理、文件管理、内存管理、驱动管理之外,还有一个内嵌的软件协议栈,协议栈将用户的数据进行各种封包后,通过网卡将数据传递到网络当中&#xf…

网络协议栈的位置

用户在应用层的各种请求最终会下达给操作系统,操作系统内除了进程管理、文件管理、内存管理、驱动管理之外,还有一个内嵌的软件协议栈,协议栈将用户的数据进行各种封包后,通过网卡将数据传递到网络当中,数据在网络内部经过各种路由转发,最终将数据传送到了目标服务器。

网络协议栈各部分所处位置:

应用层是位于用户层的。 这部分代码是由网络协议的开发人员来编写的,比如HTTP协议、HTTPS协议以及SSH协议等。
传输层和网络层是位于操作系统层的。 其中传输层最经典的协议叫做TCP协议,网络层最经典的协议叫做IP协议,这就是我们平常所说的TCP/IP协议。
数据链路层是位于驱动层的。 其负责真正的数据传输。

网络协议栈中各层的功能

  1. 物理层
    传输原始比特流(0/1),定义电压、光信号等物理特性。

  2. 数据链路层
    节点间帧传输(如 MAC 地址),错误检测(CRC 校验),控制物理层访问。(负责数据真正的发送过程)

  3. 网络层
    IP 地址寻址与路由选择(如路由器跨网络转发数据包)。(发去哪)

  4. 传输层
    端到端可靠传输(TCP)或快速传输(UDP),通过端口号区分应用。

  5. 应用层
    为应用程序提供协议(HTTP/FTP/DNS 等),直接处理用户数据

    • 层状结构的本质是软件工程上面的解耦,此时层与层之间只有接口的相互调用关系,此时我们就可以让研究不同领域的开发人员编写不同层的代码,最后再将各层的代码联调起来,由于每一层的代码都是对应领域的专业人员编写的,因此代码联调后整体的性能也是很高的。

      并且这样的层状结构可以增加代码的可维护性和可扩展性。比如有一天你觉得数据链路层的代码已经无法承担起通信的能力了,那么此时我们就可以用一个新的协议对它进行替换,而其他各层对应的协议都不用换,这就叫做可扩展性。而如果协议栈的某一层出现了问题,我们只要确定了是哪一层出了问题,就可以直接去对应层去找问题,这就叫做代码的可维护性。

      1. MAC 地址 

        • 定义:唯一标识网络设备的物理地址,固化在网卡中,格式为00:1A:2B:3C:4D:5E(6 字节)。
        • 作用:在局域网(如以太网)中直接定位设备,数据链路层通过 MAC 地址实现设备间帧的精确投递。
        • 特点
          • 前 3 字节为厂商标识(由 IEEE 分配),后 3 字节由厂商自定义。
          • 用于交换机 / 路由器转发数据时构建 MAC 地址表。
        • CRC 校验(循环冗余校验)
        • 定义:一种数据链路层的错误检测技术,通过数学算法生成校验码,附加到数据帧尾部。
        • 原理:发送方用生成多项式(如 CRC-32)计算数据的余数作为校验值;接收方重新计算并比对,不一致则判定数据损坏。
        • 特点
          • 检测能力极强(如 CRC-32 可检测所有≤32 位的突发错误)。
          • 仅用于检错,不纠错(发现错误后直接丢弃帧,触发重传)。
      #include <iostream>
      #include <vector>// 计算 CRC-16 校验值
      uint16_t crc16(const std::vector<uint8_t>& data) {const uint16_t polynomial = 0x8005;uint16_t crc = 0xFFFF;for (uint8_t byte : data) {crc ^= static_cast<uint16_t>(byte) << 8;for (int i = 0; i < 8; ++i) {if (crc & 0x8000) {crc = (crc << 1) ^ polynomial;} else {crc <<= 1;}}}return crc;
      }int main() {std::vector<uint8_t> data = {0x01, 0x02, 0x03, 0x04};uint16_t result = crc16(data);std::cout << "CRC-16 校验值: 0x" << std::hex << result << std::endl;return 0;
      }    

      不同协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧

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

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

      相关文章

      C++之list类(超详细)

      在上一节中我们学习了STL中的vector这个容器&#xff0c;这节我们来学习一下另外一个常用的容器——list。 文章目录 前言 一、list的介绍 二、list的使用及相关接口 1.list的使用 2.list的迭代器使用 3.list的相关接口 3.1 list capacity 3.2 list element access 3.3…

      mysql、oracle、SQLserver之间的区别和优势

      MySQL、Oracle和SQL Server都是常见的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它们在某些方面有一些区别和优势。 MySQL&#xff1a; MySQL是一种开源的RDBMS&#xff0c;由Oracle公司开发和维护。它具有快速、稳定和易于使用的特点。MySQL适用于中小型…

      75.HarmonyOS NEXT ImageItemView组件深度剖析:手势交互与动画实现(二)

      温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; HarmonyOS NEXT ImageItemView组件深度剖析&#xff1a;手势交互与动画实现(二) 一、手势系统架构 .gesture(GestureGroup(GestureMode.Exclusiv…

      Qt 控件概述 QWdiget

      Qt为我们提供了很多控件&#xff0c;这些控件拿过来就可以使用 目录 QWidget 属性 WindowFrame的影响 QWidget Qt中所有的组件都是继承自QWidget Qt Creator中的右侧可以看到QWidget的各种属性 其中各种属性都可以在Qt文档中找到说明 ​ 属性 enabled&#xff1a;描述该组…

      适合企业内训的AI工具实操培训教程(37页PPT)(文末有下载方式)

      详细资料请看本解读文章的最后内容。 资料解读&#xff1a;适合企业内训的 AI 工具实操培训教程 在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;技术迅速发展&#xff0c;深度融入到各个领域&#xff0c;AIGC&#xff08;人工智能生成内容&#xff09;更是成…

      Spring Boot对接twilio发送邮件信息

      要在Spring Boot应用程序中对接Twilio发送邮件信息&#xff0c;您可以使用Twilio的SendGrid API。以下是一个简单的步骤指南&#xff0c;帮助您完成这一过程&#xff1a; 1. 创建Twilio账户并获取API密钥 注册一个Twilio账户&#xff08;如果您还没有的话&#xff09;。在Twi…

      【最后203篇系列】015 几种消息队列的思考

      背景 队列还是非常重要的中间件&#xff0c;可以帮助我们&#xff1a;提高处理效率、完成更复杂的处理流程 最初&#xff0c;我觉得只要掌握一种消息队列就够了&#xff0c;现在想想挺好笑的。 过去的探索 因为我用python&#xff0c;而rabbitmq比较贴合快速和复杂的数据处…

      TensorFlow 与 TensorFlow Lite:核心解析与层应用

      1. 引言 TensorFlow 是 Google 开发的开源机器学习框架&#xff0c;支持从数据预处理、模型训练到推理部署的完整生命周期。然而&#xff0c;在嵌入式和移动设备上&#xff0c;原生 TensorFlow 过于庞大&#xff0c;因此 Google 推出了轻量级版本——TensorFlow Lite&#xff…

      DeepSeek大模型在政务服务领域的应用

      DeepSeek大模型作为国产人工智能技术的代表&#xff0c;近年来在政务服务领域的应用呈现多点开花的态势。通过多地实践&#xff0c;该技术不仅显著提升了政务服务的效率与智能化水平&#xff0c;还推动了政府治理模式的创新。以下从技术应用场景、典型案例及发展趋势三个维度进…

      电子电气架构 --- 分布到集中的动カ系统及基于域控制器的架构

      我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所有人的看法和评价都是暂时的,只有自己的经历是伴随一生的,几乎所有的担忧和畏惧,都是来源于自己的想象,只有你真的去做了,才会发现有多快乐。…

      深入理解C/C++堆数据结构:从原理到实战

      一、堆的本质与特性 1.1 什么是堆数据结构&#xff1f; 堆&#xff08;Heap&#xff09;是一种特殊的完全二叉树&#xff0c;它满足以下核心性质&#xff1a; 堆序性&#xff1a;每个节点的值都满足特定顺序关系 结构性&#xff1a;完全二叉树的结构特性&#xff08;除最后一…

      Python学习第十七天

      Django框架-SQLite3 介绍 Django内置了对 SQLite3 数据库的支持。SQLite3 是一个轻量级的嵌入式数据库引擎&#xff0c;非常适合开发、测试和小型项目。以下是关于 Django 中 SQLite3 的介绍和应用指南。&#xff08;除了这些还支持mysql、oracle以及其他查询文档&#xff0c;…

      Docker 》》Docker Compose 》》network 网络 compose

      docker 默认的网络 三种模式 # 列出所有当前主机上或Swarm集群上的网络 docker network ls#查看网络详情 docker network inspect network名称# 清除未使用的docker网络 docker network prune -f# 创建网络 ocker network create -d bridge 网络名称 docker network create –s…

      Python数字信号处理之最佳等波纹滤波器阶数估计原理

      Matlab中的阶数估计函数 在MATLAB中&#xff0c;使用firpmord函数可以估算等波纹FIR滤波器的最小阶数。该方法基于Parks-McClellan算法&#xff0c;通过通带和阻带的频率边界、幅度响应及允许的最大误差来自动计算参数。 rp 3; % Passband ripple in dB rs 40; …

      JumpServer基础功能介绍演示

      堡垒机可以让运维人员通过统一的平台对设备进行维护&#xff0c;集中的进行权限的管理&#xff0c;同时也会对每个操作进行记录&#xff0c;方便后期的溯源和审查&#xff0c;JumpServer是由飞致云推出的开源堡垒机&#xff0c;通过简单的安装配置即可投入使用&#xff0c;本文…

      Android LeakCanary 使用 · 原理详解

      一、简介 LeakCanary 是 Square 公司开源的 Android 内存泄漏检测工具&#xff0c;通过自动化监控和堆转储分析&#xff0c;帮助开发者快速定位内存泄漏根源。其核心设计轻量高效&#xff0c;已成为 Android 开发中必备的调试工具。 二、使用方式 1. 集成步骤 在项目的 buil…

      每日一题---dd爱框框(Java中输入数据过多)

      dd爱框框 实例&#xff1a; 输入&#xff1a; 10 20 1 1 6 10 9 3 3 5 3 7 输出&#xff1a; 3 5 这道题要解决Java中输入的数过多时&#xff0c;时间不足的的问题。 应用这个输入模板即可解决&#xff1a; Java中输入大量数据 import java.util.*; import java.io.*;pu…

      redis部署架构

      一、redis多实例部署 实例1 安装目录&#xff1a;/app/6380 数据目录&#xff1a;/app/6380/data 实例2 安装目录&#xff1a;/app/6381 数据目录&#xff1a;/app/6381/data 1、创建实例安装目录 2、拷贝实例的配置文件 3、编辑实例的配置文件 第…

      面试vue2开发时怎么加载编译速度(webpack)

      可以输入命令获取默认 webpack 设置 vue inspect > set.js 1.使用缓存 configureWebpack: {cache: {type: filesystem, // 使用文件系统缓存类型buildDependencies: {config: [__filename] // 缓存依赖&#xff0c;例如webpack配置文件路径}}}, 2.启用 vue-loader (测试明…

      深度学习-服务器训练SparseDrive过程记录

      1、cuda安装 1.1 卸载安装失败的cuda 参考&#xff1a;https://blog.csdn.net/weixin_40826634/article/details/127493809 注意&#xff1a;因为/usr/local/cuda-xx.x/bin/下没有卸载脚本&#xff0c;很可能是apt安装的&#xff0c;所以通过执行下面的命令删除&#xff1a; a…