我的Linux網絡內核之行1-基礎網絡知識

前言

最近不光在解決項目的問題,也遇到過部分的網絡問題,發現自己對於網絡的知識還是非常匱乏的,因而在此做一些歸納,記錄也是分享,當然我的分享應該不是最全的,但個人認爲有些東西就算分享出來,用不到也是白折騰。在此係列中,我還是隻介紹我個人用到的技術。

Wi-Fi的相關名詞介紹

到一家店裏面,以前我們經常喊:老闆,你們這邊的WIFI叫什麼名字?
身爲一個技術人員嘛,我們當然得知道“WIFI”到底指的是什麼。
“WIFI”就是指SSID: Service Set Identifier(服務集標識)
SSID是一個ESS的網絡標識(如:TP_Link_1201),BSSID是一個BSS的標識,BSSID實際上就是AP的MAC地址,用來標識AP管理的BSS,在同一個AP內BSSID和SSID一一映射。在一個ESS內SSID是相同的,但對於ESS內的每個AP與之對應的BSSID是不相同的。如果一個AP可以同時支持多個SSID的話,則AP會分配不同的BSSID來對應這些SSID。
這上面的話比較拗口,那麼一個路由器(ESS)下可以接一個新的路由器(BSS)BSSID就是這個新的路由器的mac地址,這個新的路由器又組成了一個新的AP(一個新的連接點)其SSID與MAC地址對應。
在這裏插入圖片描述
還有幾個名詞
站點STA(手機)
接入點AP(路由器)
擴展服務集ESS
基本服務集BSS
分佈式系統DS(傳輸用的,後面會講到)

在這裏插入圖片描述
STA(工作站)啓動初始化、開始正式使用AP傳送數據幀前,要經過三個階段才能夠接入(802.11MAC層負責客戶端與AP之間的通訊,功能包括掃描、接入、認證、加密、漫遊和同步等功能)
1)掃描階段(SCAN)
2)認證階段 (Authentication)
3)關聯(Association)

Wi-Fi的掃描

Active Scanning 主動掃描 (特點:能迅速找到) STA依次在13個信道發出Probe Request幀,尋找與STA所屬有相同SSID的AP,若找不到相同SSID的AP,則一直掃描下去…
Passive Scanning 被動掃描(特點:找到時間較長,但STA節電)通過偵聽AP定期發送的Beacon幀來發現網絡,該幀提供了AP及所在BSS相關信息:“我在這裏”…
在這裏插入圖片描述
具體的被動掃描:
(1)跳至某個信道,然後等候來幀指示(indicationof an incoming frame)或者等到ProbeDelay定時器超時。如果在這個信道收到幀,就證明該信道有用戶在使用,因此可以加以探測。而ProbeDelay定時器可用來防止某個閒置信道讓整個過程停止,因爲工作站不會一直等待幀的到來。
(2)利用基本的DCF訪問過程取得媒介使用權,然後送出一個Probe Request幀。
(3)至少等候一段最短的信道時間(即MinChannelTime)。
a.如果媒介並不忙碌,表示沒有網絡存在,因此可以跳至下個信道。
b.如果在MinChannelTime這段期間媒介非常忙碌,就繼續等候一段時間,直到最長的信道時間(即MaxChannelTime)超時,然後處理任何的Probe Response幀。
大家可能會發現當手機進行WIFI熱點搜索時,有時時間會比較長,原因是你處在的區域存在多個接入點(AP),當手機發出Probe Request幀時,多個接入點(AP)通過競爭窗口(congestionwindow)迴應Probe Response幀,而這個競爭過程受限於最長的信道時間(即MaxChannelTime)。

Wi-Fi的認證

彈出一個輸入密碼的窗口,當然也有不用輸入密碼的。這個過程叫做:認證(Authentication)
裏面的具體機制呢,後面再說,可以來看一下Wi-Fi的加密協議有什麼。

  • WPA(Wi-Fi Protected Access)是WIFI聯盟制定的安全性標準,WPA2是第二個版本
  • PSK(PreShared Key)叫做預共享密鑰。WPA-PSK/WPA2-PSK主要是針對個人或家庭網絡等,對安全性要求不是很高的用戶
  • WPA2是在802.11i頒佈之後,WIFI聯盟隨即推出的最新無線安全標準,它遵循802.11i標準,以下是它採用的模式:
    WPA2-PSK= PSK(密碼) + AES + CCMP(計數器模式及密碼塊鏈消息認證碼協議)
    在這裏插入圖片描述

