我正在查看Websocket的行为。 Websocket消息是否与TCP流不同?
例如,当我发送数据ABC,DEF,GHI时,它是否保证接收数据ABC,DEF,GHI?在TCP流中,不保证:我们可能会收到AB,DEFG,HI。
答案 0 :(得分:4)
是的,它是面向消息的(实际上是面向框架的)。
每RFC 6455:
握手成功后,客户端和服务器将数据传回 在本说明书中称为的概念单元中 “消息”。在线上,消息由一个或多个组成 帧即可。 WebSocket消息不一定对应于a 特定的网络层成帧,可能是碎片消息 由中间人合并或分割。
...
WebSocket协议的设计原则应该是 最小的框架(唯一存在的框架是制作 协议框架而不是基于流的并支持 区分Unicode文本和二进制框架)。这是预料之中的 应用程序将元数据分层放在WebSocket之上 层,就像元数据在TCP之上分层一样 应用层(例如,HTTP)。
从概念上讲,WebSocket实际上只是TCP之上的一层 执行以下操作:
为浏览器添加基于Web源的安全模型
添加了寻址和协议命名机制来支持 一个端口上的多个服务和一个IP上的多个主机名 地址
将TCP 上的框架机制分层,以返回到IP 建立TCP的数据包机制,但没有长度限制
包括设计的带内附加结束握手 在代理人和其他中间人的存在下工作