深刻理解HTTP

发布时间:2026/6/26 7:04:26

深刻理解HTTP 文章目录HTTP是什么HTTP 常见的状态码HTTP常见的头部字段GET和HOST辨析HTTP版本迭代HTTP是什么HTTP叫超文本传输协议本质是格式超级严格的“发货单/收获单”文本底层的TCP/IP协议是货车和高速公路只负责把字节流安全、有序地从 A 送到 B当货车到底服务器时怎么知道车里装的什么是要入库还是要退回而HTTP协议就是货物上贴的标准化物流单HTTP报文只分为两类1️⃣客户端发来的HTTP请求Request请求行要求服务器干嘛格式[方法][][url][][版本][]代表空格请求头请求的属性格式:冒号加空格分割的键值对每组键值对之间用\r\n分割直到遇到空行代表头结束**空行 **\r\n表示属性写完了下面就是真货**正文 ** 实际给服务器的数据如果正文body存在请求头里会有Content-Length标识正文长度2️⃣服务器发来的HTTP响应Response**状态行 ** 客户端要求的事情办得咋样格式[版本号][][状态码][状态码解释]响应头 ** 响应的属性格式:冒号加空格分割的键值对每组键值对之间用\r\n分割直到遇到空行**代表头结束**空行 ** 分割线**正文 ** 实际给客户端的数据如果正文body存在请求头里会有Content-Length标识正文长度如果服务器返回一个html页面那么html页面是在正文body里HTTP 常见的状态码2xx成功报文已经收到并被正确处理200 OK204 No Content 请求成功我没啥发给你的3xx重定向资源位置发生变动需要客户端重新发送请求301 Mover Permanently 永久重定向比如我的网站原先是Vect.com现在换成了VVect.com302 Found 临时重定向比如用户没登陆就访问一些界面返回302让登录4xx客户端错误请求报文有问题服务器无法处理400 Bad Request报文语法错误匹配不上403 Forbidden权限不足404 Not Found访问资源不存在5xx服务器错误服务器处理请求时内部发生错误500 Internal Server Error服务器内部崩溃501 Not Implemented客户端的请求功能还不支持502 Bad Gateway网关错误业务进程挂了或者网络不通畅503 Service Unavailable服务器繁忙暂时无法响应HTTP常见的头部字段Host字段客户端发送请求时用来指定服务器的域名Host: www.xxx.comContent-Length字段表明正文的长度字节Content-Length: 18Content-Type字段表明正文的格式类型Content-Type: text/htmlConnection字段标识长短连接keep-alive长连接告诉底层TCP别断开close短连接告诉底层传完这个报文就close(fd)Cookie(客户端 - 服务端)浏览器每次发请求时把本地存的身份 ID 带上Set-Cookie(服务端 - 客户端)服务器在登录接口处理完后告诉浏览器“把这个 ID 记住下次带过来”GET和HOST辨析GET是动作在最前面决定了要对货物做什么HOST是名词藏在属性栏决定了货物要送到哪GET请求方法GET在请求行里标识客户端要获取什么资源GET请求一般没有正文HOST请求头字段HOST在请求头中标识客户端最后要访问的目标主机域名为啥得有HOST假设一台服务器IP为11.22.33.44同时挂了10个不同的网站不同的网站解析出来的IP都一样而客户端数据包到达服务器后通过HOST字段就可以知道客户端要去哪HTTP版本迭代HTTP/1.0短连接时代客户端发起请求 - 建立 TCP 连接三次握手 - 服务器返回数据 - 断开 TCP 连接四次挥手连接开销极大假设网页里有100张小图片就饿得连接100次断开100次HTTP/1.1长连接时代客户端和服务器建立一次 TCP 连接后这条公路保持畅通后续的多个 HTTP 请求都在这一条公路上排队跑队头请求数据过大容易造成对头阻塞后续请求只能阻塞等待HTTP/2.0多路复用时代把HTTP报文切成极其细小的二进制帧并打上 Stream ID 编号。这样一来同一个 TCP 连接里可以同时并发无数个请求到了服务器再根据编号拼装起来HTTP/3.0底层采用UDP改造的QUIC协议减少三次握手和TLS握手时间

相关新闻