websocket 升级协议时的协议切换点

websocket 的 rfc6455 标准中提到了协议升级,从http协议升级到websocket协议,用的办法是在http的request header中包含Connection: upgrade 和 Upgrade: websocket 以及其他验证相关的头。服务器验证通过后发送 respond,并升级到websocket。但这儿有一个小问题,在rfc6455中并没有明确的提到,就是服务器在接收到http请求头之后,如何从文本格式切换到帧格式?这儿有没有一个明确的切换标志?在 rfc6455 中只明确提到使用 rfc2616 http/1.1 协议,在翻阅 rfc2616 之后,在4.1节 Message Types 中发现了这个标志:

Request (section 5) and Response (section 6) messages use the generic message format of RFC 822 [9] for transferring entities (the payload of the message). Both types of message consist of a start-line, zero or more header fields (also known as "headers"), an empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields, and possibly a message-body.

generic-message = start-line *(message-header CRLF) CRLF [ message-body ] start-line = Request-Line | Status-Line

协议中提到在收到第一个空行之后,表示请求头结束,剩下的就是payload部分。而websocket由于是请求/响应协议升级,没有附带的payload,因此,可以确定的是,在收到连续的两个CRLF之后,表示文本部分结束,如果升级成功,则接下来传输的数据就是websocket 帧数据了。

相关推荐
橘子真甜~12 分钟前
C/C++ Linux网络编程8 - epoll + ET Reactor TCP服务器
linux·服务器·网络
贝塔实验室24 分钟前
红外编解码彻底解析
网络·嵌入式硬件·信息与通信·信号处理·代码规范·基带工程·精益工程
就叫飞六吧30 分钟前
“电子公章”:U盾(U-Key)实现身份认证、财务支付思路
网络·笔记
悠悠121381 小时前
NLB WebSocket 连接问题排查与解决方案
websocket·网络协议·php
wanderist.1 小时前
Linux使用经验——离线运行python脚本
linux·网络·python
4***17541 小时前
Spring Boot整合WebSocket
spring boot·后端·websocket
biter00882 小时前
Ubuntu 22.04 有线网络时好时坏?最终解决方案
linux·网络·ubuntu
Macbethad2 小时前
基于WPF的Ethernet/IP主站程序技术方案
网络协议·tcp/ip·wpf
ganshenml3 小时前
【Web】证书(SSL/TLS)与域名之间的关系:完整、通俗、可落地的讲解
前端·网络协议·ssl
世界尽头与你3 小时前
SSL 签名相关漏洞
网络·安全·ssl