communicate using sockets
end-transport protocol
application
socket
application
controlled by
transport
network
link
physical
transport
network
link
physical
controlled
Application Layer 2-94
principles of network
applications
architectures
requirements
Web and HTTP
FTP
mail
SMTP, POP3, IMAP
P2P applications
socket programming
with UDP and TCP
Application Layer 2-93
v no handshaking before sending data
port # to each packet
v rcvr extracts sender IP address and port# from
received packet
UDP: transmitted data may be lost or received
out-of-order
v UDP provides unreliable transfer of groups of bytes
Application Layer 2-96
programming
keyboard and sends the data to the server.
characters to uppercase.
the line on its screen.
Application Layer 2-95
Python UDPClient
include Python9s socket
library
create UDP socket for
server
get user keyboard
input
Attach server name, port to
message; send into socket
read reply characters from
socket into string
print out received string
and close socket
from socket import *
serverName = 8hostname9
serverPort = 12000
clientSocket = socket(socket.AF_INET,
socket.SOCK_DGRAM)
message = raw_input(9Input lowercase sentence:9)
clientSocket.sendto(message,(serverName, serverPort))
modifiedMessage, serverAddress =
clientSocket.recvfrom(2048)
print modifiedMessage
clientSocket.close()
Application Layer 2-98
socket(AF_INET,SOCK_DGRAM)
client
clientSocket =
socket(AF_INET,SOCK_DGRAM)
read datagram from
clientSocket
Application 2-97
v server process must first be
running
v
server must have created
socket (door) that
Creating TCP socket,
client TCP establishes
connection to server TCP
when contacted by client,
for server process to
communicate with that
particular client
multiple clients
source port numbers used
to distinguish clients
(more in Chap 3)
between client and server
Application Layer 2-100
Python UDPServer
from socket import *
serverPort = 12000
create UDP socket
bind socket to local port
number 12000
loop forever
Read from UDP socket into
message, getting client9s
address (client IP and port)
send upper case string
back to this client
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(('', serverPort))
print <The server is ready to receive=
while 1:
message, clientAddress = serverSocket.recvfrom(2048)
modifiedMessage = message.upper()
serverSocket.sendto(modifiedMessage, clientAddress)
Application Layer 2-99
Example app:TCP client
Python TCPClient
from socket import *
serverName = 9servername9
create TCP socket for
server, remote port 12000
No need to attach server
name, port
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName,serverPort))
sentence = raw_input(8Input lowercase sentence:9)
clientSocket.send(sentence)
modifiedSentence = clientSocket.recv(1024)
print 8From Server:9, modifiedSentence
clientSocket.close()
Application Layer 2-102
create socket,
port=x, for incoming
request:
serverSocket = socket()
wait for incoming
connection request
connectionSocket =
connection setup
create socket,
connect to
hostid, port=
x
clientSocket = socket()
serverSocket.accept()
send request using
read request from
clientSocket
connectionSocket
write reply to
connectionSocket
close
connectionSocket
read reply from
clientSocket
close
clientSocket
Application Layer 2-101
Python TCPServer
from socket import *
create TCP welcoming
socket
server begins listening for
incoming TCP requests
loop forever
server waits on accept()
for incoming requests, new
socket created on return
serverPort = 12000
serverSocket = socket(AF_INET,SOCK_STREAM)
serverSocket.bind((89,serverPort))
serverSocket.listen(1)
print 8The server is ready to receive9
while 1:
connectionSocket, addr = serverSocket.accept()
read bytes from socket (but
not address as in UDP)
close connection to this
client (but
not welcoming
socket)
sentence = connectionSocket.recv(1024)
capitalizedSentence = sentence.upper()
connectionSocket.send(capitalizedSentence)
connectionSocket.close()
Application Layer 2-103

Preview text:

principles of network P2P applications applications socket programming architectures with UDP and TCP requirements Web and HTTP FTP mail SMTP, POP3, IMAP Application Layer 2-93 communicate using sockets end-transport protocol application socket application control ed by transport transport network network control ed link link physical physical Application Layer 2-94 programming
keyboard and sends the data to the server. characters to uppercase. the line on its screen. Application Layer 2-95
v no handshaking before sending data port # to each packet
v rcvr extracts sender IP address and port# from received packet
UDP: transmitted data may be lost or received out-of-order
v UDP provides unreliable transfer of groups of bytes Application Layer 2-96 client clientSocket = socket(AF_INET,SOCK_DGRAM) socket(AF_INET,SOCK_DGRAM) read datagram from clientSocket Application 2-97 Python UDPClient include Python9s socket from socket import * library serverName = 8hostname9 serverPort = 12000 create UDP socket for
clientSocket = socket(socket.AF_INET, server socket.SOCK_DGRAM) get user keyboard input
message = raw_input(9Input lowercase sentence:9) Attach server name, port to message; send into socket
clientSocket.sendto(message,(serverName, serverPort)) read reply characters from
modifiedMessage, serverAddress = socket into string clientSocket.recvfrom(2048) print out received string print modifiedMessage and close socket clientSocket.close() Application Layer 2-98 Python UDPServer from socket import * serverPort = 12000 create UDP socket
serverSocket = socket(AF_INET, SOCK_DGRAM) bind socket to local port
serverSocket.bind((' , serverPort)) number 12000
print <The server is ready to receive= loop forever while 1: Read from UDP socket into
message, clientAddress = serverSocket.recvfrom(2048) message, getting client9s address (client IP and port)
modifiedMessage = message.upper() send upper case string
serverSocket.sendto(modifiedMessage, clientAddress) back to this client Application Layer 2-99 when contacted by client,
v server process must first be running for server process to communicate with that v server must have created socket (door) that particular client multiple clients source port numbers used Creating TCP socket, to distinguish clients (more in Chap 3) client TCP establishes connection to server TCP between client and server Application Layer 2-100 create socket, port=x, for incoming request: serverSocket = socket() wait for incoming create socket, connection request
connect to hostid, port=x
connectionSocket = connection setup clientSocket = socket() serverSocket.accept() send request using read request from clientSocket connectionSocket write reply to connectionSocket read reply from clientSocket close connectionSocket close clientSocket Application Layer 2-101 Example app:TCP client Python TCPClient from socket import * serverName = 9servername9 serverPort = 12000 create TCP socket for server, remote port 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName,serverPort))
sentence = raw_input(8Input lowercase sentence:9) No need to attach server clientSocket.send(sentence) name, port
modifiedSentence = clientSocket.recv(1024)
print 8From Server:9, modifiedSentence clientSocket.close() Application Layer 2-102 Python TCPServer from socket import * serverPort = 12000 create TCP welcoming socket
serverSocket = socket(AF_INET,SOCK_STREAM)
serverSocket.bind((89,serverPort)) server begins listening for incoming TCP requests serverSocket.listen(1)
print 8The server is ready to receive9 loop forever while 1: server waits on accept()
connectionSocket, addr = serverSocket.accept() for incoming requests, new socket created on return
sentence = connectionSocket.recv(1024) read bytes from socket (but not address as in UDP)
capitalizedSentence = sentence.upper() close connection to this
connectionSocket.send(capitalizedSentence)
client (but not welcoming socket) connectionSocket.close() Application Layer 2-103