解析URL (Uniform Resource Locator)
- 通訊協定類型 (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。
謝謝網路上許多願意分享的前輩。