- 相關(guān)推薦
TCP與UDP協(xié)議有什么不同
現在Internet上流行的協(xié)議是TCP/IP協(xié)議,該協(xié)議中對低于1024的端口都有確切的定義,他們對應著(zhù)Internet上一些常見(jiàn)的服務(wù)。下面小編為大家分享一些TCP與UDP協(xié)議有什么不同,歡迎大家參考!
一、TCP協(xié)議簡(jiǎn)介
TCP(Transmission Control Protocol,傳輸控制協(xié)議)是面向連接的協(xié)議,也就是說(shuō),在收發(fā)數據前,必須和對方建立可靠的連接。
一個(gè)TCP連接必須要經(jīng)過(guò)三次“對話(huà)”才能建立起來(lái),其中的過(guò)程非常復雜,只簡(jiǎn)單的描述下這三次對話(huà)的簡(jiǎn)單過(guò)程:主機A向主機B發(fā)出連接請求數據包:“我想給你發(fā)數據,可以嗎?”,這是第一次對話(huà);主機B向主機A發(fā)送同意連接和要求同步(同步就是兩臺主機一個(gè)在發(fā)送,一個(gè)在接收,協(xié)調工作)的數據包:“可以,你什么時(shí)候發(fā)?”,這是第二次對話(huà);主機A再發(fā)出一個(gè)數據包確認主機B的要求同步:“我現在就發(fā),你接著(zhù)吧!”,這是第三次對話(huà)。三次“對話(huà)”的目的是使數據包的發(fā)送和接收同步,經(jīng)過(guò)三次“對話(huà)”之后,主機A才向主機B正式發(fā)送數據。
TCP的三次握手過(guò)程如下:
1. 主機A通過(guò)向主機B發(fā)送一個(gè)含有同步序列號的標志位的數據段給主機B ,向主機B請求建立連接,通過(guò)這個(gè)數據段,主機A告訴主機B 兩件事:我想要和你通信;你可以用哪個(gè)序列號作為起始數據段來(lái)回應我。
2. 主機B收到主機A的請求后,用一個(gè)帶有確認應答(ACK)和同步序列號(SYN)標志位的數據段響應主機A,也告訴主機A兩件事:我已經(jīng)收到你的請求了,你可以傳輸數據了;你要用哪佧序列號作為起始數據段來(lái)回應我。
3. 主機A收到這個(gè)數據段后,再發(fā)送一個(gè)確認應答,確認已收到主機B 的數據段:“我已收到回復,我現在要開(kāi)始傳輸實(shí)際數據了。這樣3次握手就完成了,主機A和主機B就可以傳輸數據了。
TCP建立連接要進(jìn)行3次握手,而斷開(kāi)連接要進(jìn)行4次。
1. 當主機A完成數據傳輸后,將控制位FIN置1,提出停止TCP連接的請求;
2. 主機B收到FIN后對其作出響應,確認這一方向上的TCP連接將關(guān)閉,將ACK置1;
3. 由B端再提出反方向的關(guān)閉請求,將FIN置1;
4. 主機A對主機B的請求進(jìn)行確認,將ACK置1,雙方向的關(guān)閉結束。
由TCP的三次握手和四次斷開(kāi)可以看出,TCP使用面向連接的通信方式,大大提高了數據通信的可靠性,使發(fā)送數據端和接收端在數據正式傳輸前就有了交互,為數據正式傳輸打下了可靠的基礎。
二、UDP協(xié)議簡(jiǎn)介
UDP(User Data Protocol)——用戶(hù)數據報協(xié)議,是一個(gè)簡(jiǎn)單的面向數據報的運輸層協(xié)議。UDP不提供可靠性,它只是把應用程序傳給IP層的數據報發(fā)送出去,但是并不能保證它們能到達目的地。由于UDP在傳輸數據報前不用在客戶(hù)和服務(wù)器之間建立一個(gè)連接,且沒(méi)有超時(shí)重發(fā)等機制,故而傳輸速度很快。
UDP協(xié)議具有如下幾個(gè)特點(diǎn):
(1)UDP是一個(gè)非連接的協(xié)議,傳輸數據之前源端和終端不建立連接,當它想傳送時(shí)就簡(jiǎn)單地去抓取來(lái)自應用程序的數據,并盡可能快地把它扔到網(wǎng)絡(luò )上。在發(fā)送端,UDP傳送數據的速度僅僅是受應用程序生成數據的速度、計算機的能力和傳輸帶寬的限制;在接收端,UDP把每個(gè)消息段放在隊列中,應用程序每次從隊列中讀一個(gè)消息段。
(2)由于傳輸數據不建立連接,因此也就不需要維護連接狀態(tài),包括收發(fā)狀態(tài)等,因此一臺服務(wù)機可同時(shí)向多個(gè)客戶(hù)機傳輸相同的消息。
(3)UDP信息包的標題很短,只有8個(gè)字節,相對于TCP的20個(gè)字節信息包的額外開(kāi)銷(xiāo)很小。
(4)吞吐量不受擁擠控制算法的調節,只受應用軟件生成數據的速率、傳輸帶寬、源端和終端主機性能的限制。
(5)UDP使用盡最大努力交付,即不保證可靠交付,因此主機不需要維持復雜的鏈接狀態(tài)表(這里面有許多參數)。
(6)UDP是面向報文的。發(fā)送方的UDP對應用程序交下來(lái)的報文,在添加首部后就向下交付給IP層。既不拆分,也不合并,而是保留這些報文的邊界,因此,應用程序需要選擇合適的報文大小。
我們經(jīng)常使用“ping”命令來(lái)測試兩臺主機之間TCP/IP通信是否正常,其實(shí)“ping”命令的原理就是向對方主機發(fā)送UDP數據包,然后對方主機確認收到數據包,如果數據包是否到達的消息及時(shí)反饋回來(lái),那么網(wǎng)絡(luò )就是通的。
三、TCP與UDP區別總結
1. TCP面向連接(如打電話(huà)要先撥號建立連接);UDP是無(wú)連接的,即發(fā)送數據之前不需要建立連接;
2. TCP提供可靠的服務(wù)。也就是說(shuō),通過(guò)TCP連接傳送的數據,無(wú)差錯,不丟失,不重復,且按序到達;UDP盡最大努力交付,也不保證可靠交付;
3. TCP面向字節流,實(shí)際上是TCP把數據看成一連串無(wú)結構的字節流;UDP是面向報文的;
4. UDP沒(méi)有擁塞控制,因此網(wǎng)絡(luò )出現擁塞不會(huì )使源主機的發(fā)送速率降低(對實(shí)時(shí)應用很有用,如IP電話(huà),實(shí)時(shí)視頻會(huì )議等);
5. 每一條TCP連接只能是點(diǎn)到點(diǎn)的;UDP支持一對一,一對多,多對一和多對多的交互通信;
6. TCP首部開(kāi)銷(xiāo)20字節;UDP的首部開(kāi)銷(xiāo)小,只有8個(gè)字節;
7. TCP的邏輯通信信道是全雙工的可靠信道,UDP則是不可靠信道。
四、應用場(chǎng)合
UDP適用于不需要TCP可靠機制的情形,比如,當高層協(xié)議或應用程序提供錯誤和流控制功能的時(shí)候,UDP是傳輸層協(xié)議,服務(wù)于很多知名應用層協(xié)議,包括網(wǎng)絡(luò )文件系統(NFS)、簡(jiǎn)單網(wǎng)絡(luò )管理協(xié)議(SNMP)、域名系統(DNS)以及簡(jiǎn)單文件傳輸系統(TFTP)。比如,日常生活中,常見(jiàn)使用UDP協(xié)議的應用如下: QQ語(yǔ)音、QQ視頻、TFTP ……。
TCP是一種面向連接的、可靠的、基于字節流的運輸層通信協(xié)議,通常由IETF的RFC793說(shuō)明。在簡(jiǎn)化的計算機網(wǎng)絡(luò )OSI模型中,它完成運輸層所指定的功能。一些要求比較高的服務(wù)一般使用這個(gè)協(xié)議,如FTP、Telnet、SMTP、HTTP、POP3等。
【TCP與UDP協(xié)議有什么不同】相關(guān)文章:
TCP/IP協(xié)議是什么06-18
不同顏色的捧花有什么不同意義08-22
國內考研與韓國留學(xué)有什么不同09-25
圍棋和其它棋類(lèi)有什么不同08-20
西式快餐和中餐有什么不同08-11
不同種類(lèi)的咖啡豆有什么區別10-05
對TCP/IP網(wǎng)絡(luò )協(xié)議的深入淺出歸納10-16
不同的心理類(lèi)型有哪些05-26