Network Programming OSI Model Client-server programming.

Slides:



Advertisements
Similar presentations
CSCI Java Networking1 Java Net Classes ClassDescription DatagramPacketThis class represents a datagram packet. DatagramSocketThis class represents.
Advertisements

Socket Programming By Ratnakar Kamath. What Is a Socket? Server has a socket bound to a specific port number. Client makes a connection request. Server.
Jan Java Networking UDP Yangjun Chen Dept. Business Computing University of Winnipeg.
Socket Programming.
User Datagram Protocol. Introduction UDP is a connectionless transport protocol, i.e. it doesn't guarantee either packet delivery or that packets arrive.
Prepared By E. Musa Alyaman1 User Datagram Protocol (UDP) Chapter 5.
1 Java Networking – Part I CS , Spring 2008/9.
WECPP1 Java networking Jim Briggs based on notes by Amanda Peart based on Bell & Parr's bonus chapter
1 L53 Networking (2). 2 OBJECTIVES In this chapter you will learn:  To understand Java networking with URLs, sockets and datagrams.  To implement Java.
Networking Support In Java 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Java Socket Support Presentation by: Lijun Yuan Course Number: cs616.
Client/Server In Java An Introduction to TCP/IP and Sockets.
Networking Support In Java Nelson Padua-Perez Bill Pugh Department of Computer Science University of Maryland, College Park.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 25 Networking.
Networking Support In Java 2 Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
CEG3185 Tutorial 4 Prepared by Zhenxia Zhang Revised by Jiying Zhao (2015w)
Networking in Java Representation and Management of Data on the Internet.
1 Inter-Process Communication: Network Programming using TCP Java Sockets Rajkumar Buyya Grid Computing and Distributed Systems (GRIDS) Laboratory Dept.
Greg Jernegan Brandon Simmons. The Beginning…  The problem Huge demand for internet enabled applications and programs that communicate over a network.
Socket Programming -What is it ? -Why bother ?. Basic Interface for programming networks at transport level It is communication end point Used for inter.
Babak Esfandiari (based on slides by Qusay Mahmoud)
CS4273: Distributed System Technologies and Programming I Lecture 5: Java Socket Programming.
SOCKET PROGRAMMING. Client/Server Communication At a basic level, network-based systems consist of a server, client, and a media for communication as.
Multicast Sockets What is a multicast socket?
TCP/IP protocols Communication over Internet is mostly TCP/IP (Transmission Control Protocol over Internet Protocol) TCP/IP "stack" is software which allows.
 Socket  The combination of an IP address and a port number. (RFC 793 original TCP specification)  The name of the Berkeley-derived application programming.
VIII. UDP Datagrams and Sockets. The User Datagram Protocol (UDP) is an alternative protocol for sending data over IP that is very quick, but not reliable:
DBI Representation and Management of Data on the Internet.
1 CSCD 330 Network Programming Winter 2015 Some Material in these slides from J.F Kurose and K.W. Ross All material copyright Lecture 6 Application.
UDP vs TCP UDP Low-level, connectionless No reliability guarantee TCP Connection-oriented Not as efficient as UDP.
RGEC MEERUT(IWT CS703) 1 Java Networking RGEC Meerut.
Socket Programming in Java CS587x Lecture 4 Department of Computer Science Iowa State University.
Practicum: - Client-Server Computing in Java Fundamental Data Structures and Algorithms Margaret Reid-Miller 13 April 2004.
1 What is the Internet? Hosts or end-systems PCs, workstations, servers PDAs, phones, toasters Communication links fiber, copper, radio, satellite Routers.
1 A TCP/IP Application Programming Perspective Chris Greenhalgh G53ACC.
Object Oriented Programming in Java Lecture 16. Networking in Java Concepts Technicalities in java.
Li Tak Sing COMPS311F. Case study: consumers and producers A fixed size buffer which can hold at most certain integers. A number of producers which generate.
Java Sockets Programming
1 Network Programming and Java Sockets. 2 Network Request Result a client, a server, and network Client Server Client machine Server machine Elements.
L 2 - 1 3( 1/ 20) : Java Network Programming. The Socket API The previous contents describe client-server interaction that application programs use when.
What is a Network? Computer network Computer network a set of computers using common protocols to communicate over connecting transmission media. a set.
Socket-Programming.  Establish contact (connection).  Exchange information (bi-directional).  Terminate contact.
Networks Sockets and Streams. TCP/IP in action server ports …65535 lower port numbers ( ) are reserved port echo7 time13 ftp20 telnet23.
 2003 Joel C. Adams. All Rights Reserved. Calvin CollegeDept of Computer Science(1/11) Java Sockets and Simple Networking Joel Adams and Jeremy Frens.
