一次理解透http如何传送数据包
HTTP通信可概括为:
浏览器→ 建立连接→发送请求数据→ web server→ 返回响应数据包→ 浏览器→ 关闭连接
浏览器请求(Request)数据包,web server接收请求后作出响应(Response),发送返回数据包,浏览器接收返回数据包。浏览器与web server中间可以添加代理(Proxy)。
代理(Proxy)在HTTP通信中对与数据包传递的作用是:添加在浏览器和web server中间,可对二者间传递的数据包进行拦截、查看、修改操作。
添加代理后,HTTP简要通信过程为:
浏览器发送请求数据包后首先到达代理服务器,代理服务器再发送给web server,同样,web server响应的返回数据包也首先到达代理服务器,再发送到浏览器。这样通过代理服务器,可以对通信过程中的数据包进行更多的操作。
HTTP通信中主要包含两种数据包:请求数据包和返回数据包
Request请求数据包格式
请求数据包分为四部分:请求行、请求头、空行和请求体。接下来分别对这四个部分进行介绍。
1.请求行:由三个标记组成(请求方法、请求URL和HTTP版本),包含内容为请求类型、请求资源路径,协议的版本和类型,具体表达是三个标记。
(1)HTTP:规划了8种可能的请求方法。
(2)GET:检索URL中标识资源的一个简单请求。
(3)HEAD:与GET方法相同,服务器只返回状态行和头标,并不返回请求文档。
(4)POST:服务器接受被写入客户端输出流中的数据的请求
(5)PUT:服务器保存请求数据作为制定URL新内容的请求。
(6)DELETE:服务器删除URL中命令的资源的请求。
(7)OPTIONS:关于服务器支持的请求方法信息的请求。
(8)TRACE:web服务器反馈HTTP请求和其头标的请求
(9)CONNECT:已文档化,但当前未实现的一个方法,预留做隧道处理。
2.请求头:由关键字或值对组成,每行一对,关键字和值用冒号分开,请求头标通知服务器腾于客户端的功能和标识。
(1)HOST:主机或域名地址。
(2)ACCEPT:指浏览器和其他客户可以接收的MIME文件格式。
(3)User-Agent:客户浏览器的名称。
(4)connection:用来告诉服务器是否可以维持固定的HTTP连接。
(5)Cookie:向服务器发送Cookie(小型数据体)。
(6)Referer:表明产生请求的网页URL。
3.空行:请求头与请求体间用一个空行隔开。
4.请求体:要发送的数据。
Response请求数据包格式
返回数据包包括四部分:状态行、响应头标、空行和响应体。接下来分别对这四个部分进行介绍。
1.状态行:协议版本、数字形式的状态代码和状态描述。各元素间以空格分隔。
HTTP响应码: 1XX——信息、请求收到、继续处理
2XX——成功,行为成功地被接受、理解和采纳。
3XX——重定向,为了完成请求,必须进一步执行的动作。
4XX——客户端错误。
5XX——服务器错误。
2.响应头标:包含服务器类型、日期、长度、内容类型等。
3.空行:响应头+空行+响应体,即响应头与响应体间以空行隔开。
4.响应体:浏览器会将实体内容中的数据取出来,生成相应的页面。
总结:***我们刚开头就说http发起请求到页面渲染一共经历了****
浏览器 → 建立连接 → 发送请求数据 → web server → 返回响应数据包 → 浏览器 → 关闭连接
也就是:::::::::::
请求阶段:浏览器发起请求 → 建立连接(tcp三次握手) → 发送请求数据包 → web server(服务器)
响应阶段:web server(服务器) → 返回响应数据包 → 浏览器渲染 →关闭连接(tcp四次挥手)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?