【补充】HTTP协议
HTTP协议
【一】什么是HTTP协议/HTTPS协议
【1】HTTP(Hypertext Transfer Protocol)协议
数据传输是明文
- 是一种用于在网络中传输超文本的应用层协议。
- 它是Web通信的基础,用于客户端和服务器之间的请求和响应。
- HTTP协议使用TCP作为传输协议,默认使用80端口进行通信。
【2】HTTPS(Hypertext Transfer Protocol Secure)协议
数据传输是密文
是HTTP协议的安全版本,它通过使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议来保护数据传输的安全性和完整性。
- HTTPS在HTTP的基础上添加了加密和认证机制,可以有效防止敏感信息被篡改或窃取。HTTPS默认使用443端口进行通信。
- 与HTTP相比,HTTPS更加安全可靠,因此在涉及用户隐私、金融交易等敏感数据的场景中得到广泛应用。
【二】什么是websocket协议
数据传输是密文
【1】WebSocket协议
- 是一种在Web应用中提供双向通信的网络协议,它允许在单个TCP连接上进行全双工通信。
- 与传统的HTTP请求-响应模型不同,WebSocket协议通过在客户端和服务器之间建立持久连接,实现了实时的双向数据传输。
【2】WebSocket协议的特点包括:
- 双向通信:客户端和服务器可以通过WebSocket在同一个连接上相互发送消息,而无需为每个消息都建立一个新的连接。
- 低延迟:WebSocket使用较少的数据帧和较少的开销,有效减少了通信的延迟,适用于实时性要求较高的应用场景。
- 轻量级:相比其他实时通信协议,WebSocket协议具有较小的数据开销,减少了网络带宽的使用。
- 支持跨域:WebSocket协议支持跨域通信,使得不同域名下的Web应用可以进行双向通信。
WebSocket协议在实时聊天、多人在线游戏、实时数据展示等场景中得到广泛应用,它提供了一种高效可靠的方式来实现实时的双向通信。
【三】HTTP协议的四大特性
无连接:
HTTP协议是一种无连接协议,即每个请求和响应之间都是独立的。这意味着客户端发送请求后,与服务器建立连接、发送请求、接收响应和断开连接的过程完成后,连接就会关闭。下一次请求需要重新建立连接。这种设计可以简化服务器的管理,并且使得HTTP协议更具可扩展性。
无状态:
HTTP协议是一种无状态协议,即服务器不会保存客户端的请求状态信息。每个HTTP请求都是独立的,服务器无法知道两个请求是否来自同一客户端。这是因为HTTP协议本身不提供状态管理的机制。为了实现状态管理,通常会使用Cookie或Session等技术来跟踪客户端的状态。
基于请求-响应模型:
HTTP协议基于请求-响应模型进行通信。客户端向服务器发送请求,服务器处理该请求并返回相应的响应。请求和响应都包含有关数据的信息。请求通常包括方法(如GET、POST),URL路径和可选的请求头部;而响应包括状态码、响应头部和可选的响应体。
可扩展性:
HTTP协议具有良好的可扩展性,可以通过使用不同的HTTP方法、头部字段和扩展机制来满足各种需求。HTTP方法定义了不同的操作类型(如GET用于获取资源,POST用于提交数据等),HTTP头部字段可以传输附加的控制信息和元数据,而HTTP扩展机制允许定义自定义的头部字段和功能扩展。
【四】数据格式
对于HTTP请求,其中包含三个主要部分:请求首行、请求头和请求体。
请求首行(Request Line):
请求首行包含了请求的方法、路径和协议版本。它通常由三个部分组成,以空格分隔:
- 请求方法(Request Method):表示请求的操作类型,常见的有GET、POST、PUT、DELETE等。
- 请求路径(Request URI/URL):表示请求资源的路径。
- 协议版本(HTTP Version):表示使用的HTTP协议版本,如HTTP/1.1。
示例:GET /api/users HTTP/1.1
请求头部(Request Headers):
请求头部包含了一系列的键值对,用于传递附加的信息给服务器。这些信息可以包括用户代理、内容类型、身份验证等。每个键值对都独占一行,键值对之间使用冒号分隔。常见的请求头包括:
- Host:表示请求的服务器主机名和端口号。
- User-Agent:表示发送请求的用户代理(浏览器、应用程序等)信息。
- Content-Type:表示请求体的媒体类型。
- Authorization:表示请求的身份验证凭证等。
示例:
请求体(Request Body):
请求体可选,主要用于传输请求的数据。它通常用于POST、PUT等方法中,用于传递信息给服务器。请求体可以包含各种格式的数据,如JSON、XML、表单数据等。请求体的格式和内容由Content-Type头部字段指定。
示例(以JSON格式的请求体为例):
【五】响应状态码
1xx(信息性状态码):表示请求已接收,需要进一步处理。
- 100 Continue:服务器已收到请求的部分内容,并且要求客户端继续发送剩余部分。
2xx(成功状态码):表示请求已成功被服务器接收、理解和处理。
- 200 OK:表示请求已成功,服务器正常处理并返回了请求的内容。
3xx(重定向状态码):表示需要进一步操作以完成请求。
- 300 Multiple Choices:表示请求的资源有多个选择,客户端可以进一步选择一个。
- 301 Moved Permanently:表示请求的资源已永久移动到新位置。
- 302 Found:表示请求的资源暂时移动到另一个位置。
- 303 See Other:表示服务器将请求的资源重定向到新的URL。
- 304 Not Modified:表示客户端缓存的资源仍有效,直接使用缓存的版本。
4xx(客户端错误状态码):表示客户端发出的请求有误。
- 403 Forbidden:表示服务器理解请求,但拒绝授权访问。
- 404 Not Found:表示请求的资源不存在。
5xx(服务器错误状态码):表示服务器在处理请求时发生了错误。
- 500 Internal Server Error:表示服务器遇到了未知的错误。
请注意,上述列举的仅是一些常见的状态码,实际上HTTP协议定义了更多的状态码。每个状态码都有其特定含义,用于传达请求处理的结果信息。在实际开发中,根据各种不同的情况,可能会使用到其他状态码来更准确地描述请求处理的结果。
__EOF__

本文链接:https://www.cnblogs.com/dream-ze/p/17533979.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:Chimengmeng,转载请注明原文链接:https://www.cnblogs.com/dream-ze/p/17533979.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南