Saya mencoba menggunakan port 80 untuk server aplikasi saya, tetapi ketika saya melakukan "netstat -aon" saya dapatkan
TCP 0.0.0.0:80 0.0.0.0.00 MENDENGARKAN 4
Ketika saya mencari proses di task manager, itu menunjukkan PID 4 adalah SISTEM, itu saja, bukan ekstensi ... tidak ada, hanya "SISTEM". Apa yang terjadi di sini?
Saya takut untuk mengakhiri proses ini, apa yang harus saya lakukan?
Jawaban:
Meskipun orang-orang menunjukkan layanan tertentu (mis. "Layanan Web Deployment Agent"), ini gagal untuk mengatasi penyebab utama. Jika Anda hanya menonaktifkan layanan yang memicu masalah, kemungkinan itu akan memundurkan kepalanya lagi di masa depan dalam kedok yang sedikit berbeda. Jadi ada baiknya memahami apa yang salah, karena itu mengarah ke perbaikan yang lebih baik.
Masalah ini muncul ketika server aplikasi menginginkan kontrol total port 80. Ini bertentangan dengan fitur Windows yang dirancang untuk memungkinkan beberapa proses menangani permintaan pada port 80. Sangat mungkin untuk memiliki sejumlah proses semua menerima permintaan HTTP pada port 80, karena Windows memiliki mekanisme pengiriman HTTP bawaan. Setiap proses dapat memberi tahu Windows URL mana yang ingin ditangani.
Namun, jika server aplikasi benar-benar mengabaikan ini, maka Anda kembali ke dunia soket sekolah lama yang kurang fleksibel di mana hanya satu proses yang dapat menerima permintaan yang ditujukan untuk port tertentu.
Itu mungkin baik-baik saja - jika Anda benar-benar tidak menginginkan apa pun selain proses tertentu yang menangani permintaan HTTP pada port 80, maka menjadi lumayan untuk menggunakan server aplikasi yang gagal mendukung mekanisme yang lebih fleksibel yang ditawarkan oleh Windows. (Dan beberapa server aplikasi populer memiliki batasan ini. Misalnya, AFAIK, Tomcat tidak dapat bermain dengan baik dengan yang lain, dan bersikeras memiliki port 80 untuk dirinya sendiri. Jadi jika Anda menggunakan server aplikasi orang lain, mungkin tidak praktis untuk sesuaikan untuk menggunakan mekanisme yang disukai.)
Windows berupaya mengakomodasi layanan tidak fleksibel semacam itu dengan tidak mengikat mekanisme pengirimannya ke port 80 hingga sesuatu secara aktif menanyakannya. (Inilah sebabnya Anda awalnya tidak akan melihat masalah pada awalnya, tetapi dapat mengalami masalah ini setelah semacam pembaruan atau perubahan konfigurasi.) Namun mengandalkan ini bukanlah solusi yang sangat solid - Anda pada dasarnya percaya pada keberuntungan bahwa tidak ada apa-apa mencoba mendengarkan di bawah port 80 sebelum server aplikasi Anda diluncurkan. (Ada beberapa alasan mengapa suatu proses spekulatif mencoba mendaftar untuk URL tertentu pada port 80, dan mundur jika tidak diizinkan.)
Jadi jika Anda ingin satu layanan memiliki akses eksklusif ke port 80, Anda sebaiknya memberi tahu Windows. Tidak cukup baik untuk mencoba mematikan semua layanan yang mungkin mencoba menggunakan mekanisme berbagi port yang biasa, karena sulit untuk yakin bahwa Anda telah menemukan semuanya. (Terutama ketika pembaruan Windows tampaknya mengubah apa yang aktif secara default.) Ini mungkin praktik yang baik untuk menonaktifkan yang Anda ketahui, tetapi yang terbaik untuk mendekati ini dari kedua ujungnya: menonaktifkan layanan yang tidak Anda inginkan, dan juga memastikan bahwa itu bukan mungkin untuk orang yang Anda tidak tahu akan membuat Anda tersandung.
Secara default
HTTP.SYS
(mekanisme pengiriman HTTP berbagi port yang mendasarinya di Windows) dapat mendengarkan semua alamat. Tetapi Anda bisa mengatakannya untuk tidak melakukannya. Halaman ini menunjukkan satu cara untuk melakukannya: http://www.mikeplate.com/2011/11/06/stop-http-sys-from-listening-on-port-80-in-windows/Itu adalah cara yang relatif ringan untuk melakukannya, karena masih memungkinkan mendengarkan di localhost untuk IPv6. Itu hanya membebaskan port IPv4 80. Anda bisa membawanya lebih jauh dengan konfigurasi yang lebih khusus. (Anda bahkan dapat menonaktifkan
HTTP.SYS
sepenuhnya, tetapi hal itu dapat merusak hal-hal menggunakan port selain 80, sehingga dapat menyebabkan masalah.)Tapi apa pun yang Anda lakukan, intinya adalah untuk memastikan bahwa
HTTP.SYS
tidak berusaha untuk mendengarkan pada port 80 pada alamat IP yang Anda pedulikan. Setelah Anda selesai melakukannya, Anda tidak perlu khawatir tentang menonaktifkan layanan, Anda juga tidak perlu khawatir tentang perubahan lain yang memperkenalkan kembali masalah. Jika Anda telah memastikan bahwa titik akhir yang Anda butuhkan secara efektif di luar batas untuk berbagi port, maka Anda harus menemukan bahwa proses sistem berhenti mengikat padanya.sumber
Pelakunya adalah Layanan Agen Penerapan Web.
Solusi yang lebih baik daripada
net stop http
menghentikan layanan yang dinamai "Web Deployment Agent Service".sumber
World Wide Web Publishing Service
. Sementara "net stop http" sendiri merupakan jawaban yang benar-benar brutal yang penuh dengan efek samping buruk - layanan seperti spooler cetak Anda dan bagian dari proses masuk Windows 10 mengandalkan http - apa yang akan dilakukan jika Anda mencobanya, adalah memberi Anda daftar layanan yang bergantung pada http, dan opsi untuk mundur. Mencoba segelintir layanan dalam daftar itu satu per satu adalah bagaimana saya mengetahui bahwa Layanan Penerbitan WWW adalah biang keladinya.Kemungkinan besar IIS 6.0 atau yang lebih baru.
sumber
Cobalah untuk menghentikan
HTTP.SYS
dengan masuk keDevice Manager/Non Plug and Play Drivers
dan PilihHTTP
, cobalah untuk menghentikannya dan Anda akan melihat layanan yang memicu HTTP ini untuk menggunakan port 80.sumber
Terakhir saya periksa, Anda tidak dapat mengakhiri proses "sistem", dan jika Anda melakukannya, saya kira itu akan memiliki efek bencana. Saya tidak akan mencobanya di PC saya juga sekarang!
Tampaknya sesuatu di dalam Windows sendiri sedang mendengarkan: 80 - Saya akan menebak bahwa itu bisa menjadi sesuatu yang berbahaya. Cara terbaik untuk mengetahuinya adalah dengan:
a) Buka browser web ke localhost dan lihat apa yang muncul
b) Mulai Telnet dan telnet ke localhost 80 dan jalankan beberapa HTTP GET dasar (mis. GET /) dan lihat apa yang dikembalikan
B adalah pilihan yang lebih baik jika Anda berpikir bahwa Anda mungkin meng-host malware, karena Anda tidak benar-benar ingin menulari diri sendiri lagi. Meskipun mungkin itu tidak masalah.
sumber
Saya menemukan jawaban untuk pertanyaan ini di: /superuser/352017/pid4-using-port-80
Khususnya ketika itu adalah Sistem Proses 4, Anda perlu menonaktifkan pengandar HTTP.sys yang dimulai berdasarkan permintaan oleh layanan lain, seperti Windows Remote Management atau Print Spooler pada Windows 7 atau 2008.
Mulai ulang dan gunakan netstat -nao | temukan “: 80 ″ untuk memeriksa apakah 80 masih digunakan.
Saya juga mencoba untuk mendapatkan port kembali dengan hanya menjalankan "net stop http" tetapi port sepertinya tidak pernah dibebaskan kembali. Di atas memang bekerja untuk saya, dan saya tidak perlu layanan lain yang tergantung pada driver ini.
sumber
Windows Sync Share adalah apa yang membunuh kita di Windows 2012 R2. Setelah kami menonaktifkan fitur ini, semuanya muncul dengan baik.
sumber
Dalam kasus saya itu karena Carbon Black anti virus entah bagaimana mengambil cengkeraman pada port 80. Saya menghabiskan waktu berjam-jam untuk mencari tahu, jadi saya merasa berkewajiban untuk berbagi kalau-kalau itu menuntun sesama jiwa miskin pada cahaya :) Saya tidak tahu bagaimana cara memperbaikinya, tanyakan pada server / tim jaringan Anda!
sumber
Saya telah memecahkan ini melalui pertanyaan stackoverflow. Ikuti tautan ini untuk menemukan solusi bagaimana membuat IIS berhenti mendengarkan pada port 80 untuk alamat IP tertentu.
sumber