No replies
Joined: 2018/05/30

Hello fellas!

TCP/IP applicatioon

The highest-level protocols within the TCP/IP protocol stack are appclication protocols.
They communicate with application on other internet hosts and are the user visible interface to the TCP/IP protocol suite.

All application protocol have some characteristics in common:

They can be user written applications or applications standardized and shipped whith the TCP/IP product.
Indeed, the TCP/IP protocol suite inculdes application protocols such as:

Telnet for interactive terminal access to remote internet host.
File Transfer Protocol (FTP) for high speed dist to disk file tranfers.
Simple Mail Transfer Protocol (SMTP) as an internet mailing system.

There are some of the most widely implemented application protocols, but many others exist. Each particular TCP/IP
implementation will include a lesser or greater set of application protocols.

They use either UDP or TCP as a transport mechanism. Remember that UDP is unreliable and offers no flow-control,
so in this case, the application has to provides its own error recovery, flow control, and congestion control functionality.
It is often easier to build applications on top of TCP because it is a reliabe stream, connection-oriented, congestion-friendly,
flow control enabled protocol. As a result, most application protocols will use TCP, but there are applications built on
UDP to achieve better performance through increased protocol efficiencies

Most applications use the client/server model of interaction.

The client/server model

TCP is a peer-to-peer, connection-oriented protocol. There are no "mentor-master/pupil-subordinate" relationships.
The applications, however, typically use a client/server model for communications.

A server is an application that offers a service to internet users. A client is a requester of a service.
An application consists of both a server and a client part, which can run on the same or on different systems.
Users usually invoke the client part of the application,
which built a request for a particular service and sends it to the server part of the application using TCP/IP as transport vehicle.

The server is a program that receives a request, peforms the required service, and sends back the result in a reply.
A server can usualy deal with multiple requests and multiple requesting clients at the same time.

Most servers wait for request at a well-known port so that their clients know to which port (and in turn, which application)
they must direct their requests. The client typically uses an arbitrary port called an ephemeral port for its communication.
Clients that want to communicate with a server that does not use a well-known port must have another mechanism for learning to which port they must address their request.
This mechanism might employ a registration service such as portmap, which does use a well-known port.

Later I will write about bridges, routers and gateways.