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
windows
networking
tcpip
Izzy
fuente
fuente
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.
fuente
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
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 .
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 .
fuente
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á relacionadoSO_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á relacionadoSO_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 ...
fuente
Lo más cercano que puedo encontrar es el contador de rendimiento
Network Interface\Output Queue Length
. Sin embargo, esto no es por conexión, solo por interfaz y solo cubre la cola de salida (obviamente, por su nombre).fuente
¡Ahora, los tamaños de las ventanas son diferentes por zócalo! La configuración por interfaz solo representa los valores predeterminados.
No conozco ninguna forma de ver el tamaño de la ventana de cada socket. En Solaris, esto se puede ver con "netstat".
fuente
Eche un vistazo aquí: http://support.microsoft.com/kb/224829 .
fuente