石頭人面試HTTP之網絡TCP/IP

前言

小夥伴們在面試過程當中會遇到一些HTTP/網絡TCP/IP相關問題web

我大概收集整理了下面試

  1. TCP的3次握手&4次揮手
  2. TCP屬於哪一層
  3. TCP/IP分層
  4. 介紹DNS解析
這些問題咱們均可以在如下文章中找到答案

網絡基礎TCP/IP

  1. web使用一種名爲http(超文本傳輸協議)的協議做爲規範,完成從客戶端到服務器端的運做流程
  2. 一般使用的網絡是在TCP/IP協議族的基礎上運做的,它是互聯網相關的各種協議族的總稱,HTTP屬於它內部的一個子集,
  3. TCP/IP按層次分爲,應用層傳輸層網絡層數據鏈路層segmentfault

    • 應用層 決定了向用戶提供用用服務時通訊的活動,
    • 傳輸層 提供處於網絡鏈接中的兩臺計算機之間的數據傳輸
    • 網絡層 處理網絡上流動的數據包
    • 鏈路層 處理鏈接網絡的硬件部分
總體流程

(1)應用層 獲取http請求報文,轉發給傳輸層

(2)傳輸層 把報文分割,打上標記及端口號,轉發給網絡層 (TCP)

(3)網絡層 增長做爲通訊目的地的mac地址,轉發給鏈路層  (IP)

(4)鏈路層 服務器端在鏈路層接收到數據,再逐層向上轉發到應用層(以太網)

發送端 在層與層之間傳輸數據時 會被打上該層所屬的首部信息,反之

接收端 在層與層之間傳輸數據時 每通過一層是會把對應的首部消除

傳輸層 TCP

  • 方便傳輸 把大塊數據分割成報文段爲單位的數據包進行管理

TCP協議採用三次握手,保證數據準確送達服務器

緣由網絡

在謝希仁著《計算機網絡》第四版中講「三次握手」的目的是「爲了防止已失效的鏈接請求報文段忽然又傳送到了服務端,於是產生錯誤」。
在另外一部經典的《計算機網絡》一書中講「三次握手」的目的是爲了解決「網絡中存在延遲的重複分組」的問題。

ACK : TCP協議規定,只有ACK=1時有效,也規定鏈接創建後全部發送的報文的ACK必須爲1
SYN(SYNchronization) : 在鏈接創建時用來同步序號。當SYN=1而ACK=0時,代表這是一個鏈接請求報文。對方若贊成創建鏈接,則應在響應報文中使SYN=1和ACK=1. 所以, SYN置1就表示這是一個鏈接請求或鏈接接受報文。計算機網絡

三次握手

(1)客戶端發送一個SYN標誌的數據包給對方,(SYN=1,seq=x,)code

(2)服務端收到後,回傳一個帶有SYN/ACK標誌的數據包以示傳達確認信息(SYN=1,ACK=1,seq=y,ack=x+1)客戶端收到包以後,狀態切換爲ESTABLISHEDip

(3)客戶端收到後,回傳一個帶ACK標誌的數據包表明握手結束 (ACK=1,seq=x+1,ack=y+1),服務端收到包以後,狀態切換爲ESTABLISHED資源

seq 同步序列號,第一次隨機生成seq的序列x, 以後在此基礎+y(y爲數據長度,無數據則y=1)

ack 應答序列號 在seq基礎上+1get

這時 客戶端和服務器端就能夠開始傳送數據

四次揮手

關閉是一個全雙工的過程,發包的順序的不必定的。通常來講是客戶端主動發起的關閉,最後一次客戶端發出的數據seq = x, ack = y

(1)客戶端, 狀態爲FIN_WAIT_1 發出FIN包(FIN=1 ack=y seq=x+1)

(2)服務端收到後, 狀態切換爲CLOSE_WAIT 發出ACK包(ACK=1 ack=x+2) 客戶端收到包以後狀態切換爲FNI_WAIT_2

(3)服務端處理完任務後,狀態切換爲LAST_ACK, 發出FIN包(FIN=1 seq=y)

(4)客戶端收到後, 狀態切換爲TIME_WAIT 發出ACK包(ACK=1 ack=1)等待2MSL後關閉鏈接

網絡層 IP

  • IP地址指明瞭節點被分配到的地址
  • mac地址指網卡所屬的固定地址
  • ip地址會變, mac地址基本不會變

DNS域名解析

DNS協議經過域名查找IP地址,或逆向從IP地址反查域名服務
URI和URL
- URI 統一資源標識符,標識某一互聯網資源
- URL 統一資源定位符,表示資源地址
- URL是URI的子集

下一章

石頭人面試HTTP之http協議2.0/SPDY

相關文章
相關標籤/搜索