Netmon 를 사용한 DirectPlay 네트워크 트래픽의 감시
게임의 개발중 (특히 버그를 해석하고 있을 때)에는, Microsoft® DirectPlay® 의 네트워크 트래픽을 감시 하면 도움이 되는 일이 있다. 네트워크 모니터는, 네트워크 트래픽을 분석하기 위한 표준 유틸리티이다. DirectPlay 메시징의 4 개의 구성 요소 (서비스 프로바이더 계층, 트랜스포트 계층, 세션 계층, 및 음성 계층)를 분석하기 (위해)때문에, DirectPlay 에는네트워크 모니터를 사용한 일련의 파서가 준비되어 있다.
네트워크 모니터와 DirectPlay 의 연동
DirectPlay 의 프로토콜 스택에는, 3 개의 기본 계층이 있다.
- 음성 계층과 세션 계층은, 스택의 최상정도 레벨을 공유한다. 보통의 메시징은 세션 계층을 대로, 음성 관련의 메시징은 음성 계층을 통과한다.
- 트랜스포트 계층은, 스택의 중위에 있다. 음성과 세션의 트래픽은, 어느쪽이나 이 계층을 통과한다. 메시지의 분할과 복구성이나, 손실한 패킷의 재전송등의 작업은, 이 계층이 담당한다.
- 서비스 프로바이더 계층은, 스택의 맨 밑에 있다. 모든 메시징은 이 계층으로 처리된다. 네트워크와의 통신은, 이 계층이 담당한다. 예를 들어, TCP/IP (Transmission Control Protocol/Internet Protocol) 네트워킹의 경우, 서비스 프로바이더는 Winsock API (Windows Sockets 애플리케이션 프로그래밍 인터페이스)를 사용해 네트워크 탁과 통신을 실시한다. 네트워크 모니터는, IP (Internet Protocol) 서비스 프로바이더 또는 IPX (Internetwork Packet Exchange) 서비스 프로바이더가 전송 하는 네트워크 트래픽만을 해석할 수 있다.
DirectPlay 파서를 인스톨 하면,네트워크 모니터를 사용해, 이것들 4 개의 계층의 어느쪽이든을 통과하는 네트워크 트래픽을 분석할 수 있다. 서비스 프로바이더 파서를 선택 하면, DirectPlay 의 전트래픽을 표시할 수 있다. 또, 상위 레벨의 파서의 어느쪽이든을 선택하면, 흥미가 없는 트래픽을 제외할 수가 있다.
트랜스포트 계층 파서를 사용하면 음성과 세션의 전트래픽이 표시되어 접속을 위한 핸드쉐이크라고 하는 하위 레벨의 트래픽은 제외된다. 트랜스포트 계층에서는, MTU (Maximum Transmission Unit)보다 긴 메시지가 1 개 이상의 단편에 분해되므로, 주의 해야 한다.
세션 계층 파서와 음성 계층 파서를 사용하면 세션 관련의 트래픽과 음성 관련의 트래픽을 따로 따로 분석할 수 있다. 이러한 파서는, 어느쪽이나 분할을 검출해, 사용자에 알리게 되어 있지만, 분할한 패킷을 분석할 수 없다.
DirectPlay 향해 네트워크 모니터의 구성
Windows 2000 Server 시스템을 사용하고 있는 경우,네트워크 모니터는 이미 인스톨 되고 있다. Windows 2000 Professional 의 경우는, SMS (Systems Management Server)를 구입할 필요가 있다. 네트워크 모니터의 기본적인 사용법에 대해서는, 「네트워크 모니터 2.0 에 대하며」를 참조할것.
DirectPlay 트래픽을네트워크 모니터를 해석할 수 있도록(듯이) 하려면 , 다음의 순서를 실행한다.
- (SDK 루트) \bin\DXUtils 로부터 적절한 폴더에 Dp8parse.dll 를 복사 한다. 네트워크 모니터의 루트 폴더는, 보통, \Winnt\System32 폴더에 인스톨 된다. SMS 가 인스톨 되고 있는 경우, 루트 폴더명은 NetMonFull 가 된다. Windows 2000 Server 의 경우, 루트 폴더명은 NetMon 가 된다. 파서 DLL (동적 링크 라이브러리)를 ...\NetMonFull\Parsers 또는 ...\NetMon\parsers 에 복사 한다. 복사처는, 사용하고 있는네트워크 모니터의 버전에 의존한다.
- 네트워크 모니터를 기동한다.
- (Capture, Networks, Local Computer)(으)로부터 캡춰 하도록(듯이) 어댑터를 설정한다. 이 때,[다이얼 업 접속] 프로퍼티가 오프로 설정된 어댑터를 선택하도록(듯이) 주의한다.
이것으로, 트래픽의 캡춰를 시작 할 수 있다.
DirectPlay 네트워크 트래픽의 캡춰
캡춰 처리를 시작 하려면 ,[Microsoft 네트워크 모니터] 툴바의 [캡춰의 시작] 버튼을 클릭해, 캡춰 표시를 연다. 처음은, 대상의 어댑터를 통과하는 트래픽이 모두 표시된다. 이 생의 트래픽 스트림은, 흥미가 있는 일정한 패킷인 만큼 좁힐 수가 있다. DirectPlay® 의 파서를 인스톨 하면, 기본적으로, DirectPlay 지향의 4 개의 필터가네트워크 모니터에 추가된다. 이러한 필터를 사용하면 캡춰 표시로부터 DirectPlay 이외의 모든 트래픽을 제외할 수 있다.
필터를 선택하려면 다음의 순서를 실행한다.
- [Microsoft 네트워크 모니터] 툴바의 [캡춰 필터의 편집] 을 클릭한다.
- [Protocol == Any] 를 더블 클릭 한다.
- [모두 무효] 를 클릭한다.
- [무효인 프로토콜] 의 [DPLAYSESSION],[DPLAYSP],[DPLAYTRANSPORT], 및 [DPLAYVOICE] 를 더블 클릭 한다.
[OK] 를 2 회 클릭해 캡춰 표시하러 돌아온다. 이것으로, DirectPlay 트래픽의 표시를 시작 할 수 있다.
캡춰 표시가 아니고, 캡춰 처리 자체에 필터를 적용할 수도 있다. 이렇게 하면 예를 들어, 지정한 포트로부터 지정한 포트에의 IP 패킷만을 캡춰 할 수 있다. 더 자세한 정보는,네트워크 모니터의 메뉴얼을 참조할것.
DirectPlay 로 네트워크 모니터를 사용하기 위한 힌트
여기에서는, DirectPlay 로네트워크 모니터를 사용하기 위한 힌트를 몇개인가 소개한다.
- 디폴트에서는, 최신의 트래픽 1 MB 만이 캡춰 되게 되어 있다. 이 값은, 필요에 따라서 10 ~ 20 MB 정도로 늘리는 것이 좋은 경우가 있다.
- 하드 드라이브에의 스트림은 행해지지 않기 때문에, 확인할 수 있는 트래픽은 현재 캡춰 버퍼내에 있는 내용에 한정된다. 캡춰 끝난 트래픽을 하드 드라이브에 스트림 하려면 , 독자적인 캡춰 처리를 처리 할 필요가 있다. 더 자세한 정보는, MSDN® 를 참조할것.
- 디폴트에서는, DirectPlay 의 파서는,[2302,2400]U{6073} 포트/소켓 범위를 사용해, IP 및 IPX 패킷을 필터링 하게 되어 있다. 디폴트 이외의 DirectPlay 포트를 해석하려면 ,HKEY_CURRENT_USER\Software\Microsoft\DirectPlay\Parsers 키아래에 다음의 예에 나타내는 2 개의 DWORD 값을 신규에 생성 한다.
MinUserPort = x
MaxUserPort = y
x 와 y 의 데이터값을 지정하는 것으로, 해석의 범위가 디폴트의 DirectPlay 포트에 추가된다. 새롭게 해석하는 포트가 1 개만의 경우는, x 와 y 를 같은 값으로 한다.
- DirectPlay 파서는, 부호 첨부와 부호 없음의 양쪽 모두의 트래픽을 지원 한다. 디폴트에서는, 패킷이 부호없이 있다고 하는 전제로 파서가 실행된다. 부호 첨부 패킷의 감시를 유효하게 하려면 ,HKEY_CURRENT_USER\Software\Microsoft\DirectPlay\Parsers 키아래의 DWORD 값을 다음과 같이 설정한다.
AssumeSigned = 1
- DirectPlay 프로토콜과 RTP (Realtime Transport Protocol) 프로토콜은, 어느쪽이나 UDP (User Datagram Protocol) 프로토콜의 상위 계층이기 (위해)때문에, 양자의 파서가 경합 할 가능성이 있다. 따라서, DirectPlay 트래픽을 분석할 때는 RTP 파서를 무효로 해, RTP 트래픽을 분석할 때는 DirectPlay 파서를 무효로 해야 한다.