OSI定義了網絡互連的七層框架(物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層),每一層都有自己相應的功能和協議,並且與相鄰層的接口通信。
OSI七層模型 相關協議 縮寫
應用層
OSI參考模型中最靠近用戶的一層,是爲計算機用戶提供應用接口,也爲用戶直接提供各種網絡服務。我們常見應用層的網絡服務協議有:HTTP,HTTPS,FTP,POP3、SMTP等
HTTP 超文本傳輸協議
FTP 文件傳輸協議
SMTP 簡單郵件傳輸協議
TELNET TCP/IP終端仿真協議
POP3 郵局協議第三版
Finger 用戶信息協議
NNTP 網絡新聞傳輸協議
IMAP4 因特網信息訪問協議第四版
LPR UNIX 遠程打印協議
.Rwho UNIX 遠程 Who協議
Rexec UNIX遠程執行協議
Login UNIX 遠程登陸協議
RSH UNIX 遠程Shell協議
NTF HP網絡文件傳輸協議
RDA HP 遠程數據庫訪問協議
VT 虛擬終端仿真協議
RFA HP 遠程文件訪問協議
RPC Remote Process Comm.
S-HTTP 安全超文本傳輸協議
GDP網關發現協議
X-Window
CMOT 基於TCP/IP的CMIP協議
SOCKS 安全套接字協議
FANP流屬性通知協議
SLP服務定位協議
MSN微軟網絡服務
Radius 遠程用戶撥號認證服務協議
DNS 域名系統
NFS網絡文件系統協議
NIS SUN 網絡信息系統協議
R-STAT SUN遠程狀態協議
NSM SUN 網絡狀態監測協議
PMAP SUN 端口映射協議
Mount
LPR UNIX遠程打印協議
常用UDP協議的應用層服務
BOOTP引導協議
DHCP動態主機配套協議
NTP網絡時間協議
TFTP簡單文件傳輸協議
SNMP簡單網絡管理協議
表示層
表示層提供各種用於應用層數據的編碼和轉換功能,確保一個系統的應用層發送的數據能被另一個系統的應用層識別。如果必要,該層可提供一種標準表示形式,用於將計算機內部的多種數據格式轉換成通信中採用的標準表示形式。數據壓縮和加密也是表示層可提供的轉換功能之一。
DECnet NSP
LPP 輕量級表示協議
NBSSN NetBIOS會話服務協議
XDP外部數據表示協議
IPX
會話層
SSL 安全套接字層協議
TLS傳輸層安全協議
DAP目錄訪問協議
LDAP輕量級目錄訪問協議
RPC遠程過程調用協議
VINES NETRPC
VFRP
NeTBIOS
IPX
傳輸層
傳輸層建立了主機端到端的鏈接,傳輸層的作用是爲上層協議提供端到端的可靠和透明的數據傳輸服務,包括處理差錯控制和流量控制等問題。該層向高層屏蔽了下層數據通信的細節,使高層用戶看到的只是在兩個傳輸實體間的一條主機到主機的、可由用戶控制和設定的、可靠的數據通路。我們通常說的,TCP UDP就是在這一層。端口號既是這裏的“端”。
XOT 基於tcp之上的X協議
Van Jacobson 壓縮TCP協議
ISO-DE ISO 開發環境-------->NetBISO
TALI 傳輸適配層接口協議
DSI、NetBIOS、IP NeTBIOS、ISO-TP SSP、SMB、MSRPC
UDP用戶數據報協議
RUDP可靠的用戶數據報協議
Mobile IP 移動IP協議
網絡層
本層通過IP尋址來建立兩個節點之間的連接,爲源端的運輸層送來的分組,選擇合適的路由和交換節點,正確無誤地按照地址傳送給目的端的運輸層。就是通常說的IP層。這一層就是我們經常說的IP協議層。
IP/IPv6 互聯網協議/互聯網協議第六版
ICMPv6互聯網控制信息協議第六版
ICMP互聯網控制信息協議
IGMP 互聯網組管理協議
SLIP 串行線路IP協議
安全協議
AH 認證頭協議
ESP 安裝封裝有效載荷協議
路由協議
EGP 外部網關協議
OSPF 開放最短路徑優先協議
IGRP 內部網關路由協議
NHRP 下一跳解析協議
IE-IRGP 增強內部網關路由選擇協議
RIPng for IPv6 IPv6路由信息協議
GGP 網關到網關協議
VRRP 虛擬路由器冗餘協議
PGM 實際通用組播協議
RSVP 資源預留協議
PIM-DM 密集模式獨立組播協議
DVMRP 距離矢量組播路由協議
RIP2 路由信息協議第二版
PIM-SM 稀疏模式獨立組播協議
MOSPF 組播開放最短路徑優先協議
數據鏈路層
將比特組合成字節,再將字節組合成幀,使用鏈路層地址 (以太網使用MAC地址)來訪問介質,並進行差錯檢測。
數據鏈路層又分爲2個子層:邏輯鏈路控制子層(LLC)和媒體訪問控制子層(MAC)。
MPLS 多協議標籤交換協議
XTP 壓縮傳輸協議
DCAP 數據轉換客戶訪問協議
SLE 串行連接封裝協議
IPinIP IP套IP封裝協議
隧道協議
PPTP點對點隧道協議
L2F第二層轉發協議
L2TP 第二層隧道協議
ATMP接入隧道管理協議
Cisco 協議
CDP 思科發現協議
CGMP 思科組管理協議
地址解析協議
ARP地址解析協議
RAR逆向地址解析協議
物理層
實際最終信號的傳輸是通過物理層實現的。通過物理介質傳輸比特流。規定了電平、速度和電纜針腳。常用設備有(各種物理設備)集線器、中繼器、調制解調器、網線、雙絞線、同軸電纜。這些都是物理層的傳輸介質。
IEEE 802.2
Ethernet v.2
Internetwork
tcp/ip的傳輸原理
tcp/ip在通信過程中通過數據包報文的方式進行通信。下圖是tcp的報文格式
tcp報文中比較重要的信息
序號:Seq序號,佔32位,用來標識從TCP源端向目的端發送的字節流,發起方發送數據時對此進行標記。
確認序號:Ack序號,佔32位,只有ACK標誌位爲1時,確認序號字段纔有效,Ack=Seq+1。
標誌位:共6個,即URG、ACK、PSH、RST、SYN、FIN等,具體含義如下:
URG:緊急指針(urgent pointer)有效。
ACK:確認序號有效。
PSH:接收方應該儘快將這個報文交給應用層。
RST:重置連接。
SYN:發起一個新連接。
FIN:釋放一個連接。
需要注意的是:
(A)不要將確認序號Ack與標誌位中的ACK搞混。
(B)確認方Ack=發起方Req+1,兩端配對。
tcp的三次握手與四次揮手
三次握手
所謂三次握手即建立TCP連接,就是指建立一個TCP連接時,需要客戶端和服務端總共發送3個包以確認連接的建立。在socket編程中,這一過程由客戶端執行connect來觸發,整個流程如下圖所示:
最開始的時候客戶端和服務器都是處於CLOSED狀態。主動打開連接的爲客戶端,被動打開連接的是服務器。
TCP服務器進程先創建傳輸控制塊TCB,時刻準備接受客戶進程的連接請求,此時服務器就進入了LISTEN(監聽)狀態:
第一次握手
TCP客戶進程也是先創建傳輸控制塊TCB,然後向服務器發出連接請求報文:Client將標誌位SYN置爲1,隨機產生一個值seq=x,並將該數據包發送給Server,Client進入SYN_SENT狀態,等待Server確認。
第二次握手
Server收到數據包後由標誌位SYN=1知道Client請求建立連接,Server將標誌位SYN和ACK都置爲1,ack=x+1,隨機產生一個值seq=y,並將該數據包發送給Client以確認連接請求,Server進入SYN_RCVD狀態。
第三次握手
Client收到確認後,檢查ack是否爲x+1,ACK是否爲1,如果正確則將標誌位ACK置爲1,ack=y+1,並向服務端發出確認信息,Server檢查ack是否爲y+1,ACK是否爲1,序列號seq=x+1,如果正確則連接建立成功,Client和Server進入ESTABLISHED狀態,完成三次握手,隨後Client與Server之間可以開始傳輸數據了。
四次揮手
所謂四次揮手即終止TCP連接,就是指斷開一個TCP連接時,需要客戶端和服務端總共發送4個包以確認連接的斷開。在socket編程中,這一過程由客戶端或服務端任一方執行close來觸發,整個流程如下圖所示:
由於TCP連接時全雙工的,因此,每個方向都必須要單獨進行關閉,這一原則是當一方完成數據發送任務後,發送一個FIN來終止這一方向的連接,收到一個FIN只是意味着這一方向上沒有數據流動了,即不會再收到數據了,但是在這個TCP連接上仍然能夠發送數據,直到這一方向也發送了FIN。首先進行關閉的一方將執行主動關閉,而另一方則執行被動關閉,上圖描述的即是如此。
第一次揮手
客戶端進程發出連接釋放報文,並且停止發送數據。釋放數據報文首部,FIN=1,其序列號爲seq=u(等於前面已經傳送過來的數據的最後一個字節的序號加1),此時,客戶端進入FIN-WAIT-1(終止等待1)狀態。
第二次揮手
服務器收到連接釋放報文,發出確認報文,ACK=1,ack=u+1,並且帶上自己的序列號seq=v,此時,服務端就進入了CLOSE-WAIT(關閉等待)狀態。
客戶端進入FIN-WAIT-2
客戶端收到服務器的確認請求後,此時,客戶端就進入FIN-WAIT-2(終止等待2)狀態,等待服務器發送連接釋放報文(在這之前還需要接受服務器發送的最後的數據)。
第三次揮手
服務器將最後的數據發送完畢後,就向客戶端發送連接釋放報文,FIN=1,ack=u+1,由於在半關閉狀態,服務器很可能又發送了一些數據,假定此時的序列號爲seq=w,此時,服務器就進入了LAST-ACK(最後確認)狀態,等待客戶端的確認。
第四次揮手
客戶端收到服務器的連接釋放報文後,必須發出確認,ACK=1,ack=w+1,而自己的序列號是seq=u+1,此時,客戶端就進入了TIME-WAIT(時間等待)狀態。(注意此時TCP連接還沒有釋放,必須經過2∗MSL(最長報文段壽命)的時間後,當客戶端撤銷相應的TCB後,才進入CLOSED狀態。)
服務器只要收到了客戶端發出的確認,立即進入CLOSED狀態。同樣,撤銷TCB後,就結束了這次的TCP連接。可以看到,服務器結束TCP連接的時間要比客戶端早一些。
結合上面的分解過程,再看一下整個握手揮手的過程
END