Why is System process listening on Port 80?

This one was bugging me. When I tried to start my web server (either Nginx or Apache), I received an error stating it could not bind to port 80. That’s a little odd considering I don’t have IIS installed and there are no other web services (that I know of) running on my laptop. I’ve got Windows 7 Enterprise x64.

First, I tried the methods I already knew. I opened up Chrome and navigated to http://localhost. I got the error message:

Not Found
HTTP Error 404. The requested resource is not found.

Then I used the Chrome network tab (Press F12 -> Click Network -> Press F5) to copy the response headers (Right click on localhost -> Copy response headers):

HTTP/1.1 404 Not Found
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Wed, 03 Apr 2013 21:52:56 GMT
Connection: close
Content-Length: 315

Hmm, it’s a Microsoft service. I googled the server: Microsoft-HTTPAPI/2.0. A few of the articles suggested stopping the following services:

I did not have any of the services above. Ok, more Googling: port 80 system. This time I got a promising hit. Superuser.com has a nice thread about the HTTP service (net stop HTTP). When I ran it from command prompt, it provided a list of services that relied on the HTTP service:

The following services are dependent on the HTTP service.
Stopping the HTTP service will also stop these services.
Windows Media Player Network Sharing Service
SSDP Discovery
Print Spooler
Function Discovery Provider Host
Do you want to continue this operation? (Y/N) [N]:

Sure enough, the BranchCache service was the culprit. I ran a quick command from an Elevated Command Prompt (net stop PeerDistSvc) and BINGO! Port 80 is now available. Thank you Google and Friends.

#microsoft #windows