一 概述
UDP(User Datagram Protocol-用户数据报协议)和TCP(Transmission Control Protocol-传输控制协议)是运输层的两个主要的协议都是互联网的正式标准。
二 UDP和TCP协议的各种应用和应用层协议
三 用户数据报协议UDP
用户数据报协议UDP只是在IP的数据报服务之上增加了很少的一点功能,这就是复用和分用的功能以及差错检测的功能。
复用:是指发送方不同的应用进程都可以使用同一个运输层协议传输数据(需要加上适当的首部)。
分用:是指接收方的运输层在剥离报文的首部后能够将这些数据正确的交付给目的进程。
UDP的主要特点:
- UDP是面向无连接的:即发送数据之前不需要建立连接,发送数据之后也没有连接需要释放,因此减少了开销和发送数据之前的时延。
- UDP使用最大努力的交付:不保证可靠的交付,因此主机不需要维持有着许多参数且复杂的连接状态表。
- UDP是面向报文的:发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付下一层即IP层。
- UDP没有拥塞控制,因此网络出现的拥塞不会使得源主机的发送速率降低。
- UDP支持一对一,一对多,多对一和多对多的交互通信。
- UDP的首部开销小,只有8个字节,比TCP的20个字节的首部要短。
四 传输控制协议TCP
TCP的主要特点:
- TCP是面向连接的运输层协议。当程序需要使用TCP协议之前,必须先建立TCP连接。在传送数据完毕后,必须释放已经建立的TCP连接。进程间的通信如同"打电话":通话之前要先拨号建立连接,通过结束后要挂机释放连接。
- 每个TCP连接只能有两个端点(endpoint),每一条TCP连接只能是点对点的(一对一)。TCP连接的端点叫做套接字(socket)或插口。根据RFC793的定义:端口号拼接到IP地址即叫做套接字(socket)或插口。
- TCP提供可靠交付的服务。通过TCP连接传送的数据,无差错,不丢失,不重复并且按顺序到达,因为TCP协议使用停止等待协议,连续ARQ协议。
- TCP提供全双工通信方式。允许通信双方的应用进程在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。在发送时,应用程序在把数据传送给TCP的缓存之后,就可以做自己的事,而TCP在合适的时候把数据发送出去。在接收时,TCP把收到的数据放入缓存,上层的应用进程在合适的时候读取缓存中的数据。
- TCP是面向字节流。TCP中的"流"(stream)指的是流入到进程或从进程流出的字节序列。