uncategorized

從輸入網址到渲染畫面,發生了什麼事?

How does the internet works


解析URL (Uniform Resource Locator)

https://yncbearz.github.io/

  • 通訊協定類型 (Protocol): https, http, ftp, etc.
  • 伺服器位址 (Domain): 可放域名或IP address
  • 埠號 (Port): http預設為80、https預設為443

(Note.)
Socket = IP address + Port


解析DNS (Domain Name Server)

  • 檢查本地的 DNS 快取
  • 檢查電腦中的 .host 檔
  • 向DNS伺服器發送詢問
Name Description Example
DNS 將域名轉換為 IP 地址的分散式資訊系統。 將 example.com 轉換為 192.0.2.1
A record 將域名映射到 IPv4 地址的 DNS 記錄類型。 將 example.com 映射到 192.0.2.1
CNAME 將一個域名指向另一個域名的 DNS 記錄類型。 www.example.com 指向 example.com
AAAA 將域名映射到 IPv6 地址的 DNS 記錄類型。 將 example.com 映射到 2001:0db8:85a3:0000:0000:8a2e:0370:7334

建立TCP/IP (Transmission Control Protocol/Internet Protocol)

HTTPS是指將HTTP使用SSL加密後再利用TCP發送,加強安全性。
TCP/IP會經由三次握手建立連線,再經由四次揮手斷開連線。


Get vs Post

  • Get: 瀏覽器將headers與data同時送出,因此只會產生1個TCP封包,
    最後伺服器端回應200與資料。
  • Post: 瀏覽器先將headers送出,等到伺服器端回應100 continue後再傳送data,
    因此會產生2個TCP封包,最後伺服器端回應 200與資料。

伺服器處理請求並返回HTTP回應

通用標頭 (General Header)

  • Request URL: 請求位置。
  • Request Method: 請求方式。
  • Status Code: 狀態碼。
  • Remote Address: 請求遠端伺服器位址,會轉為IP。

狀態碼 (Status Code)

  • 1XX: 資訊回應 (Informational responses)
  • 2XX: 成功回應 (Successful responses)
  • 3XX: 重定向 (Redirects)
  • 4XX: 用戶端錯誤 (Client errors)
  • 5XX: 伺服器端錯誤 (Server errors)

更詳盡的資訊在這裡

請求與回應標頭 (Request & Response Headers)

  • :authority: 要連接的遠端主機和接口訊息。
  • :method: 連接方法。
  • :path: 請求網址的檔案路徑和查詢字串。
  • :scheme: 請求網址的協議規範。(ex: https)

以上為HTTP/2的偽請求標頭(pseudo-header field),
並不屬於 HTTP 正規的欄位,因此必須出現在正規欄位之前。

  • accept: 能夠接受的回應內容類型(content-types)。(ex: text/plain)
  • accept-encoding: 能夠接受的編碼方式。(ex: gzip)
  • accept-language: 能夠接受的回應內容的自然語言。(ex: en)
  • cache-control: 用來指定在這次的請求或回應中的所有快取機制都必須遵守的指令。(ex: no-cache)
  • cookie: 由伺服器透過set-cookie所代入的文字串。
  • upgrade-insecure-requests: 指示伺服器若遇到http時要改為https。
  • user-agent: 瀏覽器的瀏覽器身分標識字串。

(Reference.)


ʕ •ᴥ•ʔ:面試熱門問題,想藉此整理知識。
會隨著時間成長而有更多的Reference。
謝謝網路上許多願意分享的前輩。

Share