Internet 的传输层有两个主要协议,互为补充。
主要对比看下它们各自的特点:
UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同
TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。
与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据包的丢失,协议本身并不能做出任何检测或提示。因此,通常把UDP协议称为不可靠的传输协议。
TCP 是面向连接的传输控制协议,准确,安全,但耗资源
UDP 提供了无连接的数据报服务,快速,便捷,资源消耗小
- TCP 具有高可靠性,确保传输数据的正确性,不出现丢失或乱序
- UDP在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作
- TCP 协议可以保证接收端毫无差错地接收到发送端发出的字节流,为应用程序提供可靠的通信服务对可靠性要求高的通信系统往往使用 TCP传输数据 UDP 具有较好的实时性,工作效率较 TCP 协议高
- UDP 协议结构比 TCP 的协议结构简单,因此网络开销也小
举个例子,看下应用场景就很清楚:
通常我们说的HTTP是指HTTP协议:
HTTP协议是(超文本传输协议)的缩写,是用于从网络(万维网)服务器传输超文本到本地浏览器的传送协议。从上面的分析就可以知道,很明显,HTTP协议是基于TCP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)
HTTP协议是基于C/S架构进行通信的,而HTTP协议的服务器端实现程序有httpd、nginx等,其客户端的实现程序主要是Web浏览器,例如Firefox、InternetExplorer、Google chrome、Safari、Opera等。Web服务是基于TCP的,因此为了能够随时响应客户端的请求,Web服务器需要监听在80/TCP端口。这客户端浏览器和Web服务器之间就可以通过HTTP协议进行通信了。
总结起来就是:
UDP和TCP类似两条公路,UDP是高速公路,但路上有打劫的,说不定没到目的地就半路失踪了。
TCP就是省道小路,虽然路窄,车多,但安全直接,直达目的地。
HTTP协议就是为省道小路专门定制的车辆,不让走高速(UDP),就专门在低速(TCP)上运行