- 區別:
- 面向連接vs無連接:tcp三次握手四次揮手建立連接 udp無需建立連接,可以直接發起
- 可靠vs不可靠 tcp采用握手、ack和重傳機制,實現可靠傳輸
- 面向字節流vs面向報文
- UDP面向報文:應用程序交給運輸層的每一個數據,直接把它交給傳輸層,加上UDP首部,無論數據大還是小,然后交給網絡層加上IP首部,於是,IP數據包的長度如果超過網絡的MTU,則需要對IP數據包進行分片
- TCP面向字節流:TCP對應用程序交給他的數據會判斷大小,然后進行組裝交給網絡層,應用程序產生的整體數據與真正發送的單個IP數據報沒有什么聯系
- TCP首部20bytes,udp首部8bytes TCP有流量控制(滑動窗口) 擁塞控制(慢開始、擁塞避免、快重傳、快恢復)
- TCP應用場景
- 效率要求相對低,但對准確性要求相對高的場景,因為傳輸中需要對數據進行確認,重發,排序等操作,效率沒有udp高
- 文件傳輸:FTP\HTTP對數據的准確性要求高,速度可以相對慢
- 發送或接收郵件:POP3\IMAP\SMTP對數據准確性要求高,非緊急應用
- 遠程登陸:TELNET\SSH對數據准確性有一定要求,有連接概念
- UCP應用場景
- 即時通信:QQ聊天,對數據准確性和丟包要求比較低,但速度必須快
- 在線視頻:RTSP速度一定要快,保證視頻連續,但是偶爾花了一個圖像幀,還是可以接受的
- 網絡語音電話:VoIP數據包一般比較小,需要高速發送,偶爾斷音或串音也沒有問題