nanomsg笔记--通信协议与传输协议
(507条消息) nanomsg笔记--通信协议与传输协议_Automannnn的博客-CSDN博客_nanomsg花了一段时间吧nanomsg的源码给编译了一遍,同时对里面的主要的协议进行了调试。
由于该项目是c写的,发现可读性太差了,调试了很多遍仍然模模糊糊的。再加上该项目中的代码量也不低,所以这个练习是我吸收的最差的一个。 决定不能再在上面耗着了,将目前能够理解的,结合网友的经验帖进行记录一下。
注意,这里的传输协议不是规范的叫法,也并非tcp/ip协议的那个传输层协议,而是属于应用层的一种协议。我为了方便记忆就暂称之为传输协议。
通信协议,我这里指的是 通信双方的行为表现。
1.通信协议之bus总线通信:
1.1图解:
1.2实现:
1.3注释:
绑定在某一个地址(总线,bus)上的节点,可以收到其它所有连接在该总线的节点发送的信息;同时,它发送的信息也可以被所有的其它节点接收到。
只是连接在某一个地址上的两个节点或者多个节点,彼此的消息是不可达的。 即上图中的虚线部分是不可达的。
它内部的实现通过priolist提供消息通信的实现;
2.通信协议之pipeline单向管道推送协议:
2.1图解:
2.2实现:
2.3注释:
它是基于socket实现的,但是不必像socket那样,服务端绑定后,客户端连接。
可以客户端先连接,然后服务端再绑定。 它是通过 状态机+定时器+线程池事件机制自动完成的这个步骤;
内部是通过:lb负载+priolist实现;
3.通信协议之pair端对端通信模型:
3.1图解:
3.2注释:
它跟 socket很像,socket也是端对端的通信。但是针对同一个地址,可以有多个连接进行连接。
pair端对端通信协议,限定了一个地址的两端,只能为1对1的关系。
其内部是通过exel + pipe的方式完成;
4.通信协议之pub/sub消息广播模式:
4.1图解:
4.2实现:
4.3注释:
它与pipeline通信模型有些相似,最大的不同在于,它是 单生产者单消费者的。
它是基于 list,priolist实现;
5.通信模型之req/rep请求响应模型:
5.1图解:
略,与pipeline差不多,不过它有操作时序的要求。
5.2实现:
5.3注释:
与服务器容器很像。 客户端发起请求,服务端返回响应。
服务端不可能事先给客户端发送响应。
6.通信协议之surveyor/respondent调查者模式:
6.1图解:
6.2实现:
6.3注释:
它刚好与 请求响应模式有一点对立的意思; 它的首次发送信息必须由 服务端发起;
传输协议我在这里的理解是 数据所在的目的位置,或者数据传输的途径。
7.传输协议之inproc进程间数据传输:
7.1实现:
在windows中,它是通过共享内存完成的。 该内存封装在 ctx上下文中,在传输的过程中从上下文中拷贝至目标内存进行实现。
在linux中,系统提供该协议的支持。
8.传输协议之ipc线程间数据传输:
8.1实现:
在windows中,通过WriteFile(), ReadFile()的方式,完成数据的传输;
在linux中,系统提供支持;
9.传输协议之tcp基于ip的传输协议:
9.1实现:
通过套接字api实现通信过程;
10.传输协议之ws传输协议:
10.1实现:
通过socket套接字api实现通信;
由浏览器提供支持的socket;它能引导一个http协议升级成 websocket协议,俺认为这是它与socket最大的不同。
总结:
由于使用的是c语言,这对我调式和理解代码增加相当的难度,尤其是多个的结构体的使用,使我理解起来造成了极大困难;
这次练习的本意的是熟悉消息队列,但是没有达到效果。
很多东西用面向对象的思维,其实更容易理解。 不过据说nanomsg使用c实现使得它的效率提高了,相较于zeromq有了一些优化。
协议,虚拟机 本质上 就是个 状态机。
资源:
nanomsg的地址;
nanomsg使用;
nanomsg和zeromq的区别;
(507条消息) nanomsg笔记--通信协议与传输协议_Automannnn的博客-CSDN博客_nanomsg
nanomsg笔记--通信协议与传输协议相关推荐
- 计算机网络原理笔记-简单邮件传输协议
简单邮件传送协议,简称SMTP(Simple Mail Transfer Protocol). 一个电子邮件系统应具有三个主要组成构件,用户代理.邮件服务器.SMTP和POP3(注:POP3是邮局协议 ...
- 物联网传输协议总结笔记
在物联网协议中,我们一般分为两大类,一类是传输协议,一类是通信协议.传输协议一般负责子网内设备间的组网及通信:通信协议则主要是运行在传统互联网TCP/IP协议之上的设备通讯协议,负责设备通过互联网进行 ...
- 《图解TCP/IP》笔记(十四)传输层两大协议TCP和UDP
前言:这是我<图解TCP/IP>笔记系列最后一篇(咕咕咕了将近两个月hh),TCP UDP其实面试的时候经常问到! 目录 传输层的定义: TCP与UDP对比 端口号 通信识别: 确定端口号 ...
- JavaMail学习笔记(一)、理解邮件传输协议(SMTP、POP3、IMAP、MIME)
电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行传递,就必须遵循一定的规则,这些规则就是邮件传输协议.SMTP协议定了邮件客户端与SMTP服务之间,以及两台SMTP服务器之间发送邮 ...
- 【学习笔记】网络层:应用模型、DNS系统、文件传输协议FTP
文章目录 一. 应用层概述 ① 客户/服务器(C/S)模型 ② P2P模型(对等模型) 二. DNS系统 ① 定义 ② 域名 ③ 域名服务器 ④ 域名解析过程 三. 文件传输协议FTP ① 定义 ② ...
- 华为数通笔记-文件传输协议FTP
文件传输协议 主机之间传输文件是IP网络的一个重要功能,如今人们可以方便地使用网页.邮箱进行文件传输. 然而在互联网早期,Web(World Wide Web,万维网)还未出现,操作系统使用命令行的时 ...
- CSR867x学习笔记:低音炮音频传输协议(SWAT)
为了让CSR867x的开发更容易,现与思度科技联合推出CSR867x学习板[淘宝链接:思度科技CSR开发板]. 技术交流QQ群号:743434463 开发板会员QQ群号:725398389(凭订单号入 ...
- JMS规范、ActiveMQ Broker和ActiveMQ传输协议
Java实现ActiveMQ通讯(构建过程) 编写pom.xml配置文件 <!-- https://mvnrepository.com/artifact/org.apache.activemq/ ...
- Servlet - HTTP超文本传输协议
HTTP (超文本传输协议) 超文本传输协议(HTTP)是用于协作.分布式.超媒体信息系统的应用级协议.它是用于建立客户端和服务器之间通信的数据通信协议. HTTP协议是基于TCP/IP的通信协议 ...
- 简单了解音视频传输协议SDP、RTP、RTMP、SIP等
SDP 会话描述协议(SDP)为会话通知.会话邀请和其它形式的多媒体会话初始化等目的提供了多媒体会话描述.参考RFC2327(Request For Comments(RFC),是一系列以编号排定的文 ...
最新文章
- CVPR 2021 顶会冠军图像分割算法全解密
- 常见BIOS设置解析
- java_有返回值线程_提前加载例子
- think in java i o_《Thinking in Java》学习——18章Java I/O系统(三)
- compare to造句及翻译_compare to造句
- 在一起计时器_古典计时器简介之一 qqtimer
- 放弃手机后!罗永浩今年已带货19亿元
- Silverlight 国外技术文章
- Android Studio Xposed模块编写(一)
- pb 执行insert 后return是否会自动提交_一条MySQL更新语句是怎么执行的?
- KeyShot中该怎么添加反射地平面
- 简述软件测试自动化的作用,什么是自动化测试?了解一下~
- apktool 回编译说文件名或扩展名太长
- null 和 undefined 的区别
- SQL Server 2012新建本地服务器组注册服务器
- 工厂模式总结——三个工厂
- OPPO R2017线刷刷机包 可解账户锁 刷机教程
- 【猛料】腾讯前总监受贿侵占数百万获刑9年
- vue3时间戳格式转换
- 英语口语练习三十之听歌学口语:Boom Clap,你在我的世界里闪闪发光用法
热门文章
- java print argc_【转】main 函数参数 argc argv env 与命令行
- 免费GB网络硬盘|网盘|网络U盘|最好的免费网络硬盘|赚钱网盘
- 《每日一荐月刊》2019-11
- 百度深度学习初级认证——已过
- 3行代码,Python实现excel转换成任意格式的word文档
- 大一计算机期末考试操作题word,Word大一计算机考试操作题
- matlab中卡尔曼滤波,卡尔曼滤波算法及MATLAB实现
- JAVA仿百度网盘(JAVA毕业设计)
- Java生成随机数几种方式
- 广场舞江湖刀光剑影,糖豆APP武艺高强却难打赢中老年擂台?