01 2025 档案
摘要:前言 上一篇随笔,介绍了如何扩展自定义协议的请求类型。本篇随笔我将介绍如何基于这个自定义协议来实现文件传输,其中将涉及数据分片和零拷贝 在设计自定义协议之前,我们首先了解一下HTTP协议是如何处理文件传输的。 HTTP协议的实现方式 在这里,我们主要讨论应用最广泛的HTTP/1.1协议 关于数据分片
阅读全文
摘要:前言 上一篇随笔"如何实现一套自定义网络协议",介绍了自定义协议的粘拆包的处理,消息体的编解码等。 其中包含一个案例,演示怎么实现一个RPC实现。 不过案例中的Request格式是固定的,实际应用中,RPC协议需要支持不同的API。 所以需要有一个字段来表示API类型,而字段的存放位置有两种选择 1
阅读全文
摘要:什么是 SSL/TLS 协议?它位于哪一层? SSL(Secure Sockets Layer)和 TLS(Transport Layer Security)是用于保护网络通信安全的加密协议。 它们通过加密、身份验证和完整性检查,确保数据在传输过程中不被窃取或篡改。 SSL/TLS 协议位于传输层和
阅读全文
摘要:前言 在上一篇随笔中,我们探讨了如何使用 Netty 处理自定义协议中的粘包和拆包问题。Netty 提供了高度封装的 API,帮助开发者轻松应对这一挑战,因此很多人都对其解决方案非常熟悉。 但如果我们直接使用 Java NIO 来实现类似的功能,应该怎么做呢? Kafka,作为一个成熟的分布式消息队
阅读全文
摘要:前言 在上一篇随笔中,我们探讨了如何实现一套自定义通信协议,其中涉及到的粘包和拆包处理最初是完全自定义实现的,后来则改为了继承 ByteToMessageDecoder 来简化处理。 本篇将重点讨论这两种实现方式在缓存管理上的主要区别,并深入分析其中的不同之处以及值得借鉴的经验和技巧。 代码回顾 1
阅读全文
摘要:前言 下文介绍的自定义协议仅作为学习示例,纯粹是玩具项目,没有实际可用性。无需过度关注和讨论其合理性 进行通信的双方是谁? 常见的模型 客户端-服务器,例如HTTP协议,浏览器<=>Web服务器。 中转站模型,如MQTT协议,应用服务<=>中转站<=>硬件客户端 对等模型,例如Thrift协议,应用
阅读全文