의문: 왜 무선 랜 카드 는 데 이 터 를 보 낼 수 없 습 니까?

모든 테스트 프로 세 스 는 프로그램 이 새로운 패 킷 을 성공 적 으로 만 든 다음 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;

 Number of Ports 는 port 의 개 수 를 기록 합 니 다.
typedef struct _NDIS_PORT_CHARACTERISTICS {
  NDIS_OBJECT_HEADER  Header;
  NDIS_PORT_NUMBER  PortNumber;
...
}

 이 데이터 구조 에서 ProtNumber 는 Port 의 수 치 를 표시 합 니 다. 기본 값 은 0 이 고 최대 0xFFFF 입 니 다.
================================================================================
방금 테스트 를 해 보 니 포트 의 문제 가 아 닌 것 같 습 니 다. 오히려 패 킷 의 형식 에 문제 가 있 을 수 있 습 니 다.선생님 은 네 이 티 브 와 이 파이 의 패 킷 형식 이 802.3 과 다 를 것 이 라 고 말씀 하 셨 다.그래서 아마 그 Ethernet Header 의 포맷 을 다시 설계 해 야 할 것 같은 데??
===============================================================================
나 는 어떤 사람들 에 게 물 었 는데, 그들 은 가치 가 같다 고 말 했다.그래서 저 는 테스트 를 계속 했 습 니 다. 그러면 다음 의심 은 내용 을 채 워 야 합 니 다.무선 랜 카드 의 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 5B 1430] 이상 하 다. 원래 일련의 mac 주소 앞 에 USI 자모 가 되 었 는데 나 는 그곳 이 잘못 되 었 다 고 생각한다.조사해 보 니 이런 네트워크 카드 칩 은 USI 회사 의 제품 이 어야 한 다 는 것 을 알 게 되 었 다. 즉, 모든 생 성 업 체 는 특정한 주소 세그먼트 로 표 시 될 것 이다.구체 적 으로 MAC 주 소 는 어떤 업 체 에 배분 되 는 지 IEEE Standards Association 의 조회 사이트 에서 조회 하여 알 수 있 습 니 다.http://standards.ieee.org/regauth/oui/index.shtml

좋은 웹페이지 즐겨찾기