1. 程式人生 > >Linux 網路程式設計 全解(一)--------網路基礎協議

Linux 網路程式設計 全解(一)--------網路基礎協議

寫在前面:說一下寫這個系列的目的,隨著對網路開發的深入,越來越覺得自己網路基礎知識的薄弱,雖然開發過程中不需要對網路基礎有很深入的瞭解照樣能進行,但有一些問題仍然是不知其因,所以這個系列打算從最基本的網路知識展開記錄,也是一邊學習一邊整理筆記。歡迎大家共同學習,QQ:993650814.

正文:

一、網路分層模型結構:

1、OSI 7層模型和TCP/IP4層模型對應關係:

     OSI7層模型簡單記法:物、數、網、傳、會、表、應。

     TCP/IP4層模型: 網、網、傳、應(網路介面層、網路層、傳輸層、應用層)。

     對應舉例:

              應用層:http、ftp、ssh、nfs               傳輸層:TCP、UDP               網路層:IP               網路介面層(鏈路層或者網路介面層):乙太網、ARP

      他們對應關係如下:

    

二、乙太網幀協議和ARP請求(網路介面層):

    ARP請求:是根據IP地址獲取硬體mac地址。

   乙太網幀協議:根據mac地址,完成資料包傳輸。

    在網路通訊時,源主機的應用程式只知道目的主機的IP地址和埠號,卻不知道目的主機的mac地址,而資料包首先是被網絡卡接受到然後再往上處理上層協議的,如果收到的資料包的硬體地址(mac地址)與本機不一致,資料包就會被丟棄。所以,通訊前必須要獲取目的主機的硬體(mac)地址。ARP協議就起到這個作用。看一下ARP資料包格式:

   如上所述,我們已經知道乙太網源地址、傳送端乙太網地址、傳送端IP、地址、目的IP地址

,ARP請求就是要找到這個目的地址。過程如下:源主機將ARP資料包以廣播形式傳送到區域網中,其中目的地址(FF:FF:FF:FF:FF:FF)表示廣播,網路中的其他主機收到資料包之後,會解析出目的IP地址,如果跟本機的IP地址相符,就將自己的硬體(mac)地址新增到上述ARP包中的目的乙太網地址欄位中回覆給源主機;如果IP地址跟本機不相符,則直接丟棄。

   ARP資料包中的其他欄位解釋:

   硬體型別:鏈路層網路型別,1為乙太網

   協議型別:0x0800表示IP協議

   硬體地址長度:即mac地址的長度為6.

   協議地址長度:即IP地址的長度為4

   OP:1表示ARP請求,2表示ARP應答。

三、IP段格式(網路層)

   

版本:表IPv4、或者IPv6

TTL:time to live,設定資料包在路由節點中的跳轉上限,每經過一個節點,該值減一,減到0的時候,該路由器節點將該資料包丟掉。

源IP地址:4個bytes,32位。

目的IP: 4個bytes,32位。

 四、埠號和UDP協議(傳輸層)

    udp協議中包含16位源埠號,和16位目的埠號,埠號最大65536     IP地址:可以在網路環境中,唯一標識一臺主機。     埠號:可以在網路的一臺主機上唯一的標識一個程序。     IP+埠號:可以在網路環境中,唯一的標識一個程序。

五、TCP協議(傳輸層)

    源埠號和目的埠號:     32位序號:     32位確認序號:     6個標誌:     16位視窗大小

六、BS模型和CS模型對比

       bs模型:browser-server:瀏覽器、伺服器模型         優點:     cs模型:client-server:客戶端、伺服器模型               cs                                            bs     優點:可以快取大量資料,協議選擇靈活            安全性高、跨平臺、開發工作量小                速度快          缺點:安全性,開發工作量大(客戶端和            不能快取大量資料,嚴格遵守http協議               伺服器都有需要開發)