协议栈

Dubbo处理TCP拆包粘包问题

和自甴很熟 提交于 2020-02-29 08:01:55
#Dubbo处理TCP拆包粘包问题 在TCP网络传输工程中,由于TCP包的缓存大小限制,每次请求数据有可能不在一个TCP包里面,或者也可能多个请求的数据在一个TCP包里面。那么如果合理的decode接受的TCP数据很重要,需要考虑TCP拆包和粘包的问题。我们知道在Netty提供了各种Decoder来解决此类问题,比如 LineBasedFrameDecoder , LengthFieldBasedFrameDecoder 等等,但是这些都是处理一些通用简单的协议栈,并不能处理高度自定义的协议栈。由于dubbo协议是自定义协议栈,并且包含消息头和消息体两部分,而消息头中包含消息类型、协议版本、协议魔数以及payload长度等信息。所以使用Netty自带的处理方案可能无法满足Dubbo解析自身协议的需求,所以需要Dubbo自己来处理,那自己处理,就需要自己处理TCP的拆包和粘包的问题。这里就对Dubbo处理此类问题进行探讨,从而加深自己对它的理解。 ##说明 此处所描述的协议是dubbo协议,其他的协议比如http,webservice等协议不是这里讨论范围。并且这里使用的通信框架以Netty来讲解,Mina以及grizzly也不在种类讨论范围。 ##NettyCodecAdapter NettyCodecAdapter 是对dubbo协议解析的入口

TCP/IP协议栈--IPV4安全隐患

怎甘沉沦 提交于 2020-02-28 21:10:55
TCP/IP协议栈–IPV4安全隐患 第一,缺乏数据源验证机制;(不管来源,只要确定目的是我,我就收-------例如:不管是谁,只要你给我吃的,我就吃) 第二,缺乏完整性验证机制;(A和B通信,被C劫走,随意修改内容) 第三,缺乏机密性保障机制。(明文传输的) TCP/TP协议栈常见安全风险------------解密 : 应用层----------------漏洞、缓冲区溢出攻击,web应用攻击、病毒、木马等等; 传输层---------------TCP欺骗、拒绝服务、端口扫描等; 网络层---------------IP欺骗、Smurf攻击、ICMP攻击、地址扫描等; 链路层--------------MAC欺骗、MAC泛洪、ARP欺骗等; 物理层------------设备破坏、线路侦听等。 添加链接描述 来源: CSDN 作者: weixin_45450567 链接: https://blog.csdn.net/weixin_45450567/article/details/104561347

蓝牙音乐AudioTrack Session ID的获取

回眸只為那壹抹淺笑 提交于 2020-02-26 00:30:53
当今这个音视频无处不在的时代,音频跟踪会话ID(AudioTrack Session ID)是个很重要的参数,可以用来实现音频相关的一些特效。接下来的内容我们就探究如何在安卓蓝牙系统中获取该id。 熟悉蓝牙音乐播放流程的同学都了解蓝牙音乐AVDTP的控制流与音频流以及AVRCP是如何作用的,以如下的交互图简单介绍下: AVDTP连接阶段分为四步: 1、 发现对端支持的编码方式有哪几种 2、 获取每种编码方式的参数 3、 双方协商确定一个最优的编码方式 4、 建立该编码方式的AVDTP连接 音频播放过程中只要创建的audiotrack不变则对应的session id就会保持不变。播放蓝牙音乐也是这样。那蓝牙音乐对应的audiotrack session id从哪儿获取呢? 创建audiotrack都会生成对应的session id,那问题就简单多了,蓝牙音乐播放过程中audiotrack在哪儿被创建的? 蓝牙音乐播放分为source、sink两端,source一般为音频流输出端,sink接收音频流方。这篇文章主要是已sink端来讲解蓝牙音频播放流程。Sink方(蓝牙耳机、音响、车载等)的蓝牙芯片接收到音频流后通过HCI送到蓝牙协议栈,在协议栈中直接通过audio track送入安卓音频系统播放音乐。 结合蓝牙协议栈的代码可以快速找到audio track的创建处为

TI通信开发套件NDK

