TCP和UDP都是传输层协议,上面是应用层,下面是网络层
TCP与UDP区别:
- TCP(传输控制协议)提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
- UDP(用户数据报协议)是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
基于TCP的应用层协议:
协议 | 全称 | 默认端口 |
---|---|---|
HTTP | HyperText Transfer Protocol(超文本传输协议) | 80 |
FTP | File Transfer Protocol (文件传输协议) | 20用于传输数据,21用于传输控制信息 |
SMTP | Simple Mail Transfer Protocol (简单邮件传输协议) | 25 |
SSH | Secure Shell | 22 |
TELNET | Teletype over the Network (网络电传) | 23 |
基于UDP的应用层协议:
协议 | 全称 | 端口 |
---|---|---|
TFTP | Trivial File Transfer Protocol (简单文件传输协议) | 69 |
SNMP | Simple Network Management Protocol (简单网络管理协议) | 通过UDP端口161接收,只有Trap信息采用UDP端口162。 |
NTP | Network Time Protocol (网络时间协议) | 123 |
应用层协议与其他层协议的关系大致如下:
值得注意的是,上图有一个错误,DNS协议同时使用TCP和UDP协议
-
DNS区域传输的时候使用TCP协议:
- 辅域名服务器会定时(一般3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,会执行一次区域传送,进行数据同步。区域传送使用TCP而不是UDP,因为数据同步传送的数据量比一个请求应答的数据量要多得多。
- TCP是一种可靠连接,保证了数据的准确性。
-
域名解析时使用UDP协议:客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过三次握手,这样DNS服务器负载更低,响应更快。理论上说,客户端也可以指定向DNS服务器查询时用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。
还有一个值得注意的是,HTTP/1.1和HTTP/2都是基于TCP协议的,但是在2022年6月6日,HTTP/3被标准化为 RFC 9114,这意味着HTTP/3协议已经进入了稳定的状态,HTTP/3 是 HTTP 超文本传输协议的第三个主要版本,而HTTP3是基于UDP协议的