overview
DESCRIPTION
Socket programming with TCP Socket programming with UDP Building a Web server. Overview. a host-local , application-created , OS-controlled interface (a “door”) into which application process can both send and receive messages to/from another application process. socket. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/1.jpg)
1
Overview
Socket programming with TCP
Socket programming with UDP
Building a Web server
![Page 2: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/2.jpg)
2
Socket programming
Socket API introduced in BSD4.1 UNIX,
1981 explicitly created, used,
released by apps client/server paradigm two types of transport
service via socket API: unreliable datagram reliable, byte stream-
oriented
a host-local, application-created,
OS-controlled interface (a “door”) into which
application process can both send and
receive messages to/from another
application process
socket
Goal: learn how to build client/server application that communicate using sockets
![Page 3: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/3.jpg)
3
Socket-programming using TCP
Socket: a door between application process and end-end-transport protocol (UCP or TCP)
TCP service: reliable transfer of bytes from one process to another
process
TCP withbuffers,
variables
socket
controlled byapplicationdeveloper
controlled byoperating
system
host orserver
process
TCP withbuffers,
variables
socket
controlled byapplicationdeveloper
controlled byoperatingsystem
host orserver
internet
![Page 4: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/4.jpg)
4
Socket programming with TCP
Example client-server app:
1) client reads line from standard input (inFromUser stream) , sends to server via socket (outToServer stream)
2) server reads line from socket3) server converts line to
uppercase, sends back to client
4) client reads, prints modified line from socket (inFromServer stream)
outT
oSer
ver
to network from network
inFr
omS
erve
r
inFr
omU
ser
keyboard monitor
Process
clientSocket
inputstream
inputstream
outputstream
TCPsocket
Clientprocess
client TCP socket
![Page 5: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/5.jpg)
5
Client/server socket interaction: TCP
wait for incomingconnection requestconnectionSocket =welcomeSocket.accept()
create socket,port=x, forincoming request:welcomeSocket =
ServerSocket()
create socket,connect to hostid, port=xclientSocket =
Socket()
closeconnectionSocket
read reply fromclientSocket
closeclientSocket
Server (running on hostid) Client
send request usingclientSocketread request from
connectionSocket
write reply toconnectionSocket
TCP connection setup
![Page 6: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/6.jpg)
6
Example: Java client (TCP)
import java.io.*; import java.net.*; class TCPClient {
public static void main(String argv[]) throws Exception { String sentence; String modifiedSentence;
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("hostname", 6789);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
Createinput stream
Create client socket,
connect to server
Createoutput stream
attached to socket
![Page 7: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/7.jpg)
7
Example: Java client (TCP), cont.
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + '\n');
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close(); } }
Createinput stream
attached to socket
Send lineto server
Read linefrom server
![Page 8: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/8.jpg)
8
Example: Java server (TCP)import java.io.*; import java.net.*;
class TCPServer {
public static void main(String argv[]) throws Exception { String clientSentence; String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(6789); while(true) { Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
Createwelcoming socket
at port 6789
Wait, on welcomingsocket for contact
by client
Create inputstream, attached
to socket
![Page 9: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/9.jpg)
9
Example: Java server (TCP), cont
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence); } } }
Read in linefrom socket
Create outputstream,
attached to socket
Write out lineto socket
End of while loop,loop back and wait foranother client connection
![Page 10: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/10.jpg)
10
Outline
Socket programming with TCP
Socket programming with UDP
Building a Web server
![Page 11: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/11.jpg)
11
Socket programming with UDP
UDP: no “connection” between client and server
no handshaking sender explicitly attaches
IP address and port of destination to each packet
server must extract IP address, port of sender from received packet
UDP: transmitted data may be received out of order, or lost
application viewpoint
UDP provides unreliable transfer of groups of bytes (“datagrams”)
between client and server
![Page 12: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/12.jpg)
12
Client/server socket interaction: UDP
closeclientSocket
Server (running on hostid)
read reply fromclientSocket
create socket,clientSocket = DatagramSocket()
Client
Create, address (hostid, port=x,send datagram request using clientSocket
create socket,port=x, forincoming request:serverSocket = DatagramSocket()
read request fromserverSocket
write reply toserverSocketspecifying clienthost address,port number
![Page 13: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/13.jpg)
13
Example: Java client (UDP)
sendP
ack
et
to network from network
rece
iveP
ack
et
inF
rom
Use
r
keyboard monitor
Process
clientSocket
UDPpacket
inputstream
UDPpacket
UDPsocket
Output: sends packet (TCP sent “byte stream”)
Input: receives packet (TCP received “byte stream”)
Clientprocess
client UDP socket
![Page 14: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/14.jpg)
14
Example: Java client (UDP)
import java.io.*; import java.net.*; class UDPClient { public static void main(String args[]) throws Exception { BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket clientSocket = new DatagramSocket(); InetAddress IPAddress = InetAddress.getByName("hostname"); byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024]; String sentence = inFromUser.readLine();
sendData = sentence.getBytes();
Createinput stream
Create client socket
Translate hostname to IP
address using DNS
![Page 15: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/15.jpg)
15
Example: Java client (UDP), cont.
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876); clientSocket.send(sendPacket); DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); String modifiedSentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedSentence); clientSocket.close(); }
}
Create datagram with data-to-send,
length, IP addr, port
Send datagramto server
Read datagramfrom server
![Page 16: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/16.jpg)
16
Example: Java server (UDP)
import java.io.*; import java.net.*; class UDPServer { public static void main(String args[]) throws Exception { DatagramSocket serverSocket = new DatagramSocket(9876); byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; while(true) { DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
Createdatagram socket
at port 9876
Create space forreceived datagram
Receivedatagra
m
![Page 17: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/17.jpg)
17
Example: Java server (UDP), cont
String sentence = new String(receivePacket.getData()); InetAddress IPAddress = receivePacket.getAddress(); int port = receivePacket.getPort(); String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); serverSocket.send(sendPacket); } }
}
Get IP addrport #, of
sender
Write out datagramto socket
End of while loop,loop back and wait foranother datagram
Create datagramto send to client
![Page 18: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/18.jpg)
18
Outline
Socket programming with TCP
Socket programming with UDP
Building a Web server
![Page 19: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/19.jpg)
19
Building a simple Web server
handles one HTTP request
accepts the request parses header obtains requested file
from server’s file system
creates HTTP response message: header lines + file
sends response to client
after creating server, you can request file using a browser (eg IE explorer)
see text for details
![Page 20: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/20.jpg)
20
Application Later: Summary
Application architectures client-server P2P hybrid
application service requirements: reliability, bandwidth, delay
Internet transport service model connection-oriented, reliable:
TCP unreliable, datagrams: UDP
Our study of network apps now complete!
specific protocols: HTTP FTP SMTP, POP, IMAP DNS
socket programming
![Page 21: Overview](https://reader035.vdocuments.mx/reader035/viewer/2022062500/5681538e550346895dc19234/html5/thumbnails/21.jpg)
21
Application Layer: Summary
typical request/reply message exchange: client requests info or
service server responds with
data, status code
message formats: headers: fields giving
info about data data: info being
communicated
Most importantly: learned about protocols
control vs. data msgs in-band, out-of-band
centralized vs. decentralized
stateless vs. stateful reliable vs. unreliable msg
transfer “complexity at network
edge”