CHAPTER 22
Networking
As all
readers know, Java is practically a synonym for Internet programming. There are
a number of reasons for this, not the least of which is its ability to generate
secure, cross-platform, portable code. However, one of the most important
reasons that Java is the premier language for network programming are the
classes defined in the java.net
package. They provide an easy-to-use means by which programmers of all skill
levels can access network resources.
This
chapter explores the java.net
package. It is important to emphasize that networking is a very large and at
times complicated topic. It is not possible for this book to discuss all of the
capabilities contained in java.net.
Instead, this chapter focuses on several of its core classes and interfaces.
Networking Basics
Before
we begin, it will be useful to review some key networking concepts and terms.
At the core of Java’s networking support is the concept of a socket. A socket identifies an endpoint
in a network. The socket paradigm was part of the 4.2BSD Berkeley UNIX release
in the early 1980s. Because of this, the term Berkeley socket is also used. Sockets are at the foundation of
modern networking because a socket allows a single computer to serve many
different clients at once, as well as to serve many different types of
information. This is accomplished through the use 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.
A server is allowed to accept multiple clients connected to the same port
number, although each session is unique. To manage multiple client connections,
a server process must be multithreaded or have some other means of multiplexing
the simultaneous I/O.
Socket
communication takes place via a protocol. Internet
Protocol (IP) is a low-level routing protocol that breaks data into small
packets and sends them to an address across a network, which does not guarantee
to deliver said packets to the destination. Transmission
Control Protocol (TCP) is a higher-level
protocol that manages to robustly string together these packets, sorting and retransmitting them as necessary to
reliably transmit data. A third protocol, User
Datagram Protocol (UDP), sits next to TCP and can be used directly to
support fast, connectionless, unreliable transport of packets.
Once a
connection has been established, a higher-level protocol ensues, which is
dependent on which port you are using. TCP/IP reserves the lower 1,024 ports
for specific protocols. Many of these will seem familiar to you if you have
spent any time surfing the Internet. Port number 21 is for FTP; 23 is for
Telnet; 25 is for e-mail; 43 is for whois; 80 is for HTTP; 119 is for
netnews—and the list goes on. It is up to each protocol to determine how a
client should interact with the port.
For
example, HTTP is the protocol that web browsers and servers use to transfer
hypertext pages and images. It is a quite simple protocol for a basic
page-browsing web server. Here’s how it works. When a client requests a file
from an HTTP server, an action known as a hit,
it simply sends the name of the file in a special format to a predefined port
and reads back the contents of the file. The server also responds with a status
code to tell the client whether or not the request can be fulfilled and why.
A key
component of the Internet is the address.
Every computer on the Internet has one. An Internet address is a number that
uniquely identifies each computer on the Net. Originally, all Internet
addresses consisted of 32-bit values, organized as four 8-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, organized into eight
16-bit chunks. Although there are several reasons for and advantages to IPv6,
the main one is that it supports a much larger address space than does IPv4.
Fortunately, when using Java, you won’t normally need to worry about whether IPv4
or IPv6 addresses are used because Java handles the details for you.
Just as
the numbers of an IP address describe a network hierarchy, the name of an
Internet address, called its domain name,
describes a machine’s location in a name space. For example, www.HerbSchildt.com is in the COM top-level
domain (reserved for U.S. commercial sites); it is called HerbSchildt, and www
identifies the server for web requests. An Internet domain name is mapped to an
IP address by the Domain Naming Service
(DNS). This enables users to work with domain names, but the Internet
operates on IP addresses.
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.