Date post: | 22-Dec-2015 |
Category: |
Documents |
View: | 221 times |
Download: | 1 times |
An Introduction to Internetworking
Algorithm for client-server communication with UDP (connectionless)
A SERVER A CLIENT
• Create a server-socket (listener)and bound it to a port (higher than 1024)• Start listening for UDP packages comming• Receive the UDP package and extract Message, Host Address & Port from seder• Build a new UDP package with thesender´s Address & Port and the reply message•Send message
• Build a UDP package with the request message, server´s address & port numbre• Create socket• Send package• Listen to answer•Receive package• Extract answer
Algorithm for client-server communication with TCP (connection-oriented)
A SERVER A CLIENT
• Create a server-socket (listener)and bound it to a port (higher than 1024)• Start listening for request• Create another (normal) socket and build a TCP connection when a request arrives• Open IO streams for this connection• read-write
• Create socket and try a redezvous with a server (given address and port)• If the redezvous occurs, build a TCP connection•Open IO streams for this connection•write-read
THIS IS THE APPLICATION’S PROTOCOLL
Every layer has the illusion to be talking to the correspondent one in the other
application
A SERVER
A CLIENT
A CLIENT
A CLIENT
4444
The UDP: User Defined Package: like writing a letterRead write sequence
UDP or TCP communication
Internet frames and addresses
electricpulses
Attending more than a client: The sequential server:
The problem
A SERVERA CLIENT
A CLIENT
A CLIENT
4444
?
During the conversation the server is not listening at the port 444
A SERVERA CLIENT
A CLIENT
A CLIENT
4444
X
Only after the server is ready with the first client it can listen to the
port 4444 again
A SERVERA CLIENT
A CLIENT
A CLIENT
4444
?
The service may be to transfer a file. The user at the client may have first
to type and send the filename
A SERVERA CLIENT
A CLIENT
A CLIENT
4444
X
What if the server has to wait too much for a client to type in a file
name ? (or the file is too big)
A SERVERA CLIENT
A CLIENT
A CLIENT
4444
TimeoutX
Concurrent Servers: there are separate processes to attend the port
and to transfer the file
A SERVER
A CLIENT
A CLIENT
A CLIENT
4444
?
After the client contacts the server, the server creates another process to attend the client and keeps listening to the port
4444 for another
A SERVER
A CLIENT
A CLIENT
A CLIENT
4444
This is a “slave”process or threadIt is executed paralell to the “master” process or thread
?
While the new process is serving the first client, the second client can contact the
server at the port 4444
A SERVER
A CLIENT
A CLIENT
A CLIENT
4444
?
And the server creates another process
A SERVER
A CLIENT
A CLIENT
A CLIENT
4444
?
Now the third client contacts the server
A SERVER
A CLIENT
A CLIENT
A CLIENT
4444
?
And a third slave process or thread is created
A SERVER
A CLIENT
A CLIENT
A CLIENT
4444
?
When should I use iterative or concurrent server ?
• When the answer to a request is small and speedy it is better to have an iterative server
• When the server should “talk” to the client and wait for actions of the client´s user it is better to use a concurrent server
• Iterative servers often use UDP connections while concurrent servers use TCP connections
Stateless vs. Stateful servers: the problem of reading a remote file by steps. File reading requests arrive with dealy
A SERVERA CLIENT
Open file XYZread first 50 byteswhile (not end of file XYZ)
read next 50 bytesclose file
?
Request open file XYZ
Answer file XYZ exists and ready
A stateless server means it does not remember previous requests
A SERVERA CLIENT
Open file XYZread first 50 byteswhile (not end of file XYZ)
read next 50 bytesclose file
?
Request read bytes 0 to 49 from file XYZ
Answer the content of the bytes
The client must provide all the information again !
A SERVERA CLIENT
Open file XYZread first 50 byteswhile (not end of file XYZ)
read next 50 bytesclose file
?
Request read bytes 50 to 99 from file XYZ
Answer the content of the bytes
This may cause a lot of network traffic, especially if there are many
clients
A SERVERA CLIENT
Open file XYZread first 50 byteswhile (not end of file XYZ)
read next 50 bytesclose file
?
Request read bytes X to X+50 from file XYZ
Answer the content of the bytes
Stateful Server: it mantains some information abut what clients did
A SERVERA CLIENT
Open file XYZread first 50 byteswhile (not end of file XYZ)
read next 50 bytesclose file
?
Request open file XYZ
Answer: file pointer to file XYZ
Pointer File Position
0 XYZ 0
1 FILE ZXY 50
The information the client has to pass to the server is much smaller
A SERVERA CLIENT
Open file XYZread first 50 byteswhile (not end of file XYZ)
read next 50 bytesclose file
?
Request 0, read 50
Answer: the content
Pointer File Position
0 XYZ 50
1 FILE ZXY 50
The information at the server should be updated with every request
A SERVERA CLIENT
Open file XYZread first 50 byteswhile (not end of file XYZ)
read next 50 bytesclose file
?
Request 0, read 50
Answer: the content
Pointer File Position
0 XYZ 100
1 FILE ZXY 50
It is important to close the file !!!
A SERVERA CLIENT
Open file XYZread first 50 byteswhile (not end of file XYZ)
read next 50 bytesclose file
?
Request 0, read 50
Answer: the content
Pointer File Position
0 XYZ 100
1 FILE ZXY 50
Problems with stateful servers
• They are more efficient but they are more sensitive to errors, especially with UDP connections
• What if a request does not arrive to the server?
• What if the client collapses without telling it?
New products between the application and transport layer make distributed
programming much easier
Libraries for distributedprogramming (middleware)
RPC, CORBA, RMI
RPC: remote procedure call
Remote process 1. Obtain reference2. Call procedure &Receive results as the procedure were in the calling computer
RMI in JAVA (similar to CORBA)
Creates and publishesa Remote Object
Other applications use and share this object (data)
server
Problems to solve
• How does the client which are the name of the procedures that can be invoked (interface file)
• How can a client know where to find a remote object? (server)
• How is communication implemented? (http protocols)
• What do I gain? (protocols!)
Programming and running a RMI
Interface Interface
Implementation
RMIInterface
Server prog.
Client prog.
The RMI-Registry server