Linux網絡基礎概念

Linux網絡基礎概念

一、OSI七層模型和TCP/IP五層模型

1.1 OSI七層模型

Linux網絡基礎概念

1、物理層:

主要功能:在局部局域網上傳送數據幀(Data Frame),它負責管理電腦通信設備和網絡媒體之間的互通。包括了針腳、電壓、線纜規範、集線器、中繼器、網卡、主機接口卡等,實現相鄰計算機節點之間比特流的透明傳輸,儘可能屏蔽掉具體傳輸介質與物理設備的差異。使其上面的數據鏈路層不必考慮網絡的具體傳輸介質是什麼。

透明傳輸的意義就是:不管傳的是什麼,所採用的設備只是起一個通道作用,把要傳輸的內容完好的傳到對方!

2、數據鏈路層:

主要功能:通過各種控制協議,將有差錯的物理信道變爲無差錯的、能可靠傳輸數據幀的數據鏈路。接受來自物理層的位流形式的數據,並封裝成幀,傳送到上一層;同樣,也將來自上一層的數據幀,拆裝爲位流形式的數據轉發到物理層;並且還負責處理接受端發回的確認幀的信息,以便提供可靠的數據傳輸。

該層通常又被分爲 介質訪問控制(MAC)和邏輯鏈路控制(LLC)兩個子層:

MAC子層的主要任務是解決共享型網絡中多用戶對信道競爭的問題,完成網絡介質的訪問控制。

LLC子層的主要任務是建立和維護網絡連接,執行差錯校驗、流量控制和鏈路控制。

3、網絡層:

是OSI參考模型中最複雜的一層,也是通信子網最高的一層,它在下兩層的基礎上向資源子網提供服務。網絡層(Network Layer)決定數據的路徑選擇和轉寄,將網絡表頭(NH)加至數據包,以形成報文。網絡表頭包含了網絡數據。

主要功能:通過路由算法,爲報文或分組通過通信子網選擇最適當的路徑。該層控制數據鏈路層與物理層之間的信息轉發,建立、維持與終止網絡的連接。具體的說,數據鏈路層的數據在這一層被轉換爲數據包,然後通過路徑選擇、分段組合、順序、進/出路由等控制,將信息從一個網絡設備傳送到另一個網絡設備。

一般的,數據鏈路層是解決統一網絡內節點之間的通信,而網絡層主要解決不同子網之間的通信。例如路由選擇問題。

4、傳輸層:

OSI的下三層的主要任務是數據傳輸,上三層的主要任務是數據處理。而傳輸層是第四層,因此該層是通信子網和資源子網的接口和橋樑,起到承上啓下的作用。把傳輸表頭(TH)加至數據以形成數據包。傳輸表頭包含了所使用的協議等發送信息。

主要功能:向用戶提供可靠的、端到端的差錯和流量控制,保證報文的正確傳輸。向高層屏蔽下層數據通信的具體細節,即向用戶透明的傳送報文。傳輸層提供會話層和網絡層之間的傳輸服務,這種服務從會話層獲得數據,並在必要時,對數據進行分割,然後,傳輸層將數據傳送到網絡層,並確保數據能準確無誤的傳送到網絡層。因此,傳輸層負責提供兩節點之間數據的可靠傳送,當兩節點的聯繫確定之後,傳輸層負責監督工作。

5、會話層:

是OSI參考模型的第五層,是用戶應用程序和網絡之間的接口。負責在數據傳輸中設置和維護電腦網絡中兩臺電腦之間的通信連接。

主要功能:向兩個實體的表示層提供建立和使用連接的方法。將不同實體之間的表示層的連接稱爲會話。因此會話層的任務就是組織和協調兩個會話進程之間的通信,並對數據交換進行管理。用戶可以按照半雙工、單工和全工的方式建立會話。當建立會話時,用戶必須提供他們想要連接的遠程地址。而這些地址與MAC(介質訪問控制子層)地址或網絡層的邏輯地址不同,他們是爲用戶專門設計的,更便於用戶記憶。域名(DN)就是網絡上使用的遠程地址。

