偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

面試官:輸入URL之后會執(zhí)行什么流程?

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
在網(wǎng)絡(luò)中定位是依靠 IP 進行身份定位的,所以 URL 訪問的第一步便是先要得到服務(wù)器端的 IP 地址。而得到服務(wù)器的 IP 地址需要使用 DNS(Domain Name System,域名系統(tǒng))域名解析,DNS 域名解析就是通過 URL 找到與之相對應(yīng)的 IP 地址。

?在瀏覽器中輸入 URL 之后,它會執(zhí)行以下幾個流程:

執(zhí)行 DNS 域名解析;

封裝 HTTP 請求數(shù)據(jù)包;

封裝 TCP 請求數(shù)據(jù)包;

建立 TCP 連接(3 次握手);

參數(shù)從客戶端傳遞到服務(wù)器端;

服務(wù)器端得到客戶端參數(shù)之后,進行相應(yīng)的業(yè)務(wù)處理,再將結(jié)果封裝成 HTTP 包,返回給客戶端;

服務(wù)器端和客戶端的交互完成,斷開 TCP 連接(4 次揮手);

瀏覽器通過自身執(zhí)行引擎,渲染并展示最終結(jié)果給用戶。

1.DNS 域名解析

在網(wǎng)絡(luò)中定位是依靠 IP 進行身份定位的,所以 URL 訪問的第一步便是先要得到服務(wù)器端的 IP 地址。而得到服務(wù)器的 IP 地址需要使用 DNS(Domain Name System,域名系統(tǒng))域名解析,DNS 域名解析就是通過 URL 找到與之相對應(yīng)的 IP 地址。

PS:為什么不直接訪問 IP 地址來請求服務(wù)器?因為 IP 地址很長,不方便記憶,而 URL 地址好記很多,所以會使用 URL 來替代 IP 地址,而 URL 就像 IP 地址的別名一樣,用它可以定位到相應(yīng)的 IP 地址。

DNS 域名解析的大致流程如下:

  1. 先檢查瀏覽器中的 DNS 緩存,如果瀏覽器中有對應(yīng)的記錄會直接使用,并完成解析;
  2. 如果瀏覽器沒有緩存,那就去查詢操作系統(tǒng)的緩存,如果查詢到記錄就可以直接返回 IP 地址,完成解析;
  3. 如果操作系統(tǒng)沒有 DNS 緩存,就會去查看本地 host 文件,Windows 操作系統(tǒng)下,host 文件一般位于 "C:\Windows\System32\drivers\etc\hosts",如果 host 文件有記錄則直接使用;
  4. 如果本地 host 文件沒有相應(yīng)的記錄,會請求本地 DNS 服務(wù)器,本地 DNS 服務(wù)器一般是由本地網(wǎng)絡(luò)服務(wù)商如移動、電信提供。通常情況下可通過 DHCP 自動分配,當然你也可以自己手動配置。目前用的比較多的是谷歌提供的公用 DNS 是 8.8.8.8 和國內(nèi)的公用 DNS 是 114.114.114.114。
  5. 如果本地 DNS 服務(wù)器沒有相應(yīng)的記錄,就會去根域名服務(wù)器查詢了,目前全球一共有 13 組根域名服務(wù)器(這里并不是指 13 臺服務(wù)器,是指 13 個 ip 地址,按字母 a-m 編號),為了能更高效完成全球所有域名的解析請求,根域名服務(wù)器本身并不會直接去解析域名,而是會把不同的解析請求分配給下面的其他服務(wù)器去完成,下面是 DNS 域名系統(tǒng)的樹狀結(jié)構(gòu)圖:

圖片

2.封裝 HTTP 請求數(shù)據(jù)包

一個 HTTP 請求對象包含 4 部分內(nèi)容:

  1. 請求行
  2. 請求報頭
  3. 空行
  4. 請求正文

它的基本格式如下:

圖片

在得到了服務(wù)器 IP 之后,緊接著會將本地的請求封裝成一個 HTTP 數(shù)據(jù)包,如上圖所示。

3.封裝 TCP 請求數(shù)據(jù)包

HTTP 底層是依賴 TCP/IP 協(xié)議實現(xiàn)的,所以在底層數(shù)據(jù)傳輸時,會將 HTTP 請求包進一步封裝成 TCP 數(shù)據(jù)包。

4.建立 TCP 連接(3 次握手)

