`
yexin218
  • 浏览: 970769 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

疑问:为何无线网卡无法发送数据?

阅读更多

所有的测试流程表明,程序已经成功的创建新的数据包,然后调用NdisFSendNetBufferLists发送数据。更令人不甚明白的是,在本地的有线网卡上可以成功的发送出去到目的地,就是单纯无线网卡没有按照约定发送数据,所以一个可以怀疑的理由就是我们的约定出错了。调试显示所有的步骤都跟有线的一样,没有什么出路。一直觉得不可思议。

VOID
  NdisFSendNetBufferLists(
    IN NDIS_HANDLE  NdisFilterHandle,
    IN PNET_BUFFER_LIST  NetBufferLists,
    IN NDIS_PORT_NUMBER  PortNumber,
    IN ULONG  SendFlags
    ); 

 但是回到家里仔细看看了函数的其中一个参数 portNumber.这里的默认值是0.然后问题可能出在这里:

1. 如果你只有一张网卡激活使用,通常情况下,这种网卡的port number 就是0.这也就是解释为什么如果只有一张有线网卡,可以正常发送数据,或者是在两张网卡的情况下,本来两种都要发送数据的,结果却捕捉到一个数据。

2. 曾记得上次在创建一个新的Mac Entity的时候,申请的端口已经是1了。所以我怀疑如果一台机器如果有两张网卡同时使用,那么是不是每一张使用的Ndis prot number 不是一样的,其中一张自然是0,那么另外一张就可能是1了。

如果不小心设置了第二张网卡来发送数据,可是prot number填充的是0,估计就有问题了。我现在对Ndis Port不是很明白里面的架构:是每张网卡对应一个miniprot driver?然后各自激活port,还是每台机器就一个整体miniprot driver,共同分配port number,如果是第二种情况,那么我担忧的就不是多余的了。

改天抽空验证:方法应该是调用OID_GEN_ENUMERATE_PORTS 

As a query, NDIS and overlying drivers use the OID_GEN_ENUMERATE_PORTS OID to determine the characteristics of the active NDIS ports that are associated with an underlying miniport adapter.

返回的结果保存在一个NDIS_PORT_ARRAY结构中

typedef struct _NDIS_PORT_ARRAY {
  NDIS_OBJECT_HEADER  Header;
  ULONG  NumberOfPorts;
  ULONG  OffsetFirstPort;
  ULONG  ElementSize;
  NDIS_PORT_CHARACTERISTICS  Ports[1];
} NDIS_PORT_ARRAY, *PNDIS_PORT_ARRAY;

 NumberOfPorts记录的是port 的个数。

typedef struct _NDIS_PORT_CHARACTERISTICS {
  NDIS_OBJECT_HEADER  Header;
  NDIS_PORT_NUMBER  PortNumber;
...
}

 这个数据结构中的ProtNumber表示的就是Port的数值了,默认是0,最大为0xFFFFFF.

================================================================================

刚才测试了,发现应该不是端口的问题,反而有可能是数据包的格式有问题。老师说Native Wifi的数据包格式会与802.3不一样。所以估计要重新设计那个Ethernet Header的格式??

===============================================================================

我问了有些人,他们说值一样的。所以我继续做了测试,那么接下来的怀疑就落在了内容得填充上了。是否无线网卡的mac地址如果不是对应本张网卡就发送不了呢? 有线的以太网卡是可以冒填的。所以我重新认真填写了一遍mac源地址。这下子就OK了。

写道
1475 1291.155273 [002586 EB7B0C] [USI 5B1430] EAPOL EAPOL:EAPOL-Start , Length = 515

 具体的信息为:

  Frame: Number = 1475, Captured Frame Length = 130, MediaType = WiFi
- WiFi: [Unencrypted Data] .T...., (I)
  - MetaData:
     Version: 2 (0x2)
     Length: 32 (0x20)
   - OpMode: Extensible Station Mode
      StationMode:           (...............................0) Not Station Mode
      APMode:                (..............................0.) Not AP Mode
      ExtensibleStationMode: (.............................1..) Extensible Station Mode
      Unused:                (.0000000000000000000000000000...)
      MonitorMode:           (0...............................) Monitor Mode
     Flags: 4294967295 (0xFFFFFFFF)
     RemData: Outbound
     TimeStamp: 03/31/2010, 09:47:58 AM
  - FrameControl: .T.... (0x0801)
     Version:        (..............00) 0
     Type:           (............10..) Data
     SubType:        (........0000....) Data
     DS:             (......01........) STA to DS via AP
     MoreFrag:       (.....0..........) No
     Retransmission: (....0...........) No
     PowerMgt:       (...0............) Active Mode
     MoreData:       (..0.............) No
     Encrypted:      (.0..............) No
     Order:          (0...............) Unordered
  - Data:
     Duration: 32768 (0x8000)
   - ClientToAP:
      BSSID: Cisco Systems, Inc. 549143
      Source: 002586 EB7B0C
      Destination: USI 5B1430
    - SequenceControl: Sequence Number = 0
       FragmentNumber: (............0000) 0
       SequenceNumber: (000000000000....) 0
- LLC: Unnumbered(U) Frame, Command Frame, SSAP = SNAP(Sub-Network Access Protocol), DSAP = SNAP(Sub-Network Access Protocol)
  - DSAP: SNAP(Sub-Network Access Protocol), Individual DSAP
     Address: (1010101.) SNAP(Sub-Network Access Protocol)
     IG:      (.......0) Individual Address
  - SSAP: SNAP(Sub-Network Access Protocol), Command
     Address: (1010101.) SNAP(Sub-Network Access Protocol)
     CR:      (.......0) Command Frame
  - Unnumbered: UI - Unnumbered Information
     MMM:  (000.....) 0
     PF:   (...0....) Poll Bit - No Response Solicited
     MM:   (....00..)
     Type: (......11) Unnumbered(U) Frame
- Snap: EtherType = EAPOL/802.1x, OrgCode = XEROX CORPORATION
    OrganizationCode: XEROX CORPORATION, 0(0x0000)
    EtherType: EAPOL/802.1x, 34958(0x888E)
- Eapol: EAPOL-Start , Length = 515
    Version: 0 (0x0)
    Type: EAPOL-Start, 1(0x01)
    BodyLength: 515 bytes
    EAPOLTypeError: EAPOL Type Error
- remainder: Length = 62
    Data: Binary Large Object (62 Bytes)

---------注意 [USI 5B1430]很奇怪,本來一連串的mac地址前面變成了USI字母,我以為那裡出錯了。一查才知道這種網卡芯片應該是USI公司的產品,即每個生成廠商都會以某個地址段為標誌。具体那些MAC地址分配给哪些厂商,可在 IEEE Standards Association的查询网址内查询得知。
http://standards.ieee.org/regauth/oui/index.shtml

分享到:
评论

相关推荐

    无线网卡配置无线网卡配置

    无线网卡配置 在 Linux 命令行界面中,手动配置无线网卡需要使用 iwconfig 和 ifconfig 等命令。下面详细介绍配置无线网卡的步骤和相关知识点: 1. 无线网卡驱动安装和识别:在开始配置无线网卡之前,需要确保无线...

    无线网卡的驱动32位的

    无线网卡驱动32位无线网卡驱动32位无线网卡驱动32位无线网卡驱动32位无线网卡驱动32位无线网卡驱动32位无线网卡驱动32位无线网卡驱动32位无线网卡驱动32位无线网卡驱动32位无线网卡驱动32位无线网卡驱动32位无线网卡...

    无线网卡分类以及USB无线网卡的选择分析

    本文将深入探讨无线网卡的分类,特别聚焦于USB无线网卡的选择分析,旨在为用户提供全面的指导,帮助其在众多产品中做出明智决策。 ### 无线网卡的分类 无线网卡主要依据接口类型进行分类,常见的有PCI、USB、...

    ( acer 4743g无线网卡驱动

    acer 4743G是一款由宏碁公司推出的笔记本电脑型号,其硬件配置包括了无线网卡,以便用户能够通过Wi-Fi连接到互联网。在使用过程中,有时可能需要更新或重新安装无线网卡驱动程序以解决网络连接问题或者提升设备性能...

    笔记本无线网卡共享

    在这种情况下,无线网卡共享就是无线共享的一种形式,通过无线信号传输网络连接,方便多设备间的数据传输和共享网络接入。 文件名WLAN_Intel_(Condor Peak)_12.5.0.57_XPx86x64暗示这可能是一款适用于Intel无线网卡...

    无线网卡的驱动开发数据包

    无线网卡驱动开发是计算机硬件与软件交互的关键环节,它使得操作系统能够识别并控制无线网卡,进而实现网络连接。这个“无线网卡的驱动开发数据包”包含了开发者需要了解和掌握的重要信息,可能是源代码、文档、示例...

    150mbps开博尔无线网卡驱动包

    开博尔150Mbps无线网卡驱动程序是专为开博尔品牌的一款150兆比特每秒(Mbps)无线网卡设计的驱动软件。这个驱动包是确保该无线网卡能正常运行并实现最佳网络性能的关键。下面将详细阐述无线网卡、驱动程序以及如何...

    水星无线网卡驱动光盘

    无线网卡驱动程序则是专门针对无线网卡设备的驱动,它告诉操作系统如何与特定型号的无线网卡通信,实现数据的接收和发送。无线网卡驱动通常包含以下功能: 1. **初始化和配置**:驱动程序在设备启动时初始化硬件,...

    8822ce无线网卡驱动

    标题“8822ce无线网卡驱动”指的是为8822CE型号的无线网卡提供的驱动程序。无线网卡是一种硬件设备,允许计算机在没有有线连接的情况下通过WiFi接入互联网。8822CE是一款常见的USB接口无线网卡,广泛应用于台式机和...

    Win8系统下无线网卡

    - 部分无线网卡,如TL-WN821N1.0/2.0、TL-WN822N1.0等,因暂时缺乏Win8系统驱动,可能无法在Win8环境下正常运行。 - 在手动安装驱动程序时,应确保从官方网站或可靠来源下载,避免潜在的安全风险。 - 驱动程序版本应...

    无线网卡电路图

    无线网卡的工作原理涉及射频信号的发送与接收。当设备通过无线网卡连接到互联网时,数据包会被编码成射频信号并通过天线发射出去;同样地,接收到的射频信号会被解码为数据包并传递给设备处理。这一过程涉及到的关键...

    开博尔150M无线网卡驱动老固件

    1. **无线网卡驱动的作用**:无线网卡驱动程序是操作系统和硬件之间的桥梁,它解释来自操作系统的指令,并将其转化为硬件设备能理解的语言。在开博尔150M无线网卡的情况下,驱动程序负责处理网络连接相关的任务,如...

    联想工程师专用小工具 无线网卡开关切换工具V3.10.1

    联想工程师专用小工具 无线网卡开关切换工具V3.10.1联想工程师专用小工具 无线网卡开关切换工具V3.10.1联想工程师专用小工具 无线网卡开关切换工具V3.10.1联想工程师专用小工具 无线网卡开关切换工具V3.10.1联想...

    bPlus条码秤无线网卡配置图文说明

    1. 等待 bPlus 条码秤开机 1 分钟后,再开始操作,提前操作将无法进入无线设置菜单,因为无线网卡启动时间大约 50 秒。 2. 秤上按【菜单 246813 确认 252 确认】进入无线网卡设置选项,秤上显示如下: 中文显示屏 ...

    万能无线网卡驱动

    没有合适的驱动,无线网卡无法正常工作,可能表现为无法识别网络信号、连接不稳定或者完全无法连接。因此,拥有一个全面且易用的驱动集合显得至关重要。 "万能无线网卡驱动"的特点在于其“万能”二字,它涵盖了多种...

    区分网卡 有线网卡,无线网卡,虚拟网卡

    本文将深入探讨三种主要类型的网卡:有线网卡、无线网卡和虚拟网卡,以及它们各自的特点和应用场景。 有线网卡,也称为以太网卡,是最早被广泛使用的网卡类型。它通过物理的以太网电缆(如RJ-45接口)与局域网(LAN...

    TP-LINK无线网卡驱动

    1. 设备驱动:这是核心部分,包含了与硬件交互的代码,使得操作系统可以管理无线网卡的发送和接收数据、设置无线网络参数等。 2. 用户界面:一些驱动可能包含图形用户界面,方便用户配置无线网络设置,如SSID选择、...

    mac usb无线网卡

    usb万能无线网卡驱动哦usb万能无线网卡驱动哦usb万能无线网卡驱动哦usb万能无线网卡驱动哦usb万能无线网卡驱动哦usb万能无线网卡驱动哦usb万能无线网卡驱动哦usb万能无线网卡驱动哦usb万能无线网卡驱动哦usb万能无线...

    超级--无线网卡驱动

    无线网卡驱动程序是操作系统与硬件设备(即无线网卡)之间的桥梁,它翻译了操作系统发送的指令,使得无线网卡能够理解并执行这些操作。同样,它也负责将无线网卡接收到的数据转换成操作系统可以处理的形式。没有合适...

    LINUX下安装无线网卡驱动程序

    在Linux环境下安装无线网卡驱动程序是一项常见的任务,尤其对于那些希望在开源操作系统上充分利用其硬件功能的用户而言。本文将深入探讨如何在Linux系统中安装无线网卡驱动,包括必要的准备工作、具体步骤以及可能...

Global site tag (gtag.js) - Google Analytics