|
|
TCP |
UDP |
|
连接 |
面向连接 |
无连接 |
|
连接方式 |
点到点 |
支持一对一,一对多,多对一和多对多 |
|
模式 |
流模式(TCP) |
数据报模式(UDP) |
|
头部大小 |
20字节 |
8字节 |
|
有序性 |
有序 |
无序 |
|
传输速率控制 |
流量控制(拥塞控制) |
无 |
|
可靠性 |
可靠 |
不可靠 |
|
传输速率 |
慢 |
快 |
|
占用系统资源 |
高 |
低 |
|
应用场景 |
效率要求相对低,但对准确性要求相对高的场景。 |
效率要求相对高,对准确性要求相对低的场景 |
两者的区别在于TCP接收的是一堆数据,而每次取多少由主机决定;而UDP发的是数据报,客户发送多少就接收多少。拥有这些区别的原因是由于TCP和UDP的特性不同而决定的。TCP是面向连接的,也就是说,在连接持续的过程中,socket中收到的数据都是由同一台主机发出的,因此,知道保证数据是有序的到达就行了,至于每次读取多少数据自己看着办。 而UDP是无连接的协议,也就是说,只要知道接收端的IP和端口,且网络是可达的,任何主机都可以向接收端发送数据。这时候,如果一次能读取超过一个报文的数据,则会乱套。比如,主机A向发送了报文P1,主机B发送了报文P2,如果能够读取超过一个报文的数据,那么就会将P1和P2的数据合并在了一起,这样的数据是没有意义的。
原文:https://www.cnblogs.com/suihang/p/12886391.html