Monday, February 5, 2007

IP Addresses

Every server on the internet is assigned a unique number – an IP (Internet Protocol) address. This number can be thought of as a ‘telephone number’ which allows other computers to find and access files no matter where they are. The IP address is 4 bytes (32 bits). Each byte is known as an octet and can have a value between 0 and 255, so IP addresses are written in the form of 123.456.78.9.

IP addresses of 32 bits theoretically allow for more than 4 billion unique addresses, but in practice the actual number is much less. Certain ranges are reserved for special purposes so the number of available IP addresses is limited. Web sites can get around this limitation by using shared hosting or virtual servers. Rather than using one server for one web site, shared hosting allows several sites (sometimes hundreds) to be hosted on the same server. Each of these sites has the same IP address. They are uniquely identified by their domain name (e.g. mydomain.com).

There are plans to expand the number of IP addresses with the introduction of version 6 (We currently use version 4) of the Internet Protocol. IPv6 has IP addresses which are 128 bits wide. This provides an almost unlimited number of unique addresses, but will take several years to implement because of the heavy cost of upgrading the Internet infrastructure.

Shared hosting solves the problem of limited IP addresses for web sites, but there is also a need for IP addresses for each personal computer which connects to the Internet to browse the web or send email. Rather than assign each PC a unique IP address, Internet Providers can use a system of ‘dynamic addresses’. This means that each time you connect to the Internet through a dial-up or DSL modem you are assigned a different IP address.

So far we have been discussing how to use a web hosting company to host a web site, but there is no reason why you can’t host a site on your home computer. The biggest technical difficulty for most people, though, is that they connect to the Internet using a dynamic IP address. Dynamic addresses make it difficult to host a web site from home. Since the IP address is constantly changing nobody would be able to find your site unless you somehow notified them of your current IP address. There are dynamic DNS services, however, which allow you to assign a domain name to a site with a dynamic IP address. Each time you are assigned a new address your computer automatically notifies the service, which in turn updates its DNS (Domain Name Server).

Hosting a web site on your home computer, however, may not be a good idea. The computer has to operate server software and needs a high speed Internet connection. Your home Internet connection is probably a lot slower than those used by hosting companies so your web pages may load slowly – especially if they have a lot of graphics. If you have a small personal site with few visitors, though, it may be feasible to host your own site. Dynamic DNS is available as either a free or subscribed service.

Server to Web Browser – What Happens?

Each time you click on a link in a web page or type an address into your web browser you are making a ‘request’ for a certain document. That request is handled with the Hyper Text Transfer Protocol (HTTP) and sent over the Internet to the server which holds the document in question. If all goes well the server responds by sending the document — usually a web page of text and graphics.

HTTP is part of the Internet Protocol (IP) suite. It is used by a ‘client’ such as a web browser to establish a connection with the server which hosts a particular website. The server waits for incoming requests by monitoring TCP port 80.

Transmission Control Protocol (TCP) is used to create connections between two computers on the Internet so they can exchange data. TCP has provisions for identifying the requesting computer and for transmitting data with time stamps so that it can be reassembled in the correct order once it arrives at its destination.

There are several TCP ports which have standardized uses. TCP port 21, for example, is usually reserved for FTP (File Transfer Protocol) for uploading and downloading files. Port 80 is usually used for HTTP.

If the server receives a request string on TCP port 80 in the form of GET / HTTP/1.1 it will send a response code depending on whether the requested web page is available or not. A typical request goes like this:

GET /faq.html HTTP/1.1
Host: http://www.mywebsite.com

This is a request for http://www.mywebsite.com/faq.html. The ‘Host’ needs to be specified to distinguish websites which are hosted on shared servers. If faq.html is available the server will respond:

HTTP/1.1 200 OK
Date: Mon, 12 October 2005 22:38:34 GMT
Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT

…followed by the actual web page.

HTTP/1.1 200 OK means that the requested web page is available. Other codes can also be returned. The code 404, for example, means that the server cannot find the requested page. The web page is sent via TCP as a series of data packets each with a header that specifies its destination and order in the data stream. The various packets can all take different paths to reach their destination. Each is sent through a router which polls other routers which are close by. If a connection with the first router is unavailable the data will be sent through another one.

As the data is received the client (the web browser) sends back an acknowledgement. This ensures that all the packets are received within a certain time. If not, they will be re-transmitted by the server. TCP also checks that the data is undamaged. The data is reassembled in the correct order thanks to the sequence number of each data packet. Voila! The web page appears on your computer screen.

The TCP connection can be kept alive for additional requests from the client. This allows several pages to be requested within a short time period without causing the overhead of opening and closing TCP ports. Either client or server can close the connection at any time.