TCP :
传输控制协议(Transmission Control Protocol)是一种面向连接的协议,这意味着它需要握手来建立端到端的通信。一旦建立连接,用户数据可以双向发送。
可靠性 - 严格地说,TCP仅在传输层上进行管理,可以对消息确认、重传和超时进行处理。尝试多次发送消息,如果中途丢失了,则服务器将重新请求丢失的部分。在TCP中,要么没有丢失数据,要么在多次超时的情况下,连接会断开。(但是该可靠性不涵盖应用程序层,在该层仍然需要单独的确认流量控制)
有序性 - 如果两个消息按顺序通过连接发送,则第一个消息将首先到达接收应用程序。当数据段无序到达时,TCP缓冲区会延迟处理无序数据,直到所有数据能够被正确排序并传递给应用程序。
重量级 - TCP需要三个数据包来设置套接字连接,然后才能发送任何用户数据。TCP处理可靠性和拥塞控制。
流式 - 数据作为字节流读取,没有区分指示信号以表示消息(段)边界。
TCP的应用:
万维网、电子邮件、远程管理和文件传输都依赖于TCP。
UDP :
用户数据报协议(User Datagram Protocol)是一种更简单的基于消息的无连接协议。无连接协议不需要建立专用的端到端连接。通过向目标方向发送信息,实现从源到目的地的单向通信而不验证接收方的准备就绪状态。
不可靠性 - 发送UDP消息时,无法确定它是否会到达其目的地;它可能在途中丢失。没有确认、重传或超时的概念。
无序性 - 如果将两个消息发送到同一个接收方,则无法预测它们到达的顺序。
轻量级 - 没有消息排序、连接跟踪等。它是一种基于IP设计的小型传输层。
数据报 - 数据包是单独发送并且只有在到达时才检查完整性。数据包具有明确的边界,到达时将遵循这些边界,这意味着接收端套接字上的读操作将产生一条完整的消息,就像最初发送的那样。
无拥塞控制 - UDP本身不避免拥塞。必须在应用程序级别实现拥塞控制措施。
广播 - 由于是无连接的,因此UDP可以广播 - 发送的数据包可以被寻址为可在子网上的所有设备上接收。
多播 - 支持一种多播操作模式,其中单个数据报包可以自动路由到非常大量的订阅者而不会重复发送。
UDP的应用:
许多重要的互联网应用程序使用UDP,包括:域名系统(DNS),其中查询必须快速且只包含一个请求后跟一个回复数据包;简单网络管理协议(SNMP);路由信息协议(RIP)和动态主机配置协议(DHCP)。
声音和视频流量通常使用UDP传输。实时视频和音频流协议设计用于处理偶尔丢失的数据包,因此仅会出现轻微的品质降低,而不是像重新传输丢失的数据包那样出现大的延迟。由于TCP和UDP都在同一网络上运行,许多企业发现这些实时应用程序所产生的UDP流量增加正在影响使用TCP的业务应用程序的性能,例如销售点、会计和数据库系统。当TCP检测到数据包丢失时,它将减缓其数据速率的使用。由于实时应用程序和业务应用程序对企业都很重要,因此,开发服务质量解决方案被某些人视为至关重要。
一些VPN系统(例如OpenVPN)可能使用UDP,同时在应用程序级别实现可靠连接和错误检查。