¡¾¹Ø¼ü´Ê¡¿ÍøÂç·Ö²ã WinDis32¼¼Êõ ÍøÂçÐÅÏ¢½Ø»ñ Êý¾ÝÖ¡ NDISÍøÂçÊÊÅäÆ÷
¡¡
1£®Ç°ÑÔ
Ëæ×Å ¼ÆËã »úÍøÂç¼¼ÊõµÄ ·¢Õ¹ £¬¸÷ÀàÍøÂç¹æÄ£µÄÀ©´ó£¬Ô¶³Ì·ÃÎʵÄÔö¼Ó£¬ÐéÄâרÓÃÍø£¨VPN£©µÄ³öÏÖºÍInternetµÄÆÕ¼°£¬ÍøÂ簲ȫÐÔÒѳÉΪ¼ÆËã»úÍøÂçÁìÓòÒ»ÃÅÖØÒªµÄ Ñо¿ ѧ¿Æ¡£
ÍøÂç¼à¿ØÊDZ£ÕÏÍøÂ簲ȫÐԵĻù±¾´ëʩ֮һ¡£ÍøÂç¼à¿Ø£¬ÓÃÓÚ¼à²âÍøÉÏÁ÷¶¯ÐÅÏ¢£¬²¢¶ÔÍøÂçÐÅÏ¢¸øÓèÊʵ±¿ØÖÆ¡£ÍøÂç¼à¿Ø£¬¿ÉÓÃÓÚµ÷ÊÔÍøÂçÓ¦ÓóÌÐò£¬ÅжÏÓ¦ÓóÌÐòÊÇ·ñÕýÈ·µØ·¢ËÍ»ò½ÓÊÕÁËÊý¾Ý°ü¡£ÍøÂç¼à¿Ø£¬»¹¿ÉÓÃÓÚ¼àÊÓÍøÂçÐÅÏ¢£¬¶Å¾ø²»½¡¿µÕ¾µãµÄ²»½¡¿µ ÄÚÈÝ £¬Î¬»¤ÍøÂç»·¾³¡£Ó¦ÓÃÓÚ°²È«·À·¶£¬¿É¼àÊÓÎÒ·½ÐÅÏ¢ÄÚÈÝ¡¢±£ÕÏÍøÂ簲ȫ£¬½Ø»ñÇ鱨¡¢·ÖÎö»³ÓеÐÒâ·½µÄÍøÕ¾¡£ÔÚ¼ÆËã»úÍøÂçÉÏʵʩÓÐЧµÄ¹¥»÷Óë±£»¤£¬ÊÇÍøÂç¼à¿Ø¼¼ÊõÔÚ¾üÊÂÉϵÄÖØÒª·¢Õ¹·½ÏòÖ®Ò»¡£
±¾ÎÄÂÛÊöµÄÍøÂçͨÐÅʵʱ¼à²âµÄʵÏÖ£¬ÊÇÓÃÓÚÌØÊâÄ¿µÄµÄÊý¾ÝͨÐųÌÐòÉè¼ÆµÄÍ»ÆÆ¿Ú£¬ÊÇÍøÂç¼à¿Ø¼¼ÊõµÄ»ù´¡²¿·Ö£¬ÆäʵÏÖ»ùÓÚÍøÂçÌåϵ½á¹¹ÓëWinDis32¼¼Êõ¡£
2£®ÍøÂçÌåϵ½á¹¹
ÏÖ´ú ¼ÆËã»úÍøÂçÉè¼ÆÊǰ´¸ß¶ÈµÄ½á¹¹»¯·½Ê½½øÐе쬹ú¼Ê±ê×¼»¯×éÖ¯£¨ISO£©Îª¸ü¹ã·ºµÄ¼ÆËã»ú»¥ÁªÖƶ¨Á˱ê×¼»¯µÄ¿ª·Åϵͳ»¥Áª£¨OSI£©ÍøÂçÌåϵ½á¹¹£¬Èçͼ1Ëùʾ¡£
OSI ²Î¿¼ Ä£ÐÍÓýṹÃèÊö ·½·¨ £¬¼´·Ö²ãÃèÊöµÄ·½·¨£¬½«Õû¸öÍøÂçµÄͨÐŹ¦ÄÜ»®·ÖΪÆß¸ö²¿·Ö£¨Ò²½ÐÆß¸ö²ã´Î£©£¬Ã¿²ã¸÷×ÔÍê³ÉÒ»¶¨µÄ¹¦ÄÜ¡£ÓɵͲãÖÁ¸ß²ã·Ö±ð³ÆÎªÎïÀí²ã¡¢Êý¾ÝÁ´Â·²ã¡¢ÍøÂç²ã¡¢´«Êä²ã¡¢»á»°²ã¡¢±íʾ²ãºÍÓ¦Óò㡣Á½Ì¨ÍøÂçÖ÷»úÖ®¼ä½øÐÐͨÐÅʱ£¬·¢ËÍ·½½«Êý¾Ý´ÓÓ¦ÓòãÏòÏ´«µÝµ½ÎïÀí²ã£¬Ã¿Ò»²ãÐÒéÄ£¿éΪÏÂÒ»²ã½øÐÐÊý¾Ý·â×°£¬Êý¾ÝÁ÷¾ÍøÂ磬µ½´ï½ÓÊÕ·½£¬½Ó×ÅÔÙÓÉ϶øÉÏͨ¹ýÐÒéÕ»´«µÝ£¬²¢Óë½ÓÊÕ·½Ó¦ÓóÌÐò½øÐÐͨÐÅ¡£
ÔÚͨÓÃÍøÂçÖУ¬Êý¾ÝÁ´Â·²ãÓÉÍøÂçÊÊÅäÆ÷ʵÏÖ£¬±¾ÎÄÖÐÍøÂçͨÐżà²âµÄÁ¢×ãµãÔÚÓÚÊý¾ÝÁ´Â·²ã£¬»ùÓÚµçÀÂÊǹÌÓеĹ㲥ÐÔ½éÖÊ£¬Í¨¹ý¶ÔÍøÂçÊÊÅäÆ÷µÄ¿ØÖÆ£¬ÊµÊ±½Ø»ñÓë·ÖÎö¾¹ýÍøÂçÊÊÅäÆ÷µÄËùÓÐÍøÉÏÁ÷¶¯ÐÅÏ¢¡£
3£®WinDis32¼¼Êõ
WinDis32È«³ÆÎªWin32 NDIS£¨Network Driver Interface Specification£©ÍøÂçÇý¶¯½Ó¿Ú¹æ·¶£¬ÓÃÓÚ¿ª·¢Windows²úÆ·£¬¿ÉÔÚWindows 9XºÍWindows NTÉÏÖ±½Ó·ÃÎÊNDISýÌå·ÃÎÊ¿ØÖÆ£¨MAC£©Çý¶¯½Ó¿Ú¡£Í¼2ÏÔʾÁËWindowsÍøÂçÇý¶¯×é¼þÓëWin32 NDIS½á¹¹×é¼þ£º
ͼ2£®WindowsÍøÂçÇý¶¯×é¼þÓëWin32 NDIS½á¹¹×é¼þ
WinDis32ÍøÂç×é¼þÓÉËIJ¿·Ö×é³É£ºNDISÊÊÅäÆ÷¡¢PCANDIS5 NDISÐÒéÇý¶¯¡¢W32N50 WinDis32 API DLL¡¢WinDis32Ó¦ÓóÌÐò¡£WinDis32Ó¦ÓóÌÐòµ÷ÓÃW32N50.DLL¶¯Ì¬Á´½Ó¿âÌṩµÄAPIÓ¦ÓóÌÐò½Ó¿Ú£¬Í¨¹ýNDISÐÒéÇý¶¯Ä£¿é£¬ÊµÏÖ¶ÔNDISÊÊÅäÆ÷½øÐеĴæÈ¡²Ù×÷¡£ÍøÂçÇý¶¯½Ó¿Ú¹æ·¶NDISµÄÖ÷ÒªÌØÕ÷ÊÇËùÓÐÊÊÅäÆ÷Ïà¹ØÇý¶¯¾ùÓÉNDIS½Ó¿Ú´ò°ü£¬ÀýÈ磬×îµ×²ãNDIS NICÇý¶¯²»ÄܶÔÍø¿¨Ö±½ÓÖ´ÐÐI/O£¬Ëüͨ¹ýNDIS´ò°ü·þÎñÀ´·ÃÎÊÓ²¼þ£»¸ß²ãWindows NDISÍøÂç×é¼þʹÓÃNDIS´ò°ü½çÃæÓëÊÊÅäÆ÷Ïà¹ØÇý¶¯Í¨ÐÅ¡£Ö»ÓÐNDISÐÒéÇý¶¯¿ÉÒÔµ÷ÓÃNDIS´ò°ü£¬·ÃÎÊNDISÊÊÅäÆ÷¡£
WinDis32Ó¦ÓóÌÐò½Ó¿Úº¯Êý°üÀ¨£ºW32N_OpenAdapter()£¬´ò¿ªÒ»¸öÒѱ»ÃüÃûµÄNDISÊÊÅäÇý¶¯Æ÷£¬Èô²Ù×÷³É¹¦£¬ÔòÉú³ÉÒ»¸öÃæÏòÊÊÅäÆ÷¶ÔÏóµÄWinDis32ÊÊÅäÆ÷¾ä±ú£¬ÕâÒ»¾ä±ú±»Ëæºó¶à¸öÔÚ¸ÃÊÊÅäÆ÷ÉϲÙ×÷µÄW32N_XXXº¯ÊýËùÓã» W32N_CloseAdapter()£¬¹Ø±ÕÒÑ´ò¿ªµÄÊÊÅäÆ÷¾ä±ú£»W32N_PacketRead()£¬Êý¾ÝÖ¡¶Á²Ù×÷£»W32N_PacketReadEx()£¬Êý¾ÝÖ¡Òì²½¶Á²Ù×÷£»W32N_PacketSend()£¬·¢ËÍÊý¾ÝÖ¡²Ù×÷£»W32N_PacketSendEx()¡¢W32N_MakeNdisRequest()µÈµÈ¡£
WinDis32¼¼ÊõʹµÃ´ÓWin32Ó¦ÓÃ²ã½øÐÐNDISÇëÇóÈçͬÔÚÒ»¸öÄÚºËģʽµÄÇý¶¯Æ÷ÄÚ²¿½øÐÐÇëÇóÒ»Ñù¼òµ¥£¬²¢Ö§³Ö¶à¸öÍøÂçÊÊÅäÆ÷ͬʱ´ò¿ª£¬Íê³É¸÷×ÔµÄÐÅÏ¢·¢ËÍÓë½ÓÊÕ¡£