UDP:用戶數據報協議 是什么

用戶數據報協議英語:User Datagram Protocol,縮寫為UDP),又稱用戶數據報文協議,是一個簡單的面向數據報的傳輸層協議,正式規范為RFC 768。


在TCP/IP模型中,UDP為網絡層以上和應用層以下提供了一個簡單的接口。UDP只提供數據的不可靠傳遞,它一旦把應用程序發給網絡層的數據發送出去,就不保留數據備份(所以UDP有時候也被認為是不可靠的數據報協議)。UDP在IP數據報的頭部僅僅加入了復用和數據校驗(字段)。


UDP首部字段由4個部分組成,其中兩個是可選的。各16bit的來源端口和目的端口用來標記發送和接受的應用進程。因為UDP不需要應答,所以來源端口是可選的,如果來源端口不用,那么置為零。在目的端口后面是長度固定的以字節為單位的長度域,用來指定UDP數據報包括數據部分的長度,長度最小值為8byte。首部剩下地16bit是用來對首部和數據部分一起做校驗和(Checksum)的,這部分是可選的,但在實際應用中一般都使用這一功能。


由于缺乏可靠性且屬于非連接導向協議,UDP應用一般必須允許一定量的丟包、出錯和復制粘貼。但有些應用,比如TFTP,如果需要則必須在應用層增加根本的可靠機制。但是絕大多數UDP應用都不需要可靠機制,甚至可能因為引入可靠機制而降低性能。流媒體(流技術)、即時多媒體游戲和IP電話(VoIP)一定就是典型的UDP應用。如果某個應用需要很高的可靠性,那么可以用傳輸控制協議(TCP協議)來代替UDP。


由于缺乏擁塞控制(congestion control),需要基于網絡的機制來減少因失控和高速UDP流量負荷而導致的擁塞崩潰效應。換句話說,因為UDP發送者不能夠檢測擁塞,所以像使用包隊列和丟棄技術的路由器這樣的網絡基本設備往往就成為降低UDP過大通信量的有效工具。數據報擁塞控制協議(DCCP)設計成通過在諸如流媒體類型的高速率UDP流中,增加主機擁塞控制,來減小這個潛在的問題。

典型網絡上的眾多使用UDP協議的關鍵應用一定程度上是相似的。這些應用包括域名系統(DNS)、簡單網絡管理協議(SNMP)、動態主機配置協議(DHCP)、路由信息協議(RIP)和某些影音流服務等等。


UDP的分組結構

UDP報頭
偏移字節0123
字節?0?1?2?3?4?5?6?7?8?910111213141516171819202122232425262728293031
00來源連接端口目的連接端口
432報文長度校驗和


UDP報頭包括4個字段,每個字段占用2個字節(即16個二進制位)。在IPv4中,“來源連接端口”和“校驗和”是可選字段(以粉色背景標出)。在IPv6中,只有來源連接端口是可選字段。


報文長度
該字段指定UDP報頭和數據總共占用的長度。可能的最小長度是8字節,因為UDP報頭已經占用了8字節。由于這個字段的存在,UDP報文總長不可能超過65535字節(包括8字節的報頭,和65527字節的數據)。實際上通過IPv4協議傳輸時,由于IPv4的頭部信息要占用20字節,因此數據長度不可能超過65507字節(65,535 ? 8字節UDP報頭 ? 20字節IP頭部)。
在IPv6的jumbogram中,是有可能傳輸超過65535字節的UDP數據包的。依據RFC 2675,如果這種情況發生,報文長度應被填寫為0。
校驗和

校驗和字段可以用于發現頭部信息和數據中的傳輸錯誤。該字段在IPv4中是可選的,在IPv6中則是強制的。如果不使用校驗和,該字段應被填充為全0。


UDP校驗和計算


IPv4偽頭部

當UDP運行在IPv4之上時,為了能夠計算校驗和,需要在UDP數據包前添加一個“偽頭部”。偽頭部包括了IPv4頭部中的一些信息,但它并不是發送IP數據包時使用的IP數據包的頭部,而只是一個用來計算校驗和而已。

0 – 78 – 1516 – 2324 – 31
0來源地址
32目的地址
64全零協議名UDP報文長度
96來源連接端口目的連接端口
128報文長度檢驗和
160+?
數據
?


IPv6偽頭部

0 – 78 – 1516 – 2324 – 31
0來源地址
32
64
96
128目的地址
160
192
224
256UDP報文長
288全零下一個指針位置
320來源連接端口目的連接端口
352報文長校驗和
384+?
數據
?


轉自**百科。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449694.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449694.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449694.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

隨想錄(程序員和收入)

距離上一次寫博客已經很長時間了,大約過了三個星期。這三個星期發生了很多事情,這中間也有我自己的思考積累,也有工作上的變故。總之,自己想了很多,也得到了很多。每到這個時候,畢業生朋友們都在尋找工作&a…

iOS進階之正則表達式

最近一直在弄正則表達式,于是在這里整理一下,便于日后查閱。 1、常用符號 ^:字符串的開始$:字符串的結束*:表示零個或若干個?:表示零個或一個:表示一個或若干個| :表示 或 操作. &a…

akshare分析漲停板股票數據

導入包,獲取日期數據 import pandas as pd import numpy as np import akshare as ak #畫圖 import matplotlib.pyplot as plt #正確顯示中文和負號 plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]False #處理時間 from dateutil.parser…

