The Transport layer has three main responsibilities in terms of the exchange of data between systems. These include:
- Data segmentation.
- Establishment of end-to-end connections between hosts.
- Using flow-control mechanisms to ensure that data is sent at rates that the receiver can handle.
At any given point in time there may be many applications passing data down to the Transport layer. Data segmentation is the process by which the Transport layer uniquely handles all data passed to and from different upper-level applications. This is usually implemented in the form of source and destination port numbers that are defined within a particular application. For example, if a user is browsing the web and checking email at the same time, each program would be passing data and waiting for a reply on a unique port number. The Transport layer ensures that data is passed to the correct application.