Sockets For Clients Instructors: Fu-Chiung Cheng ( 鄭福炯 ) Associate Professor Computer Science & Engineering Tatung University.
12/5/2015.net 1 system.net Contains any network functionallity you would need in c# Several sub namespaces exists to allow for more fined control –System.Net.Sockets.
By Vivek Dimri. Basic Concepts on Networking IP Address – Protocol – Ports – The Client/Server Paradigm – Sockets The Java Networking Package – The InetAddress.
CSI 3125, Preliminaries, page 1 Networking. CSI 3125, Preliminaries, page 2 Inetaddress Class When establishing a connection across the Internet, addresses.
TCP/IP Protocol Stack IP Device Drivers TCPUDP Application Sockets (Gate to network) TCP: –Establish connection –Maintain connection during the communication.
UNIT-6. Basics of Networking TCP/IP Sockets Simple Client Server program Multiple clients Sending file from Server to Client Parallel search server.
Java Programming II Java Network (I) Java Programming II.
MT311 Java Application Development and Programming Languages Li Tak Sing ( 李德成 )
1 CSCD 330 Network Programming Winter 2016 Some Material in these slides from J.F Kurose and K.W. Ross All material copyright Lecture 6 Application.
UDP User Datagram Protocol. About the UDP A commonly used transport protocol Does not guarantee either packet delivery or order The packets may travel.
Agenda Socket Programming The OSI reference Model The OSI protocol stack Sockets Ports Java classes for sockets Input stream and.
Network Programming. These days almost all devices.
Network Programming Communication between processes Many approaches:
Java 13. Networking public class SumTest {
Java.net CS-328 Dick Steflik.
Object-Orientated Analysis, Design and Programming
MCA – 405 Elective –I (A) Java Programming & Technology
NETWORK PROGRAMMING CNET 441
An Introduction to TCP/IP and Sockets
Network Programming Introduction
Network Programming Introduction
CSCD 330 Network Programming
Process-to-Process Delivery:
Networking.
Outline Introduction Networking Basics Understanding Ports and Sockets
CSCD 330 Network Programming
Presentation transcript:

Network Programming OSI Model Client-server programming

ISO-OSI Model ISO= International Standards Organization OSI = Open Systems Interconnection

7 Layers Physical - bits Data Link – dlpdu (frames) no routing Network – IP ( ) - routing Transport – TCP/IP, UDP/IP-transmission control Session – login Presentation – http – iiop /corba, rmi, dbnet Application - browser

What is a domain? id for network, tlds’.edu,.com,.gov,.net, biz, org, name, info DNS – maps domain names to IP addresses. lookups or reverse lookups.

Using a windows hosts table Windows 95/98/Me c:\windows\hosts Windows NT/2000/XP Pro c:\winnt\system32\drivers\etc\hosts Windows XP Home c:\windows\system32\drivers\etc\hosts

Mac/Unix /etc/hosts localhost linux1

What is socket programming? A means of using TCP/IP or UDP/IP along with a PORT to: –connect –transmit bytes in a stream –disconnect –Inter-process communication

Why do I need socket programming? web/http IIOP, RMI distributed computing concurrent computing Network computing open a virtual connection

Why do I need ports? 1 computer has many services ports are sometimes standard.... –80 – default web service port –7 – ping –13 – time –25 – snmtp –/etc/services – to see the ports in UNIX

10 A simple server (simplified code) import java.net.*; import java.io.*; public class ASimpleServer { public static void main(String args[]) { // Register service on port 1234 ServerSocket s = new ServerSocket(1234); Socket s1=s.accept(); // Wait and accept a connection // Get a communication stream associated with the socket OutputStream s1out = s1.getOutputStream(); DataOutputStream dos = new DataOutputStream (s1out); // Send a string! dos.writeUTF(“Hi there”); // Close the connection, but not the server socket dos.close(); s1out.close(); s1.close(); }

11 A simple client (simplified code) import java.net.*; import java.io.*; public class SimpleClient { public static void main(String args[]) throws IOException { // Open your connection to a server, at port 1234 Socket s1 = new Socket(" ",1234); // Get an input file handle from the socket and read the input InputStream s1In = s1.getInputStream(); DataInputStream dis = new DataInputStream(s1In); String st = new String (dis.readUTF()); System.out.println(st); // When done, just close the connection and exit dis.close(); s1In.close(); s1.close(); }

Sockets – TCP/IP reliable means of data transmission Routing is automatic on the Internet. UNICAST – one-to-one If you want one to MANY then you use –MULTICAST –Requires a MULTICAST enabled router! –TTL = number of router hops before the packet is blocked.

Class InetAddress public boolean equals(Object obj); public byte[] getAddress(); public static InetAddress[] getAllByName(String host); public static InetAddress getByName(String host); public String getHostName(); public static InetAddress getLocalHost(); public int hashCode(); public String toString(); This class represents an Internet Protocol (IP) address. Applications should use the methods getLocalHost(), getByName(), or getAllByName() to create a new InetAddress instance.

HostInfo.java import java.net.*; public class HostInfo { public static void main( String args[] ) { InetAddress ipAddr; try { ipAddr = InetAddress.getLocalHost(); System.out.println( "This is " + ipAddr ); } catch ( UnknownHostException ex ) { System.out.println( "Unknown host" ); }

Resolver.java import java.net.*; public class Resolver { public static void main( String args[] ) { InetAddress ipAddr; try { ipAddr = InetAddress.getByName( args[0] ); System.out.print( "IP address = " + ipAddr + "\n " ); } catch ( UnknownHostException ex ){ System.out.println( "Unknown host " ); }

Daytime Service Most UNIX servers run the daytime service on TCP port 13. cobalt> telnet kiev.cs.rit.edu 13 Trying Connected to kiev. Escape character is '^]'. Fri Feb 6 08:33: Connection closed by foreign host. It is easy to write a Java daytime client. All the program needs to do is to establish a TCP connection on port 13 of a remote host. A TCP style connection is made using the Socket class.

A Java Daytime Server It is easy to create a daytime server in Java (the only real problem is that your Java server will not be able to use port 13). The server version of the program will use a ServerSocket to communicate with a client. A ServerSocket will open a TCP port and wait for a connection. Once a request is detected, a new port will be created, and the connection will be established between the client's source port and this new port. Most servers listen for requests on a particular port, and then service that request on a different port. This makes it easy for the server to accept and service requests at the same time.

DayTimeClient.java import java.net.*; import java.io.*; import java.util.*; public class DayTimeClient { static int dayTimePort = 13; public static void main(String args[]) { try { Socket sock = new Socket(args[0], dayTimePort); BufferedReader din = new BufferedReader( new InputStreamReader(sock.getInputStream())); String rTime = din.readLine(); System.out.println(rTime); sock.close(); } catch (exception e) {} }

Class Socket // Constructors (partial list) public Socket() public Socket(InetAddress address, int port); public Socket(String host, int port); // Methods (partial list) public void close(); public InetAddress getInetAddress(); public int getLocalPort(); public InputStream getInputStream(); public OutputStream getOutputStream(); public int getPort(); public String toString();

Class Socket This class implements client sockets (also called just sockets). A socket is a end point for communication between two machines. The actual work of the socket is performed by an instance of the SocketImpl class. It is possible to modify some TCP parameters: –SO_LINGER –SO_TIMEOUT –TCP_NODELAY –Enable/disable TCP_NODELAY (disable/enable Nagle's algorithm).

Class ServerSocket // Constructors (partial list) public ServerSocket(int port); public ServerSocket(int port, int count); // Methods (partial list) public Socket accept(); public void close(); public InetAddress getInetAddress(); public int getLocalPort(); public String toString();

Class ServerSocket A ServerSocket waits for requests to come in over the network. It performs some operation based on that request, and then possibly returns a result to the requester. The actual work of the ServerSocket is performed by an instance of the SocketImpl class. The abstract class SocketImpl is a common superclass of all classes that actually implement sockets. It is used to create both client and server sockets. A plain socket implements the SocketImpl methods exactly as described, without attempting to go through a firewall or proxy.

DayTimeServer import java.net.*; import java.io.*; import java.util.*; public class DayTimeServer { public static void main(String argv[]) { try { Date today = new Date(); InetAddress localHost = InetAddress.getLocalHost(); ServerSocket listen = new ServerSocket(0); System.out.println("Listening on port: "+listen.getLocalPort()); for(;;) { Socket clnt = listen.accept(); System.out.println(clnt.toString()); PrintWriter out = new PrintWriter(clnt.getOutputStream(), true); out.println(today); clnt.close(); } } catch(Exception e) {}}}

DayTimeServer in Action The output from the daytime server looks like this: kiev> java DayTimeServer Listening on port: Socket[addr=cobalt/ ,port=32875,localport=36109] Socket[addr=localhost/ ,port=36112,localport=36109] The client output looks like this: cobalt> telnet kiev Trying Connected to kiev. Escape character is '^]'. Fri Feb 06 09:53:00 EST 1998 Connection closed by foreign host.

Server Threads Message Passing Facility Server Process Client Process User Mode Kernel Mode Threads in Action... Multithreaded Server

Multi-Threaded Servers It is quite easy, and natural in Java, to make a server multi-threaded. In a multi-threaded server a new thread is created to handle each request. Clearly for a server such as the daytime server this is not necessary, but for an FTP server this is almost required. The code for the multi-threaded version of the server consists of a new class called Connection. An instance of this class handles the clients request.

Multicast Sockets What is a multicast socket? –unicast sockets provide a point to point connection. There is one sender and one receiver. –Multicast sockets have one sender and many receivers

Why doesn’t everyone use Mcast sockets? Not all routers will pass Multicast sockets. Multicasting may not be supported on your network. TTLs limit a packets spread. TTL = max # of routers a packet is allowed to cross.

What are some Applications for Mcast? appliances can look for a lookup server MCast. –suppose I plug in a PNP printer MCast is good for discovery Unicast is good for correspondance. Etherswitch does a kind of routing that protects net legs from traffic.

Etherswitch/mcast Etherswitch passes all mcast traffic through. Etherswitch isolates only unicast traffic. Ethernet 10 mbps – 100 mpbs 1Gbps 10 Gb/s. Now we can do VIDEO on the Ethernet.

Broadcast Video CCIR-601 Standard Video –720-x480 pixels at 16 bits per PEL at 30 Frames per second. –160 Mb/s, uncompressed. –Suppose you don’t use a video camera to make video!

What is video? Image sequences + audio How can I make image sequences? Screen capture….are almost NOISE FREE. Inter-frame coherence. Difference frames can be coded efficiently.

Java Net Classes ClassDescription DatagramPacketThis class represents a datagram packet. DatagramSocketThis class represents a socket for sending and receiving datagram packets. InetAddressThis class represents an Internet Protocol (IP) address. MulticastSocketThe multicast datagram socket class is useful for sending and receiving IP multicast packets. ServerSocketThis class implements server sockets. Socket This class implements client sockets (also called just "sockets"). URLA pointer to a "resource" on the World Wide Web. URLConnectionThe superclass of all classes that represent a communications link between an application and a URL.

Connection.java import java.net.*; import java.io.*; import java.util.*; class Connection extends Thread { protected Socket clnt; public Connection(Socket sock) { clnt = sock; this.start(); } public void run() { Date today = new Date(); try { PrintWriter out = new PrintWriter(clnt.getOutputStream(), true); out.println(today); client.close(); } catch (IOException e) {}}}

TDayTimeServer.java import java.net.*; import java.io.*; import java.util.*; public class TDayTimeServer { public static void main(String argv[]) { try { InetAddress localHost = InetAddress.getLocalHost(); ServerSocket listen = new ServerSocket(0); System.out.println("Listening on: "+listen.getLocalPort()); for(;;) { Socket clnt = listen.accept(); System.out.println(clnt.toString()); Connection c = new Connection(client); } catch(Exception e) { System.out.println("Server terminated"); } }

UDP Based Applications UDP provides an unreliable packet based delivery service. An application that uses UDP must deal with the errors that can arise during communication. The basic unit of transfer is called a Datagram. Datagrams are small, fixed-length messages. Datagram based services do have some advantages: –Speed –Message-oriented service.

Datagrams Datagram packets are used to implement a connectionless, packet based, delivery service. Each message is routed from one machine to another based solely on information contained within that packet. Multiple packets sent from one machine to another might be routed differently, and might arrive in any order. Packets may be lost or duplicated during transit. The class DatagramPacket represents a datagram in Java.

Class DatagramPacket //Constructors public DatagramPacket(byte ibuf[], int ilength); public DatagramPacket( byte ibuf[], int ilength, InetAddress iaddr, int iport); // Methods public synchronized InetAddress getAddress(); public synchronized int getPort(); public synchornized byte[] getData(); int getLength(); void setAddress(InetAddress iaddr); void setPort(int iport); void setData(byte ibuf[]); void setLength(int ilength);

Class DatagramSocket This class represents a socket for sending and receiving datagram packets. Addressing information for outgoing packets is contained in the packet header. A socket that is used to read incoming packets must be bound to an address (sockets that are used for sending must be bound as well, but in most cases it is done automatically). There is no special datagram server socket class. Since packets can be lost, the ability to set timeouts is important.

Class DatagramSocket // Constructors DatagramSocket() DatagramSocket(int port) DatagramSocket(int port, InetAddress iaddr) // Methods void close() InetAddress getLocalAddress() int getLocalPort() int getSoTimeout() void receive(DatagramPacket p) void send(DatagramPacket p) setSoTimeout(int timeout)

Echo Services A common network service is an echo server An echo server simply sends packets back to the sender A client creates a packet, sends it to the server, and waits for a response. Echo services can be used to test network connectivity and performance. There are typically different levels of echo services. Each provided by a different layer in the protocol stack.

UDPEchoClient.java import java.net.*; import java.io.*; import java.util.*; public class UDPEchoClient { static int echoPort = 7; static int msgLen = 16; static int timeOut=1000; public static void main(String argv[]) { try { DatagramSocket sock = new DatagramSocket(); DatagramPacket pak; byte msg[] = new byte[msgLen]; InetAddress echoHost = InetAddress.getByName(argv[0]); pak = new DatagramPacket(msg,msgLen,echoHost,echoPort); sock.send(pak); sock.setSoTimeout(timeOut); sock.receive(pak); } catch (InterruptedIOException e) {System.out.println("Timeout");} catch (Exception e) {} }}