一次HTTP请求
<div id="wrapper" class="wrapper_new wrapper_l"><div id="wrapper_wrapper">
<div id="container" class="sam_newgrid container_l" data-w="1280">
<div id="content_left">
<div id="1" class="result-op c-container new-pmd" data-op="{'y':'5F4DDC66'}" data-click="{"p1":1,"rsv_bdr":"0","fm":"alop","rsv_stl":0,"p5":1,"area":"LEFT"}" data-cost="{"renderCost":75,"dataCost":7}">
<div data-display-ext="{"hasFold":1,"coreCount":67,"coreNum":10,"subtitleNum":0,"total_h":758,"screen_h":0}" data-show-overlength="1">
<div class="cosc-card dqa-layout_2cgIE wenda-index_4Zk1q transparent-content-container_4GMNe content-with-fold-switch_5S0YM baikan-pc-Control_5X3nc ">
<div class="cosc-card-content-border cosc-card-shadow cosc-card-light-bg-border">
<div class="cosc-card-content">
<div class="content-container_64QCb ">
<div class=" ">
<div data-module="head_module">
<div class="ai-entry">
<div>
<div data-show="summary" data-show-ext="{"component_content":{"component_name":"markdown","component_type":"abstract"}}">
<div class="cosd-markdown">
<div class="cosd-markdown-content ">
<div class="marklang">
<p class="marklang-paragraph">当在浏览器地址栏输入网址并回车后,浏览器会通过以下步骤加载网页:</p>
</div>
</div>
</div>
</div>
</div>
<div>
<div class="cos-space-mt-xxl" data-show="summary" data-show-ext="{"component_content":{"component_name":"markdown","component_type":"abstract"}}">
<div class="cosd-markdown">
<div class="cosd-markdown-content ">
<div class="marklang">
<p class="marklang-paragraph">域名解析(DNS 查询)</p>
</div>
</div>
</div>
</div>
</div>
<div>
<div class="cos-space-mt-xxl" data-show="summary" data-show-ext="{"component_content":{"component_name":"markdown","component_type":"abstract"}}">
<div class="cosd-markdown">
<div class="cosd-markdown-content ">
<div class="marklang">
<ul>
<li>缓存层查找:浏览器首先检查本地缓存(如浏览器缓存、系统缓存)、hosts 文件以及网络运营商的 DNS 缓存中是否存在该域名的 IP 地址。<span><span><span><span class="cos-tooltip cosd-citation"><span class="cosd-citation-citationId"><br></span></span></span></span></span></li>
<li>递归查询:若缓存中未找到对应记录,浏览器会向本地 DNS 服务器发起请求。本地 DNS 服务器会向上级 DNS 服务器(如根服务器、顶级域名服务器)递归查询,最终获取 IP 地址并缓存以备后续使用。<span></span></li>
</ul>
<p class="marklang-paragraph">以下是关于浏览器输入URL后发生的事情:</p>
</div>
</div>
</div>
</div>
</div>
<div>
<div class="cos-space-mt-xxl" data-show="summary" data-show-ext="{"component_content":{"component_name":"markdown","component_type":"abstract"}}">
<div class="cosd-markdown">
<div class="cosd-markdown-content ">
<div class="marklang">
<p class="marklang-paragraph">建立 TCP 连接</p>
</div>
</div>
</div>
</div>
</div>
<div>
<div class="cos-space-mt-xxl" data-show="summary" data-show-ext="{"component_content":{"component_name":"markdown","component_type":"abstract"}}">
<div class="cosd-markdown">
<div class="cosd-markdown-content ">
<div class="marklang">
<ul>
<li>三次握手:浏览器与服务器通过 TCP 三次握手建立连接。客户端发送 SYN 包,服务器响应 SYN-ACK,客户端再发送 ACK 确认连接建立。<span><span><span><span class="cos-tooltip cosd-citation"><span class="cosd-citation-citationId"><br></span></span></span></span></span></li>
<li>HTTPS 额外步骤:若使用 HTTPS(默认端口 443),还需进行 TLS 握手以协商加密参数和验证服务器身份。<span><span><span><span class="cos-tooltip cosd-citation"><span class="cosd-citation-citationId"><br></span></span></span></span></span></li>
</ul>
<p class="marklang-paragraph">以下是关于浏览器建立TCP连接后发生的事情:</p>
</div>
</div>
</div>
</div>
</div>
<div>
<div class="cos-space-mt-xxl" data-show="summary" data-show-ext="{"component_content":{"component_name":"markdown","component_type":"abstract"}}">
<div class="cosd-markdown">
<div class="cosd-markdown-content ">
<div class="marklang">
<p class="marklang-paragraph">发送 HTTP 请求</p>
</div>
</div>
</div>
</div>
</div>
<div>
<div class="cos-space-mt-xxl" data-show="summary" data-show-ext="{"component_content":{"component_name":"markdown","component_type":"abstract"}}">
<div class="cosd-markdown">
<div class="cosd-markdown-content ">
<div class="marklang">
<ul>
<li>构建请求:浏览器向服务器发送 HTTP 请求(如 GET/POST),包含 URL、头部信息(如 User-Agent、Cookies)及请求体。<span><span><span class="cos-tooltip cosd-citation"><span class="cosd-citation-citationId">2<span><span><span class="cos-tooltip cosd-citation"><span class="cosd-citation-citationId">3</span></span></span></span></span></span></span></span></li>
<li>重定向处理:若服务器返回 3xx 重定向状态码,浏览器会自动重新发起请求。<span><span><span class="cos-tooltip cosd-citation"><span class="cosd-citation-citationId">2</span></span></span></span></li>
</ul>
<p class="marklang-paragraph">以下是关于浏览器发送HTTP请求后发生的事情::</p>
</div>
</div>
</div>
</div>
</div>
<div>
<div class="cos-space-mt-xxl" data-show="summary" data-show-ext="{"component_content":{"component_name":"markdown","component_type":"abstract"}}">
<div class="cosd-markdown">
<div class="cosd-markdown-content ">
<div class="marklang">
<p class="marklang-paragraph">优化建议:若网页加载缓慢,可尝试更换 DNS 服务器(如阿里 DNS223.5.5.5或腾讯 DNS119.29.29.29),并清空浏览器缓存或重启设备以提升解析效率。<span><span><span class="cos-tooltip cosd-citation"><span class="cosd-citation-citationId cosd-citation-citationId-active">4</span></span></span></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div data-module="content"> </div>
</div>
<div>
<div data-module="more" data-show="more">
<div class=" cosd-fold-switch_4ktgn cosd-fold-switch-unfold_4OWSQ">
<div class="cos-fold-switch cosd-fold-switch-content_3PpNT">
<div class="cos-fold-switch-context"><span class="cos-fold-switch-text"> </span></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="8" class="result-op c-container new-pmd" data-op="{'y':'F6EFDFBF'}" data-click="{"p1":8,"rsv_bdr":"0","fm":"alop","rsv_stl":60601,"p5":8,"area":"LEFT"}" data-cost="{"renderCost":2,"dataCost":3}">
<div class="cosc-card">
<div class="cosc-card-content-border">
<div class="cosc-card-content">
<div class="content_EbWw1 cos-space-mb-none cursor-text_BcfP6" data-module="normal_content" data-show="normal_content" data-show-ext="">
<p class="common-content_4dXMi cos-line-clamp-2">当你在浏览器中输入一个网址并按下回车键后,会发生一系列复杂但有序的过程,最终将网页内容呈现在你的屏幕上。</p>
<p class="common-content_4dXMi cos-line-clamp-2">这些过程主要包括域名解析、建立HTTP连接、发送HTTP请求、服务器响应以及浏览器渲染等步骤。下面我将详细解释这些过程:</p>
<p class="common-content_4dXMi cos-line-clamp-2"> 1. 域名解析: - 浏览器首先会将你输入的域名解析成计算机可理解的IP地址。 - 域名解析的过程会依次检查浏览器缓存、操作系统缓存、电信运营商缓存以及公共DNS缓存。 - 如果在所有缓存中都找不到对应的IP地址,浏览器会向DNS服务器发出请求,DNS服务器会从根服务器、顶级域名服务器和权威DNS服务器层层查找,最后返回IP地址。</p>
<p class="common-content_4dXMi cos-line-clamp-2"> 2. 建立HTTP连接: - 在获取到IP地址后,浏览器会与服务器建立TCP连接,这通常通过三次握手过程来完成。 - 三次握手确保了客户端和服务器之间的连接是可靠的,可以开始传输数据。 </p>
<p class="common-content_4dXMi cos-line-clamp-2">3. 发送HTTP请求: - 连接建立好后,浏览器会向服务器发送一个HTTP请求报文,其中包含了请求的资源路径、请求方法等信息。 - 常见的HTTP请求方法包括GET和POST,其中GET方法用于请求网页资源。</p>
<p class="common-content_4dXMi cos-line-clamp-2"> 4. 服务器响应: - 服务器接收到请求报文后,会处理请求并返回一个HTTP响应报文。 - 响应报文中包含了资源内容、响应状态码等信息。状态码如200表示成功,404表示资源未找到,500表示服务器内部错误等。</p>
<p class="common-content_4dXMi cos-line-clamp-2"> 5. 浏览器渲染: - 浏览器接收到响应报文后,会对资源内容进行解析并渲染网页。 - 渲染过程包括处理HTML以构建DOM树、处理CSS以构建CSSOM树、以DOM和CSSOM为基础构建渲染树、进行布局计算以及将节点绘制到屏幕上。 </p>
<p class="common-content_4dXMi cos-line-clamp-2">6. 断开HTTP连接(不一定会马上断开): - 当客户端和服务器之间数据传输完成后,会通过四次握手过程来断开连接。 - 四次握手确保了双方都已确</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="qbSelectWordPanel">
<div id="qbSelectSettingBtn" class="qbSelectionWordItem" data-pref="" data-hover="true">
<div class="qbSelectionWordItemHoverIcon"> </div>
</div>
</div><br><br>
来源:https://www.cnblogs.com/wanglanting/p/18948886
頁:
[1]