views:

86

answers:

4

For example http://www.utorrent.com/testport?port=12345

How does this work? Can the server side script attempt to open a socket?

+2  A: 

The server side script will try to open a connection on the specified port to the originating IP.

If there is no response (the attempt will timeout), this would be an indication that the port is not open.

Oded
A: 

The server can try, as @Oded said. But that doesn't ensure the receiver will respond.

Brian Carlton
A: 

Typically, something like this happens:

  • The URL request contains instructions about which port to access. The headers that your browser sends include information about where the request is originating from.

  • Before responding to the request, the server tries to open a port and checks if this is successful. It waits a while before timing out.

  • The webpage is rendered dynamically based on the results of this test.

  • The response is returned to you containing the results.

Sometimes steps (2) and (3) will be replaced with an AJAX callback, which allows the response to return sooner.

John Feminella
+1  A: 

There are many ways of accomplishing this through server-side scripting. As @Oded mentioned, most server-side handlers are capable of initiating socket connections on arbitrary ports, and most of those even have dedicated port-scanning packages/libraries (PHP has one in the PEAR repository, Python's 'socket' module makes this type of tasks a breeze, etc...)

Keep in mind that on shared host platforms, socket connections are typically disabled for security purposes.

Another way that is also very easy to accomplish is to use a command-line port-scanner such as nmap from your server-side script. i.e in PHP, you would do echo `nmap -p $port $ip`

loginx