OSI七層模型簡單概念及相關面試題
1.1 概念

應用層
- 為用戶提供服務,給用戶一個操作界面
表示層
- 數據提供表示:計算機只能識別0101這種二進制數據,把我們輸入、點擊的之類的指令翻譯成二進制,又把執行后的結果返回。
- 加密
- 壓縮
會話層
- 確定數據是否需要進行網絡傳輸
- 如果需要,交給下一層:傳輸層
- 如果不需要,比如只是保存到文檔等
傳輸層
- 對報文進行分組(發送時)、組裝(接收時)
- 提供傳輸協議的選擇:
- TCP(傳輸控制協議):可靠的,面向連接的傳輸協議——(可靠、准確的)(慢)
- UDP(用戶數據報協議):不可靠的,面向無連接的傳輸協議——(不可靠)(快)
- 端口封裝
- 源端口
- 目標端口
- 差錯校驗
網絡層
典型設備:路由器
- IP地址編址
- 源IP
- 目標IP
- 路由選擇
- 靜態路由
- 提前寫好的規則,會比較麻煩
- 動態路由
- 自動選擇,可能會選擇最短路徑,但是帶寬可能不是最好的
- 靜態路由
數據鏈路層
典型設備:交換機(switch)
- MAC地址編址
- MAC地址尋址
- MAC地址和IP找到是哪台電腦
- 通過PORT查找到對應的服務(一台電腦會有多個服務)
- 差錯校驗
- 差錯校驗一般都是采用傳輸層的差錯校驗
物理層
典型設備:網線
- 數據實際傳輸
- 電氣特性定義
- 網線有八根線,哪根線傳輸數據等。。。
1.2 相關面試題
1.2.1 TCP/IP四層模型與作用?
1.2.2 TCP協議與UDP協議工作在哪一層?作用是什么?

網絡接口層 = 數據鏈路層 + 物理層
建議改成五層協議,將數據鏈路層和物理層分開

網絡層
- IP協議,用來確認IP地址的。
- ARP RARP:地址解析協議,反向地址解析協議
數據鏈路層
- PPP:點對點
- PPPOE:點對點撥號協議
1.2.3 簡述TCP包頭的內容?
1.2.4 簡述TCP三次握手的過程?
考察點
- TCP協議的原理
- TCP協議的作用
傳輸層協議
- TCP(傳輸控制協議):可靠的,面向連接的傳輸協議
- UDP(用戶數據報協議):不可靠的,面向無連接的傳輸協議

31表示從0到31個進制位,共32位。
源端口和目標端口是2^16次方個,也就是65535個


文字敘述
- 第一次握手:Client將標志位SYN置為1,隨機產生一個值(序列號)
seq=j
,並將該數據包發送給Server,Client進入SYN_SENT
狀態,等待Server確認。 - 第二次握手:Server收到數據包后,由標志位
SYN=1
知道Client請求建立連接,Server將標志位SYN
和ACK
都置為1,ack序號j+1
,隨機產生一個值(序列號)seq=k
,並將該數據包發送給Client以確認連接請求,Server進入SYN_RCVD
狀態。 - 第三次握手:Client收到確認后,檢查ack序號是否為
j+1
,標志位ACK是否為1,如果正確則將標志位ACK置為1,(序號)ack=k+1
,並將該數據包發送給Server;Server檢查ack序號是否為k+1
,ACK是否為1,如果正確則連接建立成功,Client和Server進入ESTABLISHED
狀態,完成三次握手,隨后Client與Server之間可以開始傳輸數據了。
1.2.5 簡述TCP四次揮手的過程?

FIN_WAIT_1——>CLOSE_WAIT——>FIN_WAIT_2:客戶端請求結束連接
LAST_ACK——>TIME_WAIT——>CLOSE:服務端通知客戶端我也要結束連接
文字敘述
- 第一次揮手:Client發送一個標志位為FIN包,(隨機序號)Seq=m,用來關閉Client到Server的數據傳送,Client進入
FIN_WAIT_1
。 - 第二次揮手:Server收到標志位FIN包后,發送一個標志位ACK給Client,(確認序號)ACK=m+1,Server進入
CLOSE_WAIT
狀態。 - 第三次揮手:Server發送一個標志位FIN=1,ACK=1,(序號)Seq=n,(確認號)ACK=m+1,用來關閉Server到Client的數據傳送,Server進入LAST_ACK狀態。
- 第四次揮手:Client收到FIN后,Client進入TIME_WAIT狀態,接着發送一個ACK標志給Server,(確認序號)ACK=n+1,Server進入CLOSED狀態,完成四次揮手。