UDP


一、概述

1、什么是UDP

​ UDP 是User Datagram Protocol的簡稱, 中文名是用戶數據報協議,是OSI(Open System Interconnection,開放式系統互聯) 參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務

2、什么時候用UDP

​ 對速度要求比較高時使用UDP,比如視頻聊天(流暢度優先時),qq聊天,dns域名解析等

3、怎么用UDP

​ java socker實現udp編程(具體使用DatagramSocket )

4、UDP的特點

UDP 是無連接的,即發送數據之前不需要建立連接。

UDP 使用盡最大努力交付,即不保證可靠交付,同時也不使用擁塞控制。

UDP 是面向報文的。UDP 沒有擁塞控制,很適合多媒體通信的要求。

UDP 支持一對一、一對多、多對一和多對多的交互通信。

UDP 的首部開銷小,只有 8 個字節。

image-20210105155053457

5、UDP存在的問題

1、沒有擁塞控制。當很多主機都向網絡發送高數據量的視頻流時,網絡很容易就占滿,導致大家都無法接收

2、是不可靠傳輸。需要引入確認機制改進UDP不可靠的問題

二、UDP報文格式

image-20210105155440131

源端口:源端口號。在需要對方回信時。不需要時可用全0

目的端口:目的端口號。這在終點交付報文時必須使用

長度:UDP 用戶數據報的長度,其最小值是8(僅有首部)

檢驗和:檢測 UDP 用戶數據報在傳輸中是否有錯。有錯就丟棄

​ 另外UDP還有偽首部:

即並不是真正的UDP報文首部信息,包含源ip地址,目的ip地址等信息。只是在計算校驗和時,臨時添加在UDP首部的

三、UDP校驗和的計算

image-20210105160344955

一、二進制反碼求和?

1、假設要傳輸的數據為1100,1010 。那么首先得到數據的反碼為:0011,0101

2、然后將0011 + 0101 ==》得到:1000 具體是這樣的:(0+0=00 1+0=01 1+1=10)

二、反碼計算

​ 將以上的結果再求反碼得到校驗和: 0111。 那么傳送的數據就是1100,1010,0111(校驗和)

三、怎么判斷數據是否正確

​ 接收方收到之后,同樣將數據進行二進制求和:即0011,0101,1000==》最后求和得到1111。如果全為1,那么說明數據是准確的

四、抓包演示

image-20210105162344263

參考鏈接:

https://zhuanlan.zhihu.com/p/64154915

https://blog.csdn.net/stone_Yu/article/details/81611067

https://blog.csdn.net/yjxsdzx/article/details/71937886

https://www.jianshu.com/p/f1bd10f3d170

https://blog.csdn.net/u012063703/article/details/45850343


如果本篇博客有任何錯誤和建議,歡迎大佬們批評指正

我是知逆,我們下期見

Peace


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM