Network Applications
Computer networking? There's an app for that.
A network applications is a program that communicates over a network but runs on end systems, not core network devices. You can't install skype on a router!
There are 4 distinct architectures for network apps:
- Client - Server
- P2P
- Hybrid of the first 2
- Common implementation
Client - Server
You have a server that is:
- An always on host
- with a permanent IP address
- and maybe linked to a server farm to allow scaling
and 1 or more clients that:
- Communicate with the server
- May connect to it intermittently, ie not 24/7
- Have dynamic IP address
- Do not communicate directly
P2P
- There isn't an always on server
- The end systems communicate directly
- Peers change and connect intermittently and change their IP addresses
- This is very scalable but also hard to manage
Hybrid
Skype is a good example of this.
- The actual voice communication is P2P
- But when you come online on skype, you register your IP with the central server so that the server knows where to send your call
IM is mainly the same.
End-point implementation
- The end-point is a process
- Communication happens by sending messages which are sent and received via sockets
- The host runs a lot of applications, so how does it know which one is the destination for incoming data?
- The end point is a concatenation of:
- The IP of the host
- the port number
Quality of Service
Some apps can tolerate small data loss, like audio apps. Others can't like file transfers.
Some apps can tolerate delay, like file transfers. Others can't, like VoIP.
Multimedia apps need a minimum amount of throughput to be effective. Apps that don't have a minimum throughput are said to be 'elastic'.
TCP
- TCP is connection orientated, meaning setup is required between the client and server
- It is reliable
- The flow can be controlled to prevent buffer overflow
- TCP does NOT give guarantees on minimum throughput, or timing, or security
UDP
- Unreliable transfer
- Does not provide any of the things listed for TCP
- But it is much faster
- VoIP usually uses UDP
Application Protocols
These make the transport service model better by adding precise communication terms. For example, they define the type of message being exchanged, ie REQUEST, POST.
They follow strict rules about syntax and what fields are present. There are two ways of having these protocols:
- Open standards that allow interoperability, like HTTP
- Proprietary protocols, like Skype that doesn't work with other services
Application Data
- The source and destination of the data must interpret data in the same way
- Compression is important to make it easier to send. Compressing data makes it take up less space in the cable
Converting Data - Standard approach
- The source translates the data to a compressed format
- The destination translates from a compressed format
- So each end needs to be able to understand 2 translations
Converting Data - 'Receiver Makes Right' approach
- Data is transmitted in an internal format
- This avoids unnecessary conversion
- Must be able to understand N translations
- And must have an explicit description of what is being received
I've probably left some stuff out. I just got a new playstation game so that's why
No comments:
Post a Comment