本篇內(nèi)容主要講解“TCP和UDP的區(qū)別有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“TCP和UDP的區(qū)別有哪些”吧!
成都創(chuàng)新互聯(lián)公司于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營銷網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元碾子山做網(wǎng)站,已為上家服務(wù),為碾子山各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
首先強(qiáng)調(diào)一點(diǎn),TCP/IP協(xié)議是一個(gè)協(xié)議簇。里面包括很多協(xié)議的,UDP只是其中的一個(gè), 之所以命名為TCP/IP協(xié)議,因?yàn)門CP、IP協(xié)議是兩個(gè)很重要的協(xié)議,就用他兩命名了。
兩個(gè)協(xié)議的區(qū)別實(shí)際使用時(shí),只需要記住“TCP正常連接發(fā)送數(shù)據(jù)時(shí)一般不會(huì)產(chǎn)生丟包(排除上下層其他因素),而UDP產(chǎn)生丟包是很常見的事。”
1下面著重講解一下TCP協(xié)議和UDP協(xié)議的區(qū)別
1、基于連接與無連接;
2、對(duì)系統(tǒng)資源的要求(TCP較多,UDP少);
3、UDP程序結(jié)構(gòu)較簡(jiǎn)單;
4、流模式與數(shù)據(jù)報(bào)模式 ;
5、TCP保證數(shù)據(jù)正確性,UDP可能丟包;
6、TCP保證數(shù)據(jù)順序,UDP不保證。
通過以上分析,可能會(huì)有人認(rèn)為,鑒于TCP可靠的傳輸協(xié)議,那么它一定優(yōu)于UDP,其實(shí)不然。下面舉例說明這個(gè)問題:
TCP用于在傳輸層有必要實(shí)現(xiàn)可靠傳輸?shù)那闆r。由于它是面向有鏈接并具備順序控制、重發(fā)控制等機(jī)制,所以它可以為應(yīng)用提供可靠傳輸。
在另方面,UDP主要用于那些對(duì)高速傳輸和實(shí)時(shí)性較高要求的通信或廣播通信。我們舉一個(gè)例子-通過IP電話進(jìn)行通話,如果使用TCP,數(shù)據(jù)在傳輸圖中如果丟失會(huì)被重發(fā),但這樣無法流暢地傳輸通話人的聲音,會(huì)導(dǎo)致無法進(jìn)行正常交流。而采用UDP,它不會(huì)進(jìn)行重發(fā)處理。從而也就不會(huì)有聲音大幅度延遲到達(dá)的問題。即使有部分?jǐn)?shù)據(jù)丟失,也只是會(huì)影響某一小部分的通話。此外,在多播與廣播信道中也使用UDP而不是TCP。
TCP(Transmission Control Protocol,傳輸控制協(xié)議)是面向連接的協(xié)議,也就是說,在收發(fā)數(shù)據(jù)前,必須和對(duì)方建立可靠的連接。 一個(gè)TCP連接必須要經(jīng)過三次“對(duì)話”才能建立起來,其中的過程非常復(fù)雜,只簡(jiǎn)單的描述下這三次對(duì)話的簡(jiǎn)單過程:
1)主機(jī)A向主機(jī)B發(fā)出連接請(qǐng)求數(shù)據(jù)包:“我想給你發(fā)數(shù)據(jù),可以嗎?”,這是第一次對(duì)話;
2)主機(jī)B向主機(jī)A發(fā)送同意連接和要求同步 (同步就是兩臺(tái)主機(jī)一個(gè)在發(fā)送,一個(gè)在接收,協(xié)調(diào)工作)的數(shù)據(jù)包 :“可以,你什么時(shí)候發(fā)?”,這是第二次對(duì)話;
3)主機(jī)A再發(fā)出一個(gè)數(shù)據(jù)包確認(rèn)主機(jī)B的要求同步:“我現(xiàn)在就發(fā),你接著吧!”, 這是第三次對(duì)話。
三次“對(duì)話”的目的是使數(shù)據(jù)包的發(fā)送和接收同步,經(jīng)過三次“對(duì)話”之后,主機(jī)A才向主機(jī)B正式發(fā)送數(shù)據(jù),這也是保證可靠傳輸?shù)南葲Q條件。
6UDP(User Data Protocol,用戶數(shù)據(jù)報(bào)協(xié)議)
1、UDP是一個(gè)非連接的協(xié)議,傳輸數(shù)據(jù)之前源端和終端不建立連接,當(dāng)它想傳送時(shí)就簡(jiǎn)單地去抓取來自應(yīng)用程序的數(shù)據(jù),并盡可能快地把它扔到網(wǎng)絡(luò)上。 在發(fā)送端,UDP傳送數(shù)據(jù)的速度僅僅是受應(yīng)用程序生成數(shù)據(jù)的速度、 計(jì)算機(jī)的能力和傳輸帶寬的限制;在接收端,UDP把每個(gè)消息段放在隊(duì)列中,應(yīng)用程序每次從隊(duì)列中讀一個(gè)消息段。
2、 由于傳輸數(shù)據(jù)不建立連接,因此也就不需要維護(hù)連接狀態(tài),包括收發(fā)狀態(tài)等,因此一臺(tái)服務(wù)機(jī)可同時(shí)向多個(gè)客戶機(jī)傳輸相同的消息。
3、UDP信息包的標(biāo)題很短,只有8個(gè)字節(jié),相對(duì)于TCP的20個(gè)字節(jié)信息包的額外開銷很小。
4、吞吐量不受擁擠控制算法的調(diào)節(jié),只受應(yīng)用軟件生成數(shù)據(jù)的速率、傳輸帶寬、 源端和終端主機(jī)性能的限制。
5、UDP使用盡最大努力交付,即不保證可靠交付,因此主機(jī)不需要維持復(fù)雜的鏈接狀態(tài)表(這里面有許多參數(shù))。
6、UDP是面向報(bào)文的。發(fā)送方的UDP對(duì)應(yīng)用程序交下來的報(bào)文, 在添加首部后就向下交付給IP層。既不拆分,也不合并,而是保留這些報(bào)文的邊界, 因此,應(yīng)用程序需要選擇合適的報(bào)文大小。
我們經(jīng)常使用“ping”命令來測(cè)試兩臺(tái)主機(jī)之間TCP/IP通信是否正常, 其實(shí)“ping”命令的原理就是向?qū)Ψ街鳈C(jī)發(fā)送UDP數(shù)據(jù)包,然后對(duì)方主機(jī)確認(rèn)收到數(shù)據(jù)包, 如果數(shù)據(jù)包是否到達(dá)的消息及時(shí)反饋回來,那么網(wǎng)絡(luò)就是通的。
ping命令是用來探測(cè)主機(jī)到主機(jī)之間是否可通信,如果不能ping到某臺(tái)主機(jī),表明不能和這臺(tái)主機(jī)建立連接。ping命令是使用 IP 和網(wǎng)絡(luò)控制信息協(xié)議 (ICMP),因而沒有涉及到任何傳輸協(xié)議(UDP/TCP) 和應(yīng)用程序。它發(fā)送icmp回送請(qǐng)求消息給目的主機(jī)。
ICMP協(xié)議規(guī)定:目的主機(jī)必須返回ICMP回送應(yīng)答消息給源主機(jī)。如果源主機(jī)在一定時(shí)間內(nèi)收到應(yīng)答,則認(rèn)為主機(jī)可達(dá)。
到此,相信大家對(duì)“TCP和UDP的區(qū)別有哪些”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!