13、TCP和UDP的区别【高频】
-
TCP是面向字节流的,它是按一个字节一个字节地传输数据的,并不关心传输了多少报文段;而UDP面向报文的,它是以报文为单位传输数据的,并保留了原始报文的边界,并不拆分
-
TCP是面向连接的,传输数据前经过三次握手简历连接;而UDP是无连接的,在输出数据前不需要任何准备,因此也没有建立连接的时延
-
TCP只能单播传输(点对点);而UDP是无连接的,所以它的传播方式更加灵活:可以单播,多播,广播(一对多、多对一皆可)
-
TCP通过校验和、确认应答、超时重传、流量控制等机制,可以保证传输的数据 按序到达,不会丢失和重复;而UDP不能保证数据是否能正确传输
-
TCP 通过拥塞控机制,可以根据网络的拥塞情况,调整传输速率;而UDP没有拥塞控制,网络拥塞时也不会降低自己的传输速率
-
TCP报文首部至少有 20字节,包括 序列号、确认号、选项字段等信息;而UDP报文首部只有 8字节并且是固定不变的,开销较小
TCP:
UDP:
-
TCP 的数据大小如果大于 MSS 大小,则会在传输层分片和组装。如果中途丢失一个分片,只需要传输丢失的这一个分片即可。
UDP 的数据大小如果大于 MTU(以太网中一般是1500字节) 大小,则会在 IP 层进行分片和组装。但是如果中途丢了一个分片,则就需要重传所有的数据包,影响效率。所以通常 UDP 的报文要小于 MTU。
MSS和MTU
MSS:maximum segment size,最大分节大小,为TCP数据包每次传输的最大数据分段大小。MSS值为MTU值减去IPv4 Header(20 Byte)和TCP header(20 Byte)得到
MTU:maximum transmission unit,最大传输单元,由硬件规定,如以太网的MTU为1500字节。主要在数据链路层
- TCP 适用于 需要可靠传输 的应用,比如 网页浏览、文件传输等;而 UDP 适用于 对实时性要求高 的应用,比如 语音通话、视频会议等