运输层位于应用层和网络层之间,为不同主机上的应用程序提供逻辑通信,从应有程序的角度来看,通过逻辑通信,运行不用进程的主机好像直接相连一样。应用程序通过运输层提供的逻辑通信功能彼此发送报文,无需考虑承载这些报文的物理基础设施的细节。
运输层协议是在端系统中,而不是在路由器中实现的。在发送端,运输层将从应用程序进程接受到的报文转化成运输层分组(运输层报文段),再将这些报文段传递给网络层,网络层将其封装成网络层分组(数据报)向目的地发送,路由器仅作用于网络层字段,不检查封装在内部的运输层报文;在接收端,网络层从数据包中提取运输层报文,并上交给运输层,运输层则处理接受到的报文段,使该报文中的数据为接受端应用程序使用。
运输层和网络层的关系
运输层提供了不同主机上进程的逻辑通信,网络层提供了主机之间的逻辑通信。
网络层不需要关注数据是从哪个进程来的,要发给哪个进程,只在主机之间传递数据,运输层和进程打交道,运输层只在端系统中工作,将来自应用进程的报文移动到网络层。
常见的运输层协议
TCP,UDP
多路复用和多路分解
一台机器上可能同时存在多个网络进程,如浏览器的http,ftp等,当这些进程同时在发送和接受数据的时候,就需要运输层能够将收到数据,传递给正确的进程。
网络层和运输层并不是直接交互,一个网络进程有一个或多个套接字(socket),它相当于网络层发送和接受数据的门户,所以运输层并没有直接将数据交付给进程,而是套接字,在任何一个时间,主机上可能存在多个套接字,所以每个套接字都有自己唯一的标识。
将运输层数据交付到正确的套接字的工作称为多路分解;从不同的套接字中接受数据,并为每个数据块封装上首部信息(用于目标机器的多路分解),从而生成报文的工作,称为多路复用
多路复用的的要求为:1. 套接字有唯一标识,2. 每个报文有特殊字段来表示该报文所要交付的套接字
拥塞控制
拥塞现象是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象。
TCP有拥塞控制,UDP没有
TCP
流量控制 (和拥塞控制的区别)
拥塞控制算法:慢开始,拥塞避免,快重传,快恢复