Tcp 基于Websocket框架
我从中了解到Websocket是基于帧的协议,而不是基于流的协议。但它也说明了为什么WebSocket是基于帧的而不是基于流的?我不知道,就像你一样,我想了解更多,因此如果你有想法,请在下面的回复中随意添加评论和资源。Tcp 基于Websocket框架,tcp,websocket,frame,Tcp,Websocket,Frame,我从中了解到Websocket是基于帧的协议,而不是基于流的协议。但它也说明了为什么WebSocket是基于帧的而不是基于流的?我不知道,就像你一样,我想了解更多,因此如果你有想法,请在下面的回复中随意添加评论和资源。 有人能解释一下在Websocket中使用基于帧的协议有什么好处吗?也许预先存在的答案将有助于为讨论提供一些参考 通过利用帧和基于按摩的协议(与基于流的协议相比),编写面向Web的应用程序变得更容易 发送JSON数据等常见操作变得更加容易,并且不需要每个应用程序都为零碎的消息实现网
有人能解释一下在Websocket中使用基于帧的协议有什么好处吗?也许预先存在的答案将有助于为讨论提供一些参考 通过利用帧和基于按摩的协议(与基于流的协议相比),编写面向Web的应用程序变得更容易 发送JSON数据等常见操作变得更加容易,并且不需要每个应用程序都为零碎的消息实现网络数据缓冲/缓存层
编辑(回复评论) TCP/IP层保证网络数据包的交付和排序,但没有数据长度的概念——它是一个流协议,它承诺流将按顺序到达,仅此而已 如果任何数据到达时出现故障,TCP/IP协议层将对数据重新排序。这可能需要一个内部缓存/缓冲区,在等待丢失的数据时保留现有数据 相反,WebSocket是基于消息的,并且知道消息数据长度 WebSocket帧使用具有数据长度(总/部分)的报头,以允许WebSocket协议层将所有数据作为单个单元连接,即使它分布在多个TCP/IP数据包或(甚至)WebSocket帧上 这要求协议层将数据保存在内部缓冲区中,直到消息中的所有预期数据到达。WebSocket协议仅在消息的全部数据到达时才将消息转发给应用程序 为了从流中提取消息“units”,这种“保持数据”是我所指的缓存/缓冲元素。可能预先存在的答案将有助于为讨论提供一些参考 通过利用帧和基于按摩的协议(与基于流的协议相比),编写面向Web的应用程序变得更容易 发送JSON数据等常见操作变得更加容易,并且不需要每个应用程序都为零碎的消息实现网络数据缓冲/缓存层
编辑(回复评论) TCP/IP层保证网络数据包的交付和排序,但没有数据长度的概念——它是一个流协议,它承诺流将按顺序到达,仅此而已 如果任何数据到达时出现故障,TCP/IP协议层将对数据重新排序。这可能需要一个内部缓存/缓冲区,在等待丢失的数据时保留现有数据 相反,WebSocket是基于消息的,并且知道消息数据长度 WebSocket帧使用具有数据长度(总/部分)的报头,以允许WebSocket协议层将所有数据作为单个单元连接,即使它分布在多个TCP/IP数据包或(甚至)WebSocket帧上 这要求协议层将数据保存在内部缓冲区中,直到消息中的所有预期数据到达。WebSocket协议仅在消息的全部数据到达时才将消息转发给应用程序
为了从流中提取消息“units”,这种“保持数据”是我所指的缓存/缓冲元素。谢谢您的回答。我在另一篇帖子上读到了你的答案。您已经提到,在基于流的协议中,我们不知道消息的结尾。(我说的对吗?)?另外,您能否更详细地解释一下网络数据缓存层?它应该在哪一层实现?@WorkingSlave-有关添加的信息,请参阅我的评论。谢谢您的回答。我在另一篇帖子上读到了你的答案。您已经提到,在基于流的协议中,我们不知道消息的结尾。(我说的对吗?)?另外,您能否更详细地解释一下网络数据缓存层?它应该在哪一层实现?@WorkingSlave-有关添加的信息,请参阅我的注释。