中卫网站推广营销,大型网站技术方案,企业信用信息查询系统官网(全国),wordpress副标题怎么写文章目录 一、HTTP协议与HTTPS协议1.HTTP协议的用处2.HTTP协议的特点3.HTTP协议的工作流程4.HTTPS协议的用处5.HTTPS协议的特点6.HTTPS协议的工作流程 二、WebSocket协议出现的原因1. 传统的HTTP请求-响应模型2. 轮询#xff08;Polling#xff09;3. 长轮询#xff08;Long… 文章目录 一、HTTP协议与HTTPS协议1.HTTP协议的用处2.HTTP协议的特点3.HTTP协议的工作流程4.HTTPS协议的用处5.HTTPS协议的特点6.HTTPS协议的工作流程 二、WebSocket协议出现的原因1. 传统的HTTP请求-响应模型2. 轮询Polling3. 长轮询Long Polling4. Server-Sent Events (SSE)5. WebSocket 三、WebSocket协议解析1.特点2.建立连接和数据通信第一步: 客户端发起HTTP请求第二步: 服务器响应第三步: 握手完成第四步: 数据传输掩码操作示例第五步: 连接关闭 一、HTTP协议与HTTPS协议
1.HTTP协议的用处
HTTP (Hypertext Transfer Protocol, 超文本传输协议) 是一种用于从网络服务器传输超文本到本地浏览器的传输协议。它确保了高效且准确的信息传输并定义了在数据通信过程中客户端与服务器之间的交互行为。
Web浏览: 当用户在浏览器地址栏输入网址或点击链接时客户端向服务器发送一个HTTP请求以获取资源。服务器响应这些请求并返回HTML页面浏览器再将这些页面渲染成可视化的网页。数据交换: HTTP支持多种数据类型的传输包括但不限于图像、视频、文本和其他多媒体内容。这使得Web应用程序能够提供丰富的用户体验。
2.HTTP协议的特点
无状态协议: HTTP是一种无状态协议意味着每次连接只处理一个请求服务器不会保留关于客户端的任何状态信息。这种设计简化了服务器的实现但也可能导致一些需要维护状态的应用程序需要使用cookies或session来跟踪用户会话。灵活: HTTP允许传输任意类型的数据对象并且可以通过不同的MIME类型来标识数据格式。简单快速: HTTP请求方法简洁明了服务器通常能够迅速响应这些请求。基于文本: 所有命令和消息都是纯文本形式易于调试和理解。
3.HTTP协议的工作流程
HTTP协议是基于TCP/IP模型的应用层协议 一个典型的HTTP请求由以下几个部分组成:
请求行: 包含请求的方法GET、POST等、请求的URL和使用的HTTP版本。请求头: 包含客户端信息、认证信息以及其他用于控制请求行为的元数据。空行: 分隔请求头和请求体。请求体: 可选部分包含了请求的数据例如表单提交的数据。
HTTP响应同样也包含以下几个部分:
状态行: 包含HTTP版本、状态码及描述该状态码的文字说明。响应头: 包含服务器信息、认证信息及其他控制响应行为的元数据。空行: 分隔响应头和响应体。响应体: 包含了服务器响应的数据如HTML文档或其他类型的文件。 用户从在浏览器输入url请求资源到获得资源并渲染在页面上的完整流程 URL 解析和域名解析 用户在浏览器地址栏输入URL。浏览器解析URL提取协议、主机名、端口如未指定则使用默认端口、路径和查询字符串。浏览器进行域名系统DNS查找将域名转换为对应的IP地址。 建立TCP连接 浏览器与服务器建立TCP连接这涉及到三次握手过程。 发起HTTP请求 若URL使用HTTP协议浏览器会直接发送HTTP请求。若URL使用HTTPS协议浏览器会先与服务器建立安全连接包括SSL/TLS握手然后加密的HTTP请求通过该安全连接传输。 服务器处理请求 服务器接收到请求后根据请求的资源类型和路径等信息处理请求。如果请求的是静态资源如HTML、CSS、JavaScript文件服务器会直接从文件系统中读取并返回。如果请求的是动态资源服务器可能需要运行相关的应用程序或脚本来生成响应内容。 返回HTTP响应 服务器将请求的资源或生成的页面作为HTTP响应返回给客户端。HTTP响应包含状态码、响应头和响应体。 浏览器处理响应 浏览器解析响应根据状态码确认是否成功获取资源。对于HTML文档浏览器开始解析HTML并构建DOM文档对象模型。遇到链接到外部资源如CSS、JavaScript、图片等的标签浏览器会再次发起请求下载这些资源。 渲染页面 浏览器根据DOM和CSSOMCSS对象模型渲染页面这是渲染引擎的工作。JavaScript文件被执行可能会对页面内容和结构进行动态修改。 显示结果 浏览器在解析完HTML、CSS和执行完JavaScript后将最终的页面呈现给用户。 关闭连接 一旦页面渲染完毕浏览器通常会关闭与服务器的TCP连接但在持久连接keep-alive的情况下此连接可能会保持打开状态以供后续请求使用。
整个过程涉及网络通信、协议解析、安全加密、数据处理和页面渲染等多个环节每个环节都对网页加载性能有重要影响。 4.HTTPS协议的用处
HTTPS (Hypertext Transfer Protocol Secure) 是HTTP的安全版本它在HTTP的基础上加入了SSL/TLS层主要用于需要高度安全性的网站比如银行、电子商务网站等以确保用户的信息安全。
加密通信: 使用SSL/TLS协议对数据进行加密以防止数据在传输过程中被截获或监听。身份验证: 通过数字证书验证服务器的身份确保用户访问的是合法的网站从而防止中间人攻击。数据完整性: 保证数据在传输过程中的完整性和未被篡改。
5.HTTPS协议的特点
安全性: 通过加密技术来保护传输的数据防止数据被窃取或篡改。认证: 通过数字证书来验证通信双方的身份确保其真实性。可靠性: 提供数据的完整性校验确保接收到的信息是完整无误的。
6.HTTPS协议的工作流程
HTTPS在HTTP的基础上通过SSL或TLS进行加密处理。 SSL/TLS协议在传输数据之前会先在客户端和服务器之间建立一条加密通道。
HTTPS通过以下步骤确保安全通信:
客户端发起TCP连接请求服务器响应TCP连接客户端和服务器进行SSL/TLS握手: 客户端向服务器发送“Client Hello”消息其中包含客户端支持的SSL/TLS版本和加密套件列表。服务器选择一个加密套件并发送“Server Hello”消息确认所选的加密套件并附带自己的数字证书。客户端验证服务器的数字证书并生成一个随机数作为会话密钥然后使用服务器公钥加密此会话密钥后发送给服务器。服务器解密会话密钥并确认密钥已接收。 握手成功后加密的HTTP数据传输开始通讯完成后断开连接。
总之HTTP和HTTPS构成了互联网通信的基础而随着网络安全意识的提高HTTPS正逐步取代传统的HTTP成为主流的网络通信协议为用户提供更安全的网络环境。
二、WebSocket协议出现的原因
WebSocket技术的出现主要是为了解决传统HTTP协议在实现实时双向通信方面存在的不足提高通信效率并简化应用开发。 克服HTTP轮询的局限性 传统HTTP协议下的轮询机制要求浏览器定期向服务器发起HTTP请求以获取更新这种方式不仅效率低下而且消耗大量带宽资源。 HTTP请求头部较长而实际传输的有效数据往往较少导致资源浪费严重。 实现实时双向通信的需求 随着互联网应用的发展对于即时消息、在线游戏等需要实时双向通信的应用场景越来越多。 传统HTTP协议无法满足服务器主动向客户端推送数据的需求限制了这类应用的实现。 提高通信效率 WebSocket协议仅需一次握手即可建立持久连接之后客户端与服务器之间可以直接进行高效的数据交换。 这种全双工full-duplex的通信方式极大地提高了数据传输的速度和效率。 简化开发复杂度 WebSocket作为一种新的协议旨在简化实时通信应用的开发避免了频繁的HTTP请求和响应带来的复杂性和性能瓶颈。
1. 传统的HTTP请求-响应模型
特点传统的Web应用主要基于HTTP协议采用请求-响应模型。浏览器客户端发送请求到服务器服务器处理请求后返回响应。限制HTTP是单向通信只能由客户端发起请求服务器被动响应无法主动推送数据给客户端。
2. 轮询Polling
背景随着Web应用的多样化特别是对实时数据的需求增加开发者开始寻求方法让服务器能够“推送”数据给客户端。方法客户端定期例如每几秒钟向服务器发送HTTP请求查询是否有新数据。限制轮询会增加服务器负载同时由于HTTP请求头较大造成带宽浪费。此外频繁的请求也会影响用户体验。
3. 长轮询Long Polling
改进为了解决轮询带来的问题长轮询技术应运而生。方法客户端发起请求后服务器在没有新数据时保持连接打开状态直到有新数据时才返回响应。优点相比普通轮询减少了不必要的请求次数提高了效率。限制仍然基于HTTP协议存在连接保持时间的限制且服务器资源占用较多。
4. Server-Sent Events (SSE)
介绍SSE是一种简单的服务器推送技术允许服务器向客户端发送事件更新。方法服务器通过HTTP连接持续发送数据流到客户端客户端监听这些事件并做出响应。适用场景适用于只需要服务器向客户端推送数据的场景如股票价格更新或新闻流。限制仅支持单向通信即服务器到客户端的通信。
5. WebSocket
背景随着Web应用对实时双向通信的需求日益增长需要一种更加高效、低延迟的通信方式。特点 WebSocket协议是在HTML5中引入的它提供了一种在客户端和服务器之间建立持久连接的方式。一旦连接建立双方就可以自由地发送数据实现了全双工通信。WebSocket基于TCP/IP协议使用HTTP进行握手之后转换为二进制帧传输数据大大减少了通信开销。WebSocket连接一旦建立就可以长期保持减少了频繁建立和关闭连接的开销。
三、WebSocket协议解析
1.特点
WebSocket协议是一种在单个TCP连接上进行全双工通信的协议。它被设计用于替代HTTP协议中的轮询请求以提供更高效的实时数据传输服务。以下是WebSocket协议的一些主要特点
全双工通信
WebSocket允许服务器和客户端双向通信即数据可以同时从客户端发送到服务器端也可以从服务器端发送到客户端。
持久连接
一旦WebSocket连接建立后就会保持打开状态直到其中一方关闭连接。这使得实时应用的延迟大大降低。
减少开销
相比于HTTP轮询WebSocket减少了每次消息交换所需的头部大小和其他开销提高了数据传输效率。
高效的数据传输
WebSocket使用二进制帧格式传输数据可以有效减少文本格式如JSON或XML带来的额外负载。
支持多种类型的数据
WebSocket不仅可以传输文本数据UTF-8编码还可以传输二进制数据如图片、音频和视频等。
心跳机制
WebSocket定义了心跳机制来检测连接是否仍然活动以避免不必要的重连。
安全性
WebSocket支持加密连接wss://可以通过TLS/SSL协议保护数据传输的安全性。
多路复用
尽管WebSocket本身不直接支持多路复用但可以在一个连接上通过不同的标识符来区分不同的会话或数据流。
跨平台兼容性
WebSocket协议在现代浏览器中得到广泛支持并且可以在服务器端使用多种编程语言实现。
简单易用
WebSocket API简单直观易于开发人员理解和使用。
2.建立连接和数据通信
WebSocket协议建立连接的过程是一个比较典型的握手过程它基于HTTP协议来完成。以下是WebSocket连接建立的详细步骤
第一步: 客户端发起HTTP请求
请求发起 客户端通过HTTP发起一个特殊的GET请求到服务器该请求包含特定的Upgrade头表明希望升级到WebSocket协议。 请求行示例: GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ
Origin: http://example.com
Sec-WebSocket-Version: 13其中Sec-WebSocket-Key是一个随机生成的Base64编码的值用于后续的握手验证。 Sec-WebSocket-Version指定使用的WebSocket版本目前标准版本为13。
第二步: 服务器响应
响应确认 如果服务器同意升级到WebSocket协议则返回一个HTTP状态码101 Switching Protocols的响应。 响应示例: HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbKxOoSec-WebSocket-Accept字段包含了客户端发送的Sec-WebSocket-Key经过处理后的结果。处理方式是将Sec-WebSocket-Key与一个固定的258EAFA5-E914-47DA-95CA-C5AB0DC85B11 GUID拼接然后计算SHA-1哈希最后再进行Base64编码。
第三步: 握手完成
握手完成 当客户端收到服务器的响应并验证了Sec-WebSocket-Accept字段正确无误后就完成了握手过程。此时连接已升级为WebSocket连接可以开始进行双向通信。
第四步: 数据传输
数据帧格式 WebSocket使用帧来传输数据。每个帧由一个固定长度的头部和一个可变长度的有效载荷组成。头部包括帧类型例如文本、二进制或控制帧、掩码标志以及掩码键仅当客户端向服务器发送数据时需要掩码。
掩码标志以及掩码键 在WebSocket协议中掩码标志和掩码键是用来保护客户端到服务器的数据不被中间人窥探的安全措施。具体来说
掩码标志 (Mask Bit) 定义掩码标志是一个位标志用来指示WebSocket帧中的有效载荷数据是否已经被掩码即加密。这个标志位于WebSocket帧头部的第一个字节中它是第7个比特位从右向左计数。 值如果掩码标志设置为1则表示有效载荷数据已经被掩码如果掩码标志设置为0则表示数据未被掩码。在客户端向服务器发送数据时掩码标志总是设置为1而在服务器向客户端发送数据时掩码标志总是设置为0。
掩码键 (Masking Key) 定义掩码键是一个4字节的随机值用于对客户端发送给服务器的数据进行掩码处理。掩码键紧随掩码标志之后出现在WebSocket帧头部。 使用方法掩码键用于对有效载荷数据进行XOR操作。具体而言每4个字节的数据使用掩码键的一个字节来进行XOR操作。例如第一个字节的数据与掩码键的第一个字节进行XOR第二个字节的数据与掩码键的第二个字节进行XOR依此类推。当数据长度不是4的倍数时最后一个掩码键字节会被重复使用直到数据结束。
掩码操作示例
假设掩码键为 0x12 0x34 0x56 0x78并且要发送的有效载荷数据为 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07那么掩码操作过程如下
第1字节0x00 XOR 0x12 0x12第2字节0x01 XOR 0x34 0x35第3字节0x02 XOR 0x56 0x56第4字节0x03 XOR 0x78 0x7b第5字节0x04 XOR 0x12 0x16 掩码键循环第6字节0x05 XOR 0x34 0x37第7字节0x06 XOR 0x56 0x5e第8字节0x07 XOR 0x78 0x7f
因此掩码后的数据为 0x12 0x35 0x56 0x7b 0x16 0x37 0x5e 0x7f。
当服务器接收到这个掩码后的数据时它会使用相同的掩码键来反掩码解密这些数据从而恢复出原始数据。
掩码机制确保了客户端到服务器的数据不会在传输过程中被轻易读取增加了通信的安全性。
数据传输 双方可以开始发送数据帧。文本数据通常使用UTF-8编码而二进制数据则按原样传输。控制帧用于特殊目的比如关闭连接Close帧、ping和pongPing帧和Pong帧等。
第五步: 连接关闭
关闭连接 任何一方都可以发送一个Close帧来请求关闭连接。接收方接收到Close帧后可以选择发送自己的Close帧作为响应。最终双方都发送完数据后会关闭TCP连接。