TCP(Transmission Control Protocol):傳輸控制協議
UDP(User Datagram Protocol):用戶數據報協議
主要從連接性(Connectivity)、可靠性(Reliability)、有序性(Ordering)、有界性(Boundary)、擁塞控制(Congestion or Flow control)、傳輸速度(Speed)、量級(Heavy/Light weight)、頭部大小(Header size)等8個方面來講:
1. TCP是面向連接(Connection oriented)的協議,UDP是無連接(Connection less)協議;
TCP用三次握手建立連接:1) Client向server發送SYN;2) Server接收到SYN,回復Client一個SYN-ACK;3) Client接收到SYN_ACK,回復Server一個ACK。到此,連接建成。UDP發送數據前不需要建立連接。
2. TCP可靠,UDP不可靠;
TCP丟包會自動重傳,UDP不會。
3. TCP有序,UDP無序;
消息在傳輸過程中可能會亂序,后發送的消息可能會先到達,TCP會對其進行重排序,UDP不會。
4. TCP無界,UDP有界;
TCP通過字節流傳輸,UDP中每一個包都是單獨的。
5. TCP有流量控制(擁塞控制),UDP沒有;
主要靠三次握手實現。以及慢開始、擁塞避免、快重傳、快恢復
6. TCP傳輸慢,UDP傳輸快;
因為TCP需要建立連接、保證可靠性和有序性,所以比較耗時。這就是為什么視頻流、廣播電視、在線多媒體游戲等選擇使用UDP。
7. TCP是重量級的,UDP是輕量級的;
TCP要建立連接、保證可靠性和有序性,就會傳輸更多的信息,如TCP的包頭比較大。
8. TCP需要更多資源,UDP則要好上很多
9. 應用場合不同:TCP一般應用在對可靠性要求比較高的場合,例如http,ftp等等。而UDP一般應用在對實時性要求較高場合,例如視頻直播,大文件傳輸等等
小結:
TCP是面向連接的、可靠的、有序的、速度慢的協議;UDP是無連接的、不可靠的、無序的、速度快的協議。
TCP開銷比UDP大,TCP頭部需要20字節,UDP頭部只要8個字節。
TCP無界有擁塞控制,TCP有界無擁塞控制。
補充:
基於TCP的協議有:HTTP/HTTPS,Telnet,FTP,SMTP。
基於UDP的協議有:DHCP,DNS,SNMP,TFTP,BOOTP。