网络协议
文章平均质量分 72
解析各种常见互联网协议的原理以及实现细节
VFSSoft
专注于
网络通信协议
文件系统设计
数据传输与同步
欢迎来交流,很高兴认识大家
展开
-
MQTT: Packet Identifier
对于 QoS 是 0 的 PUBLISH 包,不能携带 Packet Id。客户端在接受的一个带有 Packet Id 的包的 “ACK” 响应之后,可以重用当前 Packet Id。当客户端重新发送一个包的时候,必须保证这个包和之前发送时候使用的 Packet Id 相同。客户端每次发送一个新的包的时候,必须给这个包设置一个从未使用过的 Packet Id.使用 Packet Id 之后,可以并行的发送多个消息,然后等该他们对应的响应。服务器和客户端在选择 Packet Id 时,是相互独立的。原创 2024-09-02 22:02:50 · 492 阅读 · 0 评论 -
MQTT: PUBLISH
当客户端或者服务器第一次尝试发送一个 PUBLISH 消息的时候,DUP 应该未设置为 0。如果 DUP 为 1, 说明服务器或者客户端正在尝试重新传输一个之前已经发送过的 PUBLISH 消息。对于 QoS 0 的消息, DUP 应该总是为 0.对于服务器端来说,接收到的 PUBLISH 中的消息的 DUP 值不影响服务器在分发这个消息到订阅者时的 PUBLISH 消息中的 DUP 的值,它们之间没有必然联系。是否是 DUP,完全由当前将被发送的 PUBLISH 消息是否是一个重传的消息决定。原创 2024-09-02 22:02:00 · 577 阅读 · 0 评论 -
MQTT: Will Message
Will 消息需要被服务器保存在服务器端,和当前网络连接关联。Will 消息必须在后续网络连接断开之后被分发出去(Publish), 除非服务器收到了来自客户端的 Disconnect 包。当客户端主动的通过发送 DISCONNECT 断开了网络连接的情况下, Will 消息是不应该被服务器分发给订阅者的。如下情况下 Will 消息需要从 Session 中移除;在需要的时候,服务器端应该的分发 Will 消息。原创 2024-09-02 22:01:09 · 470 阅读 · 0 评论 -
MQTT: Topic Names and Topic Filters
Topic Name 和 Topic Filter 的区别就是 Topic Name 不能包含通配符,而 Topic Filter 可以包含通配符。Topic Name 标识一个具体的主题,而 Topic Filter 可以标识一个或者一组主题。原创 2024-09-02 22:00:14 · 854 阅读 · 0 评论 -
MQTT: Keep Alive
如果 Keep Alive 的值不为零,但是在1.5倍的约定时间间隔后,服务器没有收到来自客户端的控制包(包括 PINGREQ), 服务器端应该关闭与客户端的网络连接,并且把它当作一个网络错误。如果在此时间间隔内,没有其他的控制包需要发送给服务器端,客户端可以发送 PINGREQ 包。如果客户端发送了 PINGREQ 消息,但是在一定时间之后,没有收到来自服务器端的 PINGRESP 消息,客户端应该关闭当前网络连接。这个值规定了客户端从发送上一个控制包之后,到发送下一个控制包之间最大的时间间隔。原创 2024-09-02 21:59:08 · 498 阅读 · 0 评论 -
MQTT: Client Identifier
服务器端也可以支持 ClientId 是空字符串的情况。但是这种情况应该被特殊处理,服务器需要为这个 ClientId 生成一个唯一的不为空的 ClientId,然后像处理 ClientId 不为空的情况一下来处理当前 CONNECT 包。每个连接到服务器的 MQTT Client 必须设置一个唯一的 ClientId。服务器也可以支持长度大于 23 的 ClientId,也可以支持在 ClientId 中包含其他的字符。ClientId 是一个 1-23个字节的 UTF8 编码的字符串。原创 2024-09-02 21:58:11 · 555 阅读 · 0 评论 -
MQTT: Clean Session Flag
控制 Session 的状态. (Session State)Session State 用户确保在客户端和服务器之间的多个连接中可靠的传输消息。原创 2024-09-02 21:55:49 · 477 阅读 · 0 评论 -
TLS: ECDH 算法基础
ECDH 算法原理讲解原创 2024-07-25 14:39:03 · 716 阅读 · 0 评论 -
TLS: PRF
TLS 中 PRF 是什么, 怎么工作的?原创 2024-07-23 09:21:03 · 226 阅读 · 0 评论 -
Kerberos: Realm 和 Principal Names
Kerberos Realm 和 Principal Name 基本知识原创 2024-07-17 21:39:36 · 452 阅读 · 0 评论 -
HTTP Digest Auth
相比于 Basic,Digest 不需要在网络上传输用户的密码。但是它依然不是一个身份验证的完美方案,它没有提供认证消息内容加密的机制。这个协议的目的是创建一个简单的认证方法,避免 Basic 的严重缺陷。原创 2024-04-22 09:07:06 · 1318 阅读 · 0 评论 -
HTTP Basic Auth
注意: 如果你在实际项目中使用 Basic 授权,请不要使用 http,使用 https.因为 Basic 认证需要在网络上明文传输用户名和密码,如果不使用 https 协议,你的密码将会泄露。Basic 认证直接校验客户端的用户名和密码。原创 2024-04-22 09:01:50 · 369 阅读 · 0 评论 -
TLS/DTLS 使用 Raw Public Key
通常情况下, TLS 握手过程中使用 PKIX certificate, 通过校验这些证书是否合法来确保 TLS 通信的安全。但是,在一些比较小的场景中,服务器客户端都使用自签名的证书,然后这些证书通过其他方式分发给需要通信的各个节点。在这种情况下,证书校验就退化为仅仅比较证书的二进制内容是否相等了,其他的校验都将不再需要。TLS 握手过程中交换的证书信息将会很小,减少握手过程所需要交换的数据量处理证书的代码将会很简单。通常的 TLS 实现中,处理证书将会是很大一个的功能模块。原创 2024-04-15 16:34:31 · 695 阅读 · 0 评论 -
TLS: DH Key Exchange
DH Key 交换算法原理以及在 TLS 中的引用原创 2023-11-14 17:48:48 · 125 阅读 · 0 评论 -
TLS 版本协商
TLS 版本协商的工作流程原创 2023-11-09 23:22:04 · 671 阅读 · 0 评论 -
TLS 安全重协商扩展
TLS 安全重协商扩展原创 2023-11-07 20:42:30 · 1685 阅读 · 0 评论 -
TLS: Cipher Suites 简介
TLS Cipher Suite 简介原创 2023-11-07 18:14:52 · 1024 阅读 · 0 评论 -
TLS: RSA Key exchange
TLS 中 RSA Key 交换算法的实现原创 2023-11-02 22:13:34 · 139 阅读 · 0 评论 -
TLS: Extended Master Secret 扩展
TLS 中 Extended Master Secret 扩展详解原创 2023-11-02 11:24:25 · 525 阅读 · 0 评论 -
mitmdump 自定义脚本输出 TLS 数据
如何 MITMDUMP 自定义脚本输出 TLS 明文数据原创 2023-10-18 20:44:02 · 181 阅读 · 0 评论 -
网络协议:DTLS 1.2
如何安全的传输 UDP 协议? 这篇文章带你一起学习一下著名的 DTLS 协议。原创 2023-03-01 23:32:56 · 2391 阅读 · 2 评论