通信协议
文章平均质量分 88
zhanghuaichao
这个作者很懒,什么都没留下…
展开
-
对RPC的简单理解
RPC全称为RemoteProcedureCall,即远过程调用。如果没有RPC,那么跨机器间的进程通讯通常得采用消息(网络通信tcp或者udp),这会降低开发效率,也会增加网络层和上层的耦合度,RPC可以帮助我们解决这些问题。其实就是他封装了这个网络通信的实现细节,与具体的通信不耦合,不用写网络通信的代码,自然就会提高开发效率。我在工作中用到的主要两种rpc就是Zeroc的ice,以及google的grpc....原创 2022-07-17 12:46:35 · 882 阅读 · 0 评论 -
tcp 端口复用与惊群效应(REUSEADDR、REUSEPORT)
我在之前的一篇文章中,介绍了我在之前的项目中遇到的端口复用,windows 的udp里端口复用导致了一个bug,具体的链接参考如下:关于Socket中端口复用_zhc的博客-CSDN博客_socket端口复用而我现在是想总结一下,linux下的情况,想从头再梳理下,REUSEADDR 和 REUSEPORT的作用。1.SO_REUSEADDR 是为了解决time_wait问题而产生的SO_REUSEADDR 它的作用是当服务器端主动断开链接的时候,处在timewait阶段大约60秒钟,服原创 2022-02-16 16:06:18 · 4847 阅读 · 0 评论 -
关于Socket中端口复用(udp)
最近在处理单位的外场遇到了一个实际问题。在实际与第三方系统进行通信的过程中,我绑定了30009端口作为UDP服务端,但是偶尔会发现第三方系统向30009端口发送数据的时候,通过网络抓包可以抓到,但是我自己在 receive数据的时候却收不到数据。而这个现象还是偶尔一段时间会出现,通过网络抓包,看我本段的30009端口在使用向对端发送语音数据,这就是说明我的端口被占用了,但是我启动后就绑定了这个...原创 2020-03-26 17:57:14 · 8846 阅读 · 0 评论 -
如何判断两个IP地址是不是在同一个网段
如何判断两个IP地址是不是在同一个网段 要判断两个IP地址是不是在同一个网段,就将它们的IP地址分别与子网掩码做与运算,得到的结果一网络号,如果网络号相同,就在同一子网,否则,不在同一子网。例:假定选择了子网掩码255.255.254.0,现在分别将上述两个IP地址分别与掩码做与运算,如下所示: www.2cto.com 211.95.165.24 11010011 01011转载 2016-09-21 15:42:55 · 4693 阅读 · 0 评论 -
路由器和交换机的区别
简单地说:交换机用来共享一根网线,路由器用来共享一个IP。也就是说,如果一根网线上想接几个电脑,就必须用,交换机;如果你只有一个IP,想几个电脑上网,就要用路由器来解决。比如宽带路由器就可以让家里的几台电脑共享同一个账号上网;在已经共享上网的情况下,某房间只有一根网线,有多台电脑要上网,用交换机转载 2016-09-18 11:13:43 · 977 阅读 · 0 评论 -
IP地址,同一网段,子网掩码,默认网关,添加路由
自己在学习网络通信的这个过程中,渐渐的对网络的一些基本知识,有了一种了解,突然想把这里的一些基本的问题,进行下总结,也给自己留个笔记。(1)IP首先来说说ip地址吧,IP地址是指互联网协议地址(Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址的作用很简单,就像是我们每个人的家庭住址都有个门牌号码一样,你在整个的互联网环境下,...原创 2017-09-24 08:09:14 · 14593 阅读 · 1 评论 -
TCP/IP三次握手于四次挥手
TCP报文格式(1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。 (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。 (3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:原创 2016-11-07 17:15:05 · 354 阅读 · 0 评论 -
序列化和反序列化
今天看到了一篇关于序列化和反序列化的文章,转载过来1. 什么是序列化?程序员在编写应用程序的时候往往需要将程序的某些数据存储在内存中,然后将其写入文件或是将其传输到网络中的另一台计算机上以实现通讯。这个将程序数据转换成能被存储并传输的格式的过程被称为序列化(serialization),而它的逆过程被称为反序列化(deserialization)。 简单来说,序列化就是将对象实例的状............原创 2019-12-10 13:29:54 · 639 阅读 · 1 评论 -
libcurl中curl_easy_setopt()和curl_easy_perform()函数使用中文详解
libcurl里主要用到的函数有curl_easy_init(),curl_easy_setopt()和curl_easy_perform().顾名思义,curl_easy_init()是用来初始化libcurl库的(不知道对不对,就这么理解吧),curl_easy_setopt()是用来设置各种curl参数的,setopt就是set option,curl_easy_perform()是用...转载 2019-08-06 19:45:32 · 2307 阅读 · 0 评论 -
因特网的七层架构与TCP/IP协议
最近在用这个wireshark进行抓包,所以现在有时间来学习一下TCP/IP协议,现在在这里总结一在学习TCP/IP协议之前,我们应该具备一些基础知识:(1)互联网地址,(IP地址)我们现在说的IP地址,是IPv4地址,它是用32位2进制数来表示的地址,而现在正在发展的是IPv6地址,IPv6地址用128位2进制数来表示地址,ipv4地址被分为5类。A.B.C.D.E五类。(2转载 2016-09-01 10:06:57 · 1248 阅读 · 0 评论 -
各种编码格式(非常经典)
GBK,ISO-8859-1,GB2312的本质区别编码有几种 ,计算机最初是在美国等国家发明的 所以表示字符只有简单的几个字母只要对字母进行编码就好 我们标准码 iso-8859-1 这就是一个标准但是后来计算机普及了 于是就中国要使用计算机了 但是机器不认得中文,于是就有了国际码。 gbk gb2312都是这类。两个其实一个,一个是标准(发布的代号),一个是简称。后来多了个阿拉伯语、日转载 2017-09-06 09:11:50 · 100208 阅读 · 5 评论 -
Base64原理彻底弄清
开发者对Base64编码肯定很熟悉,是否对它有很清晰的认识就不一定了。实际 上Base64已经简单到不能再简单了,如果对它的理解还是模棱两可实在不应该。大概介绍一下Base64的相关内容,花几分钟时间就可以彻底理解它。文 章下边贴了一个Base64的编解码器,方便阅读文章的同时来实验。 一. Base64编码由来 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的转载 2017-09-08 10:40:57 · 1747 阅读 · 1 评论 -
输出模拟电流信号的传感器为什么输出电流是4~20ma
转载 2016-09-21 10:57:29 · 4241 阅读 · 0 评论 -
modbus通讯协议
今天在复习通信协议,线将modbus通信协议的简单理解,总结如下,modbus也是分为物理层,和协议层,也应该是和SPI,IIC一样的软硬结合体,(1)物理层和RS232、RS485基本是一样的。(2)协议层可以简单定义如下:a:地址码b:功能码 c:数据区d:校验码(常用CRC校验)最多255位.它是一主多从,主机发出命令,只能是地址相对的从机回应,从机和从机之间原创 2015-09-07 08:35:11 · 991 阅读 · 0 评论 -
IIC通信协议总结
(1)概述I2C(Inter-Integrated Circuit BUS) 集成电路总线,该总线由NXP(原PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。经常IIC和SPI接口被认为指定是一种硬件设备,但其实这样的说法是不尽准确的,严格的说他们都是人们所定义的软硬结合体,分为物理层(四线结构)和协议层(主机,从原创 2015-09-07 15:31:51 · 110793 阅读 · 20 评论 -
全双工 半双工 单工 通信,同步和异步(待续)
全双工(Full Duplex)是指在发送数据的同时也能够接收数据,两者同步进行,这好像我们平时打电话一样,说话的同时也能够听到对方的声音。目前的网卡一般都支持全双工。 半双工(Half Duplex),所谓半双工就是指一个时间段内只有一个动作发生,举个简单例子,一条窄窄的马路,同时只能有一辆车通过,当目前有两量车对开,这种情况下就只能一辆先过,等到头儿后另一辆再开,这个例子就形象的说明了半双工原创 2015-09-07 16:35:45 · 4384 阅读 · 1 评论 -
大小端模式区分
大端模式:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,地址由小向大增长,而数据由高位往低位放。EG:0x00000010: 存放内容为:e684 6c4e 0100 1800 53ef 0100 0100 0000一共是16个字节,紧接着的内容是:0x00000020: b484 6c4c 004c ed00 0000原创 2015-11-18 16:27:57 · 742 阅读 · 0 评论 -
飞鸽使用的通信协议是什么(未完待续)
今天给老师带了一节实验课,是做的CAN总线通信实验,有一些想法记录如下:(1)就上位机软件来说,现在有两种可以供我们选择。LABVIEW和VC,但是各有自己的优点和缺点吧,LABVIEW自身编程比较简单,但是要包含的文件太多,整个软件会显得特别的庞大,而VC就使用起来特别的小,编写一个软件会占用很小的空间,安装使用起来特别的方便。 但是程序实现起来向tcp/ip协议,以及报表等会特别费劲,但是原创 2015-11-24 16:40:01 · 817 阅读 · 0 评论 -
TTL 电平 CMOS电平 RS232 电平
工作中遇到一个关于电平选择的问题,居然给忘记RS232电平的定义了,当时无法反应上来,回来之后查找资料才了解两者之间的区别,视乎两年多的时间,之前非常熟悉的一些常识也开始淡忘,这个可不是一个好的现象.:-),还是把关于三种常见的电平的区别copy到这里.做加深记忆的效果之用..什么是TTL电平、CMOS电平、RS232电平?它们有什么区别呢?一般说来,CMOS电平比TTL电平有着更高的噪声转载 2015-12-01 11:29:08 · 511 阅读 · 0 评论 -
MODBUS协议和RS232,RS485,SPI,IIC,CAN总线有什么区别
MODBUS协议是一种软件协议,而RS232,RS485是一种电平标准,关系是在一种电平关系下应用一种MODBUS协议。MODBUS协议是一种人为约定的协议,他和SPI,IIC,CAN总线协议还是有些不同的,SPI,IIC,CAN总线这些协议必须是设备在硬件上支持的(但是也是可以通过软件模拟的,我们常常来用软件来模拟IIC的时序,达到IIC通信的目的),可以是SPI,IIC,CAN总线是一种软硬件原创 2016-01-09 10:36:11 · 21017 阅读 · 0 评论 -
MODBUS通信协议精析(未完成待续)
今天突然碰到了MODBUS问题:modbus协议是一种协议标准:他主要有三种形式:Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层ASCII、RTU、TCP等,并没有规定物理层(也就是没有规定以何种电平形式进行传输RS232还是RS485)。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。下面我来原创 2016-01-09 19:07:54 · 1115 阅读 · 0 评论 -
理解TCP序列号(Sequence Number)和确认号(Acknowledgment Number)
原文见:http://packetlife.net/blog/2010/jun/7/understanding-tcp-sequence-acknowledgment-numbers/ 如果你正在读这篇文章,很可能你对TCP“非著名”的“三次握手”或者说“SYN,SYN/ACK,ACK”已经很熟悉了。不幸的是,对很多人来说,对TCP的学习就仅限于此了。尽管年代久远,TCP仍是一个相当复杂并转载 2016-09-01 09:58:24 · 2823 阅读 · 0 评论 -
SPI通信协议
SPI(1)SPI概述SPI是Serial Peripheral Interface 的缩写,翻译过来是“串行设备通信接口”。SPI是Freescale(原Motorola)公司首先在其MC68HCXX系列处理器上定义使用的。SPI是一种高速、主从式、全双工。同步传输(UART异步传输)的通信协议,并且只有4根线,分别是CS(chip select)线。SCLK(Serial原创 2015-09-07 09:17:10 · 3006 阅读 · 0 评论