从输入URL到页面展示发生了什么?
一个URL从浏览器输入到应用服务处理的完整请求过程涉及多个步骤,以下是一个简要的概述:
URL解析和分析: 用户在浏览器中输入URL(统一资源定位符)。浏览器需要解析这个URL,它包括协议(如http、https)、域名(例如www.example.com)、路径、查询参数等等。
DNS解析: 浏览器需要将域名解析为IP地址,这一过程称为DNS解析。浏览器向本地DNS服务器发送请求,本地DNS服务器可能会查询其缓存,如果找不到,它会向根DNS服务器逐步查询,最终找到对应的IP地址。
建立TCP连接: 通过解析得到的IP地址,浏览器与目标服务器建立TCP连接。这个过程涉及TCP的三次握手,确保浏览器与服务器之间可以进行数据传输。
发起HTTP请求: 一旦TCP连接建立,浏览器会向服务器发送一个HTTP请求。这个请求中包含了之前解析得到的路径、查询参数、请求方法(GET、POST等)、Headers(例如User-Agent、Cookie等)等信息。
:authority:cason.work
:method:GET
:path:/api/user/sysInfo
:scheme:https
Accept:application/json, text/plain, /
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.9,en;q=0.8,en-US;q=0.7,en-GB;q=0.6
Cache-Control:no-cache
Cookie:na me=1691121971;
Pragma:no-cache
Referer:https://cason.work/
Sec-Fetch-Dest:empty
Sec-Fetch-Mode:cors
Sec-Fetch-Site:same-origin
Token:***
User-Agent:Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/115.0.0.0
服务器处理请求: 服务器接收到HTTP请求后,会根据请求的内容进行处理。如果请求的是静态资源(例如HTML文件、图片等),服务器会从文件系统中读取资源并返回给浏览器。如果请求需要应用逻辑处理(例如通过某种编程语言生成动态内容),服务器会将请求转发给相应的应用服务。
应用服务处理: 应用服务接收到请求后,根据请求的内容执行相应的逻辑。这可能包括从数据库中检索数据、处理业务逻辑、生成动态内容等。
生成HTTP响应: 应用服务处理完请求后,会生成一个HTTP响应。这个响应包括了状态码(例如200表示成功、404表示资源未找到等)、Headers(例如Content-Type、Cache-Control等)以及实际的响应内容。
Cache-Control:no-cache, no-store, max-age=0, must-revalidateContent-Type:application/jsonDate:Thu, 10 Aug 2023 11:47:23 GMTExpires:0Pragma:no-cacheServer:nginxVary:Access-Control-Request-HeadersVary:Access-Control-Request-MethodVary:OriginX-Content-Type-Options:nosniffX-Frame-Options:DENYX-Xss-Protection:1; mode=block传输HTTP响应: 服务器将生成的HTTP响应通过之前建立的TCP连接传输回浏览器。
浏览器接收响应: 浏览器接收到服务器传回的HTTP响应。它会根据响应中的信息进行处理,例如解析HTML内容、渲染页面、执行JavaScript代码等。
关闭连接: 一旦响应传输完毕,浏览器与服务器之间的TCP连接会被关闭。这一步确保连接资源被释放。
总的来说,这个过程涉及了多个关键步骤,包括URL解析、DNS解析、建立TCP连接、发起HTTP请求、服务器处理、应用服务处理、生成HTTP响应、传输响应、浏览器处理等,最终将用户输入的URL转化为浏览器上可见的网页内容。