当前位置: 首页 > news >正文

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 帧数据了。

http://www.lryc.cn/news/321315.html

相关文章:

  • 在Linux中开发C++
  • 【linux】Debian访问Debian上的共享目录
  • Postman Newman API 自动化测试快速入门
  • Python之Web开发中级教程----ubuntu安装MySQL
  • Flutter开发入门——路由
  • Acrobat Pro DC 2023:PDF编辑与管理的全新体验
  • Linux课程_____网络管理
  • ubuntu20.04_PX4_1.13
  • 12350安全生产举报热线系统解决方案
  • Java 多线程(超详细讲解)上篇
  • 15届蓝桥杯备赛(2)
  • 使用Vuex构建网络打靶成绩管理系统及其测试页面平台思路
  • CPU的核心数与线程数对性能的影响是什么
  • Web前端-HTML
  • 【LLMs+小羊驼】23.03.Vicuna: 类似GPT4的开源聊天机器人( 90%* ChatGPT Quality)
  • 详细了解CSS
  • Java基础-IO流
  • MySQL的基本概念
  • 如何入职车载测试
  • 【物联网】Modbus 协议简介
  • 网络编程-套接字相关基础知识
  • 基于Python的医疗机构药品及耗材进销存信息管理系统
  • Java学习笔记(14)
  • 联合和枚举
  • 《深入Linux内核架构》第2章 进程管理和调度 (3)
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Refresh)
  • 数据资产管理解决方案:构建高效、安全的数据生态体系
  • Visual Studio 2013 - 调试模式下查看监视窗口
  • CTF 题型 SSRF攻击例题总结
  • 【Swing】Java Swing实现省市区选择编辑器