無連接運輸:UDP
多路復用和解復用與校驗和是UDP唯一能做的事,運輸層的協議必須做點什麼,什麼都沒有就不需要這一層了。
為什麼要使用UDP
既然有了可靠傳輸的TCP,為什麼還要在udp之上來構件應用呢?
- 有效載荷大,TCP頭部20Byte,UDP頭部8B,相同的MTU下,傳輸的數據較多。
- 無需建立連接,時延小,直接就開始傳輸數據,不需要開頭的三次握手,對於一個發送一次報文就能解決的應用,TCP握手的時延是不可以忽略的。
- 無連接的狀態,兩邊的端系統不需要維持通訊的狀態,實現起來更加簡單,資源佔用小,且可以維持更多的通訊。
- TCP有時會故意拖延發送的數據的時間,但是UDP不會,應用程式以什麼樣的速率交給它,他就怎麼樣發出去,整個過程可以由應用程式完全掌握。
報文結構
UDP數據校驗和
與IP頭部欄位中的校驗和不同,它不只是對數據部分進行校驗,還包括UDP的頭部和偽首部,其中UDP長度為整個UDP的長度,17是0x11是UDP的協議號。校驗的過程是16bit一組,不斷累加,溢出16bit的部分截取出來再回滾相加。