1. 程式人生 > >梳理Linux下OSI七層網絡與TCP/IP五層網絡架構

梳理Linux下OSI七層網絡與TCP/IP五層網絡架構

七層 端口 netstat 導致 七層模型 順序 二次 轉換 san

作為一個合格的運維人員,一定要熟悉掌握OSI七層網絡和TCP/IP四層網絡結構知識。


一、OSI七層網絡協議

OSI是Open System Interconnect的縮寫,意為開放式系統互聯。

OSI參考模型各個層次的劃分遵循下列原則:
1)根據不同層次的抽象分層
2)每層應當有一個定義明確的功能
3)每層功能的選擇應該有助於制定網絡協議的國際標準。
4)各層邊界的選擇應盡量節省跨過接口的通信量。
5)層數應足夠多,以避免不同的功能混雜在同一層中,但也不能太多,否則體系結構會過於龐大
6)同一層中的各網絡節點都有相同的層次結構,具有同樣的功能。
7)同一節點內相鄰層之間通過接口(可以是邏輯接口)進行通信。
8)七層結構中的每一層使用下一層提供的服務,並且向其上層提供服務。
9)不同節點的同等層按照協議實現對等層之間的通信。

根據以上標準,OSI參考模型分為(從上到下):
物理層->數據鏈路層->網絡層->傳輸層->會話層->表示層->應用層。

1)物理層涉及在信道上傳輸的原始比特流。
2)數據鏈路層的主要任務是加強物理層傳輸原始比特流的功能,使之對應的網絡層顯現為一條無錯線路。發送包把輸入數據封裝在數據幀,按順序傳送出去並處理接收方回送的確認幀。
3)網絡層關系到子網的運行控制,其中一個關鍵問題是確認從源端到目的端如何選擇路由。
4)傳輸層的基本功能是從會話層接收數據而且把其分成較小的單元傳遞給網絡層。
5)會話層允許不同機器上的用戶建立會話關系。
6)表示層用來完成某些特定的功能。
7)應用層包含著大量人們普遍需要的協議。

各層功能見下表:

技術分享圖片

七層模型的每一層都具有清晰的特征。基本來說:
1)第七至第四層(應用層->表示層->會話層->傳輸層)處理數據源和數據目的地之間的端到端通信,
2)第三至第一層(網絡層->數據鏈路層->物理層)處理網絡設備間的通信。

另外:
OSI模型的七層也可以劃分為兩組:
1)上層(層7、層6和層5,即應用層->表示層->會話層)。上層處理應用程序問題,並且通常只應用在軟件上。最高層,即應用層是與終端用戶最接近的。
2)下層(層4、層3、層2和層1,即傳輸層->網絡層->數據鏈路層->物理層)。下層是處理數據傳輸的。物理層和數據鏈路層應用在硬件和軟件上。最底層,即物理層是與物理網絡媒介(比如說,電線)最接近的,並且負責在媒介上發送
第7層-應用層
定義了用於在網絡中進行通信和數據傳輸的接口 - 用戶程式;
提供標準服務,比如虛擬終端、文件以及任務的傳輸和處 理;
應用層為操作系統或網絡應用程序提供訪問網絡服務的接口。應用層協議的代表包括:Telnet、FTP、HTTP、SNMP等。

第6層-表示層
掩蓋不同系統間的數據格式的不同性;
指定獨立結構的數據傳輸格式;
數據的編碼和解碼;加密和解密; 壓縮和解壓縮
這一層主要解決擁護信息的語法表示問題。它將欲交換的數據從適合於某一用戶的抽象語法,轉換為適合於OSI系統內部使用的傳送語法。即提供格式化的表示和轉換數據服務。數據的壓縮和解壓縮, 加密和解密等工作都由表示層負責。

第5層-會話層
管理用戶會話和對話;
控制用戶間邏輯連接的建立和掛斷;
報告上一層發生的錯誤
這一層也可以稱為會晤層或對話層,在會話層及以上的高層次中,數據傳送的單位不再另外命名,而是統稱為報文。會話層不參與具體的傳輸,它提供包括訪問驗證和會話管理在內的建立和維護應用之間通信的機制。如服務器驗證用戶登錄便是由會話層完成的。