…衆ロ難τιáo~ 提交于 2020-02-18 10:29:57
NDK开发套件的高效率设计 为了加速其高档DSP的网络化进程,TI公司结合其C6000系列芯片推出了TCP/IP NDK (Network Developer’s Kit)开发套件。 NDK主要的组件包括:(1)支持TCP/TP协议栈程序库。其中主要包含的库有:支持TCP/IP网络工具的库,支持TCP/IP协议栈与DSP/BIOS平台的库,网络控制以及线程调度的库(包括协议栈的初始化以及网络相关任务的调度)(2)示范程序。其中主要包括DHCP/Telnet客户端,HTTP/数据服务器示范等。(3)支持文档包括用户手册、程序员手册和平台适应手册。 NDK采用紧凑的设计方法,实现了用较少的资源耗费来支持TCP/IP。从实用效果看,NDK仅用200~250K程序空间和95K数据空间即可支持常规的TCP/IP服务,包括应用层的telnet、DHCP、HTTP等。为了最大限度地减少资源消耗,TI为其NDK采用了许多特殊的技巧,重要的有:(1)UDP socket和RAW socket不使用发送或接收缓冲区;(2)TCP socket使用发送缓冲区,接收缓冲区依配置文件而定;(3)低层驱动程序与协议栈之间通过指针传递数据,不对包进行复制拷贝;4、设置专门的线程清除存储器中的碎片和检查存储器泄露。因此,NDK很适合目前嵌入式系统的硬件环境,是实现DSP联网通信的重要支撑工具。

云计算进阶学习路线图课件:Docker容器的四种网络模式

怎甘沉沦 提交于 2020-02-07 17:21:39
Docker容器是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装Docker引擎的服务器上,也可以实现虚拟化。随着云计算的飞速发展以及企业需求的多样化,Docker容器技术成为云计算人才必备的技能之一。很多人想要快速掌握Docker容器技术,接下来就给大家讲解Docker容器的四种网络模式。 1、closed container 封闭式网络模式 没有网络协议栈的通信使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息,只有lo网络接口。需要我们自己为Docker容器添加网卡、配置IP等。 2、bridged container 桥接式网络模式 各个容器之间网络协议栈单独分离当Docker启动时,会自动在主机上创建一个docker0虚拟网桥,实际上是Linux的一个bridge,可以理解为一个软件交换机,它会在挂载到它的网口之间进行转发。同时,Docker随机分配一个本地未占用的私有网段(在 RFC1918 中定义)中的一个地址给docker0接口。当创建一个Docker容器的时候,同时会创建了一对veth pair 接口。这对接口一端在容器内,即eth0

nordic设备做主机发现服务失败