Wi-Fi的關聯

工作站與基站進行關聯,以便獲得網絡的完全訪問權。它讓分佈式系統(Distribution System)得以記錄每個移動式工作站的位置,以便將傳送給移動式工作站的幀,轉送給正確的基站。
簡而言之,就是和AP建立數據交互了。
在這裏插入圖片描述
1、一旦移動式工作站與基站完成認證,便可送出關聯請求(Association Request)幀。尚未經過身份認證的工作站,會在基站的答覆中收到一個解除關聯(Deauthenticaton)幀。
2、基站隨後會對關聯請求進行處理。IEEE802.11標準並未規範如何判斷是否請允許關聯;這因基站的實現而異。較常見的方式是考慮幀暫存所需要的空間大小。以Association Request幀中的聆聽間隔(Listen Interval)字段來推算,大致上可以粗略推算出。
a. 一旦關聯請求獲准,基站就會以代表成功的狀態代碼0及關聯識別碼(Association ID,簡稱 AID)來回應。AID本身是數值形式的識別碼,在邏輯上則是用來辨識暫存幀所要傳遞的行動式工作站。
b. 關聯請求如果失敗,就只會返回狀態碼,並且中止整個過程。
3、基站開始爲移動式工作站處理幀。在常見的產品中,所使用的分佈式系統媒介通常是Ethernet。當基站所收到的幀目的地爲與之關聯的移動式工作站時,就會將該幀從 Ethernet橋接至無線媒介,如果該移動式工作站處於省電(Power-Saving)狀態,則爲之暫存幀。在共享式Ethernet中,該幀會被送至所有基站,不過只有正確的基站會進行橋接處理。在交換式Ethernet 裏,該工作站的MAC地址得以跟某個特定的交換端口(Switch Port)形成關聯。當然,該交換端口必須連接到當前爲該工作站提供服務的基站。

網絡協議

說了那麼多的Wi-Fi鏈接,其基石除了nl802.11協議,還有最基石的幾個協議,比如ARP\ICMP\TCP,這些是我們最常用到的協議棧。
一般我們會見到OSI的7層架構,給這些協議做了劃分
在這裏插入圖片描述

ARP

ARP(Address Resolution Protocol)地址解析協議,目的是實現IP地址到MAC地址的轉換。
在這裏插入圖片描述

實例

主機A的IP地址爲192.168.42.1,MAC地址爲0A-11-22-33-44-01
主機B的IP地址爲192.168.42.15,MAC地址爲0A-11-22-33-44-02
當主機A要與主機B通信時,地址解析協議可以將主機B的IP地址(192.168.42.15)解析成主機B的MAC地址
以下爲工作流程:
(1)根據主機A上的路由表內容,IP確定用於訪問主機B轉發IP地址是192.168.42.15。然後A主機就在自己的本地ARP緩存中檢查主機B的匹配MAC地址。
(2)如果主機A在ARP緩存中沒有找到映射,它將詢問192.168.42.15的硬件地址,從而將ARP請求幀廣播道本地網絡上的所有主機。源主機A的IP地址和MAC地址都包括在ARP請求中。本地網絡上的每臺主機都接收到ARP請求並且檢查是否與自己的IP地址匹配。如果主機發現請求的IP地址與自己的IP地址不匹配,他將丟棄ARP請求。
(3)主機B確定ARP請求中的IP地址與自己的IP地址匹配,則將主機A的IP地址和MAC地址映射添加到本地ARP緩存(主機B)中。
(4)主機B將包含其MAC地址的ARP回覆消息直接發送回主機A。
(5)當主機A收到從主機B發來的ARP回覆消息時,會用主機B的IP和MAC地址映射更新ARP緩存。本機緩存是有生存期的,生存期結束後,將再次重複上面的過程。

主機B的MAc地址一旦確定,主機A就能向主機B發送IP通信了

ARP數據分析

下圖爲抓到的一個ARP的請求
在這裏插入圖片描述
具體可以看以下表格
在這裏插入圖片描述
ARP的回覆包:

