传输层负责源主机与目的主机进程之间端到端的数据传输。传输层有两个著名的协议:用户数据报协议UDP和传输控制协议TCP。二者都使用IP作为网络层协议。TCP提供可靠的面向连接的服务,而UDP提供不可靠的、无连接的服务。之前简单的总结了我对TCP的认识和理解,下面就简单说一下UDP。
TCP是可靠的、面向连接的通信,通信双方必须先建立一个通信管道,而UDP是不可靠的、非面向连接的通信,只需要知道目标地址(IP和端口)即可发送,至于端口是否打开,目标地址是否真正存在,数据是否发送到了目标地址,发送者都不需知道,也无法知道。这么看来,UDP与TCP相比没有什么优势,又为什么要用UDP呢?
其实不然,有些情况下UDP协议可能会变得非常有用。因为UDP具有TCP所望尘莫及的速度优势。虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。反观UDP,由于拍出来信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。
另外,我们也可以为UDP加上一些可靠的传输控制,最直接的方法就是模拟TCP协议的实现,对UDP进行简单的差错重传控制。
UDP广泛应用于简单的请求-应答查询以及快速递交比精确递交更为重要的场合。使用UDP发送很短的报文时,在发送站和接收站之间的交互比使用TCP少得多。UDP对多媒体和多播应用也是很方便的一种协议。