A. 計算機網路,UDP數據報的校驗和欄位是通過什麼來校驗源和目的IP的呢
其實這是一種加密技術用於對文件內容進行審計的方法,使用 精通讀文件把文件讀到內存中,再對文件內容作一個 MD5 校驗得到一串密碼,就是校驗和。
補充:
1、IP首部校驗和欄位是根據IP首部計算的校驗和碼,它不對首部後面的數據進行計算。ICMP、IGMP、UDP和TCP在它們各自的首部中均含有同時覆蓋首部和數據校驗和碼。
2、IP首部校驗和計算:
為了計算一份數據報的IP檢驗和,首先把檢驗和欄位置為0。然後,對首部中每個16bit進行二進制反碼求和(整個首部看成是由一串16bit的字組成),結果存在檢驗和欄位中。當收到一份IP數據報後,同樣對首部中每個16bit進行二進制反碼的求和。由於接收方在計算過程中包含了發送方存在首部中的檢驗和,因此,如果首部在傳輸過程中沒有發生任何差錯,那麼接收方計算的結果應該為全1。如果結果不是全1(即檢驗和錯誤),那麼IP就丟棄收到的數據報。但是不生成差錯報文,由上層去發現丟失的數據報並進行重傳。
3、TCP和UDP校驗和計算(兩者相同)
校驗和還包含—個96位的偽首標,理論上它位於TCP首標的前面。這個偽首標包含了源地址、目的地址、協議和TCP長度等欄位,這使得TCP能夠防止出現路由選擇錯誤的數據段。這些信息由網際協議(IP)承載,通過TCP/網路介面,在IP上運行的TCP調用參數或者結果中傳遞。
偽首部並非UDP數據報中實際的有效成分。偽首部是一個虛擬的數據結構,其中的信息是從數據報所在IP分組頭的分組頭中提取的,既不向下傳送也不向上遞交,而僅僅是為計算校驗和。
這樣的校驗和,既校驗了UDP用戶數據的源埠號和目的埠號以及UDP用戶數據報的數據部分,又檢驗了IP數據報的源IP地址和目的地址。(偽報頭保證UDP和TCP數據單元到達正確的目的地址。因此,偽報頭中包含IP地址並且作為計算校驗和需要考慮的一部分。最終目的端根據偽報頭和數據單元計算校驗和以驗證通信數據在傳輸過程中沒有改變而且到達了正確的目的地址。
B. UDP的校驗和計算時數據是怎樣計算的
UDP計算校驗和的方法和計算IP數據報首部校驗和的方法相似。但不同的是:IP數據報的校驗和只檢驗IP數據報的首部,但UDP的校驗和是將首部和數據部分一起都檢驗。在發送端,首先是將全零放入檢驗和欄位。再將偽首部以及UDP用戶數據報看成是由許多16bit的字串接起來。
若UDP用戶數據報的數據部分不是偶數個位元組,則要填入一個全零位元組(即:最後一個基數位元組應是16位數的高位元組而低位元組填0)。然後按二進制反碼計算出這些16bit字的和(兩個數進行二進制反碼求和的運算的規則是:從低位到高位逐列進行計算。
0和0相加是0,0和1相加是1,1和1相加是0但要產生一個進位1,加到下一列。若最高位相加後產生進位,則最後得到的結果要加1)。 將此和的二進制反碼寫入校驗和欄位後,發送此UDP用戶數據報。
在接收端,將收到的UDP用戶數據報連同偽首部(以及可能的填充全零位元組)一起,按二進制反碼求這些16bit字的和。 當無差錯時其結果應全為1。否則就表明有差錯出現, 接收端就應將此UDP用戶數據報丟棄。
(2)計算機網路udp檢驗和例子擴展閱讀:
UDP協議全稱是用戶數據報協議,在網路中它與TCP協議一樣用於處理數據包,是一種無連接的協議。在OSI模型中,在第四層——傳輸層,處於IP協議的上一層。UDP有不提供數據包分組、組裝和不能對數據包進行排序的缺點,也就是說,當報文發送之後,是無法得知其是否安全完整到達的。
UDP用來支持那些需要在計算機之間傳輸數據的網路應用。包括網路視頻會議系統在內的眾多的客戶/伺服器模式的網路應用都需要使用UDP協議。
UDP協議從問世至今已經被使用了很多年,雖然其最初的光彩已經被一些類似協議所掩蓋,但是即使是在今天UDP仍然不失為一項非常實用和可行的網路傳輸層協議。
UDP報文沒有可靠性保證、順序保證和流量控制欄位等,可靠性較差。但是正因為UDP協議的控制選項較少,在數據傳輸過程中延遲小、數據傳輸效率高,適合對可靠性要求不高的應用程序,或者可以保障可靠性的應用程序,如DNS、TFTP、SNMP等。
C. 計算機網路-運輸層-用戶數據報協議UDP
用戶數據報協議UDP只在IP的數據報服務之上增加的功能:復用和分用的功能以及差錯檢測的功能。
UDP的主要特點是:
(1) UDP是無連接的 ,即發送數據之前不需要建立連接(當然,發送數據結束時也沒有連接可釋放),因此了開銷和發送數據之前的時延。
(2) UDP使用盡最大努力交付 ,即不保證可靠交付,因此主機不需要維持復雜的連接狀態表(這裡面有許多參數)。
(3) UDP是面向報文的 。發送方的UDP對應用程序交下來的報文,在添加首部後就向下交付IP層。UDP對應用層交下來的報文,既不合並,也不拆分,而是保留這些報文的邊界。這就是說,應用層交給UDP多長的報文,UDP就照樣發送,即一次發送一個報文,如圖5-4所示。在接收方的UDP,對IP層交上來的UDP用戶數據報,在去除首部後就原封不動地交付上層的應用進程。也就是說,UDP一次交付一個完整的報文。因此,應用程序必須選擇合適大小的報文,若報文太長,UDP把它交給IP層後,IP層在傳送時可能要進行分片,這會降低IP層的效率。反之,若報文太短,UDP把它交給IP層後,會使IP數據報的首部的相對長度太大,這也降低了IP層的效率。
(4)UDP沒有擁塞控制,因此網路出現的擁塞不會使源主機的發送速率降低。這對某些實時應用是很重要的。很多的實時應用(如P電話、實時祝頻會議等)要求源主機以恆定的速率發遞數據,並且允許在網鉻發生擁塞時丟失一些數據,但卻不允許數據有太大的時延。UDP正好適合這種要求。
(5)UDP支持一對一、一對多、多對一和多對多的交互通信.
(6)UDP的首部開銷小,只有8個位元組,比TCP的20個位元組的首部要短。
(7)網路環境差的情況下,丟包嚴重。
雖然某些實時應用需要使用沒有擁塞控制的UDP,但當很多的源主機同時都向網路發送高速率的實時視領流時,網鉻就有可能發生擁塞。結果大家都無法正常接收。因此,不使用擁塞控制功能的UDP有可能會引起網路產生嚴重的擁塞問題。
還有一些使用UDP的實時應用,需要對UDP的不可靠的傳輸進行適當的改進,以減少數據的丟失。在這種情況下,應用進程本身可以在不影響應用的實時性的前提下,增加一些提高可靠性的措施,如採用前向糾錯或重傳己丟失的報文。
用戶數據報UDP有兩個欄位:數據欄位和首部欄位。首部欄位很簡單,只有8個位元組(圖5-5),由四個欄位組成,每個欄位的長度都是兩個位元組。各欄位意義如下:
(1)源埠 源埠號。在需要對方回信時選用。不需要時可用全0。
(2)目的埠 目的埠號。這在終點交付報文時必須使用。
(3)長度 UDP用戶數據報的長度,其最小值是8(僅有首部)。
(4)檢驗和 檢測UDP用戶數據報在傳輸中是否有錯。有錯就丟棄。
偽首部的第3欄位是全零;第4欄位是P首部中的協議欄位的值,對於 UDP協議欄位值為17 ;第5欄位是UDP用戶數據報的長度。當運輸層從IP層收到UDP數據報時,就根據首部中的目的埠,把UDP數據報通過相應的埠,上交最後的終點一應用進程。
如果接收方UDP發現收到的報文中的目的埠號不正確(即不存在對應於該埠號的應用進程),就丟棄該報文,並由 網際控制報文協議ICMP發送「埠不可達」差錯報文 給發送方。「ICMP的應用」中的traceroute時,就是讓發送的UDP用戶數據報故意使用一個非法的UDP埠,結果ICMP就返回「埠不可達」差錯報文,因而達到了測試的目的。
請注意,雖然在UDP之間的通信要用到其埠號,但由於UDP的通信是無連接的,因此不需要使用套接字(TCP之間的通信必須要在兩個套接字之間建立連接)。
UDP用戶數據報首部中檢驗和的計算方法有些特殊。在計算檢驗和時,要在UDP用戶數據報之前增加12個位元組的偽首部。所謂「偽首部」是因為這種偽首部並不是UDP用戶數據報真正的首部。只是在計算檢驗和時,臨時添加在UDP用戶數據報前面,得到一個臨時的UDP用戶數據報。檢驗和就是按照這個臨時的UDP用戶數據報來計算的。偽首部既不向下傳送也不向上遞交,而僅僅是為了計算檢驗和。
UDP計算檢驗和的方法 和計算IP數據報首部檢驗和的方法相似。但不同的是:IP數據報的檢驗和只檢驗IP數據報的首部,但UDP的檢驗和是把首部和數據部分一起都檢驗。 在發送方 ,首先是先把全零放入檢驗和欄位。再把偽首部以及UDP用戶數據報看成是由許多16位的字串接起來的。若UDP用戶數據報的數據部分不是偶數個位元組,則要填入一個全零位元組(但此位元組不發送)。然後按二進制反碼計算出這些16位字的和。將此和的二進制反碼寫入檢驗和欄位後,就發送這樣的UDP用戶數據報。 在接收方 ,把收到的UDP用戶數據報連同偽首部(以及可能的填充全零位元組)一起,轉為8位數二進制,然後按二進制反碼求這些16位字的和。當無差錯時其結果應為全1。否則就表明有差錯出現,接收方就應丟棄這個UDP用戶數據報(也可以上交給應用層,但附上出現了差錯的警告)。 檢驗和 ,既檢查了UDP用戶數據報的源埠號和目的埠號以及UDP用戶數據報的數據部分,又檢查了IP數據報的源P地址和目的地址。
這里假定用戶數據報的長度是15位元組,因此要添加一個全0的位元組。這種簡單的差錯檢驗方法的檢錯能力並不強,但它的好處是簡單,處理起來較快。