TCP和UDP的區(qū)別

有兩種類型的Internet協(xié)議(IP)通信。 它們是TCP(傳輸控制協(xié)議)以及UDP(用戶數(shù)據(jù)報(bào)協(xié)議)。 TCP是面向連接的 – 建立連接后,可以雙向發(fā)送數(shù)據(jù)疏魏。UDP是一種更簡(jiǎn)單的無連接Internet協(xié)議。 使用UDP將多條消息作為數(shù)據(jù)包成塊發(fā)送晤愧。

1. TCP和UDP的區(qū)別

下面是TCP和UDP的對(duì)比和區(qū)別:

比較項(xiàng) TCP UDP
全稱 Transmission Control Protocol User Datagram Protocol 或 Universal Datagram Protocol
連接 傳輸控制協(xié)議是一種面向連接的協(xié)議大莫。 用戶數(shù)據(jù)報(bào)協(xié)議是無連接協(xié)議。
功能 消息通過互聯(lián)網(wǎng)從一臺(tái)計(jì)算機(jī)傳播到另一臺(tái)計(jì)算機(jī)官份。這是基于連接的只厘。 UDP還是用于消息傳輸或傳輸?shù)膮f(xié)議。它不是基于連接的贯吓,這意味著一個(gè)程序可以向另一程序發(fā)送大量的數(shù)據(jù)包懈凹,不管對(duì)方能不能收到蜀变。
使用/適用 TCP適用于要求高可靠性的應(yīng)用程序悄谐,并且傳輸時(shí)間的重要性相對(duì)較低。 UDP適用于需要快速库北,高效傳輸?shù)膽?yīng)用程序爬舰,例如游戲。 UDP的無狀態(tài)性質(zhì)對(duì)于回答來自大量客戶端的小查詢的服務(wù)器也很有用寒瓦。
被其他協(xié)議使用 HTTP, HTTPs, FTP, SMTP, Telnet DNS, DHCP, TFTP, SNMP, RIP, VOIP
數(shù)據(jù)包順序 TCP按照指定的順序重新排列數(shù)據(jù)包情屹。 UDP沒有固有的順序,因?yàn)樗袛?shù)據(jù)包都是相互獨(dú)立的杂腰。 如果需要指定順序垃你,則必須由應(yīng)用程序?qū)舆M(jìn)行管理。
傳輸速度 TCP的速度比UDP慢。 UDP速度更快惜颇,因?yàn)閁DP未嘗試進(jìn)行錯(cuò)誤恢復(fù)皆刺。它是“盡力而為”協(xié)議。
可靠性 絕對(duì)保證所傳輸?shù)臄?shù)據(jù)保持完整并以與發(fā)送時(shí)相同的順序到達(dá)凌摄。 不能保證發(fā)送的消息或數(shù)據(jù)包將完全到達(dá)羡蛾。
標(biāo)頭大小 TCP標(biāo)頭大小為20個(gè)字節(jié) TCP標(biāo)頭大小為8個(gè)字節(jié)
通用標(biāo)頭字段 源端口,目標(biāo)端口锨亏,校驗(yàn)和 源端口痴怨,目標(biāo)端口,校驗(yàn)和
數(shù)據(jù)流 數(shù)據(jù)被作為字節(jié)流讀取器予,沒有區(qū)別的指示被發(fā)送到信號(hào)消息(段)邊界浪藻。 數(shù)據(jù)包是單獨(dú)發(fā)送的,只有到達(dá)時(shí)才檢查完整性乾翔。 數(shù)據(jù)包具有確定的邊界珠移,在接收時(shí)會(huì)遵守這些邊界,因此在接收方套接字上進(jìn)行的讀取操作將產(chǎn)生原始發(fā)送的完整消息末融。
重量級(jí) TCP是重量級(jí)的钧惧。在發(fā)送任何用戶數(shù)據(jù)之前,TCP需要三個(gè)數(shù)據(jù)包來建立套接字連接勾习。 TCP處理可靠性和擁塞控制浓瞪。 UDP是輕量級(jí)的。 沒有消息排序巧婶,沒有跟蹤連接等乾颁。它是設(shè)計(jì)在IP之上的小型傳輸層。
數(shù)據(jù)流控制 TCP進(jìn)行流控制艺栈。 在發(fā)送任何用戶數(shù)據(jù)之前英岭,TCP需要三個(gè)數(shù)據(jù)包來建立套接字連接。 TCP處理可靠性和擁塞控制湿右。 UDP沒有用于流量控制的選項(xiàng)诅妹。
錯(cuò)誤檢查 TCP執(zhí)行錯(cuò)誤檢查和錯(cuò)誤恢復(fù),錯(cuò)誤的數(shù)據(jù)包將從源重新傳輸?shù)侥康牡亍?/td> UDP會(huì)執(zhí)行錯(cuò)誤檢查毅人,但只會(huì)丟棄錯(cuò)誤的數(shù)據(jù)包吭狡。 不嘗試錯(cuò)誤恢復(fù)。
位域 1.序列號(hào)丈莺,2.AcK編號(hào)划煮,3.數(shù)據(jù)偏移,4.保留缔俄,5.控制位弛秋,6.窗口器躏,7.緊急指針,8.選項(xiàng)蟹略,9.填充邀桑,10.檢查和,11.源端口科乎, 12.目的端口 1.長(zhǎng)度壁畸,2.源端口,3.目標(biāo)端口茅茂,4.校驗(yàn)和
確認(rèn) 確認(rèn)段 不確認(rèn)
握手 SYN, SYN-ACK, ACK 無握手(無連接協(xié)議)

