Linux netstat menunjukkan ukuran kirim dan terima.
Bagaimana saya mendapatkan info ini di Windows, khususnya Server 2003?
Linux netstat menunjukkan ukuran kirim dan terima.
Bagaimana saya mendapatkan info ini di Windows, khususnya Server 2003?
Jawaban:
(Ini sedikit dump otak)
Dari melihat beberapa versi dari sumber netstat, sepertinya informasi yang Anda cari sedang ditanyakan langsung dari kernel (/ proc / net / ...) bukan melalui panggilan yang berhubungan dengan soket yang memiliki setara Windows. Jika Anda benar-benar bertekad untuk memilikinya, saya akan melihat bagaimana ini diambil di netstat dan melihat apa yang dapat Anda temukan yang menyediakan sesuatu yang setara.
Anda mungkin harus melihat ndis.com (Spesifikasi Antarmuka Driver Jaringan) dan PCAUSA.com untuk informasi tingkat driver, karena itu mungkin menjadi tempat terbaik Anda untuk mengambil info ini di Windows.
Saya tidak percaya bahwa getsockopt () atau sebagian besar arena Winsock akan membuat Anda berguna di mana saja, tetapi jika Anda ingin pergi ke arah itu, lihat informasi MSDN Winsock dan lihat juga FAQ Winsock Programmer .
Untuk inbound, Anda mungkin bisa mendapatkan sesuatu yang berguna dari fungsi ioctlsocket () dengan FIONREAD untuk mendapatkan jumlah data yang dapat dibaca untuk soket; Anda mungkin tidak bisa mendapatkan ini di seluruh proses dan tergantung pada jenis data itu hanya dapat mengembalikan informasi untuk blok data pertama bukan untuk seluruh antrian jika ada lebih dari satu item yang antri.
Anda mungkin melakukan beberapa penggalian pada "jaminan simpanan" dalam konteks ini, tetapi sebagian besar dari apa yang saya lihat tampaknya berhubungan dengan pengaturan ukuran maksimal untuk menangani banjir SYN, tidak benar-benar dengan melihat seberapa besar simpanan sebenarnya.
Jika Anda benar-benar bertekad, Anda mungkin bisa melakukan sesuatu dengan Penyedia Layanan Layered Anda sendiri , tapi itu jalan yang aneh dan jelek penuh bahaya dan saya akan menyarankan tinggal jauh dari itu.
UPDATE: Setelah melihat-lihat sedikit lebih banyak, saya pasti berpikir Anda harus melihat permintaan OIS NDIS. Menemukan informasi yang paling relevan bagi Anda dibiarkan sebagai latihan antara Anda, MSDN dan TechNet.
Pertanyaan ini sudah lama tetapi saya ingin menambahkan beberapa informasi. Ini hasil pencarian yang cukup tinggi di Google.
Sejauh yang saya tahu tidak ada cara untuk melakukan ini, tetapi jika ada yang bisa melakukan lebih banyak menggali dan mencari alternatif yang valid yang akan sangat dihargai!
Seperti @Fencepost tunjukkan dalam jawabannya, Anda dapat mencoba untuk query OIS NDIS. OID NDIS paling relevan yang saya temukan adalah OID_GEN_TRANSMIT_QUEUE_LENGTH
Sebagian besar OIS NDIS dipetakan ke kelas WMI, Anda dapat membuat daftar dengan PowerShell
Get-WmiObject -Namespace root\wmi -List | Where-Object {$_.name -Match "MSNdis" } | Sort-Object
tetapi sepertinya tidak ada satu untuk Panjang Antrian Transmit.
@ Chris J menyebutkan Network Interface \ Output Queue Length. Anda bisa mendapatkan nilai ini di baris perintah dengan typeperf .
typeperf "\Network Interface(*)\Output Queue Length" -sc 1
Tetapi nilainya selalu 0: http://support.microsoft.com/kb/822226
Windows hanya melacak informasi ini di perangkat lunak driver NIC, dan itu hanya paket yang di-antri per NIC, dan tidak membedakan antara apa yang antri per soket.
Jika Anda ingin melakukan debug jaringan pada baris perintah, penghitung apa pun yang Anda temukan di perfmon dapat ditanyakan menggunakan typeperf atau logman .
Apa yang Anda inginkan mungkin hasil dari panggilan fungsi API WinSock getsockopt
:
SO_RCVBUF
Total ruang buffer per-soket yang disediakan untuk menerima. Ini tidak terkait dengan SO_MAX_MSG_SIZE
dan tidak harus sesuai dengan ukuran jendela penerimaan TCP.
SO_SNDBUF
Total ruang buffer per-soket yang disediakan untuk pengiriman. Ini tidak terkait dengan SO_MAX_MSG_SIZE
dan tidak harus sesuai dengan ukuran jendela pengiriman TCP.
Masalahnya adalah bahwa bisa diminta soket yang pegangannya Anda tahu. Permintaan dari luar tampaknya sulit, lihat alat sysinternals TcpView . Mark Russinovich benar-benar retak dan bahkan dia tidak memberikan info di alatnya. Saya cukup yakin dia akan menambahkan kolom jika dia memiliki maksud untuk mendapatkan nilai dengan mudah ...
Saya kira beberapa driver kernel dapat membantu menelusuri ke dalam sistem tetapi tidak menemukan alat yang tersedia. Ukuran dapat diatur pada basis per soket sehingga nilai global tidak memiliki makna ...
Lihat di sini: http://support.microsoft.com/kb/224829 .