1 Networking with Java. 2 Introduction to Networking.

Slides:



Advertisements
Similar presentations
Networking with Java 1. Introduction to Networking 2.
Advertisements

Introduction 2 1: Introduction.
CCNA – Network Fundamentals
Prepared By E. Musa Alyaman1 URLs, InetAddresses, and URLConnections Chapter 9.
Socket Programming.
1 Creating a network app Write programs that  run on different end systems and  communicate over a network.  e.g., Web: Web server software communicates.
1 Java Networking – Part I CS , Spring 2008/9.
1 Overview r Socket programming with TCP r Socket programming with UDP r Building a Web server.
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.
2: Application Layer1 Socket Programming. 2: Application Layer2 Socket-programming using TCP Socket: a door between application process and end- end-transport.
1 Java Networking – part I CS , Winter 2007/8.
TCP. Learning objectives Reliable Transport in TCP TCP flow and Congestion Control.
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.
Gursharan Singh Tatla Transport Layer 16-May
CEG3185 Tutorial 4 Prepared by Zhenxia Zhang Revised by Jiying Zhao (2015w)
What Can IP Do? Deliver datagrams to hosts – The IP address in a datagram header identify a host IP treats a computer as an endpoint of communication Best.
Process-to-Process Delivery:
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.
WXES2106 Network Technology Semester /2005 Chapter 4 TCP/IP CCNA1: Module 9, 10.3 and 11.
Simple Web Services. Internet Basics The Internet is based on a communication protocol named TCP (Transmission Control Protocol) TCP allows programs running.
2: Application Layer1 Socket programming Socket API r introduced in BSD4.1 UNIX, 1981 r explicitly created, used, released by apps r client/server paradigm.
Appendix F: Network Programming in Java ©SoftMoore ConsultingSlide 1.
Simple Web Services. Internet Basics The Internet is based on a communication protocol named TCP (Transmission Control Protocol) TCP allows programs running.
Application Protocols: HTTP CSNB534 Semester 2, 2007/2008 Asma Shakil.
© 2007 Cisco Systems, Inc. All rights reserved.Cisco Public ITE PC v4.0 Chapter 1 1 Network Services Networking for Home and Small Businesses – Chapter.
Simple Mail Transfer Protocol (SMTP)
Network Services Networking for Home & Small Business.
DBI Representation and Management of Data on the Internet.
© 2007 Cisco Systems, Inc. All rights reserved.Cisco Public 1 Version 4.0 OSI Transport Layer Network Fundamentals – Chapter 4.
TCP/IP Transport and Application (Topic 6)
RGEC MEERUT(IWT CS703) 1 Java Networking RGEC Meerut.
Application Layer 2-1 Chapter 2 Application Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.
1. I NTRODUCTION TO N ETWORKS Network programming is surprisingly easy in Java ◦ Most of the classes relevant to network programming are in the java.net.
Internet Protocol B Bhupendra Ratha, Lecturer School of Library and Information Science Devi Ahilya University, Indore
Lecture 9 Network programming. Manipulating URLs URL is an acronym for Uniform Resource Locator and is a reference (an address) to a resource on the Internet.
NETWORK PROGRAMMING.
Networks Sockets and Streams. TCP/IP in action server ports …65535 lower port numbers ( ) are reserved port echo7 time13 ftp20 telnet23.
Socket Programming Introduction. Socket Definition A network socket is one endpoint in a two-way communication flow between two programs running over.
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.
1 Lecture 9: Network programming. 2 Manipulating URLs URL is an acronym for Uniform Resource Locator and is a reference (an address) to a resource on.
Computer Network Architecture Lecture 6: OSI Model Layers Examples 1 20/12/2012.
URL Programming Mimi Opkins CECS277. What is a URL?  URL is an acronym for Uniform Resource Locator and is a reference (an address) to a resource on.
Agenda Socket Programming The OSI reference Model The OSI protocol stack Sockets Ports Java classes for sockets Input stream and.
TCP/IP1 Address Resolution Protocol Internet uses IP address to recognize a computer. But IP address needs to be translated to physical address (NIC).
Simple Web Services. Internet Basics The Internet is based on a communication protocol named TCP (Transmission Control Protocol) TCP allows programs running.
1 Network Communications A Brief Introduction. 2 Network Communications.
Network Programming. These days almost all devices.
Secure Sockets SSL (Secure Sockets Layer) is a standard security technology for establishing an encrypted link between a server and a client—typically.
Network Programming Introduction
MCA – 405 Elective –I (A) Java Programming & Technology
Networking for Home and Small Businesses – Chapter 6
Networking with Java 2.
Working at a Small-to-Medium Business or ISP – Chapter 7
Network Programming Introduction
Networking for Home and Small Businesses – Chapter 6
Working at a Small-to-Medium Business or ISP – Chapter 7
Working at a Small-to-Medium Business or ISP – Chapter 7
Process-to-Process Delivery:
Networking.
Networking for Home and Small Businesses – Chapter 6
Process-to-Process Delivery: UDP, TCP
Presentation transcript:

1 Networking with Java

2 Introduction to Networking

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

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

5 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

6 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.

7 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

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

9 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

10 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

11 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

12 Java Sockets Low-Level Networking

13 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()

14 A Socket Example 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 /~dbi/admin.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(); run the example Needed for forwarding for example

16 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 Read more about Socket ClassSocket Class

17 Java Sockets and HTTP

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

19 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

20 An Example

21 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)

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

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")); } Example: Extracting the Headers (cont)

24 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

25 URL and URLConnection High-Level Networking

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

27 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

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

29 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 Read more about URLConnection ClassURLConnection Class

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); }}} run the example

31 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()

32 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

33 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 Read more about URLEncoder ClassURLEncoder Class