/*Google Adsense */

User Multiplexing

User-to-user communications requires that network packets contain header information identifying the source and destination users, in addition to the source and destination hosts. In the TCP/IP architecture, hosts are identified by IP addresses and users are identified by port numbers. The obvious way to identify users on a host is to assign a distinct port to every users, so that any user is identified network-wide by its port number and its host's IP address. But this is not what is done. Instead each user is identified network-wide by the following attributes: local port number, remote port number, local host IP address, remote host IP address, and transport protocol number. The remote port number and IP address are the local port number and IP address of the remote peer users; if the remote user is not known, the remote port number and IP address are nil.

The transport protocol number identifies the particular transport protocol (For e.g. UDP or TCP) being accessed by the user. A user's local port number is assigned as soon as the user starts to use the transport service. The user's remote port number and IP address are assigned as soon as it learns of the local port number and host IP address of its intended peer user. Every IP network packet has the local port number of the originating user, called sender port number, the local port number of the intended destination user, called destination port number, the sender and destination IP addresses, and the transport protocol number. This approach of using local and remote that numbers and IP addresses to identify a user supports the client-server paradigm. This enables the clients to handle the same services simultaneously.

Consider a host H providing a service over a certain transport protocol (For e.g. FTP over TCP). H dedicates a specific local port number, say p1, to the service. H creates a server user, say S, with local port number set to p1, transport protocol number set appropriately, and remote port number and IP address set to nil. When a client user, say C on another host G wants to avail of this service, C would get local port number set to an arbitrary value, say p2, remote port number set to p1, remote IP address set to H's IP address, and transport protocol number set appropriately. When the request packet arrives at the transport layer in H, it gives the packet to S (assuming that there is no user at H with local port number p1, remote port number p2, remote IP address equal to G's IP address). The server S then can create another server specifically for servicing client C; this new server NS would have remote port number set to p2 and remote IP address set to G's IP address, and hence it can use local port number p1, same as S.

The following table illustrates the above example:

HostUserActs asLocal Port No.Remote Port No.
HSServerP1Nil
GCClientP2P1



When sending the request packet to the Client C, the Server S creates another Server with following specification.




UserActs asLocal Port No.Remote Port No.
NSNew ServerP1P2

No comments:

Post a Comment

Your feedback and comments are valuable for us: