成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

TCP和UDP比較

chanjarster / 2007人閱讀

摘要:該狀態(tài)會(huì)持續(xù)最大段生存期,指報(bào)文段在網(wǎng)絡(luò)中生存的時(shí)間,超時(shí)會(huì)被拋棄時(shí)間,若該時(shí)間段內(nèi)沒有的重發(fā)請(qǐng)求的話,就進(jìn)入狀態(tài)。

引言

網(wǎng)絡(luò)協(xié)議是每個(gè)前端工程師都必須要掌握的知識(shí),TCP/IP 中有兩個(gè)具有代表性的傳輸層協(xié)議,分別是 TCP 和 UDP,本文將介紹下這兩者以及它們之間的區(qū)別。

想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客

一、TCP/IP網(wǎng)絡(luò)模型

計(jì)算機(jī)與網(wǎng)絡(luò)設(shè)備要相互通信,雙方就必須基于相同的方法。比如,如何探測(cè)到通信目標(biāo)、由哪一邊先發(fā)起通信、使用哪種語(yǔ)言進(jìn)行通信、怎樣結(jié)束通信等規(guī)則都需要事先確定。不同的硬件、操作系統(tǒng)之間的通信,所有的這一切都需要一種規(guī)則。而我們就把這種規(guī)則稱為協(xié)議(protocol)。

TCP/IP 是互聯(lián)網(wǎng)相關(guān)的各類協(xié)議族的總稱,比如:TCP,UDP,IP,F(xiàn)TP,HTTP,ICMP,SMTP 等都屬于 TCP/IP 族內(nèi)的協(xié)議。

TCP/IP模型是互聯(lián)網(wǎng)的基礎(chǔ),它是一系列網(wǎng)絡(luò)協(xié)議的總稱。這些協(xié)議可以劃分為四層,分別為鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。

鏈路層:負(fù)責(zé)封裝和解封裝IP報(bào)文,發(fā)送和接受ARP/RARP報(bào)文等。

網(wǎng)絡(luò)層:負(fù)責(zé)路由以及把分組報(bào)文發(fā)送給目標(biāo)網(wǎng)絡(luò)或主機(jī)。

傳輸層:負(fù)責(zé)對(duì)報(bào)文進(jìn)行分組和重組,并以TCP或UDP協(xié)議格式封裝報(bào)文。

應(yīng)用層:負(fù)責(zé)向用戶提供應(yīng)用程序,比如HTTP、FTP、Telnet、DNS、SMTP等。


在網(wǎng)絡(luò)體系結(jié)構(gòu)中網(wǎng)絡(luò)通信的建立必須是在通信雙方的對(duì)等層進(jìn)行,不能交錯(cuò)。 在整個(gè)數(shù)據(jù)傳輸過程中,數(shù)據(jù)在發(fā)送端時(shí)經(jīng)過各層時(shí)都要附加上相應(yīng)層的協(xié)議頭和協(xié)議尾(僅數(shù)據(jù)鏈路層需要封裝協(xié)議尾)部分,也就是要對(duì)數(shù)據(jù)進(jìn)行協(xié)議封裝,以標(biāo)識(shí)對(duì)應(yīng)層所用的通信協(xié)議。接下去介紹TCP/IP 中有兩個(gè)具有代表性的傳輸層協(xié)議----TCP 和 UDP。

二、UDP

UDP協(xié)議全稱是用戶數(shù)據(jù)報(bào)協(xié)議,在網(wǎng)絡(luò)中它與TCP協(xié)議一樣用于處理數(shù)據(jù)包,是一種無(wú)連接的協(xié)議。在OSI模型中,在第四層——傳輸層,處于IP協(xié)議的上一層。UDP有不提供數(shù)據(jù)包分組、組裝和不能對(duì)數(shù)據(jù)包進(jìn)行排序的缺點(diǎn),也就是說,當(dāng)報(bào)文發(fā)送之后,是無(wú)法得知其是否安全完整到達(dá)的。

它有以下幾個(gè)特點(diǎn):

1.面向無(wú)連接

首先 UDP 是不需要和 TCP一樣在發(fā)送數(shù)據(jù)前進(jìn)行三次握手建立連接的,想發(fā)數(shù)據(jù)就可以開始發(fā)送了。并且也只是數(shù)據(jù)報(bào)文的搬運(yùn)工,不會(huì)對(duì)數(shù)據(jù)報(bào)文進(jìn)行任何拆分和拼接操作。

