Computer network
A computer network is a collection of computers or similar digital devices connected by a communication network. The network allows the computers to cooperate by sharing resources, workload or information but also provides the possibility of hostile behavior by one or several participants. The communication on the network follows a protocol understood by all participants which determines, among others, how data is encoded, how access to the network is handled and how errors are handled and reported.
Despite its name computer networks nowadays also contain devices like intelligent sensors or actuators which although they typically contain a CPU have a more specialized role than a computer. Therefore one also calls the participants in a network "devices" or "nodes". Also there doesn't need to be a direct physical connection between the participating computers. The connection could cross several intermediate nodes like routers or repeaters or use wireless connections.
A computer network distinguishes itself from a power network in that it primarily transmits information not energy and from a digital network in that the information is transported using a high-level protocol. As evidenced by distributed computing and techniques like AMD's Hypertransport the distinction between parallel computing systems and computers connected by a computer network (also called a distributed system) is gradual.
Applications
Computers are connected in a network to provide certain services to users which would be unavailable or available only with less performance on a stand-alone machine. Such services include access to peripherals such as printers or sensors connected to other computers, access to resources of the remote computer itself such as computing power or file storage, and finally access to the output of applications running on the remote computer such as a web server or a database. Since all remote access needs some kind of software running on the remote computer, the boundary between the latter usage and the two former is a bit fuzzy.
Application architectures
The interoperation of computers in a network often follows some general network architecture describing role and interactions between the participating computers. The most used classes of architectures are:
- Client-Server architecture: One computer is particular computer is denoted as “server” and provides the services the clients access. Variations of this architecture provide several layers of servers or fall-back servers should the master server fail. Examples are the World-Wide Web, network file system like NFS or SMB, commercial database applications such as booking services, as well as thin client models.
- Peer-to-Peer architecture: All computers provide the same basic services to each other and are thus all denoted “peers”. The most prominent example for this architecture are many file sharing services but also Voice over IP (VoIP) can be considered basically peer-to-peer although current implementations often are mixed set-ups with servers for connection establishment and bypassing firewalls.
- Mobile code architecture: Participants do not (only) send data over the network but also software to be run on remote computers for data processing. The most common goal is to avoid network load and thus bring the processing to the data or to the interaction. The most well known example for this architecture within computer science are probably mobile agents, the most well known example outside of it are Java Applets and the Web 2.0.
A common name for many of the above systems is “Distributed System”, that means a computer system whose constituting computers are locally distributed. But not necessary all computers connected via a network form a distributed system as for example some definitions of the term require transparency of distribution.
Attributes of computer networks
Computer networks and the protocols employed on them are judged based on different features required by the applications using them. In general three kinds of such attributes can be distinguished:
- Performance: How 'quick' is data transmitted over the network. This is often measured in bandwidth and latency. Bandwidth is the amount of data which can be transmitted within a certain time period (typically bits/second). Latency is the amount of time it takes from transmitting a datum to its arrival at its destination. Depending on whether an application transmits its data in larger or smaller chunks, bandwidth and latency have different importance.
- Reliability: How 'undisturbed' is the data transmitted over the network. The main measure for this is the bit error rate which describes the number of bits that arrive flipped at the receiver in relation to the total amount sent. A somewhat more subtle disturbance is measured with “jitter”. Jitter is the variation in latency of the network and poses a problem to streaming applications such as VoIP which require the client to receive data periodically. Note that the effects of more drastic failures such as loss of complete nodes or connections are typically not included in those measures although dynamically routing networks can cope with them.
- Quality of service: How 'guaranteed' are the above attributes. Often the measures defined above are given as an average value. But certain, time-critical applications have fixed requirements concerning e.g. the amount of data they need to transmit or the maximum delay allowed. The best effort approach included in many network protocols is insufficient for this and thus certain protocols are able to provide guarantees which are summarized as Quality of Service (QoS).
Other attributes not explained here in detail are the security measures of networks and their protocols and their scalability with a growing number of participants.
Categorization
Computer networks can be classified according to various criteria based on different characteristics.
Wired versus Wireless
The most prominent distinction is between wired networks and wireless ones. The former uses either electrical or optical signals which are transmitted via any kind of cable. The most well known example for this is Ethernet. The latter typically uses electro-magnetic radio waves transmitted 'through the air' but also schemes using infra-red, sound, or directed laser-light for communication have been proposed. The standard example for a wireless computer network is IEEE 802.11 commonly often called Wi-Fi.
As the cable of wired approaches provides a well-confined environment for transmission, wired networks typically perform better in all the attributes mentioned above. The advantage of wireless networks therefore consists of their much lower dependency on infrastructure which makes their deployment cheaper and their usage less restricted.
The wired versus wireless classification is not restricted to computer networks. As demonstrated by fixed-line and mobile phones it exists with any communication network.
Used Protocol
Computer networks are often named by the protocols they use. Protocols define the way individual computers on the network must interact to communicate which of course needs to be standardized so the participants understand each other. Protocols must handle issues from how the data is encoded in electrical signals, over how transmission errors are found, how the data finds its 'way' through the network, and how an application can determine whom it wants to talk to to how is the data encrypted against eavesdropping. These issues have been divided into layers in the so called ISO/OSI model which defines a stack where each layer uses the services of the next lower one. Different protocol address different layers in the stack, the Internet for example is based on various physical layers which serve the IP layer responsible for routing data through the network, which in turn serves the TCP layer that provides the abstraction for the applications, which in turn again use protocols such as HTTP.
Among the most often used protocols are low-level protocols such as Ethernet, Token-Ring, ATM, CAN and FlexRay in the wired arena and IEEE 802.11, Bluetooth and ZigBee for wireless communication, with the latter two also defining higher level services. Higher-level protocols encompass among othersIP, TCP and UDP from the TCP/IP world as well as NetBEUI or iSCSI. Further up the multitude of application-layer protocols is overwhelming with HTTP, SMTP, IRC and FTP just naming a few.
For most of the attributes of the network the lower-level protocols play the major role although some, for example scalability and reliability in the face of partial network failure, build on services provided by network or transport layer.
Spanned area
There is still another way to classify networks: the area they are designed to cover. This starts small from one person's body and ends with the whole world.
- BAN: The Body Area Network covers devices carried by a person on his body, e.g. communication from mobile phone to headset.
- PAN: Personal Area Networks connect devices at or near to a person with each other. Examples are the connection from medical sensors to bed-side monitors or the connection from a mp3-player carried in a pocket to the car radio.
- LAN: Local Area Networks typically extend throughout a building and consist of one or few subnetworks. The primary example here is the connection of computers and peripheral devices like printers or PVRs in an office or home.
- MAN: Metropolitan Area Networks are designed to cover the whole area of a city for example by connecting individual LANs by ATM or microwave radio but are nowadays seldom heard of . The combination of several networking techniques to aggregate and connect citizens via DSL to the internet could also be seen as a MAN.
- WAN: Wide Area Networks connect devices with a significant distance and where transmission often requires several hops through routers. The primary example here is of course the Internet.
This list has been extended several times in the past following the progress of technology (mainly in the direction of smaller networks) so expect new types to be introduced once nanotechnology or space exploration progresses further.
Challenges
As applications and technology progresses computer networks face new challenges of which a few are listed here.
What is called 'the scarcity of the spectrum' - the problem that the available bandwidth for wireless transmission is limited if transmissions interfere with each other - has triggered several developments to circumvent this interference, among them Ultra-wideband (UWB) which sends a very low power signal in a large 'band' (=part) of the spectrum and other spread-spectrum technologies. Also directed transmission and reception using e.g. multiple antennas helps to avoid interference by others.
The growing mobility of devices causes problems for protocols not designed with that mobility in mind such as TCP/IP. This has lead to proposals how devices can switch their connection point to the network without changing the identification they are known by (e.g. Mobile IP). The mobility problem is further worsened with short range radio technology such as Bluetooth or Wi-Fi when devices often form networks with their neighbours in an ad-hoc way or form multi-hop networks where devices themselves forward data send by their neighbours to its destination.
Also network security becomes a topic again if the network must resist attacks using individual stolen devices of the network, which is not an unrealistic scenario for wireless sensor networks.