Your Ad Here

Application Protocols Communicate Over IP


Almost all IP applications follow the same basic model: a client sends a request of
some kind to a server running on another system, and the server examines the
request, acts upon it in some form, and then possibly returns some form of data
back to the client. This is not always the case (many UDP-based “servers” do not
return any data, but simply monitor network activity), but it holds true for most
applications.

Server-based applications (like an email server or web server) are generally loaded
by the operating system when the computer is started. The servers then go into a
“listen” state, watching for incoming connections. Conversely, client applications
will only establish a connection when some sort of action is required (like “get
new messages”).
Applications communicate with the transport protocols through the use of “ports,”
which are unique I/O identifiers used by the transport protocols and the specific
instance of the application protocol. “Ports” are conceptually similar to the mailboxes
used at your local post office. When a letter comes in for a recipient, it is
placed into a known mailbox reserved for that specific recipient. Whenever the
recipient comes by, he will pick up any messages in that mailbox and process the
data at his convenience.
Similarly, ports provide TCP and UDP with a way to deliver data to higher-layer
application protocols. Every time an application protocol opens a connection to
one of the transport protocols, it will allocate a port from the transport protocol,
and then use that port for all network I/O. Any traffic that is destined for that particular
application will be routed to the appropriate port for the application to deal
with.
Just as every device on an IP network has a unique IP address, every instance of
every application protocol also has a unique port number that is used to identify it
to the transport protocols on the local system. This concept is illustrated in
Figure 1-13, which shows how UDP reserves ports for specific applications. Any
UDP or TCP messages that come into a system will be identified as destined for a
specific port number, and the transport layer will use that information to route the
data to the correct application.
Some applications can open many simultaneous network connections, and in this
case, each instance would get its own port number. One example of this is the
ubiquitous web browser, which can open many simultaneous connections to a
remote web server, depending on the number of files that need to be downloaded
from a web page. Each of these HTTP connections will get created as independent
network connections, with each of the connections having unique port
numbers for the client side of the connection. Once the web browser finishes
downloading the objects, then each of the individual connections will be closed.
Every connection between a client and a server consists of four pieces of information:
a source IP address, a source port number, a destination address, and a destination
port number. All together, these four pieces of information make
connections unique. For example, if a web browser were to open two connections
to a web server, then the IP addresses of both hosts would be the same. In
addition, the well-known server port number (80) would also be the same.

Therefore, in order for the individual connections to be unique, the client must
use a different port number for each of the unique connections. Servers do not
care if a single client asks for multiple connections, as long as each connection
comes from a unique port number on the client, since each connection must be
uniquely identifiable to the server.
This four-way identifier is called a “socket pair” in IP lingo, and is the basis of all
communications for all application protocols. A “port” identifies a connection point
in the local stack (i.e., port number 80). A “socket” identifies an IP address and
port number together (i.e., port 80 on host 192.168.10.20 could be written as
“socket 192.168.10.20:80.”). A “socket pair” refers to a distinct connection between
two different applications, including the IP addresses and port numbers in use by
both. Each individual connection requires that the socket pair contain at least one
unique element.


0 comments:

Post a Comment

Popular Posts

Recent posts