【补充】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协议的特点包括:

  1. 双向通信:客户端和服务器可以通过WebSocket在同一个连接上相互发送消息,而无需为每个消息都建立一个新的连接。
  2. 低延迟:WebSocket使用较少的数据帧和较少的开销,有效减少了通信的延迟,适用于实时性要求较高的应用场景。
  3. 轻量级:相比其他实时通信协议,WebSocket协议具有较小的数据开销,减少了网络带宽的使用。
  4. 支持跨域: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:表示请求的身份验证凭证等。

示例:

Host: www.example.com User-Agent: Mozilla/5. (Windows NT 10.; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91..4472.124 Safari/537.36 Content-Type: application/json

请求体(Request Body):

请求体可选,主要用于传输请求的数据。它通常用于POST、PUT等方法中,用于传递信息给服务器。请求体可以包含各种格式的数据,如JSON、XML、表单数据等。请求体的格式和内容由Content-Type头部字段指定。

示例(以JSON格式的请求体为例):

{ "username": "john_doe", "password": "123456" }

【五】响应状态码

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__

本文作者Chimengmeng
本文链接https://www.cnblogs.com/dream-ze/p/17533979.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Chimengmeng  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示