4、 LwIP协议栈规范翻译——流程模型
4、流程模型
协议实现的流程模型描述了系统被划分为不同的流程的方式。用于实现通信协议的一个流程模型是让每个协议作为一个独立的进程运行。有了这个模型,严格的协议分层被强制执行,并且协议之间的通信点必须严格定义。虽然这种方法有它的优点,比如可以在运行时添加协议,理解代码和调试通常也比较容易,但也有一些缺点。正如前面所描述的,严格的分层并不是实现协议的最佳方式。此外,更重要的是,对于每一层都要交叉,必须进行上下文切换。对于传入的TCP段,这将意味着三个上下文切换,从网络接口的设备驱动程序到IP进程,到TCP进程,最后到应用程序进程。在大多数操作系统中,上下文切换相当耗费性能的。
另一种常见的方法是让通信协议驻留在操作系统的内核中。在通信协议的内核实现中,应用程序进程通过系统调用与协议进行通信。通信协议没有严格地划分,但是可以使用跨越协议层的技术。
LwIP使用一个流程模型,其中所有协议都驻留在单个进程中,因此与操作系统内核分离。应用程序可能驻留在lwIP进程中,或者处于单独的进程中。通过对应用程序与lwIP共享一个进程的函数调用,或者通过一个更抽象的API的方法,可以通过对应用程序的调用来实现ip栈和应用程序之间的通信。
4、 LwIP协议栈规范翻译——流程模型的更多相关文章
- LwIP协议栈规范翻译——摘要目录
摘要 LwIP是一种TCP/IP协议栈的实现.LwIP协议栈专注于减少内存的使用和代码的大小,使LwIP适用于嵌入式系统中在有限的资源下能够使用小型的客户机.为了减少处理和内存的需求,LwIP使用裁剪 ...
- 1、 LwIP协议栈规范翻译——简介
1.简介 在过去几年中,计算机和计算机支持设备接之间的互联到无线网络日趋增加.计算机已经越来越无缝的集成在了日常的设备且价格也在下降.同时,无线网络技术例如蓝牙[HNI+98]和IEEE802.11b ...
- 3、LwIP协议栈规范翻译——概述
3.概述 像许多其他TCP/IP实现一样,分层协议设计已经成为设计lwIP实现的指南.每个协议实现为自己的模块,其中几个功能充当每个协议的入口点.尽管协议层是单独实现的,一些层却不全是,正如前面所叙述 ...
- 5、 LwIP协议栈规范翻译——操作系统仿真层
为了使lwIP可移植,操作系统特定的函数调用和数据结构不直接在协议的代码中使用.相反,当需要这样的函数调用和数据结构时,直接使用操作系统仿真层. 操作系统仿真层为操作系统服务提供统一的接口,如定时器, ...
- 2、LwIP协议栈规范翻译——协议层
2.协议层 TCP/IP套件中的协议是以层次的方式设计的,其中每个协议层解决了通信问题的单独部分.这种分层可以用作设计协议实现的指南,因为每个协议可以与另一个分开实现.然而,以严格分层的方式实现协议可 ...
- lwip协议栈学习---udp
书籍:<嵌入式网络那些事-lwip协议> udp协议的优点: 1)基于IP协议,无连接的用户数据报协议,适用于传送大批量数据, 2)实时性比较高,适用于嵌入式网络 发送函数:udp_sen ...
- Go语言安全编码规范-翻译(分享转发)
Go语言安全编码规范-翻译 本文翻译原文由:blood_zer0.Lingfighting完成 如果翻译的有问题:联系我(Lzero2012).匆忙翻译肯定会有很多错误,欢迎大家一起讨论Go语言安全能 ...
- [转]MBTiles 1.2 规范翻译
MBTiles 1.2 可以参考超图的文档MBTiles扩展具体实现可以参考浅谈利用SQLite存储离散瓦片的思路和实现方法 mapbox提供了一个简单实现测试代码,github地址在这里https: ...
- LwIP协议栈开发嵌入式网络的三种方法分析
LwIP协议栈开发嵌入式网络的三种方法分析 摘要 轻量级的TCP/IP协议栈LwIP,提供了三种应用程序设计方法,且很容易被移植到多任务的操作系统中.本文结合μC/OS-II这一实时操作系统,以 ...
随机推荐
- CentOS 6.5 x64下网络配置
一.自动获取IP地址 #dhclient 自动获取ip地址命令 #ifconfig 查询系统里网卡信息,ip地址.MAC地址 [root@CentOS6 ~]# vi /etc/sysconfig/n ...
- 博客搬家了,新域名dinphy.wang
博客搬家了,新域名 dinphy.wang 博客搬家了,新域名 www.dinphy.wang 博客搬家了,新域名 dinphy.wang 博客搬家了,新域名 w ...
- Kafka Eagle Consumers不显示
原因: kafka.eagle.offset.storage配置有误 该配置的作用:# kafka offset storage -- Offset stored in a Kafka cluster ...
- Tomcat以Daemon的方式启动(CentOS6&7)
1 前言 一直以来都觉得Tomcat以root身份运行非常不安全,故研究Tomcat如何以普通用户身份运行,以下是参考网络上的一些配置实现Tomcat以daemon方式运行于CentOS 6& ...
- 微信小程序中同步 异步的使用
https://www.jianshu.com/p/e92c7495da76 微信小程序中使用Promise进行异步流程处理 https://www.cnblogs.com/cckui/p/102 ...
- webapi 统一处理时间格式
public class UnixDateTimeConvertor : DateTimeConverterBase { public override object ReadJson(JsonRea ...
- windows pm2 启动nodejs失败:Error: EBADF: bad file descriptor, uv_pipe_open
windows下打开命令窗口,安装pm2:npm install pm2 -g pm2成功安装,在项目目录下用pm2启动服务:pm2 start index.js,结果启动失败,错误如下: .pm2\ ...
- 【CF480D】Parcels DP
[CF480D]Parcels 题意:有一个栈,有n个物品,每个物品可以选或不选.如果选了第i个物品,则获得$v_i$的收益,且第i个物品必须在$in_i$时刻入栈,$out_i$时刻出栈.每个物品还 ...
- 六种常见排序算法的java实现
package edu.cn.ysw; //八种排序算法的实现与效率分析 /* * 内排序的种类: * 1.插入排序:直接插入排序.希尔排序. * 2.选择排序:简单选择排序.堆排序. 3.交换排序: ...
- 数据共享Manager
将数据设置成共享数据,一个进程修改了数据,另外一个进程就能就接受的被修改的数据. 起50个进程让他们都去操作一个数据: from multiprocessing import Process, Man ...