OSI七層網絡模型:
物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層。低三層負責創建網絡通信連接的鏈路,高四層負責具體到端的數據通信。物理接口之間的轉接只需物理層,路由器之間的轉接只需網絡層以下的三層。
各層的具體作用:
- 物理層。規定激活、維持、關閉通信端點之間的機械特性、電氣特性、功能特性及過程特性。爲上層協議提供了傳輸數據的物理媒體,但是不可靠。傳輸數據單位爲比特。
- 數據鏈路層。在不可靠的物理介質上提供可靠的傳輸。作用包括:物理地址尋址、數據成幀、流量控制。數據檢錯、重發。 代表協議:SDLC.HDLC、ppp、stp、幀中繼。數據單位爲幀(作用裏寫了數據成幀)。
- 網絡層。對子網間的數據包進行路由選擇。還可以實現擁塞控制、網際互聯等功能。代表協議:IP、IPx、rip、ospf等。數據單位爲數據包。(在子網間對數據包路由選擇)。
- 傳輸層。第一個端到端,即主機到主機的層次。負責將上層數據分段並提供端到端的可靠或者不可靠的傳輸。同時還需處理端到端的差錯控制和流量控制問題。代表協議:tcp、udp、spx等。數據單位爲數據段。
- 會話層。管理主機之間的會話進程。即負責建立、管理、終止進程之間的會話。還利用在數據中插入校驗點來實現數據同步。
- 表示層。對上層數據信息進行轉換保證一個主機應用信息被另一個應用程序理解。數據轉換包括數據加密、壓縮、格式轉換等。
- 應用層。爲操作系統或者網絡應用程序提供訪問網絡服務的接口。代表協議:Telnet、ftp、http、snmp等。
- 5、6、7層數據單位統稱報文。
TCP握手協議:
TCP/IP協議中,TCP協議提供可靠的鏈接服務,採用三次握手建立連接。
第一次握手:建立連接,客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認;
第二次握手:服務器收到syn包,必須確認客戶的syn(ack=j+1),同時發出自己的syn包(syn=k),即syn+ack包,此時服務器進入SYN_RECV狀態;
第三次握手:客戶端收到服務器的syn+ack包,向服務器發送ack(ack=k+1)此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。
上述過程中,還有一些重要的概念:
未連接隊列:服務器維護一個未連接隊列,該隊列爲每個客戶端的syn包開設一個條目,表明已經收到syn包,並且向客戶發送確認,正在等待客戶的確認包。這些條目所標識的連接服務器處於SYN_RECV狀態,等待服務器收到客戶的確認包時,刪除該條目,服務器進入ESTABLISHED狀態。
BACKLOG參數:表示未連接隊列的最大容納數量。
syn_ack重傳次數 服務器發送完syn_ack包,如果未收到客戶確認包,服務器進行重傳,等待一段時間仍未收到客戶確認包,進行第二次重傳,如果重傳次數超過規定最大重傳次數,從未連接隊列中刪除該條目。
半連接存活時間:半連接條目存活的最長時間。也即從服務器收到syn包到確認這個報文無效的最長時間,有時可稱之爲Timeout時間、SYN_RECV時間。