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資料包中的其他欄位解釋:
硬體型別:鏈路層網路型別,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協議 伺服器都有需要開發)