This tutorial uses SOHO (Small Office Home Office) to describe a simple local network connected to the Internet via an ISP (Internet Service Provider). This is the same as a private home (non-office) network. For this part of the tutorial we assume your local network contains devices that primarily access programs and services across the internet.
This section summarises the content on this page (read on for the full tutorial):
Hardware here means what is actually present in your home/office, it can be seen and touched. The diagram below illustrates the components of a typical home/offive network. In this example only a single device (a PC) is shown.
Examples of ISPs are:
|NL||Ziggo, KPN, Tele2|
The key component for accessing the Internet is your Internet Service Provider (ISP). In the traditional internet connection (technically known as "NAT'd IPv4") the ISP extends the Internet to your router, which then allows your SOHO environment to access the Internet. Typically your ISP will be one of the following:
On the home/office side of the router you may have some wired connections, you probably also have integrated WiFi support for wireless connections. Wireless access can also be provided through one or more separate boxes known as Wireless Access Points. The total network of connected devices (both wired and wireless) is your Local Area Network (LAN).
Your LAN network enables PCs, tablets and phones to access the local router which "routes" their traffic on to a destination somewhere in the Internet via a first step to a router at your ISP's premises. This step is sometimes referred to as a Wide Area Network (WAN) connection, wide referring to geographical separation of the network components.
At the server location the environment is conceptually similar to our SOHO environment but on a much grander scale and with lots of clever tricks to make hundreds of computers appear as a single computer to the outside world. These duplication techniques allow for scalability of operations and single or multiple component failures so that companies such as Google can appear to provide a reliable 24x7 service just for you.
When an app/program on your device/PC wants information located on another computer it has to connect to an app/program on that computer and request the information. In this case the app on your device/PC is known as the client. The computer providing the information is called the server.
Your web browser and e-mail program are examples of clients. Typically all the programs you use to access the internet, whether they are on a PC, smart phone or other deivce will be clients.
Servers answer client requests. One server you might own is an IP security camera. You typically access the camera (a server) through your web browser (a client).
In the case of the World-Wide-Web our client program is typically called a web-browser or simply browser, examples of browsers are: Internet Explorer (IE), Safari, Chrome, FireFox (FF), Opera. The web server is typically Apache on UNIX systems or the Internet Information Server (IIS) on Windows systems. Remember though, there are many other services on the Internet besides the web e.g. eMail, FTP, remote printing etc. each of these services will typically support similar client/server app relationships.
If a client (or server) app were to access the network directly then that client's programming would need to be extremely complicated. It would also mean duplicating a lot of code/function needed by every other client. Finally it would make sharing the network adapter (LAN/WiFi card) very difficult. Separate software is therefore used to provide common network function: build and destroy connections, send and receive data.
In this way we can easily think of a three layer structure:
The most common networking software layer goes by the name TCPIP or TCP/IP. TCPIP is now so ubiquitous that it is usually provided as part of the operating system (e.g. it is part of Windows, Android etc).
Software layering is so useful within computer networking that the networking software layer described above is further sub-divided as follows:
|Transport Layer||Concerning itself with managing communicating apps and the transfer of data between them. It ensures what one app sends is what the partner receives.|
|Network Layer||Responsible for exchanging messages between communicating systems. This layer is aware of the complex network of addresses and determines the path to reach a target address.|
|Link Layer||Organises the transfer of data over a single link i.e. a single leg of its journey|
It will perhaps not surprise you to learn that TCP and IP form two of these fundamental sub-layers.
In this network architecture TCP provides the transport layer and IP the network layer. TCP understands and talks (or interfaces) with the apps. It is TCP that allows apps to jointly access shared resources (network cards etc) while remaining independent from one another. TCP understands an app's connect requests (connect to a remote app), send data requests (send data to that connected app) etc. As a networking layer, TCP places the app's request and/or data in an envelope and passes it to the IP layer. The TCP envelope contains control information and the port number "requested by" or "allocated to" the app issuing this request.
IP knows nothing about apps but does understand networks and how to find other computer systems using their IP address. IP envelopes TCP's data for transfer across the IP network. Essential ingredients of the IP envelope are therefore the IP addresses of the origin and traget computer systems. IP will then determine the best link to access the destination IP address and pass the TCPIP packet to that link's software.
We can now see that an IP network requires that each accessible computer have a network (IP) address (more accurately each computer's network connection, as computers with multiple connections can choose to combine connections or assign separate addresses to them). Follow the link buttons directly for more information or proceed through the tutorial which in turn lead to these subjects.
One final poin about TCPIP is that the name TCPIP does not always refer to just TCP and/or IP alone, it is also used to represent an entire suite of programs required to communicate across a network e.g. UDP is similar to TCP but whereas TCP builds a connection between two endpoints before transferring messages, UDP is connectionless each message travels as if it were the first message between two end-points. There are also diagnostic, management and connection establishment protocols such as ICMP, SNMP, ARP and more, all linked under the generic TCPIP name.
In our SOHO LAN the Link Layers we are interested in are ethernet and WiFi as defined by the 802.3 and 802.11 standards of the IEEE. It is, at least partially, thanks to the ease with which layers can be swapped/replaced that we have seen the rapid progress in WiFi network speeds as associated with the 802.11b/g/n/ac standards.
Yes, the link layer communicates using addresses held in another envelope (around the IP envelope), this time the addresses are Media Access Control (MAC) addresses. You can follow the link button for more information.
The idea of layers works well and has been applied to nearly all aspects of network oriented programming e.g. even clients and servers have their own protocols to describe the type of request being made of a server and the type of response being returned to a client. In the case of the web this protocol is called HyperText Transfer Protocol (HTTP), its the http:// that you use in your browser to specify the full name and protocol of a site you wish to access.
What then is the hyper text that is being transferred? The answer is web-page data (the information that we want) and layout (or markup) instructions in the form of HyperText Markup Language (HTML) and Cascading Style Sheets (CSS). HTML and CSS markup instructions enable pages to be displayed in a rich, colourful manner and suited for different devices, from PC screens to mobile phones.
These web application level protocols are more fully described in the WWW Introduction reached via the link button to the right.
The diagram "Protocols within a TCPIP network" illustrates the path taken when a PC based web browser (client) receives a web page from a remote web server. In this scenario, the web server builds a web page, taken from a file perhaps with additional information from a database. The page can also be massaged by programming at the server or via instructions to be carried out once it arrives at the client. The page is in general already marked up in HTML and CSS (like the one you are looking at now). This web page data is now wrapped in an HTTP envelope, which is then wrapped in TCP, wrapped again in IP and finally for each step of its journey, wrapped and unwrapped in a link protocol envelope. The last step (at your router) will see a WAN link protocol such as PPPoE (with ADSL) exchanged for the LAN (ethernet or WiFI) protocol to reach the PC.
At the PC the various layers of software at the client will carefully unwrap each of the protocol envelopes until the hypertext is available to your browser which can then use this information to display (render) the requested page.
By understanding your hardware you know what to physically look for when trying to track a component of your home network. If you are not sure which boxes do what in your home, then now is the time to search on any text found on labels etc and see exactly what equipment you have.
By understanding the networking software layers you can be more precise about the point of failure, e.g. if a web page is not displaying as you would expect you can begin diagnostics correctly with the page markup instructions in HTML/CSS not hunting through IP configuration settings. Your diagnostic ability will improve as you progress further through the tutorial.
Clients and Servers are usually pre-configured for communication between themselves, its the lowest layers that need manual configuration and therefore require more detailed understanding. The next section describes IP networks and how they direct messages between computers.