简单理解TCP/IP协议栈

2023-05-16

 

协议定义的是一系列的通信标准, 通信双方需要共同按照这一标准进行正常的数据收发;信的双方需要共同按照这一个标准进行正常的数据收发;(两人,说共同的语言,不然不能交流,一个听不懂外语的和说外语的交流)

协议栈是协议的具体实现形式, 通俗的理解就是用代码实现的函数库, 以便于开发人员调用。

协议栈是通常是一个层级结构。协议栈是网络中各层协议的总和,其形象的反映了 一个网络中文件传输过程;由上层协议到底层协议,再由底层协议到上层协议。

 

某个协议的实现代码称为协议栈

BLE协议栈主要用来对你的应用数据进行层层封包,以生成一个满足BLE协议的空中数据包,也就是说,把应用数据包裹在一系列的帧头(header)和帧尾(tail)中。

 

 

 

 

 

 

以太网五层模型

 

“以太网首部”包含数据帧的一些说明项,比如发送者、接收者、数据类型等等;“数据”部分则是数据的具体内容;“以太网尾部”则是 CRC 校验码。“以太网首部”的长度固定为 14 字节。“数据”的长度,最短为 46 字节,最长为 1500 字节。“以太网尾部”的长度固定位 4 字节。因此,整个“帧”最短为 64 字节,最长为 1518 字节。如果数据很长,就必须分割成多个帧进行发送

 

 

TCP 协议可以为各种各样的程序传递数据,比如发 Email 用的SMTP(简单邮件管理)协议、网上冲浪用到的 HTTP(超文本传输)协议、下载资料用到的 FTP(文件传送)协议等等,这些应用程序协议就构成了“应用层”
 

 

应用这种软件 TCP/IP 协议栈方式实现的比较成熟方案有 ENC28J60,CS8900A,DM9000,当然也有像 STM32F107 这类(内部自带 MAC)+PHY 等方案。
由于软件协议栈操作需要主控 MCU 不断地响应中断,这在很大程度上占用了MCU 的运算/时钟资源。经过测试发现,单线程操作的情况下,MCU 的运行速度和数据的处理速度仅能满足需要,但随着线程增多,MCU 的工作效率直线下降,会严重影响通信质量。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简单理解TCP/IP协议栈 的相关文章

  • Ubuntu编译安装LLVM(13.0.1)

    参考官方教程 xff1a https llvm org docs GettingStarted html 环境要求 我的电脑是Ubuntu 20 04虚拟机 xff0c 看一下官网的要求 xff1a 硬件要求 xff1a 软件要求 xff1
  • Ubuntu 20.04 安装docker报错

    在下载公钥后运行sudo apt update报错 xff0c 错误如图 xff1a 试了这两种方法都不好使 xff1a span class token function sudo span apt key adv keyserver k
  • 超声波传感器知识(第四部分):测量精度的影响

    摘要 xff1a 对于超声波传感器 xff0c 测量精度通常是指模拟输出的测量值的绝对精度 基于回波传输时间 xff0c 超声波传感器的测量精度依靠数个物理参数 这些参数通常与空气和内部偏差相关 对于超声波传感器 xff0c 测量精度通常是
  • STM32学习之旅④ USART串口和上位机通信

    STM32系列博客 xff1a STM32学习之旅 开发环境搭建STM32学习之旅 固件库的使用及工程模板的建立STM32学习之旅 从点灯到代码移植STM32学习之旅 USART串口和上位机通信STM32学习之旅 SPI控制TFT xff0
  • STM32-F407入门学习专题(五) STM32外设之DMA

    目录 1 DMA 2 DMA功能框图 2 1 外设通道选择 2 2 仲裁器 2 3 FIFO 2 4存储器端口 外设端口 3 DMA传输配置 1 DMA DMA xff08 Direct Memory Access xff09 xff0c
  • Linux修改用户名主机名

    首先修改主机名 george 64 George JI sudo vi etc hostname sudo password for george Daiver 修改hosts文件 george 64 George JI sudo vi e
  • SVO2安装,编译和运行q

    一 编译环境配置及安装 github address GitHub uzh rpg rpg svo pro open SVO2是在SVO的基础上的升级版 xff0c 其与SVO的不同在于 xff1a 1 SVO2 0支持透视 xff0c 鱼
  • 【统计学】Q1、Median、Q3含义

    五数概括法 xff08 Five number Summary xff09 是一种对数据离散程度的描述方法 1 Min xff1a 最小值 xff1b 2 Q1 xff1a 第一四分位数 xff08 又称 xff1a 下四分位数 xff0c
  • 【Android安全】Android app开发者证书和代码签名机制

    参考链接 xff1a 安卓证书相关验证机制 xff1a https duanqz github io 2017 09 01 Android Digital Signature xff08 部分内容不准确 xff09 关于META INF文件
  • 【Android安全】IDA 处理伪代码JUMPOUT指令(Undefine + Create Function)

    IDA 处理伪代码JUMPOUT指令 函数被IDA错误合并 IDA分析so时 xff0c 可能会遇到反编译结果不准确的情况 xff0c 如下 xff1a 这里的两个JUMPOUT其实解析有问题 xff0c 如下 xff1a 例如loc 18
  • 【Android安全】小米8刷机、救砖、root教程

    线刷 xff1a 通过计算机上的刷机软件把ROM 通过数据线传输 并安装到手机内存中 ROM包以tgz为后缀 卡刷 xff1a 把所需要的ROM下载或者复制到内存 SD卡根目录中 小米8救砖教程 xff08 线刷 xff09 按照https
  • 【Android抓包】Ubuntu mitmProxy配置

    Ubuntu 安装 mitmProxy 直接使用编译好的二进制包 参考 xff1a https cuiqingcai com 31053 html Linux E4 B8 8B E7 9A 84 E5 AE 89 E8 A3 85 直接下载
  • 【CSDN】查看自己的CSDN积分

    查看自己的CSDN积分 如何查看自己的CSDN博客积分 CSDN藏的比较深 xff0c 链接如下 xff1a https mp csdn net mp blog analysis article all CSDN博客积分与博客等级 参考 x
  • 【符号输入】打出撇号′

    打出撇号 撇号 xff08 apostrophe xff09 xff1a 搜狗输入法调成中文 xff0c 输入fen xff0c 第5个就是撇号
  • 【Android安全】xiaomi手机关闭adb安装应用时的确认提示

    xiaomi手机关闭adb安装应用时的确认提示 为了自动化测试 xff0c 需要关闭adb安装应用时的确认提示 需要分两步来关闭 xff1a 首先 xff0c 开发者选项 gt 启动MIUI优化 gt 关闭 xff08 第一步过后授权管理
  • 【python】报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte in position : illegal multibyte

    python读文件时报错 xff1a Traceback span class token punctuation span most recent call last span class token punctuation span F
  • STM32介绍

    目录 STM32 分类 STM8 和 STM32 分类 STM32 命名方法 STM32F103RCT6 寻找 IO 的功能 存储器映射 存储器 Block0 内部区域功能划分 存储器 Block1 内部区域功能划分 存储器 Block2
  • Putty串口打开无反应

    第一次使用putty的串口 xff0c 可能理所当然认为在Serial那里设置好参数 xff0c 然后点击Open就行了 但是显然不是 xff0c Putty的UI设计有问题 xff0c 不管你点击哪一个项 xff0c Open按钮始终都存
  • 【Android安全】r0capture使用

    r0capture使用 下载地址 xff1a https github com r0ysue r0capture 手机端启动frida server PC端安装frida client 命令 xff1a python r0capture s
  • MobaXterm或Xshell连接不上虚拟机ubuntu

    MobaXterm使用教程 xff1a MobaXterm官网下载 MobaXterm使用教程1 MobaXterm使用教程2 Xshell 使用教程 xff1a 恒源云远程登录Linux实例 包含下载地址和使用教程 Xshell使用教程

