Networking with Java 1. Introduction to Networking 2.

Slides:



Advertisements
Similar presentations
CS Network Programming CS 3331 Fall CS 3331 Outline Socket programming Remote method invocation (RMI)
Advertisements

MCT620 – Distributed Systems
AP STUDY SESSION 2.
1
Network Programming and Java Sockets
Copyright © 2003 Pearson Education, Inc. Slide 1 Computer Systems Organization & Architecture Chapters 8-12 John D. Carpinelli.
1 Hyades Command Routing Message flow and data translation.
4 Copyright © 2005, Oracle. All rights reserved. Creating the Web Tier: Servlets.
Socket UDP H. Fauconnier 1-1 M2-Internet Java. UDP H. Fauconnier M2-Internet Java 2.
Break Time Remaining 10:00.
Turing Machines.
PP Test Review Sections 6-1 to 6-6
TCP/IP Protocol Suite 1 Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Chapter 2 The OSI Model and the TCP/IP.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Outline 24.1 Test-Driving the Ticket Information Application.
Operating Systems Operating Systems - Winter 2010 Chapter 3 – Input/Output Vrije Universiteit Amsterdam.
Exarte Bezoek aan de Mediacampus Bachelor in de grafische en digitale media April 2014.
Chapter 20 Network Layer: Internet Protocol
Inter-Process Communication: Network Programming using TCP Java Sockets Dr. Rajkumar Buyya Cloud Computing and Distributed Systems (CLOUDS) Laboratory.
Sample Service Screenshots Enterprise Cloud Service 11.3.
Copyright © 2012, Elsevier Inc. All rights Reserved. 1 Chapter 7 Modeling Structure with Blocks.
Nov-03 ©Cisco Systems CCNA Semester 1 Version 3 Comp11 Mod11 – St. Lawrence College – Cornwall Campus, ON, Canada – Clark slide 1 Cisco Systems CCNA Version.
1 Network Programming and Java Sockets Rajkumar Buyya Grid Computing and Distributed Systems (GRIDS) Laboratory Dept. of Computer Science and Software.
Network Fundamentals – Chapter 4 Sandra Coleman, CCNA, CCAI
: 3 00.
1 hi at no doifpi me be go we of at be do go hi if me no of pi we Inorder Traversal Inorder traversal. n Visit the left subtree. n Visit the node. n Visit.
Clock will move after 1 minute
1 © 2004, Cisco Systems, Inc. All rights reserved. CCNA 1 v3.1 Module 9 TCP/IP Protocol Suite and IP Addressing.
Select a time to count down from the clock above
Distributed Computing 9. Sorting - a lower bound on bit complexity Shmuel Zaks ©
Socket Programming ENTERPRISE JAVA. 2 Content  Sockets  Streams  Threads  Readings.
Chapter 22 Internet Networking. CHAPTER GOALS To understand the concept of sockets To learn how to send and receive data through sockets To implement.
TCP/IP Protocol Suite 1 Chapter 18 Upon completion you will be able to: Remote Login: Telnet Understand how TELNET works Understand the role of NVT in.
Multiplexing/Demux. CPSC Transport Layer 3-2 Multiplexing/demultiplexing application transport network link physical P1 application transport network.
Prepared By E. Musa Alyaman1 URLs, InetAddresses, and URLConnections Chapter 9.
Socket Programming.
1 Java Networking – Part I CS , Spring 2008/9.
1 Java Networking CS , Spring 2008/9. 2 Today’s Menu Networking Basics  TCP, UDP, Ports, DNS, Client-Server Model TCP/IP in Java Sockets URL 
1 Networking with Java 2: The Server Side. 2 Some Terms Mentioned Last Week TCP -Relatively slow but enables reliable byte-stream transmission UDP -Fast.
Networking with Java 1: The Client Side. Introduction to Networking.
Networking Support In Java Nelson Padua-Perez Bill Pugh Department of Computer Science University of Maryland, College Park.
1 Java Networking – part I CS , Winter 2007/8.
Networking with Java. Introduction to Networking.
13-Jul-15 Sockets and URLs. 2 Sockets A socket is a low-level software device for connecting two computers together Sockets can also be used to connect.
CEG3185 Tutorial 4 Prepared by Zhenxia Zhang Revised by Jiying Zhao (2015w)
1 Networking with Java. 2 Introduction to Networking.
1 Java Networking CS , Spring Today’s Menu Networking Basics  TCP, UDP, Ports, DNS, Client-Server Model TCP/IP in Java Sockets URL  The.
Socket Programming -What is it ? -Why bother ?. Basic Interface for programming networks at transport level It is communication end point Used for inter.
CS 352-Socket Programming & Threads Dept. of Computer Science Rutgers University (Thanks,this slides taken from er06/
Simple Web Services. Internet Basics The Internet is based on a communication protocol named TCP (Transmission Control Protocol) TCP allows programs running.
DBI Representation and Management of Data on the Internet.
RGEC MEERUT(IWT CS703) 1 Java Networking RGEC Meerut.
Practicum: - Client-Server Computing in Java Fundamental Data Structures and Algorithms Margaret Reid-Miller 13 April 2004.
Object Oriented Programming in Java Lecture 16. Networking in Java Concepts Technicalities in java.
1 Chapter 28 Networking. 2 Objectives F To comprehend socket-based communication in Java (§28.2). F To understand client/server computing (§28.2). F To.
Networks Sockets and Streams. TCP/IP in action server ports …65535 lower port numbers ( ) are reserved port echo7 time13 ftp20 telnet23.
27.1 Chapter 27 WWW and HTTP Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
Internet Applications (Cont’d) Basic Internet Applications – World Wide Web (WWW) Browser Architecture Static Documents Dynamic Documents Active Documents.
TCP/IP Protocol Stack IP Device Drivers TCPUDP Application Sockets (Gate to network) TCP: –Establish connection –Maintain connection during the communication.
Prepared by Dr. Jiying Zhao University of Ottawa Canada.
UNIT-6. Basics of Networking TCP/IP Sockets Simple Client Server program Multiple clients Sending file from Server to Client Parallel search server.
1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.
Java Programming II Java Network (I) Java Programming II.
Agenda Socket Programming The OSI reference Model The OSI protocol stack Sockets Ports Java classes for sockets Input stream and.
Network Programming Introduction
Networking with Java 2.
Network Programming Introduction
Sockets and URLs 17-Sep-18.
Sockets and URLs 13-Nov-18.
Sockets and URLs 3-Dec-18.
Presentation transcript:

Networking with Java 1

Introduction to Networking 2

Protocols 3 Hi TCP connection request Hi TCP connection reply Got the time? GET 2:00 time

Internet Architecture Model 4 Transport (TCP,UDP) DATA Link (LINK) HEADER DATA Network (IP) HEADERDATA Application (HTTP, FTP) DATA HEADER

TCP ( Transmission-Control Protocol) Enables symmetric byte-stream transmission between two endpoints (applications) Reliable communication channel TCP perform these tasks: – connection establishment by handshake (relatively slow) – division to numbered packets (transferred by IP) – error correction of packets (checksum) – acknowledgement and retransmission of packets – connection termination by handshake 5

UDP (User Datagram Protocol) Enables direct datagram (packet) transmission from one endpoint to another No reliability (except for data correction) – sender does not wait for acknowledgements – arrival order is not guaranteed – arrival is not guaranteed Used when speed is essential, even in cost of reliability – e.g., streaming media, games, Internet telephony, etc. 6

Ports A computer may have several applications that communicate with applications on remote computers through the same physical connection to the network When receiving a packet, how can the computer tell which application is the destination? Solution: each channel endpoint is assigned a unique port that is known to both the computer and the other endpoint 7

Ports (cont) Thus, an endpoint application on the Internet is identified by – A host name 32 bits IP-address – A 16 bits port Why dont we specify the port in a Web browser? 8

Known Ports Some known ports are – 20, 21: FTP – 23: TELNET – 25: SMTP – 110: POP3 – 80: HTTP – 119: NNTP Client Application web browser mail client

Sockets A socket is a construct that represents one end-point of a two-way communication channel between two programs running on the network Using sockets, the OS provides processes a file-like access to the channel – i.e., sockets are allocated a file descriptor, and processes can access (read/write) the socket by specifying that descriptor A specific socket is identified by the machine's IP and a port within that machine 10

Sockets (cont) A socket stores the IP and port number of the other end-point computer of the channel When writing to a socket, the written bytes are sent to the other computer and port (e.g., over TCP/IP) – That is, remote IP and port are attached to the packets When OS receives packets on the network, it uses their destination port to decide which socket should get the received bytes 11

Java Sockets Low-Level Networking 12

Java Sockets Java wraps OS sockets (over TCP) by the objects of class java.net.Socket new Socket(String remoteHost, int remotePort) creates a TCP socket and connects it to the remote host on the remote port (hand shake) Write and read using streams: – InputStream getInputStream() – OutputStream getOutputStream() 13

A Socket Example 14 import java.net.*; import java.io.*; public class SimpleSocket { public static void main(String[] args) throws IOException {... next slide... }

15 Socket socket = new Socket(" 80); InputStream istream = socket.getInputStream(); OutputStream ostream = socket.getOutputStream(); String request = "GET index.html HTTP/1.1\r\n" + "Host: + "Connection: close\r\n\r\n"; ostream.write(request.getBytes()); byte[] response = new byte[4096]; int bytesRead = -1; while ((bytesRead = istream.read(response)) >= 0) { System.out.write(response, 0, bytesRead); } socket.close(); Needed for forwarding for example

Timeout You can set timeout values to blocking method read() of Socket Use the method socket. setSoTimeout(milliseconds) If timeout is reached before the method returns, java.net.SocketTimeoutException is thrown 16

Java Sockets and HTTP 17

HTTP Message Structure A HTTP message has the following structure: 18 Request/Status-Line \r\n Header1: value1 \r\n Header2: value2 \r\n... HeaderN: valueN \r\n \r\n Message-Body

Reading HTTP Messages Several ways to interpret the bytes of the body – Binary: images, compressed files, class files,... – Text: ASCII, Latin-1, UTF-8,... Commonly, applications parse the headers of the message, and process the body according to the information supplied by the headers – E.g., Content-Type, Content-Encoding, Transfer- Encoding 19

An Example 20

Parsing the Headers So how are the headers themselves are represented? The headers of a HTTP message must be in US-ASCII format (1 byte per character) 21

Example: Extracting the Headers 22 Socket socket = new Socket(argv[0], 80); InputStream istream = socket.getInputStream(); OutputStream ostream = socket.getOutputStream(); String request = "GET / HTTP/1.1\r\n" + "Host: " + argv[0] + "\r\n" + "Connection: close\r\n\r\n"; ostream.write(request.getBytes()); StringBuffer headers = new StringBuffer(); int byteRead = 0; while ( !endOfHeaders(headers) && (byteRead = istream.read()) >= 0) { headers.append((char) byteRead); } System.out.print(headers); socket.close();

Example: Extracting the Headers (cont) 23 public static boolean endOfHeaders(StringBuffer headers) { int lastIndex = headers.length() - 1; if (lastIndex < 3 || headers.charAt(lastIndex) != '\n') return false; return ( headers.substring(lastIndex - 3, lastIndex + 1).equals("\r\n\r\n")); }

Persistent Connections According to HTTP/1.1, a server does not have to close the connection after fulfilling your request One connection (socket) can be used for several requests and responses send more requests – even while earlier responses are being transferred (pipelining) – saves slow start time how can the client know when one response ends and a new one begins? To avoid persistency, require explicitly by the header: Connection: close 24

URL and URLConnection High-Level Networking 25

Working with URLs URL (Uniform/Universal Resource Locator): a reference (an address) to a resource on the Internet 26 Protocol Host Name Port Number File Name Reference

The Class URL The class URL is used for parsing URLs Constructing URLs: –URL w3c1 = new URL(" –URL w3c2 = new URL("http"," –URL w3c3 = new URL(w3c2, "xhtml1/"); If the string is not an absolute URL, then it is considered relative to the URL 27

Parsing URLs The following methods of URL can be used for parsing URLs getProtocol(), getHost(), getPort(), getPath(), getFile(), getQuery(), getRef() 28

The class URLConnection To establish the actual resource, we can use the object URLConnection obtained by url.openConnection() If the protocol of the URL is HTTP, the returned object is of class HttpURLConnection This class encapsulates all socket management and HTTP directions required to obtain the resource 29

30 public class ContentExtractor { public static void main(String[] argv) throws Exception { URL url = new URL(argv[0]); System.out.println("Host: " + url.getHost()); System.out.println("Protocol: " + url.getProtocol()); System.out.println("----"); URLConnection con = url.openConnection(); InputStream stream = con.getInputStream(); byte[] data = new byte[4096]; int bytesRead = 0; while((bytesRead=stream.read(data))>=0) { System.out.write(data,0,bytesRead); }}}

About URLConnection The life cycle of a URLConnection object has two parts: – Before actual connection establishment Connection configuration – After actual connection establishment Content retrieval Passage from the first phase to the second is implicit – A result of calling some committing methods, like getDate() 31

About HttpURLConnection The HttpURLConnection class encapsulates all HTTP transaction over sockets, e.g., – Content decoding – Redirection – Proxy indirection You can control requests by its methods –setRequestMethod, setFollowRedirects, setRequestProperty, Read more about HttpURLConnection ClassHttpURLConnection Class

URLEncoder Contains a utility method encode for converting a string into an encoded format (used in URLs) To convert a string, each character is examined in turn: – Space is converted into a plus sign + –a - z, A - Z, 0 - 9,., -, * and _ remain the same. – The bytes of all special characters are replaced by hexadecimal numbers, preceded with % To decode an encoded string, use decode() of the class URLDecoder 33

Client-Server Model A common paradigm for distributed applications Asymmetry in connection establishment: – Server waits for client requests (daemon) at a well known address (IP+port) – Connection is established upon client request Once the connection is made, it can be either symmetric (TELNET) or asymmetric (HTTP) For example: Web servers and browsers 34

Client-Server Interaction 35

Client-Server Interaction 36

Client-Server Interaction 37

Client-Server Interaction 38

Client-Server Interaction 39

Java Sever Sockets 40

Java Sockets – A Reminder Java wraps OS sockets (over TCP) by the objects of class java.net.Socket new Socket(String remoteHost, int remotePort) creates a TCP socket and connects it to the remote host on the remote port (hand shake) Write and read using streams: – InputStream getInputStream() – OutputStream getOutputStream() 41

Java ServerSocket ServerSocket represents a socket that listens and waits for requests from clients Construction: –new ServerSocket(int port) – Why do we want to specify the port? Listen and accept incoming connections –Socket accept() – returns a new socket (with a new port) for the new channel – blocks until connection is made 42

43 public class EchoServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(8000); Socket socket = null; while (true) { try {... next slide... } catch (IOException exp) {... } finally { try {if (!socket.isClosed()) socket.close(); } catch (IOException e) {} } }}}

44 socket = serverSocket.accept(); String clientName = socket.getInetAddress().getHostName(); BufferedReader reader = new BufferedReader( new InputStreamReader(socket.getInputStream())); PrintStream writer = new PrintStream(socket.getOutputStream()); writer.println("Hello " + clientName + "!"); writer.flush(); String lineRead = null; while ((lineRead = reader.readLine()) != null) { writer.println("You wrote: " + lineRead); writer.flush(); } bytes chars

Accepting Connections Usually, the accept() method is executed within an infinite loop – i.e., while(true){...} Whenever accept() returns, a new thread is launched to handle that interaction (not in our example) Hence, the server can handle several requests concurrently 45

Timeout You can set timeout values to the blocking method –accept() of ServerSocket Use the method serverSocket. setSoTimeout(milliseconds) If timeout is reached before the method returns, java.net.SocketTimeoutException is thrown 46

Get Vs. Post Get – Returns the content of the requested URL – Usually a static resource Post – A block of data is sent with the request – Usually a program or a form 47

ContentExtractor – A Reminder 48 public class ContentExtractor { public static void main(String[] argv) throws Exception { URL url = new URL(argv[0]); System.out.println("Host: " + url.getHost()); System.out.println("Protocol: " + url.getProtocol()); System.out.println("----"); HttpURLConnection con = url.openConnection(); InputStream stream = con.getInputStream(); byte[] data = new byte[4096]; int bytesRead = 0; while((bytesRead=stream.read(data))>=0) { System.out.write(data,0,bytesRead); }}}

Sending POST Requests In order to send POST requests with HttpURLConnection, you have to do the following: – Enable connection output: con.setDoOutput(true); – Get the output stream: con.getOutputStream() This changes the method from GET to POST – Write the message body into the output stream – close the output stream (important!) 49

POST Example - SearchWalla 50 URL url = new URL(" URLConnection connection = url.openConnection(); connection.setDoOutput(true); String query = "q=" + URLEncoder.encode(argv[0], "UTF-8"); OutputStream out = connection.getOutputStream(); out.write(query.getBytes()); out.close(); InputStream in = connection.getInputStream(); int bytesRead = -1; byte[] response = new byte[4096]; while ((bytesRead = in.read(response)) >= 0) System.out.write(response, 0, bytesRead); in.close();

Sent Headers 51 POST / HTTP/1.1 User-Agent: Java/1.5.0_01 Host: find.walla.co.il Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive Content-type: application/x-www-form-urlencoded Content-Length: 18 q=Java+networking java SearchWalla "Java networking"

Not Covered: UDP Connections The URL, URLConnection, Socket and ServerSocket classes all use the TCP protocol to communicate over the network Java programs can also use UDP protocol for communication For that, use DatagramPacket, DatagramSocket, and MulticastSocket classes 52