For example, a user may be sending data over a transport connection when an asynchronous disconnection indication arrives. The user must somehow be informed that the connection has been broken. In the synchronous mode of operation, the transport primitives wait for specific events before returning control to the user. While waiting, the user cannot perform other tasks. For example, a function that attempts to receive data in synchronous mode will wait until data arrives before returning control to the user.
Synchronous mode is the default mode of execution.
It is useful for user processes that want to wait for events to occur, or for user processes that maintain only a single transport connection. The asynchronous mode of operation, on the other hand, provides a mechanism for notifying a user of some event without forcing the user to wait for the event. The handling of networking events in an asynchronous manner is seen as a desirable capability of the transport interface. This would enable users to perform useful work while expecting a particular event. For example, a function that attempts to receive data in asynchronous mode will return control to the user immediately if no data is available.