写了这么多篇关于 TCP 和 UDP 的文章,还没有好好聊过这两个协议的区别,这篇文章我们就来开诚布公的谈一谈。
关于 TCP 和 UDP ,想必大家都看过一张这样的图。
在滑动窗口以外的部分是尚未发送的报文段和已经接受到的报文段,如果报文段已经收到确认则不可进行重发,此时报文段就可以从缓冲区中清除。
在收到确认的情况下,会将窗口滑动到确认应答中确认号的位置,如上图所示,这样可以顺序的将多个段同时发送,用以提高通信性能,这种窗口也叫做 滑动窗口(Sliding window)
。
UDP 发送的报文段不需要确认,也就没有窗口的概念,所以 UDP 传输效率比较高。
TCP 和 UDP 在效率、报文段、流量控制、连接管理上均存在差异,由于这些差异导致了应用场景要有不同的选择,由于 TCP 每个包都需要进行确认,因此 TCP 不适合告诉传输数据的场景,像是这种场景使用 UDP 就好了;像是 Ping 和 DNS Lookup,这类型的操作只需要一次简单的请求/返回,不需要建立连接,用 UDP 就足够了。比如 HTTP 协议需要考虑请求响应的可靠性,这种场景应该使用 TCP 协议,但是像 HTTP 3.0 这类应用层协议,从功能性上思考,暂时没有找到太多的优化点,但是想要把网络优化到极致,就会用 UDP 作为底层技术,然后在 UDP 基础上解决可靠性。
本人写的计算机网络系列文章
计算机网络基础知识TCP/IP 基础知识计算机网络应用层计算机网络传输层计算机网络网络层计算机网络数据链路层一文了解 ARP 协议一文了解 DNS 协议一文了解 ICMP 协议一文了解 DHCP 协议一文了解 NAT 协议Web 页面的请求流程,超详细什么是 Socket一文了解路由选择协议一文了解 HTTP/2.0一文了解 QUIC 协议一文了解 HTTP/3.0计算机网络自学指南计算机网络核心概念计算机网络发展史学计算机网络,看计算机自顶向下好还是谢希仁的计算机好如果对你有帮助,大家可以点赞评论,你的支持就是我更新最大的动力。
作者:cxuan
本文版权归作者有,未经作者允许不能转载,否则追究法律责任的权利。
如果文中有什么错误,欢迎指出。以免更多的人被误导。