What is a computer network?
To a user - something that allows applications to talk to each other. They have an idea as to what the infrastructure should allow them to do. Email and web browsing should be reliable. Internet banking should also be secure. Internet radio, voice over IP and video streaming should have quality. With VoIP however you also want low latency (delay) too, as opposed to internet radio. The demands of the network depend on what type of application you want to run.
To a developer - needs to understand how the network works. Has an Application Programming Interface (API) to create the network application. The API provides a set of functions (services), with quality of service parameters (parameters are low delay, reliable etc.). It has documentation as to how the API is to be used. However, you also need to know about protocols, and the valid sequence of function calls through the API.
To a network designer - knows about the cables and connectivity. Has a structural view of the network. Different types of network linked together.
To a network provider - something to charge for!
Different sizes of networks
Personal Area Network - smallest
System Area Network (SAN)
Local Area Network (LAN)
Metropolitan Area Network (MAN)
Wide Area Network (WAN) - largest
Protocols
Protocols define interactions, e.g. the way the programmer uses the network. Has many elements; links, switches, end-hosts, processes. They exist within a single layer of the network.
A protocol only is used for one service. It defines a service. You get stacks and layers of protocols in order to complete a full operation.
Network Layers
OSI 7 Layer Model (A Theoretical Model)
Application - High level applications.
Presentation
Session
Transport - Getting data to the correct applications.
Network - Getting data between a source and destination computer.
Data link
Physical - Physical cables.
Reference Model: Internet
Application Layer - Application.
Transport Layer - e.g. UDP, TCP.
Network Layer - IP - Joins different physical networks together.
Access Link Layer - Physical Network Layer.
Protocol Encapsulation
An application message will use the transport layer to move the message, in order for the transport layer to work, it has to put a header onto the front of the message, which moves it down to the network layer. It then adds its header. The link layer then does the same. Once it reaches the link layer it can be moved across the network. The message now has extra control information on it. When the message is received the reverse process occurs. This is encapsulation.
Physical Layer Connectivity
We're interested in measuring two things - the bandwidth available for the data, and whether or not the connection is shared (e.g. wireless broadcasts) or dedicated.
At the edge of the network
Connectivity options:
- POTS (plain old telephone system) (dial-up) 56 kb/s.
- Now it's Digital Subscriber Line (DSL) - broadband. Involves a high-speed downstream data channel, a medium-speed upstream data channel, and an ordinary two-way audio phone channels. Asymmetric - the upload stream is a different speed to the download stream.
- Cable/fibre, it depends on what other users in the area are doing as to how fast your internet actually is. It's a shared physical medium (many people connected in the same area), as opposed to broadband's dedicated physical medium.
- Wireless technology - two forums; WAN (54 Mb/s), which is faster but shorter range, and through mobile phones (wireless access network), which is a lot slower but has a long range.
- Connectivity at home - internet comes in to a router (which has three functions; talking to the internet, routing the packets and a wired Ethernet and/or a wireless access point.
- Corporate network connectivity - Used in companies and universities. The connection the the rest of the world is linked to a router, which is lined to an ethernet switch, which is linked to the various computers. The universities ISP connection is 10 gig. The network capabilities are not faster than the ISP connection, but when you add all the traffic required from all the computers, it needs such a large ISP connection.
At the Core
- Where the connectivity takes place, e.g. in routers.
- It's hierarchical. A collection of networks.
- If we want to move a packet, then the packet has to pass through more than one network. The packet moves through the network using a process of forwarding. It doesn't look at the whole network, it just uses local decisions. It's impossible to get a global view of the internet.
- Various tiers exist in the network. Any network tier has a series of point of presences (POPs) to achieve a connection. It's good not to go all the way through the network, so there's also connectivity between the same tiered networks. Tier 3 is local networks. ISPs connect tier 3 to the higher level networks.
- Network topologies (layout of computers); ring, bus, star, tree, mesh. They all have their advantages and disadvantages (use common sense to work these out…) What can be very important is scalability. Some network topologies have a different ability to support scalability than others.
Types of Communication
- Single (unicast) - once source to one destination.
- All-nodes (broadcast) - once source to all nodes.
- Multiple nodes, a subset of all nodes (multicast) - similar to broadcast but less computers that receive the message.
Network Connectivity - Addressing
Address of a device has to be unique across the entire world.
IP address (a 32bit numeric address for a device). Split into two parts; 1. The network of the device. 2. The computer on that particular network. IP concatenates the two. 130.88 (network) + 0.28 (machine) to give = 130.88.0.28.
A computer can run multiple applications, each application has a port number to identify them, and ensure they get the information they want. TCP and UDP uses a 16-bit port number.
Web browsers use address (port) 80 for web servers.
The Reality of Networks - Unreliability
The network is not reliable, but you always want to make it appear to the end user that it is.
There are many reasons why things may go wrong. Methods to work around this… Use codes (checksums) to detect errors. Use acknowledgments as to when things arrive, or negative acknowledgments that a message didn't arrive. Timeouts. Hide some kinds of network failure and make it look more reliable than it is.
Networking issues for good design. Some good principles in which to create applications that achieve functionality:
- Service model.
- Global coordination (e.g. port 80 is a web service).
- Minimise manual setup.
- Minimise volume of information at any point (if you don't then you get a bottleneck at a node).
- Distribute information capture and management.
- Extensibility.
- Integration with all different systems (e.g. Windows/Mac/Linux).
- Error detection.
- Error recovery (reliability).
- Scalability.
No comments:
Post a Comment