1.TCP面向连接,再数据发送前要先进行三次握手,UDP不需要进行三次握手
2.TCP发送的是数据流,在应用层没有限制,只是会受内核缓冲区以及internet网中的设备缓冲区大小的限制,所以在会被分割成不超过MSS的报文段(可以谈谈MSS的作用),以免在IP层分片导致效率变低
UDP发送的是数据报,如果在应用层不对报文的大小加以限制的话,在IP层会进行分片,而UDP他是不提供可靠交付的,那么对端就收到的数据就不完整,所以说像DNS这种协议在DNS包大于512字节的时候会改用TCP连接来发送数据
3.TCP他不像udp一样尽最大能力的把数据发送给对端,他同时要兼顾对端的接收能力和网络环境的优劣,所以有流量控制,拥塞控制这些算法,同时也要保证数据的可靠性
4.使用场景:像一些实时性比较高而且丢包不敏感的场景可以使用UDP(实时音视频通信,直播),还有一些本来发送包就比较少的,比如DNS,如果使用TCP的话光握手就需要三个包,还有多播组播,因为TCP是点对点传输,所以实现不了,TCP的话更适合发送一些需要可靠性的数据比如HTTP、FTP就是使用的TCP