具體來說就是:

在發(fā)送端,應(yīng)用層將數(shù)據(jù)傳遞給傳輸層的 UDP 協(xié)議,UDP 只會(huì)給數(shù)據(jù)增加一個(gè) UDP 頭標(biāo)識(shí)下是 UDP 協(xié)議,然后就傳遞給網(wǎng)絡(luò)層了

在接收端,網(wǎng)絡(luò)層將數(shù)據(jù)傳遞給傳輸層,UDP 只去除 IP 報(bào)文頭就傳遞給應(yīng)用層,不會(huì)任何拼接操作

2.有單播,多播,廣播的功能

UDP 不止支持一對(duì)一的傳輸方式,同樣支持一對(duì)多,多對(duì)多,多對(duì)一的方式,也就是說 UDP 提供了單播,多播,廣播的功能。

3.UDP是面向報(bào)文的

發(fā)送方的UDP對(duì)應(yīng)用程序交下來的報(bào)文,在添加首部后就向下交付IP層。UDP對(duì)應(yīng)用層交下來的報(bào)文,既不合并,也不拆分,而是保留這些報(bào)文的邊界。因此,應(yīng)用程序必須選擇合適大小的報(bào)文

4.不可靠性

首先不可靠性體現(xiàn)在無(wú)連接上,通信都不需要建立連接,想發(fā)就發(fā),這樣的情況肯定不可靠。

并且收到什么數(shù)據(jù)就傳遞什么數(shù)據(jù),并且也不會(huì)備份數(shù)據(jù),發(fā)送數(shù)據(jù)也不會(huì)關(guān)心對(duì)方是否已經(jīng)正確接收到數(shù)據(jù)了。

再者網(wǎng)絡(luò)環(huán)境時(shí)好時(shí)壞,但是 UDP 因?yàn)闆]有擁塞控制,一直會(huì)以恒定的速度發(fā)送數(shù)據(jù)。即使網(wǎng)絡(luò)條件不好,也不會(huì)對(duì)發(fā)送速率進(jìn)行調(diào)整。這樣實(shí)現(xiàn)的弊端就是在網(wǎng)絡(luò)條件不好的情況下可能會(huì)導(dǎo)致丟包,但是優(yōu)點(diǎn)也很明顯,在某些實(shí)時(shí)性要求高的場(chǎng)景(比如電話會(huì)議)就需要使用 UDP 而不是 TCP。

從上面的動(dòng)態(tài)圖可以得知,UDP只會(huì)把想發(fā)的數(shù)據(jù)報(bào)文一股腦的丟給對(duì)方,并不在意數(shù)據(jù)有無(wú)安全完整到達(dá)。

5.頭部開銷小,傳輸數(shù)據(jù)報(bào)文時(shí)是很高效的。


UDP 頭部包含了以下幾個(gè)數(shù)據(jù):

兩個(gè)十六位的端口號(hào),分別為源端口(可選字段)和目標(biāo)端口

整個(gè)數(shù)據(jù)報(bào)文的長(zhǎng)度

整個(gè)數(shù)據(jù)報(bào)文的檢驗(yàn)和(IPv4 可選 字段),該字段用于發(fā)現(xiàn)頭部信息和數(shù)據(jù)中的錯(cuò)誤

因此 UDP 的頭部開銷小,只有八字節(jié),相比 TCP 的至少二十字節(jié)要少得多,在傳輸數(shù)據(jù)報(bào)文時(shí)是很高效的

三、TCP

當(dāng)一臺(tái)計(jì)算機(jī)想要與另一臺(tái)計(jì)算機(jī)通訊時(shí),兩臺(tái)計(jì)算機(jī)之間的通信需要暢通且可靠,這樣才能保證正確收發(fā)數(shù)據(jù)。例如,當(dāng)你想查看網(wǎng)頁(yè)或查看電子郵件時(shí),希望完整且按順序查看網(wǎng)頁(yè),而不丟失任何內(nèi)容。當(dāng)你下載文件時(shí),希望獲得的是完整的文件,而不僅僅是文件的一部分,因?yàn)槿绻麛?shù)據(jù)丟失或亂序,都不是你希望得到的結(jié)果,于是就用到了TCP。

