Bagaimana cara mengetahui siapa yang mendengarkan port 80 di Windows dalam banyak kasus? [duplikat]


2

Bagaimana cara mengetahui siapa yang mendengarkan port 80 di Windows?

Jangan menyarankan untuk menggunakan

netstat -aon | findstr :80

karena melaporkan PID dari NT Kernel & System yang merupakan informasi yang tidak berguna.

Saya perlu tahu nama komponen yang tepat untuk mengendalikannya.


Baiklah, jika http.sys digunakan, Anda mungkin tidak memiliki kesempatan untuk mengetahuinya.
Daniel B

apa yang http.sys? Itu adalah bagian dari IIS?
Dims

http.sys adalah Mesin HTTP Mode Kernel Windows. Ini dapat digunakan oleh banyak program pada saat bersamaan, dengan masing-masing mendengarkan permintaan ke "subdirektori". Untuk .NET, ada HttpListener kelas. IIS juga menggunakan http.sys.
Daniel B

Jawaban:


5

Baiklah, mari kita buat jawaban.

Apa yang Anda lihat kemungkinan besar merupakan hasil dari penggunaan program http.sys Mesin HTTP Mode Kernel Windows diperkenalkan pada Windows Server 2003 (dan XP?). Ini memungkinkan pengembang untuk menghindari batasan bahwa port mendengarkan hanya dapat dilayani oleh satu program pada satu waktu. Dengan http.sys, suatu program mendaftarkan ruang nama, mis. http://192.168.1.2:80/helloworld. Program sekarang menerima semua permintaan yang dimulai dengan namespace terdaftar. Pada saat yang sama, program lain dapat mendengarkan http://192.168.1.200:80/helloworld.

Efek samping lain adalah bahwa bahkan program "non-root" dapat mendengarkan pada port 80, dengan ketentuan bahwa pengaturan satu kali telah selesai.

Secara alami, Microsoft tidak mengembangkan ini karena semuanya menyenangkan dan permainan. Layanan Informasi Internet (IIS) digunakan http.sys untuk mendengarkan. Jadi ini kemungkinan kandidat dalam kasus Anda.

Jika saat ini tidak ada program yang mendaftarkan ruang nama, http.sys berhenti mendengarkan.

netsh http show servicestate harus dapat menghitung semua ruang nama aktif.


Apakah mungkin mendaftar daftar di http.sys?
Dims

Saya telah memperbarui jawaban untuk menyertakan perintah yang tampaknya menyelesaikan ini.
Daniel B

Perintah di atas menunjukkan id proses, sehingga Anda dapat mengetahui exe mana yang mendengarkan.
tjleigh

2

Kamu bisa mencoba TcpView , tetapi jika itu sebenarnya di kernel (seperti di - soket dibuka oleh driver), maka benar-benar tidak ada cara untuk mengatakan apa yang sebenarnya mengontrol soket. Itu bahkan jika Anda menggunakan sesuatu seperti ProcMon untuk melakukan penelusuran boot dan menangkap momen yang tepat dari soket yang terikat ke tcp / 80. Yang Anda butuhkan adalah variasi ProcMon yang juga akan menangkap jejak tumpukan untuk setiap acara dan saya belum melihat alat seperti ini.

Tapi coba TcpView dulu. Kemungkinannya adalah itu sebenarnya layanan ruang pengguna yang Anda cari dan bukan komponen kernel.


TcpView memperlihatkan daftar yang sangat panjang dengan beberapa IP terwakili dalam format IPv6. Tidak ada cara untuk menangkap yang spesifik.
Dims
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.