6、表示層

表示層是OSI模型的第六層,它對來自應用層的命令和數據進行解釋,對各種語法賦予相應的含義,並按照一定的格式傳送給會話層。把數據轉換爲能與接收者的系統格式兼容並適合傳輸的格式。

主要功能:處理用戶信息的表示問題,如編碼、數據格式轉換和加密解密**”等。

7、應用層:

應用層是OSI參考模型的最高層,提供爲應用軟件而設的接口,以設置與另一應用軟件之間的通信。例如:HTTP、HTTPS、FTP、TELNET、SSH、SMTP、POP3、MySQL等。

主要功能:直接向用戶提供服務,完成用戶希望在網絡上完成的各種工作。

1.2 TCP/IP五層模型

Linux網絡基礎概念

TCP/IP與OSI最大的不同在於OSI是一個理論上的網絡通信模型,而TCP/IP則是實際運行的網絡協議。

二、TCP三次握手四次揮手

2.1 TCP三次握手

Linux網絡基礎概念

第一次握手

建立連接。客戶端發送連接請求報文段,將SYN位置爲1,Sequence Number爲x;(x 是隨機生成的一個 int 數值)然後,客戶端進入SYN_SEND狀態,等待服務器的確認;

第二次握手

服務器收到SYN報文段。服務器收到客戶端的SYN報文段,需要對這個SYN報文段進行確認,設置Acknowledgment Number爲x+1(Sequence Number+1);同時,自己自己還要發送SYN請求信息,將SYN位置爲1,Sequence Number爲 y (y 是隨機生存的一個 int 數值);服務器端將上述所有信息放到一個報文段(即SYN+ACK報文段)中,一併發送給客戶端,此時服務器進入SYN_RECV狀態;

第三次握手

客戶端收到服務器的SYN+ACK報文段。然後將Acknowledgment Number設置爲y+1,向服務器發送ACK報文段,這個報文段發送完畢以後,客戶端和服務器端都進入ESTABLISHED狀態,完成TCP三次握手。

2.2 TCP四次揮手

Linux網絡基礎概念

第一次揮手:

Client (可以使客戶端,也可以是服務器端),設置Sequence Number和Acknowledgment Number,向 Server發送一個FIN報文段;此時,Client 進入FIN_WAIT_1狀態;這表示 Client 沒有數據要發送給 Server了;

客戶端發送第一次揮手後,就不能在向 服務端發送數據了。

第二次揮手:

Server 收到了 Client 發送的FIN報文段,向 Client 回一個ACK報文段,Acknowledgment Number 爲 Sequence Number 加 1;Client 進入 FIN_WAIT_2 狀態;Server 告訴 Client ,我“同意”你的關閉請求;

Server 第一次響應後,還可以繼續向 Client 發送數據,這裏只是告訴 Client ,我收到你發送的關閉請求。

第三次揮手

Server 向 Client 發送 FIN 報文段,請求關閉連接,同時 Server 進入 CLOSE_WAIT 狀態;

當 Server 的數據響應完成後,再告訴 Client,我這邊也可以關閉請求了, 這時

Server 就不能再向 Client 發送數據了

第四次揮手

Client 收到 Server 發送的 FIN 報文段,向 Server 發送 ACK 報文段,然後 Client 進入

TIME_WAIT 狀態;Server 收到 Client 的 ACK 報文段以後,就關閉連接;此時,Client

等待2MSL後依然沒有收到回覆,則證明 Server 端已正常關閉,那好,Client 也可以關閉連接了。

三、TCP和UDP區別

1、TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接。
2、TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力交付,即不保 證可靠交付。
3、TCP面向字節流,實際上是TCP把數據看成一連串無結構的字節流;UDP是面向報文的。
UDP沒有擁塞控制,因此網絡出現擁塞不會使源主機的發送速率降低(對實時應用很有用,如IP電話,實時視頻會議等)。
4、每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信。
5、TCP首部開銷20字節;UDP的首部開銷小,只有8個字節。
6、TCP的邏輯通信信道是全雙工的可靠信道,UDP則是不可靠信道。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章