余生颓废 提交于 2020-02-06 09:04:02
现象: 设备做为主设备,去连接从设备。每次都可以连接上,但是在发现服务的过程中出错。 static uint32_t service_discover(client_t * p_client) { uint32_t err_code = NRF_SUCCESS; p_client->state = STATE_SERVICE_DISC; if(p_client->client_info.uuid.type == BLE_UUID_TYPE_VENDOR_BEGIN) { //每次在这里都返回一个错误码4 err_code = sd_ble_uuid_vs_add(&p_client->client_info.service_base_uuid, &p_client->client_info.uuid.type); if(err_code != NRF_SUCCESS) { NRF_LOG_INFO("service_discover err 1:%x",err_code); return err_code; } } else { ... } ... } 错误码4的定义(nrf_error.h): #define NRF_ERROR_NO_MEM (NRF_ERROR_BASE_NUM + 4) ///< No Memory for operation 错误是说没有足够的内存给到用户

VoLTE协议

南笙酒味 提交于 2020-02-04 00:46:53
VoLTE协议栈架构 从无线角度来看:VoLTE需要建立的承载: 要实现语音或视频业务需要UE同时建立三个数据承载外,还需要UE建立RRC链接信令承载:SRB1和SRB2。 VoLTE用户注册 VoLTE用户在体验高质量通话之前,必须先进行VoLTE的注册流程,从无线角度来看,注册分为两个步骤: (1)LTE无线的无线注册: 由于VoLTE实质上对于无线来说只是一种数据业务,所以,E-UTRAN网络需要为VoLTE提供数据发送的通道。即,建立QCI=8/9的承载。 (2)IMS注册:支持VoLTE的终端在完成LTE的注册后,会通过LTE的承载向IMS网元发起注册(类似于高层应用的注册),即,建立QCI=5的承载;在该注册完成后,用户就可以使用VoLTE进行语音通话了。即,会触发核心网建立一条QCI=1的专用承载用于传输IMS语音包。 VoLTE控制面协议栈 VoLTE用户面协议栈 来源: CSDN 作者: 一叶知秋dong 链接: https://blog.csdn.net/dxpqxb/article/details/104158971

Zigbee协议栈组播通信

旧巷老猫 提交于 2020-02-03 17:58:01
在Zigbee网络中组播通信,模块可以分组来标记,发送模块的组号和接受模块的组号相对应,那么这些模块就可以拿到无线数据包。 分组中组编号是2个字节,如0x0001、0x0002。 发送的模块按照组的方式发送,需要目标模块的组编号,端点,簇。 一个组可以关联多个端点,同一个端点也可以关联多个组。 终端节点(发送): ZZApp.c中 if ( events & ZZApp_MY_EVT ) { if ( P0_1 == 0 ) { char theMessageData [ ] = "HELLO WORLD!" ; ZZApp_DstAddr . addrMode = ( afAddrMode_t ) AddrGroup ; //组播形式 ZZApp_DstAddr . addr . shortAddr = 0x0001 ; //接受端的组 // Take the first endpoint, Can be changed to search through endpoints ZZApp_DstAddr . endPoint = 10 ; //接受端的端口 AF_DataRequest ( & ZZApp_DstAddr , & ZZApp_epDesc , 0x0001 , //接受端的簇 ( byte ) osal_strlen ( theMessageData ) + 1

低功耗蓝牙(BLE)——概述

拈花ヽ惹草 提交于 2020-01-29 08:38:36
1. 概述   蓝牙协议是由SIG制定并维护的无线通信协议,蓝牙协议栈是蓝牙协议的具体实现。各厂商都根据蓝牙协议实现了自己的一套函数库——蓝牙协议栈,所以不同厂商的蓝牙协议栈之间虽然存在差别,但是都遵循同一套蓝牙协议。   蓝牙技术的实质是建立通用无线接口及其控制软件的标准,使移动通信与计算机网络之间能实现无缝连接。蓝牙通讯最初设计初衷是方便移动电话(手机)与配件之间进行低成本、低功耗无线通信连接。   标准号:IEEE802.15.1   核心技术:低功耗,即Low Energy 1.1 RF规格    工作频段   2.4GHz~2.4835GHz,ISM(Industrial,Scientific and Medical)频段    工作频道   2402 + k*2MHz, k=0,…,39.   40个频道,每个频道2MHz的间隔,3个广播信道(37-2402MHz,38-2426MHz,39-2480MHz),37个数据信道,广播报文还是数据报文由信道决定;   调制方式:GFSK(高斯频移键控),调制指数为0.5   中心频率容限:±150kHz 1.2 发射功率   -20dBm~10dBm(0.01mW ~ 10mW)—— ble4.0/ble4.1/ble4.2   -20dBm~20dBm(0.01mW ~ 100mW)—— ble5.0/ble5.1

Web Services的简单介绍

僤鯓⒐⒋嵵緔 提交于 2020-01-29 03:50:53
一、Web Services的基本概念 Web Services是设计支持机器于机器通过网络互操作的一种软件系统(W3C的定义)。 Web Services是一种分布式的体系结构,可以跨域应用系统的对象体系、运行平台、开发语言等的界限,以服务的形式封装应用并对外发布,供用户或其他企业调用,从而形成一个基于Web的服务共享平台。 Web Services是描述一些利用标准化的XML消息传递机制可以通过网络访问的操作的接口。Web Services是用标准的、规范的XML概念描述的,称为Web Services的服务描述(WSDL)。这一描述囊括了与服务交互需要的全部细节,包括消息格式、详细操作、传输协议和位置。该接口隐藏了实现服务的细节,允许独立于实现服务基于的硬件或软件平台和编写服务所用的语言使用服务。这允许并支持基于Web Services的应用程序称为松散耦合、面向组件或跨技术实现。Web Services履行一项特定的任务或一组任务。 二、相关概念 1、XML:XML是EXtensible Markup Language的缩写,XML是一种类似于HTML的标记语言,XML是用来描述数据的,XML的标记不是在XML中预定义的,你必须定义自己的标记 XML使用文档类型定义(DTD)或者模式(Schema)来描述数据 ,XML使用DTD或者Schema后就是自描述的语言. 2