TCP協(xié)議全稱是傳輸控制協(xié)議是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,由 IETF 的RFC 793定義。TCP 是面向連接的、可靠的流協(xié)議。流就是指不間斷的數(shù)據(jù)結(jié)構(gòu),你可以把它想象成排水管中的水流。

1.TCP連接過程

如下圖所示,可以看到建立一個(gè)TCP連接的過程為(三次握手的過程):

第一次握手

客戶端向服務(wù)端發(fā)送連接請(qǐng)求報(bào)文段。該報(bào)文段中包含自身的數(shù)據(jù)通訊初始序號(hào)。請(qǐng)求發(fā)送后,客戶端便進(jìn)入 SYN-SENT 狀態(tài)。

第二次握手

服務(wù)端收到連接請(qǐng)求報(bào)文段后,如果同意連接,則會(huì)發(fā)送一個(gè)應(yīng)答,該應(yīng)答中也會(huì)包含自身的數(shù)據(jù)通訊初始序號(hào),發(fā)送完成后便進(jìn)入 SYN-RECEIVED 狀態(tài)。

第三次握手

當(dāng)客戶端收到連接同意的應(yīng)答后,還要向服務(wù)端發(fā)送一個(gè)確認(rèn)報(bào)文??蛻舳税l(fā)完這個(gè)報(bào)文段后便進(jìn)入 ESTABLISHED 狀態(tài),服務(wù)端收到這個(gè)應(yīng)答后也進(jìn)入 ESTABLISHED 狀態(tài),此時(shí)連接建立成功。

這里可能大家會(huì)有個(gè)疑惑:為什么 TCP 建立連接需要三次握手,而不是兩次?這是因?yàn)檫@是為了防止出現(xiàn)失效的連接請(qǐng)求報(bào)文段被服務(wù)端接收的情況,從而產(chǎn)生錯(cuò)誤。

2.TCP斷開鏈接


TCP 是全雙工的,在斷開連接時(shí)兩端都需要發(fā)送 FIN 和 ACK。

第一次握手

若客戶端 A 認(rèn)為數(shù)據(jù)發(fā)送完成,則它需要向服務(wù)端 B 發(fā)送連接釋放請(qǐng)求。

第二次握手

B 收到連接釋放請(qǐng)求后,會(huì)告訴應(yīng)用層要釋放 TCP 鏈接。然后會(huì)發(fā)送 ACK 包,并進(jìn)入 CLOSE_WAIT 狀態(tài),此時(shí)表明 A 到 B 的連接已經(jīng)釋放,不再接收 A 發(fā)的數(shù)據(jù)了。但是因?yàn)?TCP 連接是雙向的,所以 B 仍舊可以發(fā)送數(shù)據(jù)給 A。

第三次握手

B 如果此時(shí)還有沒發(fā)完的數(shù)據(jù)會(huì)繼續(xù)發(fā)送,完畢后會(huì)向 A 發(fā)送連接釋放請(qǐng)求,然后 B 便進(jìn)入 LAST-ACK 狀態(tài)。

第四次握手

A 收到釋放請(qǐng)求后,向 B 發(fā)送確認(rèn)應(yīng)答,此時(shí) A 進(jìn)入 TIME-WAIT 狀態(tài)。該狀態(tài)會(huì)持續(xù) 2MSL(最大段生存期,指報(bào)文段在網(wǎng)絡(luò)中生存的時(shí)間,超時(shí)會(huì)被拋棄) 時(shí)間,若該時(shí)間段內(nèi)沒有 B 的重發(fā)請(qǐng)求的話,就進(jìn)入 CLOSED 狀態(tài)。當(dāng) B 收到確認(rèn)應(yīng)答后,也便進(jìn)入 CLOSED 狀態(tài)。

3.TCP協(xié)議的特點(diǎn)

面向連接

面向連接,是指發(fā)送數(shù)據(jù)之前必須在兩端建立連接。建立連接的方法是“三次握手”,這樣能建立可靠的連接。建立連接,是為數(shù)據(jù)的可靠傳輸打下了基礎(chǔ)。

僅支持單播傳輸

每條TCP傳輸連接只能有兩個(gè)端點(diǎn),只能進(jìn)行點(diǎn)對(duì)點(diǎn)的數(shù)據(jù)傳輸,不支持多播和廣播傳輸方式。