在這裏插入圖片描述
注意了
內容格式和請求相似,不過會有目的地址對應的MAC地址,ARP數據包類型字段爲2。
重點就在opcode。

ARP的攻擊與防禦

從上面大家可以看出ARP是一個非常簡單的包,如果是黑客的,他會咋麼做呢?
不賣關子了,我可以截取ARP,將其挾持成自己的主機,有段時間你可能發現你的主機變慢了,網絡卡了,那麼有可能是受到了ARP的攻擊喲。
一般來講
①ARP緩存表基於"後到優先"原則,IP與MAC的映射信息能被覆蓋;
②ARP攻擊基於僞造的ARP迴應包,黑客通過構造"錯位"的IP和MAC映射,覆蓋主機的ARP表(也被稱爲"ARP毒化"),最終截取用戶的數據流;
③一旦遭受ARP攻擊,賬號密碼都可能被竊取(如果通信協議不是加密的);

對於商業級的交換機來講,都會有DAI(Dynamic ARP Inspection)- 動態ARP檢測。
主要工作爲:
1.交換機記錄每個接口對應的IP與MAC,生成DAI檢查表
2.交換機價差每個接口發過來的ARP迴應包,根據DAI表判斷是否違規,並懲罰相關接口

那麼我們消費級的就沒有辦法了嗎?
還是有的。模擬DAI的算法,通過軟件的模式,不斷地處理網絡包,並在本地做保護。
ARP防火牆:
1.綁定正確的IP與MAC映射
2.自動識別局域網內存在的ARP掃描和欺詐行爲

ICMP

一個新搭建好的網絡,往往需要先進行一個簡單的測試,來驗證網絡是否暢通;但是IP協議並不提供可靠傳輸。如果丟包了,IP協議並不能通知傳輸層是否丟包以及丟包的原因。所以我們就需要一種協議來完成這樣的功能–ICMP協議。
主要功能:

  1. 確認IP包是否成功到達目標地址
  2. 通知在發送過程中IP包被丟棄的原因

最常用的Ping就是ICMP報文:

一臺主機向一個節點發送一個類型字段值爲8的ICMP報文,如果途中沒有異常(如果沒有被路由丟棄,目標不迴應ICMP或者傳輸失敗),則目標返回類型字段值爲0的ICMP報文,說明這臺主機存在。

在這裏插入圖片描述
ICMP報文包含在IP數據報中,IP報頭在ICMP報文的最前面。一個ICMP報文包括IP報頭(至少20字節)、ICMP報頭(至少八字節)和ICMP報文(屬於ICMP報文的數據部分)。當IP報頭中的協議字段值爲1時,就說明這是一個ICMP報文。
在這裏插入圖片描述
而我們一般需要關注的類型有以下這幾個
在這裏插入圖片描述

實例

這是我抓到的2筆ping過程中的ICMP報文
在這裏插入圖片描述
其具體數據如下:
在這裏插入圖片描述

在這裏插入圖片描述

一個請求,一個回覆,注意這邊的type與code,這個是構成ICMP類型的重要組成。根據這個你能夠知道到底發生了什麼事情

通常爲以下狀態:
類型8,代碼0:表示回顯請求(ping請求)。
類型0,代碼0:表示回顯應答(ping應答)
類型11,代碼0:超時

TCP報文

有很工程,我們一般都是使用TCP通信的,什麼3次握手,我在此就不說了,主要還是說說協議。
還是一樣要關注的仍然是其首部。
在這裏插入圖片描述
在這裏插入圖片描述
這裏大家應該注意的是這個FLAGS,這個可以跟3次握手一一對應起來,有興趣的家人們可以直接試試。回頭還會分享一下我是咋麼抓包的。

IP報文

前面講的那麼多,其實是已經分析出來的東西了。而在這些報文之前還有報文,這個那就是IP報文

在這裏插入圖片描述
在這裏插入圖片描述

這裏關注首部與原目標即可,還有PROTOCOL。這個非常重要。

以太網封裝

當然哦,IP報文之前,還有一筆報文,我們稱其爲以太網的封裝。
具體組成如下:
在這裏插入圖片描述
在這裏插入圖片描述

協議總結

在這裏插入圖片描述
大家可以看到這個是組成發包,而到接受端一樣是逐一解包。這裏就不一一說明了。

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