2. 數(shù)據(jù)傳輸功能的區(qū)別

TCP確保從用戶到服務(wù)器的字節(jié)流可靠有序地傳遞捏萍,反之亦然。 UDP不專用于端對(duì)端連接空闲,并且通信不檢查接收器的準(zhǔn)備情況令杈。

2.1. 可靠性

TCP更可靠,因?yàn)樗梢怨芾硐⒋_認(rèn)和部分丟失的情況下的重傳碴倾。 因此逗噩,絕對(duì)沒有丟失的數(shù)據(jù)。 由于不存在確認(rèn)跌榔,超時(shí)和重傳的概念异雁,UDP無法確保通信已到達(dá)接收方。

2.2. 順序

TCP傳輸按順序發(fā)送僧须,并按相同的順序接收纲刀。如果數(shù)據(jù)段順序錯(cuò)誤,TCP將重新排序并交付應(yīng)用程序担平。 對(duì)于UDP示绊,發(fā)送的消息序列在到達(dá)接收應(yīng)用程序時(shí)可能無法維護(hù)。 絕對(duì)沒有辦法預(yù)測(cè)接收消息的順序暂论。

2.3. 連接

TCP是一個(gè)重量級(jí)的連接面褐,需要三個(gè)數(shù)據(jù)包用于套接字連接,并處理擁塞控制和可靠性取胎。 UDP是在IP之上設(shè)計(jì)的輕量級(jí)傳輸層展哭。 沒有跟蹤連接或消息順序。

2.4. 傳輸方式

TCP讀取數(shù)據(jù)作為字節(jié)流扼菠,并將消息傳輸?shù)蕉芜吔纭?UDP消息是單獨(dú)發(fā)送的數(shù)據(jù)包摄杂,到達(dá)時(shí)將檢查其完整性。 數(shù)據(jù)包沒有邊界時(shí)循榆,數(shù)據(jù)包已定義邊界。

2.5. 錯(cuò)誤檢測(cè)

UDP在“盡力而為”的基礎(chǔ)上工作墨坚。 UDP協(xié)議支持通過校驗(yàn)和進(jìn)行錯(cuò)誤檢測(cè)秧饮,但是當(dāng)檢測(cè)到錯(cuò)誤時(shí)映挂,將丟棄數(shù)據(jù)包。 沒有嘗試重新發(fā)送數(shù)據(jù)包以從該錯(cuò)誤中恢復(fù)盗尸。 這是因?yàn)閁DP通常用于對(duì)時(shí)間敏感的應(yīng)用程序柑船,例如游戲或語音傳輸。 從錯(cuò)誤中恢復(fù)將是毫無意義的泼各,因?yàn)榈街匦掳l(fā)送的數(shù)據(jù)包被接收時(shí)鞍时,它將毫無用處。

TCP同時(shí)使用錯(cuò)誤檢測(cè)和錯(cuò)誤恢復(fù)扣蜻。 錯(cuò)誤通過校驗(yàn)和檢測(cè)逆巍,如果數(shù)據(jù)包錯(cuò)誤,則接收方不會(huì)確認(rèn)該錯(cuò)誤莽使,從而觸發(fā)發(fā)送方重新發(fā)送锐极。 此操作機(jī)制稱為“帶重傳的肯定確認(rèn)”(PAR)。

3. TCP和UDP如何工作

TCP連接是通過三向握手建立的芳肌,握手是啟動(dòng)和確認(rèn)連接的過程灵再。 建立連接后,即可開始數(shù)據(jù)傳輸亿笤。 傳輸后翎迁,通過關(guān)閉所有已建立的虛擬電路來終止連接。

UDP使用一種簡(jiǎn)單的傳輸模型净薛,而不使用隱式的握手對(duì)話來保證可靠性鸳兽,排序或數(shù)據(jù)完整性。因此罕拂,UDP提供了不可靠的服務(wù)揍异,數(shù)據(jù)報(bào)可能會(huì)亂序到達(dá),出現(xiàn)重復(fù)或丟失而不會(huì)發(fā)出通知爆班。 UDP假定不需要或不需要在應(yīng)用程序中執(zhí)行錯(cuò)誤檢查和糾正衷掷,從而避免了在網(wǎng)絡(luò)接口級(jí)別進(jìn)行此類處理的開銷。與TCP不同柿菩,UDP與包廣播(發(fā)送到本地網(wǎng)絡(luò)上的所有包)和多播(發(fā)送到所有訂戶)兼容戚嗅。

