问题
I know that when I request example.com my browser actually deafults to example.com:80 . However my ISP block the 80 port from listening so HOW do I receive the responses from my requests if the port 80 is blocked? It should not work, isnt?
回答1:
When you make an HTTP request (in fact, any TCP request), there are two ports involved. There is port 80 on the destination (in your case, "example.com"), and there is a port on your computer; this port is called the "source port" since your computer is the source of the request.
Typically, your computer will pick a random port number over 1,000 (for example, 3,135 or 45,978), since low-numbered ports are easily remembered (and blocked) and are typically used for hosting services (such as a web site on port 80). Because the source port is created by your computer for the purpose of talking to example.com on port 80, it won't be open very long (just long enough to do its job). These are sometimes called "ephemeral ports"; see http://en.wikipedia.org/wiki/Ephemeral_port
回答2:
However my ISP block the 80 port from listening
As a point of terminology, you can't block a port from listening; what I think you mean is your ISP is rejecting incoming connections on port 80 (i.e. from world to your computer). However, outgoing connections (from your computer to the world) are separate from incoming, and that is what you are using when you use your browser.
It is usually okay to just say "ISP blocks my port 80", but it is important to understand here what specifically is going on.
来源:https://stackoverflow.com/questions/20255818/port-80-blocked-on-my-isp-so-how-my-browser-still-works