http协议原理

一、HTTP协议概述
HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最广泛的协议之一,用于客户端(如浏览器)与服务器之间的通信。

基本特性:

无状态协议:服务器不会记录之前的请求信息

基于请求/响应模型:客户端发起请求,服务器返回响应

应用层协议:运行在TCP/IP之上

默认端口:HTTP使用80端口,HTTPS使用443端口
二、TCP三次握手(连接建立)
HTTP通信前需要先建立TCP连接,这个过程称为"三次握手":

握手过程:
第一次握手:客户端发送SYN包(序列号=x)到服务器

第二次握手:服务器回应SYN+ACK包(序列号=y,确认号=x+1)

第三次握手:客户端发送ACK包(确认号=y+1)
为什么要三次握手?

防止已失效的连接请求到达服务器,造成资源浪费

确保双方都能发送和接收数据的能力
3. 请求方法详解
方法 作用 幂等性 安全性
GET 获取资源 是 是
POST 提交数据,创建资源 否 否
PUT 更新整个资源 是 否
PATCH 更新部分资源 否 否
DELETE 删除资源 是 否
HEAD 获取响应头,不返回响应体 是 是
OPTIONS 获取服务器支持的HTTP方法 是 是
HTTP状态码分类
2xx 成功类
200 OK:请求成功

201 Created:资源创建成功

204 No Content:请求成功,无返回内容

3xx 重定向类
301 Moved Permanently:永久重定向

302 Found:临时重定向

304 Not Modified:资源未修改(使用缓存)

4xx 客户端错误
400 Bad Request:请求语法错误

401 Unauthorized:需要身份验证

403 Forbidden:服务器拒绝请求

404 Not Found:资源不存在

5xx 服务器错误
500 Internal Server Error:服务器内部错误

502 Bad Gateway:网关错误

503 Service Unavailable:服务不可用

504 Gateway Timeout:网关超时
五、TCP四次挥手(连接释放)
通信结束后需要断开TCP连接:

挥手过程:
第一次挥手:客户端发送FIN包,表示数据发送完毕

第二次挥手:服务器发送ACK包,确认收到断开请求

第三次挥手:服务器发送FIN包,表示服务器数据发送完毕

第四次挥手:客户端发送ACK包,确认断开
为什么需要四次挥手?

TCP是全双工通信,每个方向都需要单独关闭

客户端关闭发送通道后,仍可以接收数据

服务器需要时间处理完剩余数据再关闭
请求:

  • GET /api/user/123 HTTP/1.1

  • Host: api.example.com

  • Accept: application/json

  • 响应:

  • HTTP/1.1 200 OK

  • Content-Type: application/json

  • Content-Length: 78

  • {

  • "id": 123,

  • "name": "张三",

  • "email": "zhangsan@example.com"

  • }

posted @ 2025-12-25 20:31  sdbl  阅读(6)  评论(0)    收藏  举报