Testing a Network Connection
For a general conceptual overview of how networks work the wikipedia page on the TCP/IP model and the OSI model are a good places to start. You don't need to know all the gory details but it is useful to have some understanding of the layered model of network connections. The basic idea is that networks are represented as a series of distinct layers each resting one on top of the other. At the bottom of the pile is the physical layer in the OSI model. In the tcp/ip model this is the link layer which combines the physical layer with the logical network e.g. Ethernet. On top of this in the TCP/IP model you have:
- Internet layer -- this includes IP in TCP/IP as well as ICMP etc. IP is responsible for addressing and routing packets over the Internet -- hence IP address. It is not designed to be reliable, it will allow packets for example, just to get them there (Reliability is provided by the next layer). Ping works on this level.
- Transport Layer -- TCP, UDP etc. This provides end to end communication for applications. TCP provides transport for the data and provides reliability by allowing for resending and re-ordering of packets.
- The Application Layer -- this is top layer it covers all the common Internet protocols: DNS, HTTP, SMTP, IMAP, POP3, SSH, BitTorrent etc (it doesn't include the programs that use these themselves).
The reason for knowing this is that it gives us a model to work from so we can test consistently (by starting at the lowest level and working our way up or vice versa, I strongly encourage you to do the former, this is how this article will be structured).