Linux netstat muestra los tamaños de cola de envío y recepción.
¿Cómo obtengo esta información en Windows, específicamente Server 2003?
Linux netstat muestra los tamaños de cola de envío y recepción.
¿Cómo obtengo esta información en Windows, específicamente Server 2003?
Respuestas:
(Esto es un poco un tugurio cerebral)
Al mirar un par de versiones de la fuente netstat, parece que la información que está buscando se consulta directamente desde el núcleo (/ proc / net / ...) no a través de llamadas relacionadas con sockets que tienen equivalentes de Windows. Si realmente está decidido a tener esto, miraría cómo se está recuperando en netstat y veré qué puede encontrar que proporcione algo equivalente.
Probablemente debería buscar en ndis.com (Especificación de interfaz de controlador de red) y PCAUSA.com para obtener información a nivel de controlador, porque es probable que sea el mejor lugar para recuperar esta información en Windows.
No creo que getsockopt () o la mayor parte de la arena de Winsock vaya a llevarte a algún lugar útil, pero si quieres ir en esa dirección, mira la información de MSDN Winsock y también consulta las preguntas frecuentes del programador de Winsock .
Para la entrada, es posible que pueda obtener algo útil de la función ioctlsocket () con FIONREAD para obtener la cantidad de datos legibles para un socket; es posible que no pueda transmitir esto a través de los procesos y, dependiendo del tipo de datos, solo puede devolver información para el primer bloque de datos, no para toda la cola si hay más de un elemento en cola.
Podría investigar un poco sobre la "acumulación" en este contexto, pero la mayor parte de lo que vi parecía estar relacionado con la configuración del tamaño máximo para lidiar con las inundaciones SYN, no realmente para ver qué tan grande era la acumulación real.
Si está realmente decidido, es posible que pueda hacer algo con su propio proveedor de servicios en capas , pero ese es un camino extraño y feo lleno de peligros y voy a sugerirle que se mantenga alejado de él.
ACTUALIZACIÓN: Después de hurgar un poco más, definitivamente creo que debería consultar consultas OID NDIS. Encontrar la información más relevante para usted se deja como un ejercicio entre usted, MSDN y TechNet.
Esta pregunta es antigua pero quería agregar alguna información. Es un resultado de búsqueda bastante alto en Google.
Por lo que puedo decir, no hay una manera de hacer esto, pero si alguien puede investigar más y encontrar una alternativa válida, ¡sería muy apreciado!
Como @Fencepost señaló en su respuesta, puede intentar consultar los OID de NDIS. El OID NDIS más relevante que encontré es OID_GEN_TRANSMIT_QUEUE_LENGTH
La mayoría de los OID NDIS están asignados a clases WMI, puede enumerarlos en powershell con
Get-WmiObject -Namespace root\wmi -List | Where-Object {$_.name -Match "MSNdis" } | Sort-Object
pero no parece haber uno para la longitud de la cola de transmisión.
@ Chris J mencionó la interfaz de red \ longitud de la cola de salida. Puede obtener este valor en la línea de comando con typeperf .
typeperf "\Network Interface(*)\Output Queue Length" -sc 1
Pero el valor siempre es 0: http://support.microsoft.com/kb/822226
Windows solo realiza un seguimiento de esta información en el software del controlador NIC, y solo se trata de paquetes en cola por NIC, y no distingue entre lo que está en cola por socket.
Si desea realizar la depuración de la red en la línea de comandos, cualquier contador que encuentre en perfmon puede consultarse utilizando typeperf o logman .
Lo que desea pueden ser los resultados de las llamadas a la función WinSock API getsockopt
:
SO_RCVBUF
El espacio total de búfer por socket reservado para recibir. Esto no está relacionado SO_MAX_MSG_SIZE
y no corresponde necesariamente con el tamaño de la ventana de recepción TCP.
SO_SNDBUF
El espacio total de almacenamiento intermedio por socket reservado para envíos. Esto no está relacionado SO_MAX_MSG_SIZE
y no corresponde necesariamente al tamaño de una ventana de envío TCP.
El problema es que se le pueden pedir enchufes cuyo manejo conozca. Consultar desde el exterior parece ser difícil, eche un vistazo a la herramienta sysinternals TcpView . Mark Russinovich es realmente un crack e incluso él no proporciona la información en su herramienta. Estoy bastante seguro de que habría agregado una columna si tuviera un medio para obtener los valores fácilmente ...
Supongo que algún controlador de kernel podría ayudar a profundizar en el sistema, pero no encontró ninguna herramienta disponible. Los tamaños se pueden establecer en una base por socket para que los valores globales no tengan significado ...
Eche un vistazo aquí: http://support.microsoft.com/kb/224829 .