通讯协议
文章平均质量分 72
菜爷面馆
大家好,
我叫青菜,
原阿里巴巴资资深软件工程师,
原梵帝IT技术总监,
45岁转行学厨师,
你们愿意看我怎么学厨师,
然后一步步走上创业之路吗?
展开
-
心跳检测机制
前两天和朋友聊天,他正用Go语言实现心跳检测机制,主要是用于股票行情推送长连接的保活,今天我们就来聊聊心跳检测机制,简单介绍一下单向检测。原创 2023-10-16 21:33:11 · 338 阅读 · 0 评论 -
高效的ProtoBuf
Varint是一种使用一个或多个字节序列化整数的办法,对于32位的整数用Varint编码后为1~5个字节,小的数字使用1个byte,大的数字使用5个byte。Type=2:string是一个指定长度的编码,key+length+content,key编码采用统一的方式,length(内容长度)采用varints编码,content就是由length指定长度的byte。所以其对字符串本身的内容并不压缩?第8位(最高位):1:表示后续的字节也是该数字的一部分 0:表示该数字结束。原创 2023-10-05 22:43:52 · 358 阅读 · 0 评论 -
Google ProtoBuf介绍
前段时间了解到有公司用gRPC、Pulsar、Nacos、SkyWalking、OpenTelemetry、Prometheus、Envoy、Grafana、Sonar、PowerJob、Apollo 这些技术,也是Java路线的,很惭愧,这些我几乎都不了解,从13年以来玩Android、玩Python、玩Linux、玩产品,对Java新技术关注远远不够,现在必须跟进了。配置protobuf-maven-plugin插件,这个插件用于将.proto文件生成对应类代码。、可扩展的对象序列化方法。原创 2023-10-04 09:48:31 · 600 阅读 · 0 评论 -
WebSocket实战之六心跳重连机制
4、重连代码时序:当服务端Down掉或网络断开超过一定时间serverTimeoutObj这个延迟器会执行,然后调用ws.close()关闭连接并且触发onClose事件,在onClose事件中会调用reconnect方法,而reconnect又会调用createWebSocket方法,createWebSocket去创建WebSocket连接,当创建异常时又会再调用reconnect,一直到能连接得上。客户端发送Ping帧,服务端收到Ping帧后回一个响应Pong帧。原创 2023-10-03 22:59:09 · 1067 阅读 · 0 评论 -
WebSocket实战之五JSR356
前几篇WebSocket例子服务端我是用NodeJS实现,这一篇我们用Java来搭建一个WebSocket服务端,从2011年WebSocket协议RFC6455发布后,大多数浏览器都实现了WebSocket协议客户端的API,而对于服务端Java也定义了一个规范JSR356,即Java API for WebSocket规范,很多Web容器如Tomcat、Jetty等新版本都支持该规范。对方端点发送消息过来,调用该注解的方法。对方端点关闭连接时会调用该注解的方法。代码 ,然后就可以向相互发送消息了。原创 2023-10-03 22:52:14 · 1527 阅读 · 0 评论 -
WebSocket实战之四WSS配置
对比,我们发现基于TLS的WSS,在网络传输过程中完全被加密了,而如果是未加密的WS协议,一些代理服务器可能理解不了类似101响应码会导致WebSocket握手失败,而使用WSS协议,数据是加密的,代理只能允许连接成功并且允许WebSocket数据流通过,不然会造成误伤。,碰到的问题只能上安全的WebSocket(WSS)才能解决,配置证书还是挺麻烦的,主要是每年都需要重新更新证书,我配置过的证书最长有效期也只有两年,搞不清楚为什么CA证书的有效期那么短,是为了多收钱吗?只需要把ws改成wss就可以。原创 2023-10-03 22:41:39 · 3468 阅读 · 0 评论 -
WebSocket实战之三遇上PAC
2、在服务端检测8098端口启动情况,netstat -anp | grep :8098,然后发现监听在8098端口的协议是TCP6,核对出入站访问规则发现只有IP4没有IP6但出入站规则无法设置IP6,然后在在java 命令参数中加入 -Djava.net.preferIPv4Stack=true,重新启动,但仍然无效。8、最后发现我们技术所有人都配置了PAC,因为我们应用部署在AWS悉尼,不配置VPN是访问不了的,把VPN关掉就完全正常。6、代码回滚,回家睡觉,反正数据没有实时刷新也没啥大不了的。原创 2023-10-03 22:30:32 · 415 阅读 · 0 评论 -
WebSocket实战之二协议分析
WebSocket是基于TCP的,与HTTP同样也是应用层协议,但WebSocket的首次握手是依赖于HTTP协议,握手成功协议升级为WebSocket,然后就是长连接可以相互一直发送消息而不再是HTTP的那种请求/响应机制,另外可以看到客户端的端口在开始随机用了一个值是52914后,在关闭之前一直会用同一端口,这样才能找得到,IP用来找机器,端口用来找应用。4、【7、8、9】第7、8、9个包,服务端向客户端以WebSocket协议发送了三个包,原创 2023-10-02 23:39:31 · 639 阅读 · 0 评论 -
WebSocket实战之一
2017年做股票软件开始关注WebSoocket技术,不过当时客户端是Native采用的网络通讯框架是Netty,这次做收银台项目决定把WebSocket技术实践一把,主要应用于实时销量大盘数据展示以及消息系统提醒功能等。注:一个技术点尽可能要有实际应用场景才能真正掌握,我们在一些非核心功能会去尝试使用自己没用过的技术,这样对自己对团队都能有一些技术储备。原创 2023-10-02 23:23:20 · 1160 阅读 · 0 评论 -
序列化方案对比
让要序列化的对象实现Serializable接口,就可以由ObjectOutputStream类完成序列化,它在进行序列化时要将对象类的元数据及业务对象全部序列化成字节流,并且把类的继承关系也一并序列化,所以序列化后的二进制流比较大。前面两篇文章介绍了Google ProtoBuf序列化的使用及序列化原理,其实序列化的实现方案有无数种,本文会对以前用过或者有所了解的序列化方案进行一个对比,主要对比生成二进制流的大小,原始数据如下。FAST协议是股票行情里用的,做到极致的压缩。原创 2023-09-17 08:01:44 · 177 阅读 · 0 评论 -
HTTP2多路复用原理以及gRPC抓包分析
注:本人对于gRPC刚学会了一个HelloWorld但未有更深入的学习,这两天一直有个疑惑,因为例子是完全基于SDK调用,而非请求HTTP接口,很是怀疑gRPC到底是直接走TCP Socket层还是走HTTP2,通过抓包分析发现确实是走HTTP2,后续会进一步研究gRPC的使用和源代码。8、第13个包,GRPC客户端->服务端,发送HEADERS帧,HEADERS帧用来传递HTTP头信息,另外还发送了DATA帧,包括两部分GRPC Message和ProtoBuf。原创 2023-09-12 21:57:11 · 819 阅读 · 0 评论 -
HTTP2入门
前面文章介绍了ProtoBuf序列化协议,这是gRPC牛逼原因之一,原因之二是采用了HTTP2,HTTP2是从SPDY发展而来,以前淘宝MTOP平台植入了SPDY协议来进行性能优化,这样淘宝客户端调后端接口就能快XX倍,现在应该是换成HTTP2.0了吧,很多年了,都快忘记MTOP是个啥了,所以经常写笔记做整理还是很有必要的。本实验目的是测试HTTP2多路复用特性。原创 2023-09-12 21:46:15 · 425 阅读 · 0 评论 -
用抓包工具分析HTTPS报文
https协议比http安全、它传输的是加密的数据,一般不容易被拦截破解,但更耗时、对CPU消耗也更大,下面通过Tcpdump抓包,用Wireshark分析分别使用两种协议请求同一个网页的报文,对比两者的报文对这两个协议的区别便一目了然了。原创 2023-09-12 20:35:05 · 2000 阅读 · 0 评论 -
短距离无线通讯-ZigBee
短距离的无线协议比较多,工作中接触过的也就蓝牙和WIFI,以前在淘宝内核团队做过用蓝牙和WIFI做Android/IOS之间点对点通讯的一个项目,其它协议都没有实际应用过,今天介绍一下ZigBee。多个设备的通信模块可以加入同一个ZigBee的无线网络,而第一个设备将承担构建网络的任务,并作为网络的控制中枢,因此通常将该节点的设备扩展成网关。5、容量大:一个ZigBee网络最多有255个节点,其中一个主设备,其它为从设备,通过协调器可以扩展到64000个节点。1、协调器:用于启动网络和维护网络,原创 2023-09-10 19:48:38 · 155 阅读 · 0 评论 -
短距离无线通讯-蓝牙
16年的时候跟着别人做了一个p2p跨平台通信SDK组件(基于蓝牙、WIFI、热点),当时用的是蓝牙4.2协议在IOS和Android设备之间提供相互发现,互相操作的组件,我可以将一台设备做为蓝牙从设备Publish出去,然后另外一台设备做为主设备进行Discovery,配对成功后组网连接,应用层通过JSBridge或直接接口调用,可以应用于互动游戏和近距离购物分享(比如我可以把购物车的商品通过蓝牙分享给你),当然随着技术的进步这些现在已经没有什么价值了。2、由于使用的跳频技术,抗干扰能力强。原创 2023-09-09 09:42:06 · 186 阅读 · 0 评论 -
短距离无线传输-WIFI
黑客提供一个无需密码的WIFI接入点,一旦连上去,你所有的数据包都会被截留分析,没有加密的数据会被看到。3、WIFI数据容易被抓包,这个我也没抓过,下次有时间玩一下,以前有篇文章讲了在服务器上抓取Https数据包,见。黑客破解你的无线路由器密码,共享你的带宽,甚至破解你无线路由器控制台密码登录上去,不过现在这种应该比较少了。注:因为有线(普通网线、光纤)是被屏蔽包裹好的,本身具有抗干扰能力,而无线是通过空气传播易受干扰。2、2、5GHz 工作频率范围5.735~5.835GHz,信道独立.原创 2023-09-09 09:36:18 · 177 阅读 · 0 评论 -
短距离无线通讯-RFID
能将标签的信息读出或能将信息写入标签中,在工作时阅读器会在一定的区域范围内发送射频能量提供电磁场,在阅读器覆盖的范围内标签会被触发,然后发送存储在标签中的数据到阅读器,完成识别功能。5、成本比较高,毕竟用的是芯片,不像条形码,我写一个条形码生成器,就可以生成了,条形码 请看 扫码枪的那些事,如果每件销售的商品都用RFID,这成本有点大的。标签可以设定唯一编码,附在要识别的目标对象上,比如门禁卡、公交卡之类,它的工作需要依赖于阅读器发射的电磁场能量。内部供电,最大范围可达100M,可以应用在不停车收费系统。原创 2023-09-09 09:29:19 · 82 阅读 · 0 评论 -
短距离无线通讯-NFC
3、NFC比较适合用于门禁系统,地铁、公交卡这种原来直接刷卡的场景,在购物支付方面应用还是比较难的,现在二维码付款已经深入人心了。模拟卡片模式:将具有NFC功能的设备模拟成一张非接触卡,如支持NFC的手机可以作为门禁卡、银行卡等而被读取。2、NFC在刷的时候效率更高一些,刷门禁卡的时候不用解锁手机打开应用,只要把手机贴近门禁就可以直接开门了。NFC的通信在发起设备和目标设备之间发生,任何一个NFC设备都可以做为发起或目标。被动模式:发起设备产生射频场,目标设备使用发起设备的射频场感应电源工作。原创 2023-09-08 23:12:21 · 351 阅读 · 0 评论 -
远距离无线通信之二NB-IOT
18年做公司牧场奶牛活动定位&发情监控项目,调研过华为NB-IOT方案,但因牧场位于靠近南极的塔斯马尼亚州,NB-IOT网络信号没有覆盖,不得已只能用高成本的LoRa自建基站(网关)的方案。2、超低功耗:PSM(低功耗模式),允许终端在进入空闲态后关闭信号的收发和接入功能,从而减少天线、射频、信令处理等功耗消耗,eDRX(非连续接收)让终端设备周期性进入休眠模式,休眠模式不监听下行通道。3、超低成本:挥刀自宫,简化硬件(半双工、低采样率、低速率),终端模组成本比较低。4、超大容量:5万连接数/小区。原创 2023-09-06 23:21:46 · 321 阅读 · 0 评论 -
远距离通讯LoRa介绍
LoRa(Long Range Radio)一种远距离低功耗无线调制解调扩频技术。LoRaWAN:定义了使用LoRa远距离通信网络设计的一套通讯协议和系统架构。LoRa联盟:发起者为美国Semtech公司,国内发起者为中兴通讯。2、LoRa网络拓扑End Nodes :LoRa终端,各种传感器进行数据采集Gateway:LoRa网关,对收集到的终端数据进行封装和转发,对LoRa射频协议和TCP协议进行转换。Network Server:主要负责上下行数据包的完整性校验。原创 2023-09-05 21:42:20 · 201 阅读 · 0 评论