行業動態

TCP協議與UDP協議的區別

發布時間:2018-01-15 15:27:51  訪問次數:

娇妻系列交换1、通俗的解釋。

娇妻系列交换壹個比喻(打電話和寫信)讓妳迅速了解區別。

說到TCP和UDP,首先要明白“連接”和“無連接”的含義,他們的關系可以用壹個形象地比喻來說明,就是打電話和寫信。

兩個人如果要通話,首先要建立連接——即打電話時的撥號,等待響應後——即接聽電話後,才能相互傳遞信息,最後還要斷開連接——即掛電話。

寫信就比較簡單了,填寫好收信人的地址後將信投入郵筒,收信人就可以收到了。

從這個分析可以看出,建立連接可以在需要雙方建立壹個傳遞信息的通道,在發送方發送請求連接信息接收方響應後,由於是在接受方響應後才開始傳遞信息,而且是在壹個通道中傳送,因此接受方能比較完整地收到發送方發出的信息,即信息傳遞的可靠性比較高。但也正因為需要建立連接,使資源開銷加大(在建立連接前必須等待接受方響應,傳輸信息過程中必須確認信息是否傳到及斷開連接時發出相應的信號等),獨占壹個通道,在斷開連接錢不能建立另壹個連接,即兩人在通話過程中第三方不能打入電話。

而無連接是壹開始就發送信息(嚴格說來,這是沒有開始、結束的),只是壹次性的傳遞,是先不需要接受方的響應,因而在壹定程度上也無法保證信息傳遞的可靠性了,就像寫信壹樣,我們只是將信寄出去,卻不能保證收信人壹定可以收到。

2、專業的解釋

 TCP/IP協議是壹個協議簇。裏面包括很多協議的。UDP只是其中的壹個。之所以命名為TCP/IP協議,因為TCP,IP協議是兩個很重要的協議,就用他兩命名了。

TCP/IP協議集包括應用層,傳輸層,網絡層,網絡訪問層。

其中應用層包括:

超文本傳輸協議(HTTP):萬維網的基本協議.   

文件傳輸(TFTP簡單文件傳輸協議):   

遠程登錄(Telnet),提供遠程訪問其它主機功能,它允許用戶登錄     

internet主機,並在這臺主機上執行命令.    

網絡管理(SNMP簡單網絡管理協議),該協議提供了監控網絡設備的方法,以及配置管理,統計信息收集,性能管理及安全管理等.   

域名系統(DNS),該系統用於在internet中將域名及其公共廣播的網絡節點轉換成IP地址. 

其次網絡層包括:    

Internet協議(IP)     

Internet控制信息協議(ICMP)    

地址解析協議(ARP)    

反向地址解析協議(RARP)  

最後說網絡訪問層:網絡訪問層又稱作主機到網絡層(host-to-network).網絡訪問層的功能包括IP地址與物理地址硬件的映射,以及將IP封裝成幀.基於不同硬件類型的網絡接口,網絡訪問層定義了和物理介質的連接.

當然我這裏說得不夠完善,TCP/IP協議本來就是壹門學問,每壹個分支都是壹個很復雜的流程,但我相信每位學習軟件開發的同學都有必要去仔細了解壹番。

TCP(Transmission Control Protocol,傳輸控制協議)是面向連接的協議,也就是說,在收發數據前,必須和對方建立可靠的連接。壹個TCP連接必須要經過三次“對話”才能建立起來,其中的過程非常復雜,只簡單的描述下這三次對話的簡單過程:主機A向主機B發出連接請求數據包:“我想給妳發數據,可以嗎?”,這是第壹次對話;主機B向主機A發送同意連接和要求同步(同步就是兩臺主機壹個在發送,壹個在接收,協調工作)的數據包:“可以,妳什麽時候發?”,這是第二次對話;主機A再發出壹個數據包確認主機B的要求同步:“我現在就發,妳接著吧!”,這是第三次對話。三次“對話”的目的是使數據包的發送和接收同步,經過三次“對話”之後,主機A才向主機B正式發送數據。

TCP三次握手過程

1 主機A通過向主機B發送壹個含有同步序列號的標誌位的數據段給主機B,向主機B請求建立連接,通過這個數據段,主機A告訴主機B兩件事:我想要和妳通信;妳可以用哪個序列號作為起始數據段來回應我.

2 主機B收到主機A的請求後,用壹個帶有確認應答(ACK)和同步序列號(SYN)標誌位的數據段響應主機A,也告訴主機A兩件事:我已經收到妳的請求了,妳可以傳輸數據了;妳要用哪佧序列號作為起始數據段來回應我.

3 主機A收到這個數據段後,再發送壹個確認應答,確認已收到主機B的數據段:"我已收到回復,我現在要開始傳輸實際數據了".

這樣3次握手就完成了,主機A和主機B就可以傳輸數據了.

3次握手的特點

沒有應用層的數據

SYN這個標誌位只有在TCP建產連接時才會被置1

握手完成後SYN標誌位被置0

TCP建立連接要進行3次握手,而斷開連接要進行4次

