/*Google Adsense */

Reliable Transport Service

Reliable transport service has three aspects, user multiplexing, connection management and data transfer. Data transfer provides for the reliable exchange of data between connected users. Connection management provides for the establishment and termination of connections between users. Users can open and close connections to other users, and can accept or reject incoming connection requests. Resources are acquired when a user enters a connection, and released when the user leaves the connection . An incoming connection request is rejected if the user has filed or it transport entity does not have adequate resources for new connections.

A key concern of transport protocols is to ensure that a connection is not infiltrated by old messages that may remain in the network from previous terminated connections. The standard techniques are to use the 3-way handshake mechanism for connection management and the sliding window mechanism for data transfer within a connection. These mechanisms use cyclic sequence numbers to identify the connection attempts of a user and the data blocks within a connection. The protocol must ensure that received cyclic sequence numbers are correctly interpreted and this invariably requires the network to enforce a maximum message lifetime.

Each user goes through a succession of incarnations. An incarnation of a client is started whenever the client requests a connection to any server. An incarnation of a server is started whenever the server accepts a (potentially new) connection request from any client. Every incarnation is assigned an incarnation number when it starts; the incarnation is uniquely distinguished by its incarnation number and user id.

Once an incarnation 'x' of a user 'c' is started in an attempt to connect to a user 's', it has one of two possible futures. The first possibility is that at some point 'x' becomes open and acquires an incarnation number y of some incarnation of 's'; at some later point 'x' becomes closed. The second possibility is that 'x' becomes closed without ever becoming open. This can happen to client incarnation either because its connection request was rejected by the server or because of failure (in the server, the client, the relevant transport entities, or the channels). It can happen to a server incarnation either because of failure or because it was started in response to a connection request that later turns out to be a duplicate request from some old, now closed, incarnation.

Because of failures, it is also possible that an incarnation 'x' of 'c' becomes open to incarnation 'y' of 's' but 'y' becomes closed without becoming open. This is referred to as a half-open connection. A connection is an association between two open incarnation. Formally, a connection exists between incarnation 'x' of user 'c' and incarnation 'y' of user 's' if y has become open to 'x' and 'x' has become open to 'y'. The following properties are desired of connection management:

Consistent connections - If an incarnation x of user c becomes open to an incarnation 'y' of user 's', then incarnation 'y' is either open to 'x' or will become open to 'x' unless there are failures.

Consistent data-transfer - If an incarnation 'x' of user 'c' becomes open to an incarnation 'y' of user 's', then 'x' accepts received data only if sent by 'y'.

Progress - If an incarnation 'x' of a client requests a connection to a server, then a connection is established between 'x' and an incarnation of the server within some specified time, provided the server does not reject x's request and neither client, server nor channels fail within that time.

Terminating handshakes - The transport entity (of either user) cannot stay indefinitely in a state (or set of states) where it is repeatedly sending messages expecting a response that never arrives.

No comments:

Post a Comment

Your feedback and comments are valuable for us: