UDP
UDP提供儘量少的傳輸層服務,除了複用和解複用外,還提供了輕量級的錯誤檢查。UDP將進程消息加上源端口號和目的端口號(用來複用和解複用),再加上兩個域,直接將段傳送給網絡層。在發送段之前兩個傳輸層實體之間沒有握手,因此成爲無連接的。
有許多應用適合UDP的原因是:
- 很好的應用層控制(發送什麼數據和什麼時候發送)
UDP可以直接將封裝好的段傳給網絡層進行傳輸,而TCP有擁塞控制和握手,不管這些機制耗時多少 - 不需要建立連接
TCP在發送信息之前需要三次握手建立連接,而UDP直接發送信息,沒有延遲。這也就是DNS使用UDP的原因,而http使用TCP是因爲對於web網頁,可靠性很重要。 - 不需要連接狀態
TCP需要在端系統中保存連接狀態,包括接收端和發送端的緩衝信息,擁塞控制參數,序號和確認號,而UDP不需要保存這些信息,因此一個使用UDP的服務器可以支持更多的客戶端 - 更小的頭部載荷
TCP段有20字節頭部,UDP只有8字節頭部
UDP的段結構
UDP段包括4個域,每個域佔兩個字節:
- 源端口號
- 目的端口號
- 段長度(頭部+數據)
- 校驗和,用來檢查段中頭部是否有錯誤
UDP校驗和
將除了校驗和的三個域的二進制按位相加,得到的和進行取反,填入校驗和域。在接收端將這四個域的二進制數按位相加,如果不全爲1,則傳輸中發送錯誤。
儘管UDP提供錯誤檢驗,但是卻沒有提供錯誤校正的機制