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

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

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

    在我看來,學習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而言就是相反的過程。

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

                                用心查閱,有心分享,分享之際,互相指教,受益你我,何樂不為?

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