首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏该溜子的专栏

    【JavaEE】——自定义协议方案、UDP协议

    一:自定义协议 程序员在调用操作系统提供的网络API写出来的代码都是属于应用层的(回顾五个层级:应用层,传输层,网络层,数据链路层,物理层),应用层自身就有许多已经创建好的协议,但多数情况下是需要程序员自定义协议的 1:自定义协议 主要约定好两方面的内容 (1)交互哪些信息 解释:服务器和客户端之间要交互哪些信息,由产品经理规定需要传输哪些信息 (2)数据的具体格式 解释:客户端按照约定构造、发送请求,解析返回的响应 服务器按照约定解析请求,构造、发送响应 2:(反)序列化 Client和Server之间交互的是“结构化数据”,网络传输的数据其实是“字符串”“二进制bit流”,约定协议的过程就是把 1:特点 回顾一下:无连接,不可靠传输,面向数据报,全双工, UDP数据报=报头+载荷 UDP报头中4个字段,每个字段2个字节,共8个字节 协议中报头用2个字节表示端口号,能表示的范围为2^16-1= AD343SCSCAF2321”这样的密码串,校验的时候,再运算一次,(在运算转化的过程中,数据可能会超出范围,不打紧)通过比较两次运算的结果可以知道,该次数据传输是否是一致的正确的 3:CRC算法 4

    41510编辑于 2024-12-30
  • 来自专栏爱编码

    【Netty】自定义协议

    简介 Netty中,通讯的双方建立连接后,会把数据按照ByteBuf的方式进行传输,例如http协议中,就是通过HttpRequestDecoder对ByteBuf数据流进行处理,转换成http的对象。 步骤 制定协议(如表头,内容字节大小,内容,校验位等) 写好编码器Encoder,将数据进行编码的操作。 写好解码器Decoder,将数据进行解码的操作。 实现 1.制定协议(如表头,内容字节大小,内容,校验位等) 自定义传输的实体类,其实本质上你可以将它当做自定义协议。这里为了方便入门,就没有写正式的协议。 oo.close(); } catch (IOException e) { e.printStackTrace(); } } return (bytes); } } 4. ,其中事件处理包括创建新的连接以及处理入站和出站数据; * 3.当连接被建立时,一个EchoClientHandler实例会被安装到(该Channel的一个ChannelPipeline中; * 4.

    1.2K40发布于 2019-07-03
  • 来自专栏程序员

    IPv4协议

    IP地址(IPv4) 这里所说的IP地址是IPv4地址,IP地址由32位正整数来表示。他在计算机内部被以二进制方式处理,因此最多有2^32个IP地址,即:43亿个总IPv4地址。 IPv4数据报格式 ? 版本号:在IPv4数据报中,版本号就是4。不同的IP版本使用的数据报格式不同,IPv6的数据报不是这样的。 协议:该字段指示传输层所使用的协议类型。通过该字段指示了IP数据报应该交给哪个传输层协议。典型的有值为6的时候,表示应该交由TCP协议,值为17的时候,表示交由UDP协议。 在上层协议是UDP协议的情形下,首先在发送端主机发送IP包的时候设置分片禁止标志。途中的路由器即使遇到了包的大小超过了数据链路的MTU,也不去分片,直接将包丢弃。 在上层协议是TCP协议的情形下。由于TCP协议是面向有连接的(两台主机之间要维护这个连接)。TCP协议会根据路径MTU的大小来计算出最大段长度MSS。

    1.8K20发布于 2019-05-25
  • 来自专栏landv

    自定义URL Protocol 协议

    Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\fuck] @="fuck Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\fuck\DefaultIcon] @="C:\\Program Files (x86)\\VB精简版\\Vb6.exe,0" [HKEY_CLASSES_ROOT\fuck\shell] @="" [HKEY_CLASSES_ROOT\fuck\shell\open]

    1.9K30发布于 2019-03-22
  • 来自专栏漫流砂

    自定义协议 | Electron 安全

    0x01 简介 大家好,今天和大家讨论的是自定义协议,在很多应用中,除了支持 http(s)、file、ftp等开放的通用标准协议外,还会支持一些自定义协议自定义协议常被用于实现特殊功能,比如深度集成应用程序与特定的网络服务 ,欢迎大家留言讨论~ 这篇文章也提供了 PDF 版本及 Github ,见文末 0x02 程序内部注册自定义协议 1. 4) isProtocolHandled protocol.isProtocolHandled(scheme) 一个 scheme 是否被注册为了一个协议,就是看一个协议有没有被注册过 参考文章 https ,所以在做安全检查时,也需要根据实际情况,接下来列举几个曾经在注册自定义协议方面出现的问题 需要注意的是,外部引用的安全防护代码可能不会针对自定义协议进行防护,这也是造成很多漏洞的直接原因 CVE-2018 time__1311=n4%2Bxni0QDQdYqDvPBKDsL3ObDcBIKKriTo4D&alichlgref=https%3A%2F%2Fwww.google.com%2F https://

    1.6K10编辑于 2024-05-17
  • 来自专栏蛋蛋编程手记

    内容传输自定义协议

    在这种需求下,最好的方法就是自定义协议,发送方按照一定的格式将文件流和文件描述信息编码成字节流,接收方把收到的字节流在解析成文件流和文件描述信息。 这里蛋蛋给出一个简单的协议格式。 消息类型(1字节) 描述信息长度(4字节) 描述信息(描述信息长度) 文件流长度(4字节) 文件流(文件流长度) ​ 发送方按照上述协议进行编码。 接收方收到了字节流后按照上述协议解析。 1. 然后读取4个字节数据转成数字得到描述信息长度 3. 然后根据第2步的长度读取描述信息 4. 读取4个字节的文件长度 5. 根据第4步的文件长度读取文件流 最后说一下,这个协议有几个很大的局限性。 首先长度信息限制在了4个字节的范围内,所以不能超过2^32次方,也就是说内容长度不能超过大概4个g。如果有更大的需求那就需要使用更多的字节来描述长度。

    59410编辑于 2023-02-25
  • 来自专栏全栈程序员必看

    WebSocket 协议 1~4

    篇幅太长超过了简书的单篇最大长度,故分为两篇,此篇记录 1~4 节,其余见 WebSocket 协议 5~10 节; 1.1 背景知识 由于历史原因,在创建一个具有双向通信机制的 web 应用程序时,需要利用到 Sec-WebSocket-Protocol 子协议选项,是用于标识客户端想和服务端使用哪一种子协议(都是应用层的协议,比如 chat 表示采用 “聊天” 这个应用层协议)。 得到哈希后的内容为(使用 16 进制的数表示每一个字节中内容):0xb3 0x7a 0x4f 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6 0x46 0x06 0xcf 0x38 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6 0x46 0x06 0xcf 0x38 0x59 0x45 0xb2 0xbe 0xc4 0xea`,对于哈希后的内容进行 base64 | 头字段,它的值已经在第4.2.2 节中的第 4 步定义了。

    1K20编辑于 2022-06-29
  • 来自专栏m0w3n

    wireshark插件开发 - 自定义协议

    虽然wireshark自带了很多知名协议的解析插件,譬如HTTP、DHCP等等,然而在实际应用环境中,有不少软件之间的通信协议都是私有的,如游戏客户端和服务器之间的交互协议通常都是私有的,wireshark 无法具体解析出各种字段之间的含义,只能显示接收到的二进制数据,给协议的分析和问题的排查带来了一定的困难,尤其是协议内容比较复杂时。 本文一个自定义的简单协议入手,分析如何基于wireshark开发自定义协议分析插件。 ? 1.1. 概述 本书使用Go语言来描述协议的交互过程。 协议描述 1 package packet 2 3 import ( 4 "bytes" 5 "encoding/binary" 6 "fmt" 7 "os 客户端 1 package main 2 3 import ( 4 "fmt" 5 "net" 6 ) 7 8 import "packet" 9 10 func

    1.8K30发布于 2021-06-21
  • 来自专栏游戏杂谈

    wireshark解析自定义的protobuf协议

    一个Lua插件的Dissector结构大致如下: do -- 协议名称为 m_MeteoricProto,在Packet Details窗格显示为 XXX Protocol local buffer, pinfo, tree) then else -- data 这个 dissector 几乎是必不可少的; 当发现不是我的协议

    4.9K30发布于 2018-11-20
  • 来自专栏张泽旭的专栏

    springcloud gateway 自定义协议转化实现

    本文链接:https://blog.csdn.net/qq_17655941/article/details/103362115 这几天公司要求实现 springcloud gateway 自定义协议 需要对外统一提供http/https 的接口,但是后端有很多服务提供了不同的方式,包括dubbo 协议,和dubbo 上提供的各种访问协议等(dubbo服务上协议的支持),需要从网关直接代理去访问。 import com.alibaba.fastjson.JSONObject; import io.netty.buffer.UnpooledByteBufAllocator; import org.slf4j.Logger sink.complete(); })); })); } } 通过反射机制类完成除过gateway 自定义协议外的所有解析进行处理 这就完了,简单把 具体协议插件实现可以下载源代码 完整项目下载 github

    3.7K31发布于 2019-12-10
  • 来自专栏Devops专栏

    4. 自定义DBUtils

    4. 自定义DBUtils 前言 在上一章节,我们使用 Apache-DBUtils 实现了数据库的增删查改,的确使用起来很方便。 ; //4. ; //4. ; //4. ; //4.

    93920发布于 2021-10-12
  • 来自专栏嵌入式、安防、流媒体、AI分析

    海康ehome协议分析(4):GPS上传

    海康带有GPS的设备,是通过报警(Alarm)服务进行GPS上传的,具体通信通道是根据配置文件,可选择UDP,UDP&TCP,MQTT方式分别对应的配置是:

    77840编辑于 2022-11-03
  • 来自专栏嵌入式、安防、流媒体、AI分析

    海康ehome协议分析(4):GPS上传

    海康带有GPS的设备,是通过报警(Alarm)服务进行GPS上传的,具体通信通道是根据配置文件,可选择UDP,UDP&TCP,MQTT方式分别对应的配置是:

    44940编辑于 2023-01-04
  • 来自专栏网络安全防护

    浅谈IPv4协议与IPv6协议的区别!

    在讲IPv4协议与IPv6协议的区别前,我们必须了解什么叫IPv4协议和IPv6协议? u=274633623,1386372214&fm=15&gp=0.jpg IPv4,是互联网协议(Internet Protocol,IP)的第四版,应属第一个被广泛应用,构成现阶段互联网技术的基础的协议 现如今的全世界英特网所选用的协议族是TCP/IP协议族。IP是TCP/IP协议族中网络层的协议,是TCP/IP协议族的核心协议。当前IP协议的版本号是4(简称为IPv4,v,version版本) 。 但是,现在绝大部分人使用的还是IPv4协议。 逐渐将会取代之前被广泛应用的IPv4协议。但因为IPv6比较复杂。不具备兼容性,操作现阶段的IPv4迁移到IPv6是比较困难的。

    1.5K20发布于 2019-05-22
  • 来自专栏用户1692782的专栏

    手撕RTSP协议系列(4)——OPTION

    上一篇,我们介绍了sdp相关信息,接下来开始我们介绍RTSP相关的选项,本篇我们首先来看一下OTPION选项。

    3.3K22发布于 2020-10-30
  • 来自专栏云深之无迹

    低速协议系列:SPI.4(历史)

    居然都第 4 篇了(第三篇是 FPGA 串并这个,为了观看体验换了位置),先回忆一下我们的工作有哪些? 第二篇里面的 QSPI, 是 NXP(买了摩托罗拉的 MCU 业务),推出来的 ColdFire: 上面搭载的 另外这个 SPI 协议虽然大家都用,但是 SPI 协议并非由国际标准组织(如 IEEE 或 ISO)制定的公开标准,而是由 摩托罗拉 (Motorola) 公司提出的私有技术,因此它没有像 I2C(由飞利浦制定)那样拥有正式的 RFC 或标准协议白皮书,目前业界没有公认的“非官方标准”。 于是: SPI 被定义为 MCU 内部硬件模块 它最初甚至不是“协议”,只是: 带片选的同步移位寄存器接口 没有:帧结构,地址字段,校验机制,仲裁机制,电气规范文档,统一时序标准所以它很难被定义成“标准协议 帧结构完全自定义 SPI 设备协议完全各厂商自定:8 bit,16 bit,24 bit,连续流,带 CRC,不带 CRC 所以: SPI 是“物理通道”,不是“协议层” 为什么后来没人去标准化 SPI

    16910编辑于 2026-03-03
  • 来自专栏InvQ的专栏

    如何利用 Netty 实现自定义协议通信?

    既然是网络编程,自然离不开通信协议,应用层之间通信需要实现各种各样的网络协议。在项目开发的过程中,我们就需要去构建满足自己业务场景的应用层协议。 之前我们介绍了如何使用网络协议解决 TCP 拆包/粘包的底层问题,这次我们将在此基础上继续讨论如何设计一个高效、可扩展、易维护的自定义通信协议,以及如何使用 Netty 实现自定义通信协议。 如果在满足业务场景以及性能需求的前提下,推荐采用通用协议的方案。相比通用协议自定义协议主要有以下优点。 极致性能:通用的通信协议考虑了很多兼容性的因素,必然在性能方面有所损失。 扩展性:自定义协议相比通用协议更好扩展,可以更好地满足自己的业务需求。 安全性:通用协议是公开的,很多漏洞已经很多被黑客攻破。 自定义协议更加安全,因为黑客需要先破解你的协议内容 那么如何设计自定义的通信协议呢?这个答案见仁见智,但是设计通信协议有经验方法可循。

    1.2K40发布于 2020-11-13
  • 来自专栏我的博客

    【Linux网络】应用层自定义协议

    应用层协议就是应用程序之间通信的规则和格式约定,让不同的程序能够理解彼此发送的数据含义。 再谈 “协议协议是一种 “约定”。 长度前缀 为防止 粘包/半包,常在发送的数据前加上 4 字节的长度字段(网络字节序),接收端先读取长度,再读取完整报文。 这种约定就是 应用层协议 但是,为了让我们深刻理解协议,我们打算自定义实现一下协议的过程。 我们采用方案2,我们也要体现协议定制的细节 我们要引入序列化和反序列化,只不过我们直接采用现成的方案 – jsoncpp库 我们要对socket进行字节流的读取处理 不过我们会在下篇文章中自定义实现一下协议 “lineBreak”:自定义换行符(如设置为 “\n” 或 “\r\n”),影响多行输出的换行方式。

    18710编辑于 2025-12-22
  • 来自专栏摸鱼范式

    深入AXI4总线- AXI4的兄弟协议

    先介绍下 AXI4-L ,用通俗的说法,Lite 是标准 AXI4 协议被砍了几刀的结果。 在很多 ip 核中都可以看到 Lite 和标准 AXI4 协议,以及我们接下来要说的 AXI-Stream 协议,一起工作的身影。 ? 首先 AXI4-Stream 砍去了地址概念,Stream 将不再是一种 address mapped 的协议,而是一种点对点(或者一点对多点)数据流通信的协议。 打个比方, AXI4 适合访问诸如 RAM 等有地址概念的存储介质,而 Stream 协议则适合访问诸如 FIFO 这样没有地址概念的存储介质。 没有了地址概念,自然也没有突发传输的概念。 同 AXI4 中的 transfer 以及 burst 的组织形式不同,Stream 协议定义了四类传输。 ?

    1.8K10发布于 2020-06-24
  • 来自专栏有趣的django

    4.自定义序列类

    1.1.序列类型的分类 1.2.序列的+和+=,extend和append的区别 from collections import abc a = [1,2,] c = a + [3,4] print( c) #[1, 2, 3, 4] #如果 + 元祖则会报错, not tuple # c = a + (3,4) #TypeError: can only concatenate 是就地加,不会新生成list #用+= 则可以是元祖,后面只要是可迭代的就行 #其原理是python内部抽象基类MutableSequence里面有个魔法函数__iadd__来实现的 a += (3,4) #[1, 2, 3, 4] print(a) a.extend((5,6)) print(a) #[1, 2, 3, 4, 5, 6] a.append((7,8)) print :3] # 切片元素连续 # del aList[::2] # 切片元素不连续,隔一个删一个 (2)实现对象支持切片操作 from collections import abc #Sequence协议

    60700发布于 2018-05-30
领券