DNS(域名系統) 是什么

域名系統(英文:Domain Name System,縮寫:DNS)是互聯網的一項服務。 它作為將域名和IP地址相互映射的一個分布式數據庫,能夠使人更方便地訪問互聯網。 DNS使用TCP和UDP端口53。當前,對于每一級域…

《The Art of Readable Code》學習筆記(一)

放寒假回家有些頹廢,就是不想看書。但是已經大三了,春節過后就要找實習了。哎,快樂的大學生活終于要過去了。 先從簡單的書看起吧!在圖書館借了本《The Art of Readable Code》,就是教你咋寫好優雅的代碼的&#xff0c…

文件基本處理

1 打開文件,將文件句柄賦值給一個變量 2 拿句柄對文件進行操作 3 關閉文件 將一個文件第一行寫道另外一個文件 f open("test","r",encoding"utf-8") # open找的是系統的編碼 x f.readlines() f.close() f1 open("test1"…

C++ ofstream和ifstream詳細用法

ofstream是從內存到硬盤,ifstream是從硬盤到內存,其實所謂的流緩沖就是內存空間; 在C中,有一個stream這個類,所有的I/O都以這個“流”類為基礎的,包括我們要認識的文件I/O,stream這個類有兩個重要的運算符&…

如何將JAR包發布到Maven中央倉庫?

將jar包發布到Maven中央倉庫(Maven Central Repository)&#xff0c;這樣所有的Java開發者都可以使用Maven直接導入依賴&#xff0c;例如fundebug-java&#xff1a; <!-- https://mvnrepository.com/artifact/com.fundebug/fundebug-java --> <dependency><grou…

SSH、SSL與HTTPS

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 關于加密 在解釋SSH、SSL與HTTPS協議之前我先介紹一下非對稱加密協議。在1976年以前&#xff0c;所有的加密都采用對稱加密&#xff0c…

北向資金運作akshare

import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline from pylab import mpl mpl.rcParams[font.sans-serif][SimHei] mpl.rcParams[axes.unicode_minus]False#獲取交易日歷 import datetime def get_cal_date(start,end):dates ak.to…

網絡性能測試工具iperf詳細使用圖文教程【轉載】

原文&#xff1a;https://www.cnblogs.com/yingsong/p/5682080.html 轉載于:https://www.cnblogs.com/luo30zhao/p/10512042.html

代碼審查:程序員內煉之道

摘要&#xff1a;“關注并弄清楚橋梁修建細節&#xff0c;否則你建起來的橋梁有可能坍塌。”代碼審查更重要的是一種技術分享或者代碼共享。程序員如何提升自我修煉之道&#xff0c;歡迎來支招。 代碼審查更重要的是一種技術分享或者代碼共享。在審查過程中&#xff0c;通過被…

扎實的基礎是成功的法寶

轉載鏈接&#xff1a;https://baijiahao.baidu.com/s?id1610187127874738836&wfrspider&forpc好基礎是好成績的根本,無論做任何事情,基本功的訓練是成功的前提:“還沒有學會走,就想學跑,那不行,肯定會摔跟頭。”這是成功人士的經驗之談。要建成高樓大廈,地基必須打好。…

發送qq郵件

import smtplib from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication# 寫成了一個通用的函數接口&#xff0c;想直接用的話&#xff0c;把參數…

排序代碼(python,c++) 及 基本算法復雜度

0.導語 本節為手撕代碼系列之第一彈&#xff0c;主要來手撕排序算法&#xff0c;主要包括以下幾大排序算法&#xff1a; 直接插入排序 冒泡排序 選擇排序 快速排序 希爾排序 堆排序 歸并排序 1.直接插入排序 【算法思想】 每一步將一個待排序的記錄&#xff0c;插入到前面…

TCP/IP四層模型與OSI參考模型

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 TCP/IP四層模型&#xff1a; 1.鏈路層&#xff08;數據鏈路層/網絡接口層&#xff09;&#xff1a;包括操作系統中的設備驅動程序、計算…

Metal日記:使用步驟指南

本文參考資料&#xff1a; juejin.im/post/5b1e8f… xiaozhuanlan.com/topic/04598… developer.apple.com/videos/play… github.com/quinn0809/G… cloud.tencent.com/developer/a… devstreaming-cdn.apple.com/videos/wwdc… Metal處理邏輯 無論是CoreImage、GPUImage框架&…

還駕馭不了4核? 別人已模擬出百萬核心上的并行

摘要&#xff1a;不管是臺式機還是筆記本&#xff0c;四核雙核都已經不是新鮮的事了。計算機領域的你可能已經認識到了給電腦選配4核的處理器完全是一種浪費&#xff0c;因為大多數的程序都不支持多核心的并行處理。然而斯坦福的計算機科學家最近公布&#xff0c;他們已經模擬出…

docker安裝并運行ubuntu

拉取鏡像 docker pull dorowu/ubuntu-desktop-lxde-vnc 運行容器&#xff1a; docker run -p 6080:80 dorowu/ubuntu-desktop-lxde-vnc 之后就可以http://localhost:6080/

Django內置權限擴展案例

當Django的內置權限無法滿足需求的時候就自己擴展吧~ 背景介紹 overmind項目使用了Django內置的權限系統&#xff0c;Django內置權限系統基于model層做控制&#xff0c;新的model創建后會默認新建三個權限&#xff0c;分別為&#xff1a;add、change、delete&#xff0c;如果給…