第4層-處理信息的傳輸層
管理網絡中端到端的信息傳送;
通過錯誤糾正和流控制機制提供可靠且有序的數據包傳送;
提供面向無連 接的數據包的傳送;
第4層的數據單元也稱作數據包(packets)。但是,當你談論TCP等具體的協議時又有特殊的叫法,TCP的數據單元稱為段 (segments)而UDP協議的數據單元稱為“數據報(datagrams)”。這個層負責獲取全部信息,因此,它必須跟蹤數據單元碎片、亂序到達的 數據包和其它在傳輸過程中可能發生的危險。第4層為上層提供端到端(最終用戶到最終用戶)的透明的、可靠的數據傳輸服務。所為透明的傳輸是指在通信過程中 傳輸層對上層屏蔽了通信傳輸系統的具體細節。傳輸層協議的代表包括:TCP、UDP、SPX等。

第3層-網絡層
定義網絡設備間如何傳輸數據;
根據唯一的網絡設備地址路由數據包;
提供流和擁塞控制以防止網絡資源 的損耗
在 計算機網絡中進行通信的兩個計算機之間可能會經過很多個數據鏈路,也可能還要經過很多通信子網。網絡層的任務就是選擇合適的網間路由和交換結點, 確保數據及時傳送。網絡層將數據鏈路層提供的幀組成數據包,包中封裝有網絡層包頭,其中含有邏輯地址信息- -源站點和目的站點地址的網絡地址。如 果你在談論一個IP地址,那麽你是在處理第3層的問題,這是“數據包”問題,而不是第2層的“幀”。IP是第3層問題的一部分,此外還有一些路由協議和地 址解析協議(ARP)。有關路由的一切事情都在這第3層處理。地址解析和路由是3層的重要目的。網絡層還可以實現擁塞控制、網際互連等功能。在這一層,數據的單位稱為數據包(packet)。網絡層協議的代表包括:IP、IPX、RIP、OSPF等。

第2層-數據鏈路層(DataLinkLayer):
定義操作通信連接的程序;
封裝數據包為數據幀;
監測和糾正數據包傳輸錯誤
在物理層提供比特流服務的基礎上,建立相鄰結點之間的數據鏈路,通過差錯控制提供數據幀(Frame)在信道上無差錯的傳輸,並進行各電路上的動作系列。數據鏈路層在不可靠的物理介質上提供可靠的傳輸。該層的作用包括:物理地址尋址、數據的成幀、流量控制、數據的檢錯、重發等。在這一層,數據的單位稱為幀(frame)。數據鏈路層協議的代表包括:SDLC、HDLC、PPP、STP、幀中繼等。

第1層-物理層(PhysicalLayer)
定義通過網絡設備發送數據的物理方式;
作為網絡媒介和設備間的接口;
定義光學、電氣以及機械特性。
規定通信設備的機械的、電氣的、功能的和過程的特性,用以建立、維護和拆除物理鏈路連接。具體地講,機械 特性規定了網絡連接時所需接插件的規格尺寸、引腳數量和排列情況等;電氣特性規定了在物理連接上傳輸bit流時線路上信號電平的大小、阻抗匹配、傳輸速率 距離限制等;功能特性是指對各個信號先分配確切的信號含義,即定義了DTE和DCE之間各個線路的功能;規程特性定義了利用信號線進行bit流傳輸的一組 操作規程,是指在物理連接的建立、維護、交換信息是,DTE和DCE雙放在各電路上的動作系列。在這一層,數據的單位稱為比特(bit)。屬於物理層定義的典型規範代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。


二、TCP/IP

TCP/IP(傳輸控制協議/網間網協議)是目前世界上應用最為廣泛的協議,它的流行與Internet的迅猛發展密切相關。
TCP/IP最初是為互聯網的原型ARPANET所設計的,目的是提供一整套方便實用、能應用於多種網絡上的協議,事實證明TCP/IP做到了這一點,它使網絡互聯變得容易起來,並且使越來越多的網絡加入其中,成為Internet的事實標準。

TCP/IP協議族包含了很多功能各異的子協議。為此我們也利用上文所述的分層的方式來剖析它的結構。

TCP/IP層次模型共分為四層:應用層->傳輸層->網絡層->數據鏈路層。

各層功能見下表:

技術分享圖片

TCP(Transmission Control Protocol:傳輸控制協議)和UDP(User Datagram Protocol:用戶數據報協議)協議屬於傳輸層協議。其中:
1)TCP提供IP環境下的數據可靠傳輸,它提供的服務包括數據流傳送、可靠性、有效流控、全雙工操作和多路復用。通過面向連接、端到端和可靠的數據包發送。通俗說,它是事先為所發送的數據開辟出連接好的通道,然後再進行數據發送;
2)UDP則不為IP提供可靠性、流控或差錯恢復功能。一般來說,TCP對應的是可靠性要求高的應用,而UDP對應的則是可靠性要求低、傳輸經濟的應用。

-------------------------------------------------------------------
應用層
應用層是所有用戶所面向的應用程序的統稱。ICP/IP協議族在這一層面有著很多協議來支持不同的應用,許多大家所熟悉的基於Internet的應用的實現就離不開這些協議。如我們進行萬維網(WWW)訪問用到了HTTP協議、文件傳輸用FTP協議、電子郵件發送用SMTP、域名的解析用DNS協議、遠程登錄用Telnet協議等等,都是屬於TCP/IP應用層的;就用戶而言,看到的是由一個個軟件所構築的大多為圖形化的操作界面,而實際後臺運行的便是上述協議。

傳輸層
這一層的的功能主要是提供應用程序間的通信,TCP/IP協議族 
在這一層的協議有TCP和UDP。

網絡層
TCP/IP協議族中非常關鍵的一層,主要定義了IP地址格式,從而能夠使得不同應用類型的數據在Internet上通暢地傳輸,IP協議就是一個網絡層協議。

鏈路層(數據鏈路層/網絡接口層)
這是TCP/IP軟件的最低層,負責接收IP數據包並通過網絡發送之,或者從網絡上接收物理幀,抽出IP數據報,交給IP層。

------------------------------
TCP支持的應用協議主要有:Telnet、FTP、SMTP等;
UDP支持的應用層協議主要有:NFS(網絡文件系統)、SNMP(簡單網絡管理協議)、DNS(主域名稱系統)、TFTP(通用文件傳輸協議)等。

TCP/IP協議與低層的數據鏈路層和物理層無關,這也是TCP/IP的重要特點。

-----------------------------------------------------
TCP連接建立-斷開的過程說明:

TCP連接的端點叫做套接字(socket)或插口,即(IP地址:端口號),每一條TCP連接唯一地被通信兩端的兩個端點(即兩個套接字)所確定。

TCP的運輸連接有三個階段,即連接建立、數據傳送、連接釋放。
TCP連接建立的過程要使每一方能夠確定對方的存在:主動發起連接建立的應用進行叫做客戶(client),被動等待連接建立的應用進程叫做服務器(server),連接建立的過程叫做三次握手。

假設A為客戶,B為服務器,A發送一個報文給B,B發回確認,然後A再加以確認,來回共三次,成為“三次握手”。三次握手建立連接~

所謂三次握手(Three-Way Handshake)即建立TCP連接,就是指建立一個TCP連接時,需要客戶端和服務端總共發送3個包以確認連接的建立。在socket編程中,這一過程由客戶端執行connect來觸發,整個流程如下圖所示:

技術分享圖片

1)第一次握手:Client將標誌位SYN置為1,隨機產生一個值seq=J,並將該數據包發送給Server,Client進入SYN_SENT狀態,等待Server確認。
2)第二次握手:Server收到數據包後由標誌位SYN=1知道Client請求建立連接,Server將標誌位SYN和ACK都置為1,ack=J+1,隨機產生一個值seq=K,並將該數據包發送給Client以確認連接請求,Server進入SYN_RCVD狀態。
3)第三次握手:Client收到確認後,檢查ack是否為J+1,ACK是否為1,如果正確則將標誌位ACK置為1,ack=K+1,並將該數據包發送給Server,Server檢查ack是否為K+1,ACK是否為1,如果正確則連接建立成功,Client和Server進入ESTABLISHED狀態,完成三次握手,隨後Client與Server之間可以開始傳輸數據了。

---------------------------------------------------
SYN攻擊解釋:
三次握手過程中,Server發送SYN-ACK之後,收到Client的ACK之前的TCP連接稱為半連接(half-open connect),此時Server處於SYN_RCVD狀態,當收到ACK後,Server轉入ESTABLISHED狀態。SYN攻擊就是Client在短時間內偽造大量不存在的IP地址,並向Server不斷地發送SYN包,Server回復確認包,並等待Client的確認,由於源地址是不存在的,因此,Server需要不斷重發直至超時,這些偽造的SYN包將產時間占用未連接隊列,導致正常的SYN請求因為隊列滿而被丟棄,從而引起網絡堵塞甚至系統癱瘓。SYN攻擊時一種典型的DDOS攻擊,檢測SYN攻擊的方式非常簡單,即當Server上有大量半連接狀態且源IP地址是隨機的,則可以斷定遭到SYN攻擊了,使用如下命令可以讓之現行:
#netstat -nap | grep SYN_RECV
---------------------------------------------------

連接的釋放需要發送四個包,因此成為“四次揮手”,四次揮手斷開連接。客戶端或服務器都可以主動發起揮手動作。

所謂四次揮手(Four-Way Wavehand)即終止TCP連接,就是指斷開一個TCP連接時,需要客戶端和服務端總共發送4個包以確認連接的斷開。在socket編程中,這一過程由客戶端或服務端任一方執行close來觸發,整個流程如下圖所示:

技術分享圖片

由於TCP連接時全雙工的,因此,每個方向都必須要單獨進行關閉,這一原則是當一方完成數據發送任務後,發送一個FIN來終止這一方向的連接,收到一個FIN只是意味著這一方向上沒有數據流動了,即不會再收到數據了,但是在這個TCP連接上仍然能夠發送數據,直到這一方向也發送了FIN。首先進行關閉的一方將執行主動關閉,而另一方則執行被動關閉,上圖描述的即是如此。
1)第一次揮手:Client發送一個FIN,用來關閉Client到Server的數據傳送,Client進入FIN_WAIT_1狀態。
2)第二次揮手:Server收到FIN後,發送一個ACK給Client,確認序號為收到序號+1(與SYN相同,一個FIN占用一個序號),Server進入CLOSE_WAIT狀態。
3)第三次揮手:Server發送一個FIN,用來關閉Server到Client的數據傳送,Server進入LAST_ACK狀態。
4)第四次揮手:Client收到FIN後,Client進入TIME_WAIT狀態,接著發送一個ACK給Server,確認序號為收到序號+1,Server進入CLOSED狀態,完成四次揮手。

上面是一方主動關閉,另一方被動關閉的情況(由一方發起揮手),實際中還會出現同時發起主動關閉的情況,具體流程如下圖(同時揮手):

技術分享圖片

----------------------------------------------------
為什麽連接的時候是三次握手,關閉的時候卻是四次握手?
這是因為當Server端收到Client端的SYN連接請求報文後,可以直接發送SYN+ACK報文。其中ACK報文是用來應答的,SYN報文是用來同步的。
但是關閉連接時,當Client端發送FIN報文僅僅表示它不再發送數據了但是還能接收數據,Server端收到FIN報文時,很可能並不會立即關閉SOCKET,所以只能先回復一個ACK報文,告訴Client端,"你發的FIN報文我收到了"。只有等到我Server端所有的報文都發送完了,我才能發送FIN報文,因此不能一起發送。故需要四步握手。

----------------------------------------------------

三、OSI七層網絡與TCP/IP五層網絡的區別與聯系

除了層的數量之外,開放式系統互聯(OSI)模型與TCP/IP協議有什麽區別?
開放式系統互聯模型是一個參考標準,解釋協議相互之間應該如何相互作用。TCP/IP協議是美國國防部發明的,是讓互聯網成為了目前這個樣子的標準之一。
開放式系統互聯模型中沒有清楚地描繪TCP/IP協議,但是在解釋TCP/IP協議時很容易想到開放式系統互聯模型。

兩者的主要區別如下:
1)TCP/IP協議中的應用層處理OSI模型中的第五層、第六層和第七層的功能。
2)TCP/IP協議中的傳輸層並不能總是保證在傳輸層可靠地傳輸數據包,而OSI模型可以做到。
3) TCP/IP協議還提供一項名為UDP(用戶數據報協議)的選擇。UDP不能保證可靠的數據包傳輸。

技術分享圖片

梳理Linux下OSI七層網絡與TCP/IP五層網絡架構