Windows 實現的 OSI 七層模型結構圖

來源:互聯網
上載者:User

標籤:osi   網路架構   ndis   協議驅動   小連接埠驅動   

        對網路編程感興趣的朋友可能都聽過 OSI 七層模型,下面一張便是在 Windows 下實現的整個協議的結構圖。

                 Windows 下的 OSI 七層模型的實現結構                  +-------------------------------+                  |           Ws2_32.dll          |                  +-------------------------------+ UserMode                   |           |                  +-------------------------------+                  |           msafd.dll           |                  +-------------------------------+                          |   System Call  |                          | File Operation |----------------------------------------------------------------------                          |                |                  +-------------------------------+                  |           afd.sys             |                  |         \Device\Afd           |                  +-------------------------------+ Kernel Mode              | File Operation |                          |      IRP       |              +----------------------------------------+              |                tcpip.sys               |       ( Tdi layer )                --- 傳輸層              | \Device\Tcp \Device\Udp \Device\RawIp  |       ( Ndis Protocol )            --- 網路層              +----------------------------------------+                          |   Ndis lib     |                          |                |                  +-------------------------------+                  |           k57xp32.sys         |            ( Miniport )                 --- 鏈路層                  +-------------------------------+                  |       Net Interface Card      |                                         --- 物理層                  +-------------------------------+

        簡單來講, Windows 對網路部分的實現分為兩部分,使用者態部分和核心態部分。使用者態部分為標準的 socket 調用,一般情況下可以認為有 ws2_32.dll 和 msafd.dll 組成,msafd.dll 為一個服務提供者,主要完成 socket 使用者層的代碼實現, 在核心態 socket 的實現由 afd.sys 實現,它主要建立裝置 \Device\Afd 來與 msafd.dll 進行互動,完成

socket 的建立等其它操作。

        tcp/ip 協議的傳輸層和網路層實現是在 tcpip.sys 裡完成的,它主要完成兩部分工作,傳輸層實現和網路層實現,在傳輸層部分完成 TCP, UDP, RawIp 的綁定,串連等功能,主要服務於 afd.sys 發下來的 TDI 命令,然後進入到網路層,來完成路由以及 IP 包的構成,網路層部分相當於一個 Ndis 協議驅動,一般來講它會綁定所有的網卡來監聽和發送 IP 包。

        鏈路層在筆者的電腦上是由 k57xp32.sys 驅動完成,不同的網卡此驅動可能不同,它相當於一個 Ndis Miniport 驅動,和 Ndis 協議驅動一樣,都是運行在 Ndis 庫營造的一個運行環境中,主要完成例如以內網資料包的構成,操作網卡發送資料包,以及註冊中斷接收資料包以及其它資訊的工作。

        物理層,當然由網卡硬體來實現。

        有了上面清晰的結構之後,我們要開發一些業務就會非常明白的知道它工作在哪裡,比如 TDI 防火牆,就可以直接附加到 tcpip.sys 建立的幾個命名裝置對象上面,就可以監聽到 afd.sys 發下來的 TDI 命令,進而可以攔截,一些 socket 建立,綁定,發送和接收的命令,從而完成防火牆的功能。當然,如果別人直接註冊一個協議驅動,然後直接進行發包,那麼這個防火牆就不能對這樣的操作對待監控,比如直接發 ARP 包到區域網路中,就可以造成攻擊。但是如果你的防火牆工作在鏈表層上面,即註冊一個中介層驅動來完成防火牆的功能,那麼就又可以攔截掉我剛才假設的那種操作,所以如果一個 Ndis 中介層驅動來完成防火牆功能,那麼就可以有更大的監控範圍。再比如,想實現一個虛擬網卡,那麼就可以完成一個 Ndis 小連接埠驅動,來讓其它協議對你進行綁定,一些應用程式就可以直接選擇這張網卡進行資料處理,便可完成一些特殊工作了。

        總之,有多靈活的思路,就可以完成多靈活的功能。

Windows 實現的 OSI 七層模型結構圖

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.