4. TCP和UDP的不同應(yīng)用

Web瀏覽,電子郵件和文件傳輸是使用TCP的常見應(yīng)用程序枢舶。 TCP用于控制段大小懦胞,數(shù)據(jù)交換速率,流量控制和網(wǎng)絡(luò)擁塞凉泄。在網(wǎng)絡(luò)接口級(jí)別需要糾錯(cuò)功能的情況下躏尉,首選TCP。 UDP主要用于對(duì)時(shí)間敏感的應(yīng)用程序以及回答來自大量客戶端的少量查詢的服務(wù)器后众。 UDP與數(shù)據(jù)包廣播兼容-發(fā)送到網(wǎng)絡(luò)上的所有人并進(jìn)行多播-發(fā)送給所有用戶胀糜。 UDP通常用于域名系統(tǒng)颅拦,IP語音,普通文件傳輸協(xié)議和在線游戲中教藻。

5. TCP與UDP游戲服務(wù)器

對(duì)于大型多人在線(MMO)游戲距帅,開發(fā)人員通常不得不在使用UDP或TCP持久連接之間做出架構(gòu)選擇。 TCP的優(yōu)點(diǎn)是持久的連接括堤,可靠性以及能夠使用任意大小的數(shù)據(jù)包碌秸。 在這種情況下,TCP的最大問題是其擁塞控制算法悄窃,該算法將數(shù)據(jù)包丟失視為帶寬限制的標(biāo)志讥电,并自動(dòng)限制數(shù)據(jù)包的發(fā)送。 在3G或Wi-Fi網(wǎng)絡(luò)上广匙,這可能會(huì)導(dǎo)致嚴(yán)重的延遲允趟。

經(jīng)驗(yàn)豐富的開發(fā)人員會(huì)權(quán)衡利弊,并建議以下條件來選擇在游戲中使用TCP還是UDP:

  • 如果可以偶爾出現(xiàn)延遲鸦致,請(qǐng)使用HTTP潮剪,客戶端啟動(dòng)的無狀態(tài)查詢。
  • 如果客戶端和服務(wù)器都獨(dú)立發(fā)送數(shù)據(jù)包分唾,但偶爾會(huì)有延遲(例如抗碰,在線撲克,許多MMO)绽乔,請(qǐng)使用持久性普通TCP套接字弧蝇。
  • 如果客戶端和服務(wù)器都可以獨(dú)立發(fā)送數(shù)據(jù)包并且偶爾出現(xiàn)滯后現(xiàn)象(例如,大多數(shù)多人動(dòng)作游戲折砸,某些MMO)看疗,請(qǐng)使用UDP。

【TCP和UDP的區(qū)別】轉(zhuǎn)載自:http://www.hasdiffer.com/tcp-vs-udp.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末睦授,一起剝皮案震驚了整個(gè)濱河市两芳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌去枷,老刑警劉巖怖辆,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異删顶,居然都是意外死亡竖螃,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門逗余,熙熙樓的掌柜王于貴愁眉苦臉地迎上來特咆,“玉大人,你說我怎么就攤上這事猎荠〖崛酰” “怎么了蜀备?”我有些...
    開封第一講書人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵关摇,是天一觀的道長(zhǎng)荒叶。 經(jīng)常有香客問我,道長(zhǎng)输虱,這世上最難降的妖魔是什么些楣? 我笑而不...
    開封第一講書人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮宪睹,結(jié)果婚禮上愁茁,老公的妹妹穿的比我還像新娘。我一直安慰自己亭病,他們只是感情好鹅很,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著罪帖,像睡著了一般促煮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上整袁,一...
    開封第一講書人閱讀 52,713評(píng)論 1 312
  • 那天菠齿,我揣著相機(jī)與錄音,去河邊找鬼坐昙。 笑死绳匀,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的炸客。 我是一名探鬼主播疾棵,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼痹仙!你這毒婦竟也來了是尔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤蝶溶,失蹤者是張志新(化名)和其女友劉穎嗜历,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抖所,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡梨州,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了田轧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暴匠。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖傻粘,靈堂內(nèi)的尸體忽然破棺而出每窖,到底是詐尸還是另有隱情帮掉,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布窒典,位于F島的核電站蟆炊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏瀑志。R本人自食惡果不足惜涩搓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望劈猪。 院中可真熱鬧昧甘,春花似錦、人聲如沸战得。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽常侦。三九已至浇冰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間刮吧,已是汗流浹背湖饱。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杀捻,地道東北人井厌。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像致讥,于是被迫代替她去往敵國(guó)和親仅仆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361