Download presentation
Presentation is loading. Please wait.
1
Transport layer (last part) Application layer
CSE 524: Lecture 14 Transport layer (last part) Application layer
2
Administrative Homework #4 due today Reading assignment Chapter 2
3
Transport layer Done except for TCP Reno fast recovery This class
Finish TCP Reno fast recovery Start application layer Socket programming HTTP
4
TL: Reno fast recovery example
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 15 16 17 18 19 20 21 22 23 24 cwnd=8 base 23 22 21 20 19 18 17 16 S D Ack16 (15)
5
TL: Reno fast recovery example
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 15 16 17 18 19 20 21 22 23 24 cwnd=8 base 23 22 21 20 19 18 17 16 X S D
6
TL: Reno fast recovery example
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 15 16 17 18 19 20 21 22 23 24 cwnd=8 23 22 21 20 19 18 base S D Ack16 (17) S D Ack16 (17) Ack16 (18) Ack16 (19) Ack16 (20) Ack16 (21) Ack16 (22) Ack16 (23) 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 15 16 17 18 19 20 21 22 23 24 cwnd=8 base
7
TL: Reno fast recovery example
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 15 16 17 18 19 20 21 22 23 24 3rd Dup. Ack 13 cwnd=8 S D base Ack16 (17) Ack16 (18) Ack16 (19) Ack16 (20) Ack16 (21) Ack16 (22) Ack16 (23) 16 S D Ack16 (19) Ack16 (20) Ack16 (21) Ack16 (22) Ack16 (23) 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 15 16 17 18 19 20 21 22 23 24 cwnd_to_use_after_recovery=4 inflated_cwnd=4+3=7 base
8
TL: Reno fast recovery example
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 15 16 17 18 19 20 21 22 23 24 16 cwnd_to_use_after_recovery=4 inflated_cwnd=8 base S D Ack16 (20) Ack16 (21) Ack16 (22) Ack16 (23) 24 16 S D Ack16 (21) Ack16 (22) Ack16 (23) 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 cwnd_to_use_after_recovery=4 inflated_cwnd=9 base
9
TL: Reno fast recovery example
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 15 16 17 18 19 20 21 22 23 24 cwnd_to_use_after_recovery=4 inflated_cwnd=12 base 27 26 25 24 S D Ack24 (16) 27 26 25 24 S D 15 16 17 18 19 20 21 22 23 24 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 cwnd=4 base
10
TL: Reno fast recovery example
What if the retransmission is lost? Window inflation to support sending at halved rate until eventual RTO Reference
11
Application layer Network programming Application layer functions
API to transport layer BSD socket API java.net API Application layer functions Specific application layers http ftp smtp dns
12
AL: Network programming
How can applications programmatically access TCP/UDP/IP? Many possible interfaces Too many to teach adequately in detail Socket APIs BSD socket API Java socket API Other APIs Client-side Java URLconnections Server-side Java servlets RPC, CORBA, Java RMI (not covered)
13
AL: Socket programming
Socket API introduced in BSD4.1 UNIX, 1981 explicitly created, used, released by apps client/server paradigm three main types of transport service via socket API: unreliable datagram reliable, byte stream-oriented raw IP datagrams a host-local, application-created/owned, OS-controlled interface (a “door”) into which application process can both send and receive messages to/from another (remote or local) application process socket
14
AL: 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 controlled by application developer controlled by application developer process TCP with buffers, variables socket process TCP with buffers, variables socket controlled by operating system controlled by operating system internet host or server host or server
15
AL: Socket programming with TCP
Client must contact server server process must first be running server must have created socket (door) that welcomes client’s contact Client contacts server by: creating client-local TCP socket specifying IP address, port number of server process When client creates socket: client TCP establishes connection to server TCP When contacted by client, server TCP creates new socket for server process to communicate with client allows server to talk with multiple clients (using multiple sockets) TCP provides reliable, in-order transfer of bytes (“pipe”) between client and server application viewpoint
16
AL: BSD sockets in C/Unix
Socket API (socket.h) socket(): create unnamed socket (data structure) UDP (SOCK_DGRAM), TCP (SOCK_STREAM) IP (SOCK_RAW) bind(): name socket (bind local address to socket) listen(): enable socket to accept connections accept(): get connect() request from listen queue, allocate file descriptor for new socket connect(): initiate connection on a socket (TCP handshake) send(), sendto(), sendmsg(), writev(), write(): send data recv(), recvfrom(), recvmsg(), readv(), read(): receive data setsockopt(), getsockopt(): set socket options (such as buffer sizes, flag fields) close(), shutdown(): teardown connection
17
AL: BSD sockets in action
UDP example TCP example client server client server socket() socket() socket() bind() bind() socket() bind() connect() listen() sendto() accept() recvfrom() write() read() sendto() write() recvfrom() read()
18
AL: BSD example For reference only….
19
AL: Java network programming
Java network applications java.net package System-dependent implementations
20
AL: Java installation on church/state
Programming assignment J2SE 1.3 javac java compiler java java interpreter Example program
21
AL: java.net classes Low-level networking classes (Sockets and Packets) High-level URL networking classes java.lang.Object java.net.Socket java.net.ServerSocket java.net.DatagramSocket java.net.MulticastSocket java.net.DatagramPacket java.net.URL java.net.URLConnection java.net.HttpURLConnection java.net.URLencoder java.net.InetAddress
22
AL: java.net.Socket Constructors Some methods Socket(InetAddress, int)
Socket(String, int) Socket(InetAddress, int, InetAddress, int) Some methods getInputStream() getOutputStream getInetAddress() getPort() getLocalAddress() getLocalPort() get/set individual socket options
23
AL: java.net.ServerSocket
Constructors Socket(int) Socket(int, int) // backlog specified Socket(int, int, InetAddress) // local address and backlog specified Some methods accept() getInetAddress() getLocalPort()
24
AL: Socket programming with TCP
Example client-server app: client reads line from standard input (inFromUser stream) , sends to server via socket (outToServer stream) server reads line from socket server converts line to uppercase, sends back to client client reads, prints modified line from socket (inFromServer stream) Input stream: sequence of bytes into process Output stream: sequence of bytes out of process outToServer iinFromServer inFromUser client socket
25
AL: Java client/server socket interaction: TCP
Server (running on hostid) Client create socket, port=x, for incoming request: welcomeSocket = ServerSocket() TCP connection setup close connectionSocket read reply from clientSocket create socket, connect to hostid, port=x clientSocket = Socket() wait for incoming connection request connectionSocket = welcomeSocket.accept() send request using clientSocket read request from connectionSocket write reply to
26
AL: 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()); Create input stream Create client socket, connect to server Create output stream attached to socket
27
AL: Example: Java client (TCP), cont.
Create input stream attached to socket 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(); } Send line to server Read line from server
28
AL: 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())); Create welcoming socket at port 6789 Wait, on welcoming socket for contact by client Create input stream, attached to socket
29
AL: Example: Java server (TCP), cont
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream()); clientSentence = inFromClient.readLine(); capitalizedSentence = clientSentence.toUpperCase() + '\n'; outToClient.writeBytes(capitalizedSentence); } Create output stream, attached to socket Read in line from socket Write out line to socket End of while loop, loop back and wait for another client connection
30
AL: Socket programming with UDP
UDP: no “connection” between client and server no handshaking sender explicitly attaches IP address and port of destination server must extract IP address, port of sender from received datagram 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
31
AL: java.net.DatagramSocket
Constructors DatagramSocket() DatagramSocket(int) // bind to specific port DatagramSocket(int, InetAddress) // specify local address Some methods getLocalAddress() getLocalPort() receive(DatagramPacket) send(DatagramPacket) get/set individual socket options
32
AL: java.net.DatagramPacket
Constructors DatagramPacket(byte[], int) // receiving packets DatagramPacket(byte[], int, InetAddress, int) // sending packets Some methods getAddress() // remote address getPort() // remote port getLength() // get packet length getData() // return data received or to be sent setAddress(InetAddress) // set remote address setData(byte[]) // set packet data setLength(int) // set packet length setPort(int) // set remote port
33
AL: Client/server socket interaction: UDP
Server (running on hostid) create socket, clientSocket = DatagramSocket() Client Create, address (hostid, port=x, send datagram request using clientSocket create socket, port=x, for incoming request: serverSocket = DatagramSocket() read request from serverSocket close clientSocket read reply from clientSocket write reply to serverSocket specifying client host address, port umber
34
AL: 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(); Create input stream Create client socket Translate hostname to IP address using DNS
35
AL: Example: Java client (UDP), cont.
Create datagram with data-to-send, length, IP addr, port 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(); } Send datagram to server Read datagram from server
36
AL: 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); Create datagram socket at port 9876 Create space for received datagram Receive datagram
37
AL: 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 addr port #, of sender Create datagram to send to client Write out datagram to socket End of while loop, loop back and wait for another datagram
38
AL: High-level Java networking classes
Socket/Packet Low level building blocks Must implement all application-level logic Many protocols based on URLs and/or tunneled in http Program at a higher-level to hide underlying protocol details Do not re-implement http, URL parsing, mime handling for each application
39
AL: High-level client-side Java networking classes
java.net.URL Represent a URL object java.net.URLConnection Represent a connection to a URL which can be read and written from java.net.HttpURLConnection Subclass of URLConnection for URLs
40
AL: High-level server-side Java networking classes
Servlets Dynamically generate content Implement common protocol header logic Example http servlets Cookies Content-type Content-length Servlet classes javax.servlet.Servlet init() service() destroy() javax.servlet.ServletRequest javax.servlet.ServletResponse javax.servlet.HttpServlet javax.servlet.HttpServletRequest javax.servlet.HttpServletResponse
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.