原文来自公众号:《码农哥》,转载请注明出处!如果文章对你有用,可以收藏转发哦!另外大家可以关注我公众号“码农富哥”,我会持续输出Python、服务端架构、计算机基础等方面的原创文章。TCP/IP中有两个具有代表性的传输层协议,即TCP和UDP。我们来看看传输层在OSI七层协议和TCP/IP四层协议中的位置:TCP和UDP有什么区别和使用场景?下面用一张图来比较一下UDP和TCP:TCPTCP是一种面向连接的、可靠的流式传输协议。Stream指的是一种不间断的数据结构。当一个应用程序使用TCP发送消息时,虽然可以保证发送的顺序,但是仍然像没有数据流的间隔一样发送到接收端。TCP是面向字节的。虽然应用程序与TCP的交互是一次一个数据块(大小不一),但TCP把应用程序看成是一系列非结构化的字节流。TCP有一个缓冲区。当应用程序传输的数据块过长时,TCP可以将其分成较短的块再传输。为了提供可靠的传输,TCP实现了“顺序控制”或“重传控制”机制。此外,它还具有“流量控制(flowcontrol)”、“拥塞控制”、提高网络利用率等诸多功能。TCP具有以下特点:TCP在数据传输过程中充分实现了各种控制功能,可以在丢包时进行重传控制,也可以对顺序乱序的子包进行顺序控制。而这些在UDP中是不可用的。另外,作为面向连接的协议,TCP只有在确认通信对端存在时才会发送数据,这样可以控制通信流量的浪费。根据TCP的这些机制,也可以在IP等无连接网络上实现高可靠性通信(主要通过校验和、序列号、确认响应、重传控制、连接管理、窗口控制等机制实现)。UDPUDP是面向消息的。所谓面向消息是指面向消息的传输方式就是应用层向UDP发送一个多长的消息,UDP原样发送,即一次一个消息。因此,应用程序必须选择合适的消息大小。如果数据包太长,IP层需要分片,降低效率。如果太短,就是IP太小。UDP是一种不可靠的数据报协议,细微的处理都会交给上层应用来完成。在UDP的情况下,虽然可以保证发送消息的大小,但不能保证消息一定会到达。因此,应用程序有时会根据自己的需要进行重传处理。UDP具有以下特点:UDP不提供复杂的控制机制,利用IP提供无连接的通信服务。如果在传输过程中出现丢包,UDP不负责重传。当数据包乱序到达时,UDP没有纠正功能。它是一种将应用程序发送的数据按接收时的原样发送到网络的机制。即使在网络拥塞的情况下,UDP也无法进行流量控制等行为来避免网络拥塞。如果需要上述详细控制,则必须由使用UDP的应用程序处理。UDP常用于以下几个方面:1、少量数据包通信(DNS、SNMP等);2.视频、音频等多媒体通讯(即时通讯);3、仅限于局域网等特定网络的应用通信;4.广播通信(broadcast、multicast)。UDP和TCP的应用它们的应用如下:总结:TCP和UDP的优缺点不能简单绝对的比较:当需要在传输层实现可靠传输时使用TCP;另一方面,UDP主要用于对高速传输和实时性有较高要求的通信或广播通信。TCP和UDP应该根据应用的目的按需使用。最后,如果文章对您有帮助,您可以收藏转发,这将是对我莫大的鼓励!另外大家可以关注我公众号“码农富哥”,我会持续输出Python、服务端架构、计算机基础等方面的原创文章。关注后回复“1024”免费获取图解TCP/IP、亿级大型网站架构、Linux、HTTP、MySQL高性能等关于我的电子书如果文章对你有用,你可以收藏转发,给我莫大的鼓励!另外可以关注我公众号【码农富哥】(coder2025),我会持续输出原创算法和计算机基础文章!