1 當主機A完成數據傳輸後,將控制位FIN置1,提出停止TCP連接的請求

2 主機B收到FIN後對其作出響應,確認這壹方向上的TCP連接將關閉,將ACK置1

3 由B端再提出反方向的關閉請求,將FIN置1

4 主機A對主機B的請求進行確認,將ACK置1,雙方向的關閉結束.

由TCP的三次握手和四次斷開可以看出,TCP使用面向連接的通信方式,大大提高了數據通信的可靠性,使發送數據端

和接收端在數據正式傳輸前就有了交互,為數據正式傳輸打下了可靠的基礎

名詞解釋

ACK  TCP報頭的控制位之壹,對數據進行確認.確認由目的端發出,用它來告訴發送端這個序列號之前的數據段都收到了.比如,確認號為X,則表示前X-1個數據段都收到了,只有當ACK=1時,確認號才有效,當ACK=0時,確認號無效,這時會要求重傳數據,保證數據的完整性.

SYN  同步序列號,TCP建立連接時將這個位置1

FIN  發送端完成發送任務位,當TCP完成數據傳輸需要斷開時,提出斷開連接的壹方將這位置1

TCP的包頭結構:

源端口 16位

目標端口 16位

序列號 32位

回應序號 32位

TCP頭長度 4位

reserved 6位

控制代碼 6位

窗口大小 16位

偏移量 16位

校驗和 16位

選項  32位(可選)

這樣我們得出了TCP包頭的最小長度,為20字節。 

UDP(User Data Protocol,用戶數據報協議)

(1) UDP是壹個非連接的協議,傳輸數據之前源端和終端不建立連接,當它想傳送時就簡單地去抓取來自應用程序的數據,並盡可能快地把它扔到網絡上。在發送端,UDP傳送數據的速度僅僅是受應用程序生成數據的速度、計算機的能力和傳輸帶寬的限制;在接收端,UDP把每個消息段放在隊列中,應用程序每次從隊列中讀壹個消息段。

(2) 由於傳輸數據不建立連接,因此也就不需要維護連接狀態,包括收發狀態等,因此壹臺服務機可同時向多個客戶機傳輸相同的消息。

(3) UDP信息包的標題很短,只有8個字節,相對於TCP的20個字節信息包的額外開銷很小。

(4) 吞吐量不受擁擠控制算法的調節,只受應用軟件生成數據的速率、傳輸帶寬、源端和終端主機性能的限制。

(5)UDP使用盡最大努力交付,即不保證可靠交付,因此主機不需要維持復雜的鏈接狀態表(這裏面有許多參數)。

(6)UDP是面向報文的。發送方的UDP對應用程序交下來的報文,在添加首部後就向下交付給IP層。既不拆分,也不合並,而是保留這些報文的邊界,因此,應用程序需要選擇合適的報文大小。

我們經常使用“ping”命令來測試兩臺主機之間TCP/IP通信是否正常,其實“ping”命令的原理就是向對方主機發送UDP數據包,然後對方主機確認收到數據包,如果數據包是否到達的消息及時反饋回來,那麽網絡就是通的。

UDP的包頭結構:

源端口 16位

目的端口 16位

長度 16位

校驗和 16位

娇妻系列交换

1.基於連接與無連接;

2.對系統資源的要求(TCP較多,UDP少);

3.UDP程序結構較簡單;

4.流模式與數據報模式 ;

5.TCP保證數據正確性,UDP可能丟包,TCP保證數據順序,UDP不保證。 

TCP---傳輸控制協議,提供的是面向連接、可靠的字節流服務。當客戶和服務器彼此交換數據前,必須先在雙方之間建立壹個TCP連接,之後才能傳輸數據。TCP提供超時重發,丟棄重復數據,檢驗數據,流量控制等功能,保證數據能從壹端傳到另壹端。

UDP---用戶數據報協議,是壹個簡單的面向數據報的運輸層協議。UDP不提供可靠性,它只是把應用程序傳給IP層的數據報發送出去,但是並不能保證它們能到達目的地。由於UDP在傳輸數據報前不用在客戶和服務器之間建立壹個連接,且沒有超時重發等機制,故而傳輸速度很快. 

現在Internet上流行的協議是TCP/IP協議,該協議中對低於1024的端口都有確切的定義,他們對應著Internet上壹些常見的服務。這些常見的服務可以分為使用TCP端口(面向連接)和使用UDP端口(面向無連接)兩種。  

TCP是面向連接的,有比較高的可靠性, 壹些要求比較高的服務壹般使用這個協議,如FTP、Telnet、SMTP、HTTP、POP3等,而UDP是面向無連接的,使用這個協議的常見服務有DNS、SNMP、QQ等。對於QQ必須另外說明壹下,QQ2003以前是只使用UDP協議的,其服務器使用8000端口,偵聽是否有信息傳來,客戶端使用4000端口,向外發送信息(這也就不難理解在壹般的顯IP的QQ版本中顯示好友的IP地址信息中端口常為4000或其後續端口的原因了),即QQ程序既接受服務又提供服務,在以後的QQ版本中也支持使用TCP協議了。