畫圖標准
OSI七層模型
7、應用層
作用:為用戶提供軟件/接口/界面 interface
協議:OICQ、HTTP、HTTPS、BT/P2P
6、表示層
作用:用於對用戶數據進行數據呈現。(數據格式、數據加密)
5、會話層
作用:用於實現會話管理(建立、維特、關閉、區分)
4、傳輸層
作用:用於實現數據的可靠戓不可靠傳輸
協議:TCP、UDP
TCP:傳輸過程中會確認傳輸的情況,在傳輸大文件時可靠,但小文件時確認次數太多占用帶寬
3、網絡層
作用:提供三層尋址/IP地址和三層通信(路由器)功能
協議:IP協議
2、鏈路層
作用:提供二層尋址/MAC地址和二層通信(交換機)功能。
協議:以太網 Ethernet
局域網:mac地址、交煥機判斷、鏈路層
廣域網:ip地址、路由器判斷、網絡層
1、物理層
作用:提供通信介質和接口標准
舉例:RJ11、RJ45、802.11ac、802.11n
OSI實現過程(封裝和解封)
區分應用進程並實現可靠傳輸
可以被路由器轉發
讓主機檢查傳輸的數據是否有誤碼
讓目標主機做好接收幀的准備
封裝:簡單理解應用層發送一個data數據;
到了傳輸層,從數據的基礎加一個頭部信息port,構造一個segment段;
到了IP層,加一個IP地址形成一個package包;(面向路由器)
到了數據鏈路層,加上一個mac地址,構造一個frame幀;(面向交換機)
到了物理層,轉成二進制數據進行01傳輸。
封裝:反向進行,則一層一層的校驗、分解(校驗、尋址)。
總結
1、OSI封裝是一個為數據包加入尋址信息的過程(打包過程,類似快遞)
2、端口號(Port)用於標志不同的應用程序,面向最終用戶
3、IP地址用於唯標志通信設備,面向路由器
4、MAC地址用於唯標志局域網設備,面向交換機
TCP/IP協議棧
TCP/IP四層模型
4. 應用層
協議:HTTP、HTTPS、FTP、DNS、DHCP
3. 傳輸層
協議:TCP、UDP、SCTP
2. 網絡層
協議:IP、ICMP、ARP
1. 數據鏈路層
協議:Ethernet
Ethernet(以太網)協議
以太網不等於局域網
以太網:一種鏈路層協議
局域網:一種小型網絡結構
局域網是用以太網技術來組建
1、定義
Ethernet以太網協議,用於實現鏈路層的數據傳輸和地址封裝(MAC)
DIX聯盟( Digital、Intel、 Xerox)開發
2、封裝
三個字段:
Destination/目的字段:標識目的通信方的MAC地址
Source/源字段:標識發送端的MAC地址
Type/類型值:標志上層協議(告訴解包時以什么格式解包)
MAC地址:
-
所有設備的MAC地址是全球唯一的
-
MAC地址是16進制表示,長度為48bit,采用冒號分16進制表示 01010100 10101010
10101111 11110000 2^48 -
MAC地址前半部分被"OUI代碼"廠商唯標志符,用於唯一標志一個企業/公司,例妙如思科、TP-LINK、華為;后半部分廠商自行分配
【補充】:以太網協議僅僅是鏈路層/局域網通信中的一種標准,還有其他鏈路層協議,令牌網、總線網、FDDI網
IP協議
定義
Internet
Protocol,互聯網協議,用於實現數據的不可靠面向無連接的通信,實現三層數據封裝與IP尋址(ip協議包含了ip地址)
原理
版本號 | 表示IP協議的版本 |
---|---|
頭部長度/總長度 | 頭部長度(默認為20字節),總長度;區分IP頭部和數據包,接收方根據長度字段知道從哪里解封裝 |
DSCP/TOS | QoS服務質量技術用於實現流量標記 |
標識符 | 用於標志分片的進程 |
標志符 | MF更多位用於告知接收方是否還有分片,0表示沒有,1表示有;DF不要分片位告知途徑設備不要進行分片 |
分片偏移 | 用於告知接收方每個分片距離IP頭部的位置,才能實現有序的重新組裝 |
生存時間 | TTL,最大為255,標志路徑長短,防止環路 |
協議號 | 標志上層協議 |
頭部校驗和 | 驗證數據包的完整性 |
源地址 | 標志發送方IP地址 |
目的地址 | 標志接收方IP地址 |
1、長度頭部/總長度
IP頭部標准20字節,最大60字節
用來區分數據包和IP頭部的大小,便於解包
2、DSCP/TOS:區分服務符/服務質量
3、TTL生存時間
IP數據包每經過一“跳”TTL減去一;當路由器收到一個TTL=0的數據包時,則宣告此數據包死亡並丟棄。TTL的本質是為了IP數據包的“環路”問題
4、協議號
小結:類型值、協議號、端口號都是用於標志上層協議,方便接收方實現數據的解封裝。此功能稱為協議之間的“分用
5、頭部校驗和
通過校驗和(奇偶校驗)可以讓接收方驗證此數據包是否完整/篡改。
以太網協議會在數包后面加FCS
5、源目IP地址
7、ip分片原理-標志ID、標識Flags、偏移量FO
MTU(最大傳輸單元)以太網1500bytes,大於1500將會被切分傳輸,網卡物理結構限制了大小
ID:當有多個數據傳輸時用ID來分辨每一個數據段屬於哪個數據
Flags:MF/DF等等的標志位
FO:當一個數據分片時用來分辨數據段的順序
ARP協議
如果要給TCP/IP協議棧選擇個"最不安全的協議",那么我會毫不猶豫把票投給ARP協議。我們經常聽到的這些術語,包括"網絡掃描、內網滲透、中間人攔截"、"局域網流控"、"流量坎騙",基本都跟ARP脫不了干系。大量的安全工具,例如大名鼎鼎的cain、功能完備的Ettercap、操作傻瓜式的P2P終結者,底層都要基於ARP實現
①ARP( Address Resolution
Protocol)即地址解析協議,用於實現從IP地址到MAC地址的映射,即詢向目標IP對應的MAC地址
②在網絡通信中,主機和主機通信的數據包需要依據OSI模型從上到下進行數據封裝,當數據封裝完整后,再向外發出。所以在局域網的通信中,不僅需要源目IP地址的封裝,也需要源目MAC的封裝。
③一般情況下,上層應用程序更多關心IP地址而不關心MAC地址,所以需要通過ARP協議來獲知目的主機的MAC地址,完成數據封裝。
1、原理
同個局域網里面,當PC1需要跟PC2進行通信時,此時PC1是如何處理的?
根據OSI數據封裝順序,發送方會自頂向下(從應用層到物理層)封裝數據,然后發送出去這里以PC1
ping PC2的過程舉例==>
PC1封裝數據並且對外發送數據時,上圖中出現了" failed",即數據封裝失敗了,為什么?
我們給PC1指令- ping
ip2",這就告知了目的IP,此時PC1便有了通信需要的源目IP地址,但是PC1仍然沒有通信需要的目的MAC地址。這就好比我們要寄個快遞,如果在快遞單上僅僅寫了收件人的姓名(IP),卻沒有寫收件人的地址(MAC),那么這個快遞就沒法寄出,因為信息不完整
那么,現在PC1已經有了PC2的地址信息,如問獲取到PC2的MAC地址呢?此時,ARP協議就派上用場了。我們接着上面這張圖,繼續==>
通過第三和第四步驟,我們看到PC1和PC2進行了ー一次ARP請求和回復過程,通過這個交互工程,PC1具備了PC2的MAC地址信息。接下來PC1會怎么做呢?在真正進行通信之前,PC1還會將PC2的MAC信息放入本地的[ARP緩存表],表里面放置了IP和MAC地址的映射信息,例如IP2<->MAC2接下來,PC1再次進行數據封裝,正式進入PING通信,如下==、
小結:經過上面6個步驟的處理,PC1終於把數據包發送出去了,之后便可以進行正常的通信了。看到了吧,ARP的功能和實現過程是如此的簡單:它在發送方需要目標MAC地址的時及時出手,通過一問答"的方式獲取到待IP對應的MAC地址,然后存儲到本地[ARP緩存表],后續需要的話,就到這里查找。既然是"緩存表,意味着它有時效性,並且如果電腦或者通信設備重啟的話,這張表就會清空;也就是說,如果下次需要通信,又需要進行ARP請求。在我們的
windows/macos系統下,可以通過命令行arp -a查看具體信息=>
ARP原理之廣播請求單播回應
上面的圖解過程看上去簡單又純粹,好像我們就已經把這個協議的精髓全部get到,但其實,我們只是剛揭開了它的面紗,接下來我們才真正進入正題。例如,上面的圖解過程中,整個局域網(LAN)只有PC1和PC2兩個主機,所以這個問答過程非常的順暢。實際網絡中,這個LAN可能有幾十上百的主機,那么請問,PC1如問將這個【ARP請求包】順利的交給PC2,而PC2又如何順利的把【ARP回應包】返回給PC1?我們看下面的圖:
為了營造出幾十上百"的效果,這里多派加了2個主機進來,並目増加了有線和無線的環境。那么,在多主機環境下,PC1現在發出的ARP請求包,怎么交到PC2手里?
這時,ARP協議就需要采用以太網的廣播功能:將請求包以廣播的形式發送,交換機或WFi設備(無線路由器)收到廣播包時,會將此數據發給同一局域網的其他所有主機。
注明:什么是廣播?對於初學者而言,我們只需要知道,大部分的廣播包,它們有一個共同
特征:二層封裝時目的MAC是全f(ffff.ffff.ffff)或三層封裝時目的IP是全1(255.255.255.255)。可以這樣更方便的記住:目的地址最大的,就是廣播
接下來我們來看下這個ARP廣播請求包接下來是如何工作的?
根據上圖我們看到,PC1發送的請求廣播包同時被其他主機收到,然后PC3和PC4收到之后(發現不是問自己)則丟棄。而PC2收到之后,根據請求包里面的信息(有自己的IP地址),判斷是給自己的,所以不會做丟棄動作,而是返回ARP回應包(單播回應)
ARP請求是通過廣播方式來實現的,那么,PC2返回ARP回應包,是否也需要通過廣播來實現呢?答案是否定的。大部分網絡協議在設計的時候,都需要保持極度克制,不需要的交互就砍掉,能合並的信息就合持,能不用廣播就用單播,以此讓帶寬變得更多讓網絡變得更快。那么,ARP回應包是如何處理的?這里需要特別關注ARP請求包的內容,在上面的圖解里面,ARP請求包的完整信息是:我的IP地址是IP1,MAC地址是MAC1,請問誰是PC2,你的IP2對應的MAC地址是多少?簡單來說,ARP請求首先有"自我介紹"然后オ是詢向。這樣的話,PC2在收到請求之后,就可以將PC1的IP和MAC映射信息存儲在本地的[ARP緩存表],既然如道PC1在哪里,就可以返回ARP單播回應包。
這張圖我們需要得到兩個信息:
①被詢向者PC2先生成了ARP映射信息,然后才是詢問者PC1;
②PC3和PC4等其他主機,無法收到這個ARP回應包,因為是單播形式。
小結:ARP協議通過"一問一答"實現交互,但是"問"和"答"都有講究,"問"是通過廣播形式實現,"答"是通過單播形式。
ARP數據包解讀
為了讓大家更好的理解ARP協議以及廣播和單播的概念,我們來看一下用
Wireshark抓取到的真實網絡中的ARP過程,通過數據包的方式來呈現,部分MAC信息隱去。(建議初學者用GNS3配合
Wireshark來抓取協議包進行分析,相比真實網絡更加干凈,方便分析)
主機1<-->主機2
主機1:IP1 10.1.20.64 MAC1:00:08:ca:xx:xx:xx
主機2:IP2 10.1.20.109 MAC2:44:6d:57:xx:xx:xx
請求包
回應包
ARP協議字段解讀
Hardware type:硬件類型,標識鏈路層協議
Protocol type:協議類型,標識網絡層協議
Hardware size:硬件地址大小,標識MAC地址長度,這里是6個字節(48bti)
Protocol size:協議地址大小,標識IP地址長度,這里是4個字節(32bit)
Opcode:操作代碼,標識ARP數據包類型,1表示請求,2表示回應
Sender MAC address:發送者MAC
Sender IP address:發送者IP
Target MAC address:目標MAC嗎,此處全0表示在請求
Target IP address:目標lP
ARP攻擊
ARP攻擊概述
在上篇文章里,我給大家普及了ARP協議的基本原理,包括ARP請求應答、數據包結構以及分層標准,今天我們繼續討論大家最感興題的話題:ARP攻擊原理是什么?通過ARP攻擊可以做什么,賬號是否可以取?有些常見的ARP滲透(攻擊)工具可以用來練手?ARP掃描和攻擊有什么區別,底層數據包特征是怎樣的?
接下來,我們通過圖解的方式來深入了解ARP攻擊是如問實現的
ARP攻擊原理
但凡局域網存在ARP攻擊,都說明網絡存在“中間人”,我們可以用下圖來解釋
在這個局域網里面,PC1、PC2、PC3三台主機共同連接到交換機SW1上面,對應3個接口port1/2/3。假設PC3這台主機安裝了ARP攻擊軟件或遭受ARP病毒,成為這個網絡的攻擊者(
hacker),接下來,PC3是如何攻擊的?先不急,先來回顧下PC1和PC2是如何通信
-
PC1需要跟PC2通信,通過ARP請求包詢問PC2的MAC地址,由於采用廣播形式,所以交換機將ARP請求包從接口P1廣播到P2和PC3。(注:変換機收到廣播/組播/末知幀都會向其他接口泛洪)
-
PC2根據詢可信息,返回ARP單播回應包;此時PC3作為攻擊者,沒有返回ARP包,但是處於'監聽'狀態,為后續攻擊做准備
-
PC1和PC2根據ARP問答,將各自的ARP映射信息(IP-MAC)存儲在本地ARP緩存表,交換機根據其學習機制,記錄MAC地址對應的接口信息,存儲在CAM緩存表(也稱為MAC地址表),交換機收到數據包時,會解封裝數據包,根據目標MAC字段進行轉發
關於上面的圖解,我們要記住這些關鍵知識(敲黑板!)
- 主機通信需要查找ARP表,而交換機通信需要查找CAM表(路由則查找 Route表)
注:ARP表:ip<-> mac CAM表:mac<->port( Route表:route<->port)
-
交換機基於源MAC地址學習,基於目的MAC地址轉發
-
同一局域內,攻擊者可以根據主機的ARP廣播請求監聽其IP和MAC信息
注:這里是”被動監聽“,跟后面要談到的”主動掃描“原理上有分別
接下來是重點,我們來看看PC3( Hacker)是如何發起ARP攻擊的=>
正常情況下,若收到的ARP請求不是給自己的,則直接丟棄;而這里PC3(
Hacker)在監聽之后,發起了ARP回應包:我就是PC2(IP2-MAC3)。從拓撲可以出現,PC3明明是IP3對應MAC3,很顯然這就是一個ARP欺騙行為。於此同時,PC2正常的ARP回應包也交到了PC1手中,我們來看PC1接下來如何處理的
PC1收到兩個ARP回應包,內容分別如下
-
我是PC2,我的IP地址是IP2,我的MAC地址是MAC2
-
我是PC2,我的IP地址是IP2,我的MAC地址是MAC3
PC1臉懵:咋回事?還有這操作?不管了,我選最新的!(后到優先)
這里給大家便普及下網絡協議里各種表在處理緩存信息的方式
要么”先到先得”要么后到優先,上面提到的ARP和CAM表,就是遵循后到優先原則,而后面章節我們會講到的DHCP表,則循'先到先得”原則
那么問題來了,上面兩個ARP回應包到底郡個先到郡個后到呢?
作為初學者,可能還在糾結前后這種 naive的問題;而作為
hacker,只要持續不停發出ARP欺騙包,就一定能夠覆蓋掉正常的ARP回應包。穩健的ARP嗅探/滲透工具,能在短時間內高並發做網絡掃描(例如1秒鍾成干上百的數據包),能夠持對外發送欺騙包
無論如何,當PC1和PC2這種”小白用戶遇到PC3( hacker)時,最終的結果一定是這樣的
小白vs黑客,很明顯的較量,PC1最終記錄的是虛假的ARP映射:IP2<->MAC3,得到錯誤信息的PC1,接下來會發生什么情兄呢?(我們以PC1
ping PC2為例)
根據數據封裝規則,當PC1要跟PC2進行通信時,無論是發生PING包還是發送其他數據首先要查找ARP表,然后在網絡層打上源目IP,在鏈路層打了上源目MAC,然后將數包發送給交換機。交換機收到之后對數據進行解封裝,井目査看CAM表(基於目的MAC轉發),
由於目標MAC3對應Port3,所以交換機自然而然將其轉發給PC3就這樣,PC1本來要發給PC2的數據包,落到了PC3(
Hacker)手里,這就完成了一次完整的ARP攻擊。
反過來,如果PC2將數據包發送PC1,PC3仍然可以以同樣的ARP欺騙現攻擊,這就有了下面這張圖(PC3既欺編了PC1,也欺編了PC2)
此時,PC1和PC2的通信數據流PC3攔截,形成了典型的中間人攻擊。那么,一旦被攻擊井攔截,攻擊者能做什么,普通用戶又會受什么提失?這里給大家舉幾個常見的例子=
- 攻擊者既然操控了數據流,那么直接斷開通信是輕而易舉的,即"斷網攻擊”,例如,PC1
給PC2的數據在PC3這里可以直接丟棄,而如果這里的PC2是台出口路由器(無線路由器),那就意味着
PC1直接無法連上互聯網
- "斷網攻擊"顯然容易被發現,而目比較殘忍”,所以就有了更加常見的應用-“限速”。例
如,在宿含上網突然很慢,在網吧上網突然不開網頁,如果這個網絡沒有安全防御,那么很有可能有”內
鬼。
- 其實無論是斷網攻擊還是限速”,整體還是比較”善良”,因為這里流量里面的核心數據還沒有被”提取”出來。如果攻擊者是一名真正的黑客,他的目的定不會這么無聊,因為內網流量對於黑客是沒有太大價值的,而只有"用戶隱私”,例如常見網貼的登錄賬號碼,這些才是最有價值的
向:受ARP取擊之后,些賬號可能取?
答:任何基於明文傳輸的應用,都可以被竊取,例如,如果個網站不是HTPS協議,而是基於HTP明文傳輸,那么當你登錄這個網站時,你的密碼就會被取。除了http(web應用),常見的還有
telnet.、ftp、pop3/ smtp/imap(郵箱)等應用,都很容易泄密碼
ARP滲透工具底層原理分析
這里我通過wireshark給大家還原真實網絡中常見的ARP歸描和欺騙攻擊
在這張圖里面,
Hacker(就是我)接入了個WFi網絡,這個10.1.20.0/24便是所在的網段。剛進來一個陌生網絡,
Hacker只知道自己的IP信息,例妙如P地址是10.1.20.253,網關地址是10.1.20.254,而這個局域網的其他設備是什么?有多少台?地址分布是多少?Hacker都不知道,接下來怎么呢?是不是要直接發動ARP攻擊了?
不用這么着急,咋們至少要先了解下這個網絡,進行基本的掃描和踩點。這個時候通過ARP工具對這個WiFi網絡進行ARP掃描,具體的數據包圖如下:
其實,這就是典型的盲掃或者'暴力掃描":反正我不道網絡到底有多少主機,那我就嘗試一下把整個網段全部問遍得了
那么,這個實際網絡里面,到底誰'舉手了呢?我們來看 Wireshark抓包情況
掃描后得到以下圖片
接下來,如何進行ARP欺攻擊呢?這里將最重點的數據包截取出來>
根據之前的信息,我們知道00:08:ca:86:f8:0f其實就是hacker的mac地址,並且對應的真正的IP地址應該是10.1.20.253。而這里很明顯是
hacker在欺騙局域網其他主機,它對外聲稱:自己就是"所有人”。尤其是上面標紅的主機,我們已經知道是小米思科蘋果等設備,但是
hacker?都聲明是自己!這樣的意義在於覆蓋掉其他主機的ARP緩存表信息,井生成錯誤的ARP映射,最終將通信流量交給
hacker。當然,還有另外一種
依此類推,Hackers會告訴局域網所有主機:自己就是網關,井且后續可數據都丟給我,我來轉發到互聯網
ARP攻擊總結
-
ARP緩存表基於后到優先原則,IP與MAC的映射信息能被覆蓋
-
ARP攻擊基於偽造的ARP回應包,黑客通過構造'錯位”的IP和MAC映射,覆蓋主機的ARP表(也被稱為ARP毒化),最終截取用戶的數據流
-
一遭受ARP攻擊,賬號密碼都可能取(如果通信協議不是加密的)
-
通過 Wireshark數據包分析,我們掌握了真實網絡中ARP底層攻擊原理及數據包組成。
ARP防御
在講解ARP防御之前,我們先回顧下ARP攻擊最經典的一幕=>
當PC1詢問PC2的MAC地址時,攻擊者PC3返回ARP欺回應包:我的IP地址是IP2,MAC地址是MAC3。-且PC1記錄了錯誤的ARP映射,則發給與PC2的數據,都會落到PC3手里
也就是說,ARP攻擊的罪首便是這種”欺編包”,若針對欺騙包的處理是不相信或不接收的話,則不會出現問題。處理這種欺行為我們去提前在黑客端做手腳,因為"敵在暗處我在明處。這樣的話,我們就剩下兩個解決方法
-
保證電腦不接收欺包
-
保證電腦收到包之后不相信
目前網絡安全行業現有的ARP防御方案,基本都是上面兩個方法的具體實現。我們來看看這張防御圖:
-
當黑客發起ARP欺騙包時,會途徑局域網里面的交換機或無線路由器等網絡設備;
-
如果網絡設備能夠識別別種欺騙包,井且提前丟棄掉,則電腦手機端就不會被欺騙;
-
如果網絡設備沒有攔截這種欺編包,則電腦/手機端需要做安全防御,然后再丟棄。
簡單來說,ARP防御可以在網設備上實現,也可以在用戶端實現,更可以在網絡設備和用戶端同時實現。接下來,我們先來了解下網絡設備(例如這里的交換機)的防御技術
上面這張圖,展現的是交처換機的ARP防御能力,當PC2發送ARP回應包時,交換機將其轉發給PC1,而當PC3發送ARP回應包(欺騙)時,交換機直接丟棄
但是,人家PC3上臉上又沒有寫着"
hacker,憑什么交機要丟棄它的ARP回應包?憑什么判斷它的包就是”欺騙的呢?接下來,我就要給大家個紹下局城網安全里比較常用的防御技術,這種防御技術被稱為DAI(
Dynamic ARP Inspection)動態ARP檢測,原理可以用兩句話簡單概括:
-
交換機記錄每個接口對應的IP地址和MAC,即port->mac<->ip,生成DAI檢測表
-
交換機檢測每個接口發送過來的ARP回應包,根據DAI表判斷是否違規,若違視則丟棄此
數據包井對接口進行懲罰
我們知道,PC3是在交換機的Port3、MAC地址是MAC3,IP地址是IP3,所以本地DAI表項內容是<port3-mac3-ip3>。當交換機從接口Port3收到ARP回應包,內容卻是P2和MAC3映射,即<port3-mac3-ip2>,經判斷,這個包就是虛假的騙包,交換機馬上丟棄這個包,並且可以時接口做懲罰(不同設備的懲罰方式有所不同,可以直接將接口軟關閉”,直接將攻擊者斷網;也可以'靜默處理",僅丟棄欺騙包,其他通信正常)
上面這個動態ARP監測技術,可以說是目前防御ARP攻擊最有效的方法之一。但是,作為初者,大家可能還會有疑問:
-
一般的交換機或網絡設備能部署動態ARP監技術嗎?
-
連接用戶的交換機,怎么能識別IP地址信息呢?
-
上面這張DAI表是如何生成的?是不是像CAM表一樣能自動識別?
大部能支持這種動態ARP監測技術的交換機成者無線路由器,都基本是企級的產品。所以,簡單的交換機不具備動態ARP監技術,即便市面上有帶安全防御的網絡產品,企業、學校、醫院等大量網絡,仍然在早期采購的時侯,用的是比較基礎版本的交換機
另外,交換機能識別IP地址信息嗎?
從現在的網絡技術來看,分層界限越來越模糊,融合式的網絡設備才是主流,現在的接入交換機基本能被
Telnet/
SSH/Web管理,更專業的交換機同時支持動態ARP監測(dai)、IP源防護(ipsg)、DHCP偵聽(
dhcp
snooping)、端口安全、AAA、802.1x等局域網安全技術,已經超越了原有二層交換機的定義所以,交換機能讀三層甚至七層的數據包已經不是什么新鮮事了,不要被"交換機就是一層設備"給束縛了,這只是紙面上的定義
最后一個向題,DA檢測表是如問生成的?
在上面圖解中,我們看到交換機查看的表已經不是原來的CAM表了,內容也不太一樣,CAM表的內容主要是MAC和Port的映射,而DAI檢測表則表則是Port、MAC、IP三個信息映射。目前這張表支持兩種方式來生成:第一種方式就是手工靜態綁定:即用戶接入網絡之后,管理員根據此用戶電腦的MAC和P地址,然后在接口上綁死,缺點就是用戶數太多的話,手工綁定管不過來;第二種方式就是目前最主流的做法,即在交換機上開啟DHCP偵聽技術,當用戶第一次通過DHCP獲取到地址的時候,交換機就把用戶電腦的IP、MAC、Port信息記錄在DHCP偵聽表,后面ARP檢則直接調用這張DHCP偵聽表即可。
ICMP協議
定義
互聯網信息控制協議, Internet Control Message
Protocol用於實現鏈路連通性測試和鏈路蹤,可以實現鏈路差錯報告。ICMP雲行存在傳輸層協議、服條於IP協議
ping的原理
Ping的原理(探測目的主機是否有問題,探測本地到目的的延遲等)
Echo request 回顯請求
Echo reply 回顯應答
類型值|代碼值:8 | 0請求0 | 0回復=>區分數據包類型
校驗和:實現數據包完整性校驗
標識符:用於標志不同的Ping進程
序列號:表示在此進程下的第幾個包
DDos攻擊
DOS Deny of service拒絕服務式攻擊
DDOS Distributed deny of service分布式拒絕服務式攻擊
使用ICMP協議原理,向目標服務器發送大量請求,迫使服務器發送大量回復,消耗服務器帶寬
鏈路追蹤
在命令行輸入命令:traceroute www.baidu.com
顯示數據傳輸途徑的所有使用IP協議設備的地址
Tracert/Traceroute的原理(探測本地到目的路徑,“踩點",利用TTL超時來實現)
(1) Windows鏈路追蹤的實現原理
不斷發送ICMP請求,然而每一個請求的TTL值不一樣
第一個包的TTL值為:1,當它遇到第一個路由設備時TTL就會被-1=0,然后第一個路由設備就會回復主機宣告包的死亡,同時回復中攜帶着自己的IP地址,以此獲得設備的IP
第二個的ICMP數據包TTL為:2,當他被第一個路由轉發后就會-1=1,然后傳給第二個路由,到第二個路由時TTL就會又-1=0,然后宣告包已死亡並且回復自己的IP地址,以此類推,就可以獲取訪問www.baidu.com網站數據途徑的所有使用IP協議設備的IP地址
追蹤過程中帶*的數據有兩種情況
-
路由器離得太遠,回應時間太長導致超時
-
設備是類似防火牆或帶有反追蹤功能的設備
(2)Linux/Unix鏈路追蹤原理
和Windows區別在於Windows全都是ICMP包,而Linux/Unix是UDP包+ICMP包
當UDP高端口包發送到百度時,百度沒有開啟對應的端口服務,因此會回復一個“端口不可達”包
同時,這些包的結構也不一樣,在ICMP層里面還包含着原來的IP層,目的是告訴用戶錯誤的包的內容
UDP協議
大文件一般用TCP協議傳輸,而一般實時傳輸或者是小文件用UDP協議傳輸
定義
用戶數據報協議, user datagram
protocol,用於實現面向無連接的不可靠協議,傳輸層協議
特征
數據包結構非常簡潔
處理速度快
實時交互(社交軟件、視頻流、實時交互協議)
協議(基於UDP開發的應用、協議)
DHCP、DNS、QICQ、TFTP
源端口
目標端口
數據包長度
校驗和
拓展:
1、(端口范圍1-65535)通信過程中,源端口般屬於隨機高端口,目的端口屬於固定知名端口
2、1-1023為知名端口號范圍,已經被占用的。
3、DHCP的源目端口都固定,客戶嫦端口為68、服務端為67。
4、DNS域名解析協議基於UDP端口號53;通過DNS請求和回復過程,獲取域名對應IP
DHCP協議
定義
動態主機配置協議, Dynamic Host Configuration
Protocol,用於實現對終設備的動態IP信息分配(IP地址、網關地址、DNS服務器、WINS服務。。)
原理
ipconfig/release //釋放IP地址(抓到 DHCP Releasef包)
ipconfig/renew //重新獲取IP地址(抓到DHCP完整交互包)
Linux/Unix
Windows
0.0.0.0:沒設置地址
255.255.255.255(ff:ff:ff:ff):廣播
在Linux環境下,無論是發現/提供/請求/確認包,目標地址都為255.255.255.255,即都為廣播,原因是當配置有多個DHCP服務器時,當其中一個DHCP服務器的地址池被分配出去時其他的服務器能收到廣播,不會使地址再次使用;
在Windows/macos則會以單播來提供/確認,目的是減少廣播對其他用戶的影響,同時節約帶寬
小結
數據包的功能:
發現包用於廣播發現局域網的DHCP服務器;提供包用於預回復客戶端,告知其即將給的P地址;請求包正式對感興趣的服務器/IP地址發起請求;確認包對客戶端進行最終的正式確認(這個時候服務器會將此分配出去的IP地址移開本地地址池)。
DHCP初始請求過程中,客戶端本地是沒有IP地址的,那么如向對外發送發現和請求包呢?:
將自己的地址設置為0.0.0.0
為什么發現/請求包需要使用廣播的方式,有一些情況下,提供/確認包也需要使用廣播的方式?:
當局域網配置多個DHCP服務器時,當地址池里的一個地址被分配出去時,若其他DHCP服務器不知情,則可
能導致一個IP地址被多次公用
DHCP的交互過程都是廣播包形式來實現的,目的IP采用255.255.255.255
DHCP交互過程中,服務端為67,客戶端為68
為什么需要4個包來獲取地址,而不是2個包?:
2個包無法解決多服務器環境下,地址浪費/沖突的問題。
同時,DHCP是不可靠協議,當提供的步驟提供地址時丟失或者被攔截,則會導致用戶得不到地址但是DHCP服務器將地址清除,增加多兩個確認包可以增加協議的穩定性
為什么有的時候會抓到多個提供包,若收到多個提供包該如何選擇?:
有可能多個提供包是由多個DHCP服務器提供的,DHCP協議采用先到先得原則,若收到多個IP地址則選擇第一個,但由於請求包只會發出一個,所以只有一個IP地址會從地址池消除
DHCP發現包:
DHCP提供包:
DHCP請求包:
DHCP回復包:
TCP協議
定義
Transmission Control
Protocol,傳輸控制協議,是TCP/IP協議棧中算法最多,功能最繁雜的協議
基於TCP的應用層協議
HTTP:80
HTTPS:443
FTP:20/21
SSH: 22
TELNET: 23
SMTP/POP: 25/110
功能
面向連接(三次握手、四次揮手)
可靠傳輸(經典重傳、超時重傳、快速重傳/選擇性重傳)
流量控制(滑動窗口、擁塞管理)
多路復用(套接字)
原理
面向連接(三次握手、四次揮手;SYN/ACK/FIN位)
三次握手:
四次揮手:
可靠傳輸(序列號SEQ+確認號ACK+重傳算法)
經典重傳
超時重傳
小結:
1、正常不丟包情況下,ACK(n+1)=SEQ(n)+Len(n),即下一次的確認號等於上一次的序列號加數據包長度值;若丟包情況下,則ACK(n+1)
< SEQ( n ) + Len(n)
2、下一次的序列號等於上一次的確認號 Seq(n+1) = ACK(n)
流量控制(窗口大小)
當窗口大小為0時意思為暫時沒有空間來儲存?告訴服務器不要繼續傳輸
多路復用(端口號Port、套接字socket、會話session、五元組)
注明:TCP通過端口號(port)或套接字(ip+port)實現多路復用
源目IP+源目Port+協議號=唯一的五元組
Telnet協議
定義
遠程登錄協議,用於對設備進行遠程管理,基於明文,目前不建議使用,建議采用SSH協議
采用TCP23號端口