UNIT4 Networking
UNIT4 Networking
UNIT4 Networking
PCclient
Interne
t
Server Local Area Network
PDA
2
Increased demand for Internet
applications
To take advantage of opportunities presented by the
Internet, businesses are continuously seeking new
and innovative ways and means for offering their
services via the Internet.
This created a huge demand for software designers
with skills to create new Internet-enabled
applications or migrate existing/legacy applications
on the Internet platform.
Object-oriented Java technologies- Sockets,
threads, RMI, clustering, Web services have
emerged as leading solutions for creating portable,
efficient, and maintainable large and complex
Internet applications.
3
Elements of C-S Computing
Client
Server
Network
Client machine
Server machine
4
Client/Server
A server is anything that has some resource
that can be shared.
There are compute servers, which provide
computing power; print servers, which
manage a collection of printers; disk servers,
which provide networked disk space; and web
servers, which store web pages.
A client is simply any other entity that wants
to gain access to a particular server.
5
Networking Basics
Computers running on the Internet communicate
with each other using either the Transmission
Control Protocol (TCP) or the User Datagram
Protocol (UDP)
6
DNS - Domain name system
The Domain Name system (DNS) associates various
sorts of information with so-called domain names.
Most importantly, it serves as the "phone book" for the
Internet by translating human-readable computer
hostnames, e.g. www.example.com, into the IP addresses,
e.g. 208.77.188.166, that networking equipment needs to
deliver information.
It also stores other information such as the list of mail
exchange servers that accept email for a given domain.
7
Understanding Ports
The TCP and UDP
P
protocols use ports to o TCP
map incoming data to a server r Client
particular process t
running on a computer.
10
Introduction to Sockets
11
Socket
logical connection
Connection request
port
server
Client
13
• The notion of a socket allows a single computer to
serve many different clients at once.
• This feat is managed by the introduction of a port,
which is a numbered socket on a particular machine.
• A server process is said to listen to a port until a
client connects to it
14
Why Sockets?
◦ Used for Interprocess communication.
The Client-Server model
◦ Client & Server are two processes that wants to
communicate with each other
◦ The Client process connects to the Server process,
to make a request for services own by the Server.
◦ Once the connection is established between Client
process and Server process, they can start sending
/ receiving information.
What are Sockets?
◦ End-point of inter-process communication.
◦ An interface through which processes can
send / receive information
15
What exactly creates a Socket?
◦ <IP address, Port #> tuple
What makes a connection?
◦ {Source<IP address, Port #> , Destination <IP
address, Port #>} i.e. source socket – destination
socket pair uniquely identifies a connection.
Example
1343 Client
192.168.0.2
80 1343
Server Client
192.168.0.1 192.168.0.3
5488
Client
192.168.0.2
16
Socket Types
◦ STREAM – uses TCP which is reliable, stream
oriented protocol,
◦ DATAGRAM – uses UDP which is unreliable, message
oriented protocol
◦ RAW – provides RAW data transfer directly over IP
protocol (no transport layer)
Sockets can use
◦ “unicast” ( for a particular IP address destination)
◦ “multicast” ( a set of destinations – 224.x.x.x)
◦ “broadcast” (direct and limited)
◦ “Loopback” address i.e. 127.x.x.x
17
Transmission Control Protocol
A connection-based protocol that provides a reliable
flow of data between two computers.
Provides a point-to-point channel for applications that
require reliable communications.
◦ The Hypertext Transfer Protocol (HTTP), File Transfer
Protocol (FTP), and Telnet are all examples of applications
that require a reliable communication channel
Guarantees that data sent from one end of the
connection actually gets to the other end and in the
same order it was sent. Otherwise, an error is
reported.
18
User Datagram Protocol
A protocol that sends independent packets of
data, called datagrams, from one computer to
another with no guarantees about arrival. UDP
is not connection-based like TCP and is not
reliable:
◦ 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.
19
Proxy Server
20
Working of Proxy Server
When a proxy server receives a request for an
Internet resource (such as a Web page), it looks in its
local cache of previous pages.
If it finds the page, it returns it to the user without
needing to forward the request to the Internet.
If the page is not in the cache, the proxy server,
acting as a client on behalf of the user, uses one of its
own IP addresses to request the page from the
server out on the Internet.
When the page is returned, the proxy server relates
it to the original request and forwards it on to the
user.
21
Proxy Server
Proxy servers are related to firewalls. If a
firewall prevents hosts on a network from
making direct connections to the outside world,
a proxy server can act as a go-between.
Thus, a machine that is prevented from
connecting to the external network by a firewall
would make a request for a web page from the
local proxy server instead of requesting the
web page directly from the remote web server.
22
One of the security advantages of using a proxy
server is that external hosts only find out about the
proxy server.
They do not learn the names and IP addresses of
the internal machines, making it more difficult
to hack into internal systems.
23
Internet Addressing
Every computer on the Internet has an address.
An Internet address is a number that uniquely identifies each
computer on the Net.
Originally, all Internet addresses consisted of 32-bit values.
This address type was specified by IPv4 (Internet Protocol,
version 4).
However, a new addressing scheme, called IPv6 (Internet
Protocol, version 6) has come into play.
IPv6 uses a 128-bit value to represent an address.
The main advantage of IPv6 is that it supports a much larger
address space than does IPv4.
IPv4 is the most widely used scheme, but this situation is likely
to change over time.
24
Internet Addressing
There are 32 bits in an IPv4 IP address, and we often refer to
them as a sequence of four numbers between 0 and 255
separated by dots (.).
The first few bits define which class of network, letter A, B, C,
D, or E, the address represents.
Most Internet users are on a class C network, since there are
over two million networks in class C.
The first byte of a class C network is between 192 and 224,
with the last byte actually identifying an individual computer
among the 256 allowed on a single class C network.
This scheme allows for half a billion devices to live on class C
networks.
25
Java and the Net
Internet Addressing
Handling internet addresses (domain names,
and IP addresses) is made easy with Java.
Internet addresses are represented in Java by
the InetAddress class.
InetAddress provides simple methods to
convert between domain names, and
numbered addresses.
27
InetAddress
The InetAddress class is used to encapsulate
both the numerical IP address and the domain
name for that address.
We interact with this class by using the name
of an IP host, which is more convenient and
understandable than its IP address.
The InetAddress class hides the number
inside.
28
InetAddress class
• static methods you can use to create new
InetAddress objects.
– getByName(String host)
– getAllByName(String host)
– getLocalHost()
– getByAddress(Byte[] addr)
– getByAddress(String host, Byte[] addr)
31
Instance Methods
boolean equals(Object obj)
◦ Compares two IP addresses, returns true if there is a match.
byte[ ] getAddress( )
◦ Returns the IP address in byte format.
String getHostAddress( )
◦ Returns the IP address in dotted decimal format.
String getHostName( )
◦ Returns the hostname of the InetAddress.
boolean isMulticastAddress( )
◦ Returns true if the InetAddress is a multicast address (class
D address).
• String toString()
◦ Converts this IP address to a String.
32
Instance Methods
D:\jdk1.7.0_17\bin>javac InetAddressTest1.java
import java.net.*; D:\jdk1.7.0_17\bin>java InetAddressTest1
216.58.203.164
class InetAddressTest1{ www.google.com
Client sockets
◦ Used to send and receive data
◦ Can be thought of as a pair of input and output
streams.
◦ Implemented by java.net.Socket class
34
Server vs Client Socket
server socket
connection request
client socket
35
Server socket
The constructors used to create server socket are given below. All of them
throw IOException
ServerSocket (int port) throws BindException, IOException
creates a server socket bounded to the specified port with a queue
length 50.
ServerSocket (int port, int maxQueue) throws BindException, IOException
creates a server socket bounded to the specified port with a queue
length of maxQueue.
ServerSocket (int port, int maxQ, InetAddress ip) throws IOException
creates a server socket bounded to the specified port with a queue
length of maxQueue. On a multihomed host, ip specifies the IP Address
to which this socket binds.
36
Client socket
The constructors used to server socket are given below. All of
them throw IO Exception
37
Server socket
Methods
Some method defined in the Server Socket are:
Methods Description
public Socket accept() throws Waits for a connection request and returns
a Socket
IOException
public void setSoTimeout(int Sets the time-out value for how long the
server socket waits for a client during the
timeout) accept().
public int getLocalPort() Returns the port number on which this
socket is listening
38
Methods used by both Server and Client Sockets
Methods Description
Socket MyClient;
try {
MyClient = new Socket("Machine name", PortNumber);
}
catch (IOException e) {
System.out.println(e);
}
40
Programming TCP Client-Server in Java
If you are programming a server, then this is how you open a socket:
ServerSocket MyService;
try {
MyServerice = new ServerSocket(PortNumber);
}
catch (IOException e) {
System.out.println(e);
}
When implementing a server you also need to create a socket object from the
ServerSocket in order to listen for and accept connections from clients.
Socket clientSocket = null;
try {
clientSocket = MyService.accept();
}
catch (IOException e) {
System.out.println(e);
}
41
Programming TCP Client-Server in Java
How to create an input stream?
◦ On the client side, you can use the DataInputStream class to create an
input stream to receive response from the server:
DataInputStream input;
try {
input = new DataInputStream(MyClient.getInputStream());
}
catch (IOException e) {
System.out.println(e);
}
◦ The class DataInputStream allows you to read lines of text and Java
primitive data types. It has methods such as read, readChar, readInt, readDouble,
and readLine,.
◦ On the server side, you can use DataInputStream to receive input from
the client: DataInputStream input;
try {
input = new
DataInputStream(clientSocket.getInputStream());
}
catch (IOException e) {
System.out.println(e);
}
42
Programming TCP Client-Server in Java
How to create an output stream?
◦ On the client side, you can create an output stream to send information
to the server socket using the class PrintStream or DataOutputStream
of java.io:
PrintStream output;
try {
output = new PrintStream(MyClient.getOutputStream());
}
catch (IOException e) {
System.out.println(e);
}
◦ The class PrintStream has methods for displaying textual representation
of Java primitive data types. Its write and println methods are important.
Also, you may want to use the DataOutputStream:
DataOutputStream output;
try {
output = new DataOutputStream(MyClient.getOutputStream());
}
catch (IOException e) {
System.out.println(e);
}
◦ Many of its methods write a single Java primitive type to the output stream.
The method writeBytes is a useful one.
43
Programming TCP Client-Server in Java
On the server side
◦ you can use the class PrintStream to send information to the client.
PrintStream output;
try {
output = new PrintStream(clientSocket.getOutputStream());
}
catch (IOException e) {
System.out.println(e);
}
44
Programming TCP Client-Server in Java
How to close sockets?
◦ You should always close the output and input stream before you close
the socket.
◦ On the client side:
try {
output.close();
input.close();
MyClient.close();
}
catch (IOException e) {
System.out.println(e);
}
try {
◦ On the server side: output.close();
input.close();
clientSocket.close();
MyService.close();
}
catch (IOException e) {
System.out.println(e);
} 45
File: MyServer.java
import java.io.*;
import java.net.*;
public class MyServer
{
public static void main(String[] args)
{
try
{
ServerSocket ss=new ServerSocket(6666);
Socket s=ss.accept();//establishes connection
DataInputStream dis=new DataInputStream(s.getInputStream());
String str=(String)dis.readUTF();
System.out.println("message= "+str);
ss.close();
}
catch(Exception e)
{
System.out.println(e);
}
}
} 46
MyClient.java
import java.io.*;
import java.net.*;
public class MyClient
{
public static void main(String[] args)
{
try
{
Socket s=new Socket("localhost",6666);
DataOutputStream dout=new DataOutputStream(s.getOutputStream());
dout.writeUTF("Hello Server");
dout.flush();
dout.close();
s.close();
}
catch(Exception e)
{
System.out.println(e);
}
}
} 47
Example of Java Socket
Programming (Read-Write both
side)
48
MyServer.java
import java.net.*;
import java.io.*;
class MyServer{
public static void main(String args[])throws Exception{
ServerSocket ss=new ServerSocket(3333);
Socket s=ss.accept();
DataInputStream din=new DataInputStream(s.getInputStream());
DataOutputStream dout=new DataOutputStream(s.getOutputStream());
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str="",str2="";
while(!str.equals("stop")){
str=din.readUTF();
System.out.println("client says: "+str);
str2=br.readLine();
dout.writeUTF(str2);
dout.flush();
}
din.close();
s.close();
ss.close();
}} 49
MyClient.java
import java.net.*;
import java.io.*;
class MyClient{
public static void main(String args[])throws Exception{
Socket s=new Socket("localhost",3333);
DataInputStream din=new DataInputStream(s.getInputStream());
DataOutputStream dout=new DataOutputStream(s.getOutputStream());
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str="",str2="";
while(!str.equals("stop")){
str=br.readLine();
dout.writeUTF(str);
dout.flush();
str2=din.readUTF();
System.out.println("Server says: "+str2);
}
dout.close();
s.close();
}}
50
DatagramSocket and DatagramPacket
• Java DatagramSocket and DatagramPacket
classes are used for connection-less
socket programming.
51
Constructors of DatagramSocket class
DatagramSocket() throws SocketException:
◦ it creates a datagram socket and binds it with the
available Port Number on the localhost machine.
DatagramSocket(int port) throws
SocketException:
◦ it creates a datagram socket and binds it with the given
Port Number.
DatagramSocket(int port, InetAddress address)
throws SocketException:
◦ it creates a datagram socket and binds it with the
specified port number and host address.
53
Methods
public void bind(SocketAddress addr)
◦ Binds this socket to specified address and port number.
public void connect(InetAddress address, int port)
◦ Connects to the specified address and port.
public void send(DatagramPacket p)
◦ Sends a datagram packet from this socket.
public void receive(DatagramPacket p)
◦ It is used to receive the packet from a sender.
54
DatagramPacket class
DatagramPacket is a message that can be sent or
received. If you send multiple packet, it may arrive in any
order.
Constructors
DatagramPacket(byte[] barr, int length):
◦ This constructor is used to receive the packets.
DatagramPacket(byte[] barr, int length,
InetAddress address, int port):
◦ This constructor is used to send the packets.
55
import java.net.*;
public class DSender{
public static void main(String[] args) throws Exception {
57
URL Class
Java URL Class present in java.net package, deals
with URL (Uniform Resource Locator) which
uniquely identify or locate resources on internet.
Format:
58
Constructors of URL class
URL (String urlspecifier)
◦ Creates a URL object from the String representation.
60
import
Protocol: java.net.*;
https
Host Name:class
public www.google.com
URLDemo{
Port Number: -1
public
Default Portstatic void
Number: 443main(String[] args){
try{String: q=javatpoint&oq=javatpoint&sourceid=chrome&ie=UTF-8
Query
Path: /search
File: /search?q=javatpoint&oq=javatpoint&sourceid=chrome&ie=UTF-8
URL url=new
URL("https://www.google.com/search?q=javatpoint&oq
=javatpoint& sourceid=chrome&ie=UTF-8");
System.out.println("Protocol: "+url.getProtocol());
System.out.println("Host Name: "+url.getHost());
System.out.println("Port Number: "+url.getPort());
System.out.println("Default Port Number:
"+url.getDefaultPort());
System.out.println("Query String: "+url.getQuery());
System.out.println("Path: "+url.getPath());
System.out.println("File: "+url.getFile());
} catch(Exception e){System.out.println(e);}
} }
61
URLConnection Class
URLConnection is an abstract class that represents an active
connection to a resource specified by a URL.
◦ It provides more control over the interaction
with a server (HTTP server) than the URL class.
◦ With a URLConnection, we can inspect the
header sent by the server.
◦ We can set the header fields used in the client
request.
◦ A URLConnection lets us send data back to a web
server with POST or PUT and use other HTTP
request methods.
62
Methods of URLConnection class
public abstract void connect()throws IOException
◦ Opens a communications link to the resource referenced by this URL.
public URL getURL()
◦ Returns the value of this URLConnection's URL field.
public int getContentLength()
◦ Returns the value of the content-length header field.
public String getContentType()
◦ Returns the value of the content-type header field.
public long getDate()
◦ Returns the value of the date header field.
public Object getContent()throws IOException
◦ Retrieves the contents of this URL connection.
public InputStream getInputStream()throws IOException
◦ Returns an input stream that reads from this open connection.
public OutputStream getOutputStream()throws
64
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
import java.io.*;
<html><head>
import java.net.*;
<title>302 Found</title>
public class URLConnectionExample {
</head><body>
public static void main(String[] args){
<h1>Found</h1>
try{
<p>The document has moved <a href="https://www.javatpoint.com/java-
tutorial">here</a>.</p>
</body></html>
URL url=new URL("http://www.javatpoint.com/java-tutorial");
URLConnection urlcon=url.openConnection();
InputStream stream=urlcon.getInputStream();
int i;
while((i=stream.read())!=-1){
System.out.print((char)i);
} }catch(Exception e){System.out.println(e);}
} }
65