Websocket RFC 中的这个数据帧示例如何等于“Hello”?

Posted

技术标签:

【中文标题】Websocket RFC 中的这个数据帧示例如何等于“Hello”?【英文标题】:How does this data frame example in the Websocket RFC equal “Hello”? 【发布时间】:2020-01-18 00:02:39 【问题描述】:

Section 5.7 of Websocket Protocol RFC 6455 的第一个例子如下:

单帧未屏蔽文本消息

0x81 0x05 0x48 0x65 0x6c 0x6c 0x6f(包含“你好”)

本例中的前两个八位字节是什么?为什么它们在那里?

查找最后五个八位字节的 UTF-8 代码,我可以看到这些字节将如何转换为 Hello

【问题讨论】:

【参考方案1】:

此示例中的前两个八位字节包含有关数据帧及其包含的有效负载的元数据。最后五个八位字节表示有效负载或Hello

前两个八位字节0x81 0x05 是两个字节或 16 位数据的十六进制表示。在二进制中,它们转换为:1000 0001 0000 0101

使用 RFC 中的 Data Frame Diagram,您可以看到这些位告诉我们有关数据帧的信息。总结一下:

第 1 位 (FIN):表示这是正在发送的消息的最后一个片段 第 5-8 位(操作码):有效载荷是 UTF-8 格式的文本消息 第9-16位(有效载荷长度):有效载荷长度为5

【讨论】:

以上是关于Websocket RFC 中的这个数据帧示例如何等于“Hello”?的主要内容,如果未能解决你的问题,请参考以下文章

WebSocket帧数据 解码/转码

c++ websocket帧发送导致服务器关闭连接

如何将带有状态码的 WebSocket 关闭帧发送到浏览器?

WebSocket基础使用示例

WebSocket基础使用示例

如何正确检查 Chrome 中的 WebSocket 帧?