HTTP 通訊的基礎(chǔ)是 TCP 連接,TCP 連接需要 3 次握手,3 次握手就是為了驗證客戶端的發(fā)送能力和接收能力,以及服務(wù)器端的發(fā)生能力和接收能力,就像打電話一樣,通常的通話是這樣開頭的:

  1. _我_:喂,能聽到嗎?
  2. _對方_:能聽到,你能聽到嗎?(證明了對方的接收能力和我的發(fā)送能力)
  3. _我_:我也能聽到,咱們聊正事吧。(證明了對方的發(fā)送能力和我的接收能力)

經(jīng)過以上 3 次握手就可以證明客戶端的發(fā)送能力和接收能力,以及服務(wù)器端的發(fā)生能力和接收能力,這樣就可以正式開始通訊了。

5.服務(wù)器端獲取到 HTTP 請求參數(shù)

數(shù)據(jù)在經(jīng)過 TCP 傳到到服務(wù)器程序之后,又會將 TCP 的數(shù)據(jù)包轉(zhuǎn)換成 HTTP 數(shù)據(jù)包(這一切都是 TCP/IP 協(xié)議的功勞),這樣服務(wù)器端就可以得到客戶端發(fā)送的請求數(shù)據(jù)了。

6.服務(wù)器端執(zhí)行業(yè)務(wù)處理,并返回數(shù)據(jù)

服務(wù)器端拿到了客戶端的請求參數(shù)之后,會進行相應(yīng)的業(yè)務(wù)處理,處理完成之后,再將處理的結(jié)果返回給客戶端。返回的流程和發(fā)送的流程類似,先將結(jié)果封裝成 HTTP 數(shù)據(jù)包,HTTP 數(shù)據(jù)包可分為以下 4 部分:

  1. 狀態(tài)行
  2. 響應(yīng)報頭
  3. 空行
  4. 響應(yīng)正文

它的基本格式如下:

圖片

狀態(tài)行用于描述服務(wù)器的返回狀態(tài),它由 3 部分組成:

  1. HTTP 版本號,如 HTTP/1.1;
  2. 狀態(tài)碼,如 200;
  3. 狀態(tài)描述信息,如 OK;

常見的狀態(tài)碼有以下幾個:

  • 200:返回成功;
  • 301:永久重定向;
  • 302:臨時重定向;
  • 404:未找到頁面;
  • 500:服務(wù)器程序出錯。

響應(yīng)正文就是返回給客戶端的所有數(shù)據(jù)。

7.斷開 TCP 連接(4 次揮手)

在經(jīng)過一次請求和一次響應(yīng)之后,客戶端和服務(wù)器的“交流”就結(jié)束了,此時就可以執(zhí)行 TCP 連接斷開的流程了,它需要 4 次揮手:

  • _客戶端_:咱們分手吧;
  • _服務(wù)器端_:好的,讓我準備一下。
  • _服務(wù)器端_:我準備好了,分手吧。
  • _客戶端_:好的。

經(jīng)過了以上流程之后,TCP 的連接就斷開了。

8.瀏覽器渲染并展示結(jié)果

經(jīng)過 TCP 交互之后,客戶端也得到了服務(wù)器端返回的數(shù)據(jù),然后使用瀏覽器自身的執(zhí)行引擎,將最終的結(jié)果展示給用戶,整個執(zhí)行流程就結(jié)束了。

參考 & 鳴謝

zhuanlan.zhihu.com/p/58108010?

責(zé)任編輯:武曉燕 來源: Java面試真題解析
相關(guān)推薦

2022-08-08 07:04:34

URLIPHTTP

2025-07-25 01:45:00

RAG模型技術(shù)

2025-03-12 00:44:00

2024-09-12 08:35:06

2021-05-27 10:26:00

地址欄URLhttp

2013-11-14 13:32:43

面試流程谷歌

2024-11-19 15:13:02

2023-12-27 18:16:39

MVCC隔離級別幻讀

2025-04-16 00:00:01

JWT客戶端存儲加密令

2021-09-07 10:44:33

Java 注解開發(fā)

2024-10-29 08:17:43

2022-07-06 13:48:24

RedisSentinel機制

2021-12-08 06:53:29

面試動態(tài)代理

2024-02-22 15:36:23

Java內(nèi)存模型線程

2025-03-05 00:01:00

ReduxReact

2022-09-29 07:30:57

數(shù)據(jù)庫索引字段

2023-09-26 07:49:11

AOP代理spring

2023-12-06 09:10:28

JWT微服務(wù)

2022-05-23 08:43:02

BigIntJavaScript內(nèi)置對象

2021-06-29 09:47:34

ReactSetState機制
點贊
收藏

51CTO技術(shù)棧公眾號