Linux netstat는 보내기 및 받기 큐 크기를 보여줍니다.
Windows, 특히 Server 2003에서이 정보를 얻으려면 어떻게해야합니까?
Linux netstat는 보내기 및 받기 큐 크기를 보여줍니다.
Windows, 특히 Server 2003에서이 정보를 얻으려면 어떻게해야합니까?
답변:
(이것은 약간의 뇌 덤프입니다)
netstat 소스의 두 가지 버전을 살펴보면 찾고있는 정보가 Windows와 동등한 소켓 관련 호출이 아닌 커널 (/ proc / net / ...)에서 직접 쿼리되는 것처럼 보입니다. 이것이 실제로 있다고 결정되면 netstat에서 어떻게 검색되는지 살펴보고 동등한 것을 제공하는 것을 볼 수 있습니다.
드라이버 수준 정보 는 ndis.com (Network Driver Interface Specification) 및 PCAUSA.com 을 참조하십시오. Windows에서이 정보를 검색하기에 가장 좋은 장소 일 수 있습니다.
getsockopt () 또는 대부분의 Winsock 아레나가 유용하다고 생각하지는 않지만 그 방향으로 가고 싶다면 MSDN Winsock 정보를보고 Winsock Programmer 's FAQ를 확인하십시오 .
인바운드의 경우 소켓에 대해 읽을 수있는 데이터의 양을 얻기 위해 FIONREAD를 사용하여 ioctlsocket () 함수에서 유용한 정보를 얻을 수 있습니다. 여러 프로세스에서이를 얻지 못할 수 있으며 데이터 유형에 따라 큐에 대기중인 항목이 두 개 이상인 경우 전체 큐가 아닌 첫 번째 데이터 블록에 대한 정보 만 반환 할 수 있습니다.
이 맥락에서 "백 로그"를 파헤칠 수도 있지만 실제로 본 SYN 플러드를 처리하기 위해 최대 크기를 설정하는 것과 실제로 실제 백 로그의 크기가 얼마나 큰지 알지 못하는 것으로 보였습니다.
당신이 정말로 결정된다면, 당신은 당신의 자신의 Layered Service Provider로 무언가를 할 수있을 것입니다.
업데이트 : 조금 더 파고 든 후에 NDIS OID를 쿼리해야한다고 생각합니다. 귀하와 가장 관련이있는 정보를 찾는 것은 귀하와 MSDN 및 TechNet 간의 연습으로 남습니다.
이 질문은 오래되었지만 정보를 추가하고 싶었습니다. Google의 검색 결과는 상당히 높습니다.
내가 알 수있는 한,이 작업을 수행 할 수있는 방법은 없지만 누군가가 더 많은 발굴을하고 유효한 대안을 찾아 낼 수 있다면 대단히 감사하겠습니다!
@Fencepost가 그의 답변에서 지적했듯이 NDIS OID를 쿼리 할 수 있습니다. 내가 찾은 가장 관련성이 높은 NDIS OID는 OID_GEN_TRANSMIT_QUEUE_LENGTH입니다.
대부분의 NDIS OID는 WMI 클래스에 매핑됩니다.
Get-WmiObject -Namespace root\wmi -List | Where-Object {$_.name -Match "MSNdis" } | Sort-Object
그러나 전송 큐 길이에 대한 것으로 보이지 않습니다.
@Chris J는 Network Interface \ Output Queue Length를 언급했습니다. typeperf 명령 행에서이 값을 얻을 수 있습니다 .
typeperf "\Network Interface(*)\Output Queue Length" -sc 1
그러나 값은 항상 0입니다. http://support.microsoft.com/kb/822226
Windows는 NIC 드라이버 소프트웨어에서만이 정보를 추적하며 NIC 당 대기열에있는 패킷 일 뿐이며 소켓 당 대기열에있는 내용을 구분하지 않습니다.
명령 행에서 네트워크 디버깅을 수행하려면 typeperf 또는 logman을 사용하여 perfmon 에서 찾은 모든 카운터를 조회 할 수 있습니다 .
원하는 것은 WinSock API 함수 호출의 결과 일 수 있습니다 getsockopt
.
SO_RCVBUF
수신을 위해 예약 된 총 소켓 별 버퍼 공간. 이것은 SO_MAX_MSG_SIZE
TCP 수신 창의 크기와 관련 이 없으며 반드시 그런 것은 아닙니다.
SO_SNDBUF
송 신용으로 예약 된 총 소켓 당 버퍼 공간. 이것은 SO_MAX_MSG_SIZE
TCP 전송 창의 크기와 관련 이 없으며 반드시 그런 것은 아닙니다.
문제는 핸들을 알고있는 소켓을 요청할 수 있다는 것입니다. 외부에서 쿼리하는 것은 어려운 것 같습니다 . sysinternals TcpView 도구를 살펴보십시오 . Mark Russinovich는 실제로 균열이며 심지어 도구에 정보를 제공하지 않습니다. 나는 그가 값을 쉽게 얻을 수있는 수단이 있다면 열을 추가했을 것이라고 확신합니다 ...
일부 커널 드라이버가 시스템으로 드릴 다운하는 데 도움이 될 수 있지만 사용 가능한 도구를 찾지 못했습니다. 전역 값이 의미가 없도록 소켓 단위로 크기를 설정할 수 있습니다 ...
: 여기 찾아 보게 http://support.microsoft.com/kb/224829를 .