網卡工作原理和wireshark混雜模式


通過設置網卡為混雜模式就能捕獲局域網內所有發包內容,包括非廣播包和非發給自己主機的數據包 這是為什么呢?

即主機A發送一個數據包給主機B,我作為主機C怎么也能截獲這個數據包呢,原理是什么?

我的網卡為什么設置成混雜模式就能捕獲發給別人的包?

網卡的工作原理

網卡收到傳輸來的數據,網卡內的單片程序先接收數據頭的目的MAC地址,根據計算機上的網卡驅動程序設置的接收模式判斷該不該接收,認為該接收就在接收后產生中斷信號通知CPU,認為不該接收就丟棄不管,所以不該接收的數據網卡就截斷了,計算機根本就不知道。

CPU得到中斷信號產生中斷,操作系統就根據網卡驅動程序中設置的網卡中斷程序地址調用驅動程序接收數據,驅動程序接收數據后放入信號堆棧讓操作系統處理。

局域網如何工作
數據在網絡上是以很小的稱為幀(Frame)的單位傳輸的。幀由好幾部分組成,不同的部分執行不同的功能。
例如:以太網的前12個字節存放的是源和目的的地址,這些位告訴網絡:數據的來源和去處。以太網幀的其他部分存放實際的用戶數據、TCP/IP的報文頭或IPX報文頭等等。
幀通過特定的網絡驅動程序進行成型,然后通過網卡發送到網線上。通過網線到達它們的目的機器,在目的機器的一端執行相反的過程。接收端機器的以太網卡捕獲到這些幀,並告訴操作系統幀的到達,然后對其進行存儲。就是在這個傳輸和接收的過程中,嗅探器會造成安全方面的問題。通常在局域網(LAN)中同一個網段的所有網絡接口都有訪問在物理媒體上傳輸的所有數據的能力,而每個網絡接口都還應該有一個硬件地址,該硬件地址不同於網絡中存在的其他網絡接口的硬件地址,同時,每個網絡至少還要一個廣播地址。(代表所有的接口地址),在正常情況下,一個合法的網絡接口應該只響應這樣的兩種數據幀: 
1、幀的目標區域具有和本地網絡接口相匹配的硬件地址。 
2、幀的目標區域具有“廣播地址”。
在接受到上面兩種情況的數據包時,網卡通過cpu產生一個硬件中斷,該中斷能引起操作系統注意,然后將幀中所包含的數據傳送給系統進一步處理。當采用共享HUB,用戶發送一個報文時,這些報文就會發送到LAN上所有可用的機器。在一般情況下,網絡上所有的機器都可以“聽”到通過的流量,但對不屬於自己的報文則不予響應(換句話說,工作站A不會捕獲屬於工作站B的數據,而是簡單的忽略這些數據)。如果局域網中某台機器的網絡接口處於混雜(promiscuous)模式(即網卡可以接收其收到的所有數據包,下面會詳細地講),那么它就可以捕獲網絡上所有的報文和幀,如果一台機器被配置成這樣的方式,它(包括其軟件)就是一個嗅探器。然后要知道嗅探要捕獲的東西必須是要物理信號能收到的報文信息。顯然只要通知網卡接收其收到的所有包(一般叫作混雜promiscuous模式:指網絡上的所有設備都對總線上傳送的數據進行偵聽,並不僅僅是它們自己的數據。),在共享HUB下就能接收到這個網段的所有包,但是交換模式下就只能是自己的包加上廣播包。要想在交換模式下接收別人的包,那就要讓其發往你的機器所在口。交換模式記住一個口的MAC是通過接收來自這個口的數據后並記住其源MAC,就像一個機器的IP與MAC對應的ARP列表,交換模式維護一個物理口(就是HUB上的網線插口,這之后提到的所有HUB口都是指網線插口)與MAC的表,所以可以欺騙交換模式的。可以發一個包設置源MAC是你想接收的機器的MAC,那么交換模式就把你機器的網線插的物理口與那個MAC對應起來了,以后發給那個MAC的包就發往你的網線插口了,也就是你的網卡可以嗅探到了。注意這物理口與MAC的表與機器的ARP表一樣是動態刷新的,那機器發包后交換模式就又記住他的口了,所以實際上是兩個在爭,這只能應用在只要收聽少量包就可以的場合。內部網基於IP的通信可以用ARP欺騙別人機器讓其發送給你的機器,如果要想不影響原來兩方的通信,可以欺騙兩方,都發給你的機器再由你的機器轉發,相當於做中間人,這用ARP加上編程很容易實現。並且現在很多設備支持遠程管理,有很多交換模式可以設置一個口監聽別的口,不過這就要管理權限了。利用這一點,可以將一台計算機的網絡連接設置為接受所有以太網總線上的數據,從而實現嗅探。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM