1. 程式人生 > >學習UDP與TCP的總結

學習UDP與TCP的總結

【UDP協議】

定義:User Datagram Protocol,使用者資料報協議.
主要作用:將網路資料壓縮成資料包的形式。
資料包格式:一個二進位制資料的傳輸單位
工作機制:蠻幹型。
它想傳送時就簡單地去抓取來自應用程式的資料,並儘可能快地把它扔到網路上。因此,在傳送端,UDP傳送資料的速度僅僅是受應用程式生成資料的速度、計算機的能力和傳輸頻寬的限制;在接收端,UDP把每個訊息段放在佇列中,應用程式每次從佇列中讀一個訊息段。

優勢:速度快,較安全。
與TCP協議相比,UDP協議排除了資訊可靠傳遞機制,也就是減少了TCP協議中提供資料包分組、組裝和排序的過程需要的時間消耗。其次,UDP是一個無狀態的傳輸協議,所以它在傳遞資料時非常快。沒有TCP的這些機制,UDP較TCP被攻擊者利用的漏洞就要少一些。

劣勢:可靠性差。
UDP協議是一種無連線的傳輸協議,排除資訊可靠傳遞機制帶來速度優勢的同時,顯然降低了可靠性的需求,也就是UDP協議無法得知其是否安全完整到達的。

應用
因為UDP協議的控制選項較少,在資料傳輸過程中延遲小、資料傳輸效率高,適合對可靠性要求不高的應用程式,或者可以保障可靠性的應用程式,如DNS、TFTP、SNMP等。
在生活中音訊、視訊和普通資料都可以採用UDP協議來進行資料傳輸,比如騰訊QQ這些社交軟體也多采用UDP。

【TCP協議】

TCP:Transmission Control Protocol 傳輸控制協議
主要作用:把資料流分割成適當長度的報文段之後進行傳輸
工作機制

:緊小細微型。
面向連線意味著兩個使用TCP的應用(通常是一個客戶和一個伺服器)在彼此交換資料包之前必須先建立一個TCP連線。這一過程與打電話很相似,先撥號振鈴,等待對方摘機說“喂”,然後才說明是誰。在一個TCP連線中,僅有兩方進行彼此通訊。而UDP更像是發簡訊,將傳送方所有的資訊,將所有資訊一股腦兒全扔到網路中。

優勢:可靠性好

  1. 當TCP發出一個段後,它啟動一個定時器,等待目的端確認收到這個報文段。如果不能及時收到一個確認,將重發這個報文段。當TCP收到發自TCP連線另一端的資料,它將傳送一個確認。TCP有延遲確認的功能,在此功能沒有開啟,則是立即確認。功能開啟,則由定時器觸發確認時間點。
  2. TCP將保持它首部和資料的檢驗和。這是一個端到端的檢驗和,目的是檢測資料在傳輸過程中的任何變化。如果收到段的檢驗和有差錯,TCP將丟棄這個報文段和不確認收到此報文段(希望發端超時並重發)
  3. 既然TCP報文段作為IP資料報來傳輸,而IP資料報的到達可能會失序,因此TCP報文段的到達也可能會失序。如果必要,TCP將對收到的資料進行重新排序,將收到的資料以正確的順序交給應用層。
  4. TCP的接收端必須丟棄重複的資料
  5. 量控制。TCP連線的每一方都有固定大小的緩衝空間。TCP的接收端只允許另一端傳送接收端緩衝區所能接納的資料。這將防止較快主機致使較慢主機的緩衝區溢位。

劣勢:速度慢,佔用系統資源高,易被攻擊
TCP在傳遞資料之前,要先建連線,這會消耗時間,而且在資料傳遞時,確認機制、重傳機制、擁塞控制機制等都會消耗大量的時間。
由於在每臺裝置上都需要維護所有的傳輸連線,而每個連線都會佔用系統的CPU、記憶體等硬體資源。
此外,由於TCP有確認機制、三次握手機制,這些也導致TCP容易被人利用,實現DOS、DDOS、CC等攻擊。

應用
當對網路通訊質量有要求的時候,比如:整個資料要準確無誤的傳遞給對方,這往往用於一些要求可靠的應用,比如HTTP、HTTPS、FTP等傳輸檔案的協議,POP、SMTP等郵件傳輸的協議。
在日常生活中,常見使用TCP協議的應用如下: 瀏覽器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ檔案傳輸 …………