Internet Addressing

Download Report

Transcript Internet Addressing

Internet Addressing
Introduction
The Internet is a vast collection of
machines and devices spread out across
the world.
 There is an important need to identify and
locate a specific one.
 We will look into greater detail about how
addresses work and how they are
represented in Java.

Local Area Network Addresses
Devices connected to a LAN have their
own unique hardware address.
 This address is useful only in the context
of a LAN. In other words, it cannot be
used to locate machines on the Internet.
 This address cannot be used to indicate
the location of a machine as it is possible
to move the machine somewhere else
(e.g. notebook computers).

Java network programmers need not be
concerned with details about how data is
routed within a LAN. In fact, Java does
not provide access to data link protocols
(which are network dependent) used by
LANs.
 No matter what type of LAN is used,
software can be written for it provided it
supports TCP/IP (which is network
independent).

Internet Protocol Addresses
Devices having a direct Internet
connection are allocated a unique IP
address.
 IP addresses may be

 Static

Bound permanently to a certain machine/device
 Dynamic

Leased to a particular machine/device for a certain
period of time.

The IP address is used by the Internet
Protocol to route IP datagrams to the
correct location.
Structure of the IP Address
Under Internet Protocol version 4 (IPv4),
the IP address is a 32-bit number made up
of 4 octets. E.g: 192.168.1.1
 There are 5 classes of IP addresses:

 Class A
 Class
B
 Class C
 Class D
 Class E
0.0.0.0 to 127.255.255.255
128.0.0.0 to 191.255.255.255
192.0.0.0 to 223.255.255.255
224.0.0.0 to 239.255.255.255
240.0.0.0 to 247.255.255.255
0 1 2 3 4 5 6 7 8
A 0
16
Network ID
B 1 0
C 1 1 0
24
32
Host ID
Host ID
Network ID
Network ID
Host ID
D 1 1 1 0
Multicast Group ID
E 1 1 1 1 0
Reserved for Future Use
Each private network is allocated a
network ID that is a unique identifier for a
specific network. The network
administrator is responsible for assigning
host IDs to machines in the network.
 The use of the classification scheme can
help to reduce wastage of addresses.

Obtaining an IP Address
The Internet Corporation for Assigned
Names and Numbers (ICANN) is
responsible for allocating blocks of IP
addresses.
 A person setting up a private network
would be allocated either a Class A, B or C
address, and could then assign host IP
addresses to the machines on that
particular network.

Special IP Addresses
A loopback or localhost address
(127.0.0.1) refers to the local machine.
 It is useful for programmers to connect to
the local machine for testing their network
software. The connection using this
address is possible whether or not there is
a connection to the Internet.

Another set of useful IP addresses are
those reserved for private networking.
 These addresses can be used safely
within a private network as they are not
exposed to the public Internet.

 Class A
 Class
B
 Class C

10.0.0.0 to 10.255.255.255
172.16.0.0 to 172.31.255.255
192.168.0.0 to 192.168.255.255
On the Internet, routers will not forward
data for these addresses.
The Domain Name System
The domain name system (DNS) allows
textual names to be associated with IP
addresses.
 Any entity, be it commercial, government or
private, can apply for a domain name. The
name can be used by people to locate that
entity on the Internet.


In addition, organizations can allocated
their own hostnames once they have their
domain name. Examples:
ftp.davidreilly.com and
www.davidreilly.com.
How Does the DNS Work?
There are too many domain-name-to-IPaddress mappings to handle on one
system.
 The DNS is a distributed database in
which responsibility for accepting new
registrations, and returning the addresses
of existing registrations, is spread out
across many different hosts.


The distribution of such responsibilities
forms an hierarchical structure such as
shown below:
.net
.com
davidreilly
.gov
awl
.edu .mil
.au
.co
.uk
.org
Domain Name Resolution



When a request for a hostname is made (e.g:
www.aol.com), the operating system of the
client computer contacts the local DNS server on
the LAN.
The local DNS server needs to locate the
domain server "aol.com". To do this, it queries
the "root" level domain server, which refers it to
the ".com".
When "aol.com" has been located, the local
DNS server then queries it for the IP address of
"www.aol.com"
get .com server
ROOT DNS server
LAN DNS
server
www.aol.com
get aol server
.com DNS server
DNS requests can be cached on the LAN
DNS server. This prevents overloading
the root-level domains.
 This also improves network performance
as the delay between requesting a domain
name and receiving a response is
diminished.

Internet Addressing with Java


In Java, IP addresses (whether in dotted decimal
format or as a hostname) are represented as
java.net.InetAddress objects.
Refer textbook (pg 63) for a description of some
of the methods in the class InetAddress.
http://java.sun.com/j2se/1.4.2/docs/api/java/net/I
netAddress.html

Example 1:
 A program
to find out the IP address of the
current machine
DEMO`

Example 2:
 A program
which resolves hostnames to IP
addresses and then attempts to perform a
reverse lookup of the IP address.
DEMO
RUN
import java.net.*;
class LocalHostDemo {
public static void main(String args[]) {
try {
InetAddress localAddr = InetAddress.getLocalHost();
System.out.print("IP address: ");
System.out.println(localAddr.getHostAddress());
System.out.println(localAddr.getHostName());
}
catch (UnknownHostException uhe) {
System.out.println("Unable to resolve localhost");
}
}
}
import java.net.*;
class NetworkResolverDemo {
public static void main(String args[]) {
if (args.length != 1)
System.out.println("Syntax: NetworkResolverDemo host");
try {
InetAddress addr = InetAddress.getByName(args[0]);
System.out.print("IP address: ");
System.out.println(addr.getHostAddress());
System.out.print("Hostname: ");
System.out.println(addr.getHostName());
}
catch (UnknownHostException uhe) {
System.out.println("Unable to resolve hostname");
}
}
}