1. 程式人生 > >通俗講解計算機網絡五層協議

通俗講解計算機網絡五層協議

交流 子網 數據服務 logs 系統 === 特定 www 轉換

轉載:https://www.cnblogs.com/pla1949/p/9743578.html

=========================================================================================

在我看來,學習java最重要是要理解what(這東西是什麽),why(為什麽要用它),where(在哪用它),how(怎麽用)。所以接下來,我都是以這樣的思想來和大家交流,從最基礎的知識講起。如果有啥出錯的,歡迎大家前來批評。本人虛心接納。

=========================================================================================

我們需要了解一下JavaWeb是怎樣運行的?一個Web項目運行的原理是基於計算機網絡的知識,總的大概過程如下。

首先在瀏覽器中輸入要訪問的網址,回車後瀏覽器向web服務器發送一個HTTP請求;根據計算機網絡知識,兩臺電腦的訪問中間需要經過五層協議,包括物理層,數據鏈路層,網絡層,運輸層,應用層。下面通俗說一下五個層次,以發送方和接收方為例子。

1.應用層:應用層是整個層次最頂層,直接和最原始數據打交道,定義的是應用進程間通信和交互的規則。這是什麽意思?因為兩臺電腦通訊就是發送方把數據傳給接收方,雖然發送方知道自己發送的是什麽東西、轉化成字節數組之後有多長,但接收方肯定不知道,所以應用層的網絡協議誕生了,他規定發送方和接收方必須使用一個固定長度的消息頭,消息頭必須使用某種固定的組成,而且消息頭裏必須記錄消息體的長度等一系列信息,以方便接收方能夠正確的解析發送方發送的數據。如果沒有應用層的規則,那麽接收方拿到數據後也是不知所措,就如同拿到一個沒有說明書的工具無法操作。

2.運輸層:負責向兩個主機中進程之間的通信提供通用數據服務,“傳輸層”的功能,就是建立”端口到端口”的通信。例如,同一臺主機上有許多程序都需要用到網絡,假設你一邊在看網頁,一邊上QQ聊天。當一個數據包從互聯網上發來的時候,你怎麽知道,它是表示網頁的內容,還是表示QQ聊天的內容?也就是說,我們還需要一個參數,表示這個數據包到底供哪個程序(進程)使用。這個參數就叫做”端口”(port),它其實是每一個使用網卡的程序的編號。每個數據包都發到主機的特定端口,所以不同的程序就能取到自己所需要的數據。“端口”是0到65535之間的一個整數,正好16個二進制位。0到1023的端口被系統占用,用戶只能選用大於1023的端口。不管是瀏覽網頁還是在線聊天,應用程序會隨機選用一個端口,然後與服務器的相應端口聯系。

3.網絡層:”網絡層”的功能是建立”主機到主機”的通信。通過網絡層我們能找到其他一臺電腦的所在位置並進行主機到主機連接。每臺計算機有了兩種地址,一種是MAC地址,另一種是網絡地址。兩種地址之間沒有任何聯系,MAC地址是綁定在網卡上的,網絡地址則是管理員分配的,它們只是隨機組合在一起。網絡地址幫助我們確定計算機所在的子網絡,MAC地址則將數據包送到該子網絡中的目標網卡。

4.數據鏈路層:兩個相鄰節點之間傳送數據時,數據鏈路層將網絡層交下來的IP數據報組裝成幀,在兩個相鄰的鏈路上傳送幀(frame)。由於網絡層移交的ip數據包數據可能會很多,所以要進行分組封裝成幀,每一幀包括數據和必要的控制信息。其實就是解讀電信號,進行分組。封裝成幀,透明傳輸,差錯控制。

5.物理層:電腦要組網,第一件事要幹什麽?當然是先把電腦連起來,可以用光纜、電纜、雙絞線、無線電波等方式,它就是把電腦連接起來的物理手段,它主要規定了網絡的一些電氣特性,將本電腦要傳輸的數據幀變成010101的比特流,發送出去,作用是負責傳送0和1的電信號。

這裏舉個例子來說明下,比如A與B要通訊,A向B請求發送了一份數據。首先A在請求鏈接裏面可以獲取到B的地址,要發送的這份數據首先經過應用層,制定了一系列規則,比如數據的格式怎樣,長度多少,以方便接收方能夠正確的解析發送方發送的數據;接下來進入運輸層,把進程端口封裝在數據包,這樣才知道是A當前電腦哪個進程發的數據包;再接下是進入網絡層,通過ip地址找到B主機所在位置並進行相連;然後進入數據鏈路層,將ip數據包封裝成幀;最後進入物理層,進行數據幀轉換成比特流0或1,通過硬件光纖進行傳輸;這一整套是A的通訊過程,對於·B而言就是相反的過程。

通俗講解計算機網絡五層協議