【我的Linux,我做主!】技術大牛告訴你Linux網絡原理就該這麼學!

Linux屬於網絡操作系統,所以網絡功能是Linux的重要核心功能。我們知道網絡模型包含總線型網絡、星型網絡、令牌環狀網絡等。數據在網絡上傳輸是以電磁信號進行傳輸的,例如在總線型網絡中,在同一時刻只能有一個信號在傳輸介質中傳送,如果有多個主機同時發送信息,那麼就會產生爭用傳輸介質的情況,此時爲了解決這個問題,我們就產生了MAC:Media Access Control的解決方案,即介質訪問控制。我們給每一臺接入網絡中的設備一個唯一的識別碼,從而可以使MAC這種算法產生的仲裁結果得以實行,每一臺主機都會有一個MAC地址,而MAC地址使用的CSMA/CD技術完成網絡線路仲裁,這個技術最早來源於以太網網絡,傳輸信號通常會按照:載波偵聽多路訪問,衝突檢測的方式進行數據的探測並傳輸(如下圖)。此外例如環狀網絡是通過令牌環方式實現等等。
【我的Linux,我做主!】技術大牛告訴你Linux網絡原理就該這麼學!
星型網絡主要是通過一個HUB集線器將所有的主機進行連接,HUB集線器本身沒有隔離信號等機制,只是簡單的將主機連接在一起,所以數據在傳輸的過程中仍然會發生衝突。星型網絡從整體上看仍然是屬於總線型網絡,當CSMA/CD的機制傳輸數據並且網絡中的主機過多時,數據傳輸會有阻塞,衝突等,此時可以將一個整體的網絡進行拆分,例如形成兩個網段,中間使用網橋設備進行連接(如下圖),在網橋中會有一個數據表記錄哪一臺主機在哪個端口的對應關係,因此當A主機發送的目的地在A主機端網絡,那麼信號就不會佔用B端網絡端口的信道,從而降低信號衝突概率。
【我的Linux,我做主!】技術大牛告訴你Linux網絡原理就該這麼學!
一、交換機原理:
按照這個思路,當我們在網橋設備上劃分多個網段,並且每個網段裏只有一臺主機時,此時衝突範圍便限定在了主機和接入網橋設備的節點這根線路範圍中(如下圖),此時我們可以做到當A主機和B主機通信的時候,C主機仍然可以自由的和D主機進行通信,而不會因爲CSMA/CD機制而導致通信信道衝突阻塞,而這個智能網橋設備就是我們熟知的“交換機”,因此交換機可以隔離衝突域。
【我的Linux,我做主!】技術大牛告訴你Linux網絡原理就該這麼學!
二、路由器原理:
當兩個交換網絡相連的時候(如下圖),例如主機A需要和M主機通信,當時1號網絡中的A主機並不知道M主機具體的MAC地址等位置信息,如果只是簡單的將1號網絡和2號網絡用通信線纜連接起來,那麼廣播信號便會充斥整個網絡,如果網絡中的主機量很大時,會形成廣播風暴,從而影響整個網絡的通信性能,此時我們需要使用一個特殊的設備將1號網絡和2號網絡連接起來,使得中間設備在接受廣播信號時不予理會直接丟棄,但是又能夠完成不同網段中的主機通信的需求。MAC地址是計算機通信地址,傳輸數據必須使用MAC地址,但是MAC地址只能標識不同的主機,不能劃分不同的網絡,所以屬於平面地址,在次基礎上我們引入了邏輯地址(IP地址)的概念,可以對不同的網絡進行劃分。例如A主機的邏輯地址是1.1,它聲明自己需要傳輸數據的目的地是2.1,此時中間設備發現是不同的網絡之間的通信,路由器上的網關是交換機網絡通信的關卡它們也有自己的MAC地址輔助通信,1號網絡的廣播通過中間設備後只在2號網絡的廣播中繼續發送,最後主機M將自己的邏輯地址和MAC地址返回給發送方,從而完成通信。中間的特殊設備就是大家所熟知的“路由器”,因此路由器可以隔離廣播域。
【我的Linux,我做主!】技術大牛告訴你Linux網絡原理就該這麼學!
三、OSI七層協議:
OSI七層協議的由來:由於網絡連接過程相當複雜,包括硬件數據封裝與應用程序的相互鏈接等,如果想要寫一個網絡鏈接的全部功能都集中在一起的程序,那麼任何一個環節出錯,整個程序都要改寫,非常麻煩,因此我們將整個網絡連接過程分成多個層次來處理,且每層數據傳遞是順序傳遞的,這就是OSI七層協議。七層協議具有以下特點:
每個層次都有特定的獨立的功能
每個層次的代碼可以獨立編寫
層與層次之間的功能互不干擾
每一層次只認識對方同一層的數據
【我的Linux,我做主!】技術大牛告訴你Linux網絡原理就該這麼學!
物理層:由於網絡傳輸介質傳輸的是比特位(01),因此物理層必須定義所使用的傳輸設備的電壓和信號等,同時還必須瞭解數據幀轉換成比特流的編碼方式,最後鏈接實際傳輸介質併發送/接收比特信號。
數據鏈路層:硬件部分,主要處理MAC數據幀,傳遞給物理層轉換成比特流;軟件部分主要處理來自上層的數據錶轉換成MAC的格式。相關協議:PPP
網絡層:定義IP地址,定義計算機之間的鏈接建立,終止維護等,數據包的傳輸路徑等。相關協議:IP、ICMP、ARP、RARP
傳輸層:定義發送端與接收端的鏈接技術(TCP,UDP)同時包括該技術的數據包格式,數據包的發送,流程的控制等,以確保各個資料數據可以正確無誤的到達目的端。相關協議:TCP、UDP
會話層:確定網絡服務建立鏈接的確認。
表示層:定義網絡服務(或程序)之間的數據格式的轉換,使數據格式標準化,也包括數據的加密解密也是在這層上處理。
應用層:將數據發送給應用程序,並最終展示給用戶。相關協議:HTTP、FTP、SMTP等。
雖然OSI七層協議的架構非常嚴謹,但是由於太過嚴謹導致程序編寫相當不容易,因此產生了TCP/IP協議。(如下圖)
【我的Linux,我做主!】技術大牛告訴你Linux網絡原理就該這麼學!
四、TCP/IP的網路層相關數據包與數據
(1)IP數據包的封裝:
瞭解IP數據包的封裝,才能知道IP到底如何產生的,IP數據包可達到65535bytes
【我的Linux,我做主!】技術大牛告訴你Linux網絡原理就該這麼學!
相關名詞解釋如下:
IP version:IP版本號,包括IPV4或者IPV6
Header Length:首部的長度
Type of Service:服務類型
Total Length:整個報文的長度
Identifiction:標記符
Fragment Offset:片偏移
DF:沒有更多的片
MF:更多的片
Time-To-Live:生存時間
Protocol:協議,常見的是TCP和UDP協議
Header Checksum:首部校驗和
Source IP Address:源IP
Destination IP Address:目的IP
Options:可選項
Data:數據
(2)面向連接的可靠TCP協議:
TCP(Transmission Control Protocol)意即傳輸控制協議,不同於UDP(User Datagram Protocol)用戶數據報協議。TCP屬於可靠的傳輸控制協議,在網絡IP層之上是TCP傳輸層,在傳輸層數據被打包成TCP數據包。
【我的Linux,我做主!】技術大牛告訴你Linux網絡原理就該這麼學!
相關名詞解釋如下:
Source Port Number:源端口號
Destination Port Number:目的端口號
Sequence Number:序列號
Acknowledgement Number:確認號
Header Length:首部長度
Reserved:保留位
URG:緊急位
ACK:確認位
PSH:推送位
RST:重置位
SYN:同步位
FIN:結束位
Window Size:窗口大小
TCP Checksum:TCP的校驗和
Urgent Pointer:緊急指針
Options:可選段
Data:數據
(3)IP地址的種類劃分:
在IPV4中有兩種IP類別
Public IP:公共IP,經由InterNIC統一規劃IP,只有這種IP纔可鏈接到Internet。
Private IP:私有IP或保留IP,不能直接連上Internet的IP,主要用於局域網絡內的主機鏈接規劃。
Public IP公共IP如下:(注:128+64+32+16+8+4+2+1)
A類:255.0.0.0~8-子網掩碼
0-000 0001 ~ 0-111 1111【1~127】
127個A類地址,127用於迴環,總共有2^7-1個網絡地址
容納多少個主機:2^24-2
主機位全0:網絡地址
主機位全1:廣播地址
B類:255.255.0.0~16-子網掩碼
10-00 0000 ~ 10-11 1111【128~191】
64個B類地址,總共有2^14個網絡地址(因爲第一個8位中有剩餘的6位網絡地址,第二個8位中全部都是網絡地址)
容納多少個主機:2^16-2
C類:255.255.255.0~24-子網掩碼
110-0 0000 ~ 110-1 1111【192-223】
32個C類地址,總共有2^21個網絡地址
容納多少個主機:2^8-2
D類
1110-0000 ~ 1110-1111【224-239】
E類
【240-255】
Private IP私有地址如下:
私有地址可以在以太網中使用,但不會在公共互聯網中使用
A類:10.0.0.0/8 ~ 10.255.255.255/8
B類:172.16.0.0/16 ~ 172.31.0.0/16
C類:192.168.0.0/24 ~ 192.168.255.0/24
(4)劃分子網:
一個大網絡分成若干個子網,則網絡ID向主機ID借位實現。例如要劃分201.1.2.0/24網絡爲2個子網,一個子網需要容納4臺主機,另一個子網需要容納6臺主機。則可以從第四個主機位8位中劃分出2位出來作爲網絡位使用。可以得到如下的四種組合:
00(全0的情況不考慮)
01-00 0001 ~ 01-11 1110【65~126】201.1.2.64網路地址,201.1.2.127廣播地址
10-00 0001 ~ 10-11 1110【129-190】201.1.2.128網絡地址,201.1.2.191廣播地址
11(全1的情況不考慮)
(5)TCP的三次握手及四次揮手詳解:
【我的Linux,我做主!】技術大牛告訴你Linux網絡原理就該這麼學!
三次握手:
第一次握手:客戶端發送一個TCP的SYN標誌位置1的包指明客戶打算連接的服務器的端口。
第二次握手:服務器發回確認包ACK應答,即SYN標誌位和ACK標誌位均爲1。
第三次握手:客戶端再次發送確認包ACK,SYN標誌位爲0,ACK標誌位爲1。
四次揮手:
第一次揮手:客戶端發送一個FIN,用來關閉客戶端到服務器的數據傳送,客戶端進入FIN_WAIT_1狀態。
第二次揮手:服務器收到FIN後,發送一個ACK給客戶端,確認序號爲收到序號+1,服務器進入CLOSE_WAIT狀態。
第三次揮手:服務器發送一個FIN,用來關閉Server到Client的數據傳送,服務器進入LAST_ACK狀態。
第四次揮手:客戶端收到FIN後,客戶端進入TIME_WAIT狀態,接着發送一個ACK給服務器確認序號爲收到序號+1,服務器進入CLOSE狀態,完成四次揮手。
五、Linux網絡配置示例:
早期紅帽5系統上通過/etc/modprobe.conf的配置文件中使用“alias”別名來設置設備名,目前紅帽6系統中是在/etc/udev/rules.d目錄下設置設備名。
#ifconfig -a eth1
解釋:顯示所有接口的配置信息。
#ifconfig eth1 192.168.10.123/24
解釋:配置的地址立即生效,但重啓網絡服務或主機都失效。
網絡服務:
RHEL5:/etc/init.d/network {start|stop|restart|status}
RHEL6:/etc/init.d/NetworkManager {start|stop|restart|status}
【我的Linux,我做主!】技術大牛告訴你Linux網絡原理就該這麼學!
【我的Linux,我做主!】技術大牛告訴你Linux網絡原理就該這麼學!
iproute2:比較強大的網絡管理軟件包
【我的Linux,我做主!】技術大牛告訴你Linux網絡原理就該這麼學!
【我的Linux,我做主!】技術大牛告訴你Linux網絡原理就該這麼學!

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