随机推荐

  • 591 标签验证器(模拟、栈匹配括号)

    1 问题描述 xff1a 给定一个表示代码片段的字符串 xff0c 你需要实现一个验证器来解析这段代码 xff0c 并返回它是否合法 合法的代码片段需要遵守以下的所有规则 xff1a 代码必须被合法的闭合标签包围 否则 xff0c 代码是无
  • 算法:最长公共子序列

    10 8算法实验报告 最长公共子序列 题目 输出两个字符串的最长公共子序列 要求1 不使用辅助数组 span class token comment 要求1 xff1a 不使用辅助数组 span span class token keywo
  • 呆呆和你谈谈入职CVTE一个月的感受

    呆呆和你谈谈入职CVTE一个月的感受 你盼世界 xff0c 我盼望你无bug Hello 大家好 xff01 我是霖呆呆 xff01 啊啊啊啊啊 至6 18日入职新公司CVTE已经一个多月了 xff0c 在 你盼世界 xff0c 我盼望你无
  • 编程就是调用API?如何成为造轮子的程序员

    是 xff0c 编程就是调用各种API 什么是API xff0c 就是别人把较复杂的代码封装成一个个函数 xff0c 你不用管函数怎么实现的 xff0c 直接用就好 从这个角度讲 xff0c 使用所有库 xff0c 框架 xff0c 模板
  • 【电赛】2019电子设计竞赛 纸张计数显示装置(F题)

    点击 Github项目地址 设计下载 内含 xff1a 电赛论文 程序设计 机械结构设计 硬件电路设计 综合测评相关设计 交互显示设计 设计详细说明 2019年全国大学生电子设计竞赛 纸张计数显示装置 xff08 F题 xff09 本科组
  • 【ARM裸板】LCD硬件原理、时序及初始化

    文章目录 1 LCD与OLED的区别2 LCD原理2 1 颜色如何确定 xff1f 2 2 LCD如何 行扫描 xff1f 2 3 如何跳到下一行进行 行扫描 xff1f 2 4 如何进行下一个 场扫描 xff1f 3 LCD时序4 LCD
  • 【电赛】2019电赛纸张计数显示装置Github仓库说明

    Github项目地址 设计下载 内含 xff1a 电赛论文 程序设计 机械结构设计 硬件电路设计 综合测评相关设计 交互显示设计 设计详细说明 纸张计数显示装置Github仓库说明 x1f604 个人主页 x1f57a 电赛论文 x1f4d
  • 【Linux】mjpg-streamer 源码分析

    文章目录 1 总体流程2 主进程的源码分析2 1 参数接收与解析2 2 获取参数2 3 调用输入函数2 3 1 程序手动中断信号2 3 2 strchr 函数2 3 3 strndup 函数2 3 4 分离参数 3 输入通道源码分析3 1
  • STM32之TIM 舵机控制PWM

    目录 大概步骤 定时器介绍 输入通道 输入滤波器和边沿检测器 捕获通道 定时器初始化结构体详解 1 TIM TimeBaseInitTypeDef 定时器基本初始化结构体 TIM OCInitTypeDef 定时器比较输出初始化结构体 3
  • 【树莓派】树莓派采用MJPG-Streamer双摄推流至上位机,实测延时低至200ms[CSI摄像头+USB摄像头]

    树莓派采用MJPG Streamer双摄推流至上位机 实测延时低至200ms CSI摄像头 43 USB摄像头 总体流程1 硬件连接与软件及驱动配置1 xff09 检测是否存在USB摄像头设备2 xff09 安装 MJPG Streamer
  • 【DIY】基于OpenMV的STM32追球小车

    目录 xff1a 总体设计1 基础硬件DIY设计1 xff09 整体原理图2 xff09 PCB电路 2 OpenMV简单识别程序设计 与 STM32控制程序设计1 xff09 OpenMV简单识别程序设计 microPython 2 xf
  • 【电赛】2017年电赛A题——三相逆变电源EG8030测试

    目录 xff1a 一 相关简介二 专用逆变芯片E8030控制板三 驱动板四 实物测试 xff1a Github项目地址 设计下载 注 xff1a 本文仅用于学习交流分享 xff0c 若有不妥之处 xff0c 请指正 xff0c 感谢 关键词
  • 【STM32】STM32 OLED打点划线画圆 OLED电子罗盘 程序

    目录 xff1a 一 画点函数二 动态划线效果演示 xff1a 三 画圆函数效果演示 四 实心圆函数 注 xff1a 本文仅用于学习分享 用到的工具 xff1a STM32 MCU Keil 5 用到的库函数为 正点原子 STM32F4 库
  • 【STM32】OV2640摄像头学习笔记

    目录 xff1a 一 OV2640 Camera二 读取OV2640模块图像数据过程 xff1a 三 DCMI xff08 Digital camera interface xff09 接口四 SCCB协议1 起始信号2 停止信号 五 OV
  • 【笔记】MS5837-30BA压力传感器调试笔记

    文章目录 一 MS5837 30BA相关介绍1 技术参数2 典型应用电路3 PROM中的标定参数 二 MS5837 30BA数据解算1 解算流程图2 初始化读取标定参数并进行CRC校验 MS5837复位 MS5837 CRC4 bit 校验
  • 【通信协议】1-Wire 单总线

    文章目录 一 1 Wire相关介绍1 典型命令序列 xff1a 2 典型电路图 xff1a 二 1 Wire通信过程1 初始化2 写操作3 读操作 三 1 Wire程序 xff08 以DS18B20为例 xff09 DS18B20功能命令
  • linux 安裝mitmproxy

    1 安装mitmproxy sudo apt install python3 pip amp amp sudo pip3 install U pip amp amp sudo pip3 install mitmproxy 接下来需要安装证书
  • C++ 多态性的一些个人总结

    关于继承 xff1a public继承 xff0c 和其它两种继承方式 xff0c 子类对象可以访问基类的Public成员 xff0c 保护成员和私有成员只能在子类中访问 xff0c 而不能由子类对象进行访问 关于虚函数 xff08 每个虚
  • ubuntu用Dockerfile配置ros+cuda+torch镜像及rviz可视化

    dockerfile配置ros 43 cuda 43 torch镜像及rviz可视化 Dockerfile创建容器 Dockerfile 因工作环境 xff0c 需要有深度学习的那一套环境 xff0c 还要用到一些可视化的东西 xff0c
  • 简单理解TCP/IP协议栈

    协议定义的是一系列的通信标准 xff0c 通信双方需要共同按照这一标准进行正常的数据收发 xff1b 信的双方需要共同按照这一个标准进行正常的数据收发 xff1b xff08 两人 xff0c 说共同的语言 xff0c 不然不能交流 xff