面向字節(jié)流

TCP不像UDP一樣那樣一個(gè)個(gè)報(bào)文獨(dú)立地傳輸,而是在不保留報(bào)文邊界的情況下以字節(jié)流方式進(jìn)行傳輸。

可靠傳輸

對(duì)于可靠傳輸,判斷丟包,誤碼靠的是TCP的段編號(hào)以及確認(rèn)號(hào)。TCP為了保證報(bào)文傳輸?shù)目煽?,就給每個(gè)包一個(gè)序號(hào),同時(shí)序號(hào)也保證了傳送到接收端實(shí)體的包的按序接收。然后接收端實(shí)體對(duì)已成功收到的字節(jié)發(fā)回一個(gè)相應(yīng)的確認(rèn)(ACK);如果發(fā)送端實(shí)體在合理的往返時(shí)延(RTT)內(nèi)未收到確認(rèn),那么對(duì)應(yīng)的數(shù)據(jù)(假設(shè)丟失了)將會(huì)被重傳。

提供擁塞控制

當(dāng)網(wǎng)絡(luò)出現(xiàn)擁塞的時(shí)候,TCP能夠減小向網(wǎng)絡(luò)注入數(shù)據(jù)的速率和數(shù)量,緩解擁塞

TCP提供全雙工通信

TCP允許通信雙方的應(yīng)用程序在任何時(shí)候都能發(fā)送數(shù)據(jù),因?yàn)門CP連接的兩端都設(shè)有緩存,用來臨時(shí)存放雙向通信的數(shù)據(jù)。當(dāng)然,TCP可以立即發(fā)送一個(gè)數(shù)據(jù)段,也可以緩存一段時(shí)間以便一次發(fā)送更多的數(shù)據(jù)段(最大的數(shù)據(jù)段大小取決于MSS)

四、TCP和UDP的比較 1.對(duì)比
UDP TCP
是否連接 無(wú)連接 面向連接
是否可靠 不可靠傳輸,不使用流量控制和擁塞控制 可靠傳輸,使用流量控制和擁塞控制
連接對(duì)象個(gè)數(shù) 支持一對(duì)一,一對(duì)多,多對(duì)一和多對(duì)多交互通信 只能是一對(duì)一通信
傳輸方式 面向報(bào)文 面向字節(jié)流
首部開銷 首部開銷小,僅8字節(jié) 首部最小20字節(jié),最大60字節(jié)
適用場(chǎng)景 適用于實(shí)時(shí)應(yīng)用(IP電話、視頻會(huì)議、直播等) 適用于要求可靠傳輸?shù)膽?yīng)用,例如文件傳輸
2.總結(jié)

TCP向上層提供面向連接的可靠服務(wù) ,UDP向上層提供無(wú)連接不可靠服務(wù)。

雖然 UDP 并沒有 TCP 傳輸來的準(zhǔn)確,但是也能在很多實(shí)時(shí)性要求高的地方有所作為

對(duì)數(shù)據(jù)準(zhǔn)確性要求高,速度可以相對(duì)較慢的,可以選用TCP

給大家推薦一個(gè)好用的BUG監(jiān)控工具Fundebug,歡迎免費(fèi)試用!

歡迎關(guān)注公眾號(hào):前端工匠,你的成長(zhǎng)我們一起見證!如果你感覺有收獲,歡迎給我打賞,以激勵(lì)我更多輸出優(yōu)質(zhì)開源內(nèi)容

參考文章與書籍

計(jì)算機(jī)網(wǎng)絡(luò)簡(jiǎn)明教程及仿真實(shí)驗(yàn)

TCP和UDP的區(qū)別

前端面試之道

一篇文章看明白 TCP/IP,TCP,UDP,IP,Socket 之間的關(guān)系

深入理解計(jì)算機(jī)網(wǎng)絡(luò)

TCP和UDP協(xié)議的特點(diǎn)和區(qū)別詳解

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/102712.html

