TCP和UDP都是传输层协议。TCP最核心的是提供了可靠性,而UDP核心是灵活性高。HTTP1.0和2.0用的是TCP,到了HTTP3.0用的就是UDP了。
UDP应用数据传输、网络控制、音视频、Web技术应用较多。
UDP,目标是在传输层提供直接发送报文的能力,Datagram是数据传输的最小单位,UDP协议不会帮助拆分数据,它的目标只有一个,就是发送报文。
UDP的报文格式,只有五个部分组成。
Source Port是源端口号,因为UDP协议的特性(不需要ACK),因此这个字段是可以省略的,但有时候对于防火墙、代理来说,SourcePort有很重要的意义,它们需要用这个字段行过滤和路由。
Destination Port是目标端口号(这个字段不可以省略)
Length是消息体长度。
Checksum是校验和,作用是检查封包是否出错。
Data octets就是一个字节一个字节的数据,Octet是8位。
对于UDP协议来说,它的可靠性保证仅仅是靠Checksum一种方式。
校验和(Checksum)机制,这个机制一般在很多网络协议中都会存在,如果发送方用一种方式计算出Checksum,并将数据和Checksum一起发送给接收方,接收方就可以用同样的算法再计算一遍,这样就可以确定数据有没有发生损坏(变化)。
TCP和UDP的区别:
1、目的差异
首先,这两个协议的目的不同,TCP协议的核心目标是提供可靠的网络传输,而UDP的目标是在提供报文交换能力基础上尽可能的简化协议。
2、可靠性差异
TCP核心是为了保证可靠性提供更好的服务,TCP会有握手的过程,需要建立连接,保证双方同时在线。而且TCP有时间窗口持续收集无序的数据,直到这一批数据都可以合理地排序组成连续的结果。
UDP并不具备这些特点,它只管发送数据封包,而且UDP不需要ACK,这意味消息发送出去成功与否UDP都不管。
3、连接和无连接
TCP是一个面向连接的协议,传输数据必须先建立连接。UDP是一个无连接协议,数据随时都可以发送,只提供发送封包的能力。
4、流控技术
TCP使用了流控技术来确保发送方不会因为一次发送过多的数据包而使接收方接收不过来。TCP在发送缓冲区中存储数据,并在接收缓冲区中接收数据。当应用程序准备就绪时,它将从接收缓冲区读取数据。如果接收缓冲区已满,接收方将无法处理更多数据,并将其丢弃,UDP没有这样的能力。
5、传输速度
UDP协议简化、封包小,没有连接、可靠性检查等,因此单纯从传输速度上讲,UDP更快。
6、场景差异
TCP每个数据封包都需要确认,因此不适合高速数据传输场景,比如看视频、网络游戏等。
第一类:TCP场景
远程控制(SSH)
File Transfer Protocol(FTP)
邮件(SMTP、IMAP)等
点对点文件传输(微信等)
第二类:UDP场景
网络游戏
音视频传输
DNS
Ping
直播
第三类:模糊地带
HTTP(目前以TCP为主)
文件传输
总之,UDP的核心是灵活、轻量,构造了最小版本的传输层协议。在这个之上,还可以实现连接(Connection),实现会话(Session),实现可靠性(Reliability)。TCP的核心是封装好一套解决可靠性的方案。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。