相關(guān)文章

  • 網(wǎng)絡(luò)協(xié)議 7 - UDP

    摘要:網(wǎng)絡(luò)協(xié)議五步登天路,我們一路邁過了物理層鏈路層,今天終于到了傳輸層。沒有花花腸子大量的數(shù)據(jù)結(jié)構(gòu)處理邏輯包頭字段,秉承性善論,相信網(wǎng)絡(luò)通路很容易到達(dá),不容易被丟棄輕信他人。我們之前認(rèn)識(shí)的就是基于協(xié)議的。 ????網(wǎng)絡(luò)協(xié)議五步登天路,我們一路邁過了物理層、鏈路層,今天終于到了傳輸層。從這一層開始,很多知識(shí)應(yīng)該都是服務(wù)端開發(fā)必備的知識(shí)了,今天我們就一起來梳理下。 ????其實(shí),講到 UDP,...

    moven_j 評(píng)論0 收藏0
  • TCPUDP比較

    摘要:該狀態(tài)會(huì)持續(xù)最大段生存期,指報(bào)文段在網(wǎng)絡(luò)中生存的時(shí)間,超時(shí)會(huì)被拋棄時(shí)間,若該時(shí)間段內(nèi)沒有的重發(fā)請(qǐng)求的話,就進(jìn)入狀態(tài)。 引言 網(wǎng)絡(luò)協(xié)議是每個(gè)前端工程師都必須要掌握的知識(shí),TCP/IP 中有兩個(gè)具有代表性的傳輸層協(xié)議,分別是 TCP 和 UDP,本文將介紹下這兩者以及它們之間的區(qū)別。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客 一、TCP/IP網(wǎng)絡(luò)模型 計(jì)算機(jī)與網(wǎng)絡(luò)設(shè)備要相互通信,雙方就必須...

    zhaochunqi 評(píng)論0 收藏0
  • 快速理解TCPUDP的差異

    摘要:由于本身發(fā)送的就是一份一份的數(shù)據(jù)報(bào),所以自然而然的就有一個(gè)上限的大小。并且由于本身的不可靠性以及無(wú)序性,如果發(fā)送了這三個(gè)數(shù)據(jù)報(bào)過來,端接收到的可能是任意順序任意個(gè)數(shù)三個(gè)數(shù)據(jù)報(bào)的排列組合。 前言 最頭疼的問題莫過于到底該選TCP還是UDP作為傳輸層協(xié)議。通過快速對(duì)比分析 TCP 和 UDP 的區(qū)別,來幫助即時(shí)通訊初學(xué)者快速了解這些基礎(chǔ)的知識(shí)點(diǎn),從而在IM、消息推送等網(wǎng)絡(luò)通信應(yīng)用場(chǎng)景中能準(zhǔn)...

    tomato 評(píng)論0 收藏0
  • TCPUDP~第二式

    摘要:比如旗下的簡(jiǎn)歷,推出了物聯(lián)網(wǎng)通信協(xié)議,就是基于協(xié)議的。報(bào)文頭網(wǎng)絡(luò)傳輸層中,是面向連接可靠的字節(jié)流傳輸。位標(biāo)志位作用如下標(biāo)志表示緊急指針是否有效。我們稱攜帶標(biāo)識(shí)的報(bào)文段為確認(rèn)報(bào)文段。標(biāo)志表示通知對(duì)方本端要關(guān)閉連接了。 # TCP與UDP 一,分析TCP與UDP報(bào)文 TCP與UDP都是位于OSI...

    ?xiaoxiao, 評(píng)論0 收藏0
  • TCP/UDP協(xié)議

    摘要:沒有擁塞控制網(wǎng)絡(luò)出現(xiàn)擁塞并不會(huì)使源主機(jī)的發(fā)送速率降低很多實(shí)時(shí)應(yīng)用如電話,實(shí)時(shí)視頻會(huì)議等要求主機(jī)以恒定速率發(fā)送數(shù)據(jù),并且允許在擁塞時(shí)有一些數(shù)據(jù)丟失,但不允許有太大的時(shí)延,就可以用,比如打視頻電話,有一兩幀卡頓影響并不大。Tcp協(xié)議(傳輸控制協(xié)議)tcp是面向連接的協(xié)議,在收發(fā)數(shù)據(jù)之前,必須與對(duì)方建立可靠的連接;三次握手:簡(jiǎn)單形象通俗描述: 主機(jī)A向主機(jī)B發(fā)出連接請(qǐng)求數(shù)據(jù)包:我想給你發(fā)數(shù)據(jù),可以...

    Tecode 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

chanjarster

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<