国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

TCP和UDP比較

chanjarster / 1953人閱讀

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

引言

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

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

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

計(jì)算機(jī)與網(wǎng)絡(luò)設(shè)備要相互通信,雙方就必須基于相同的方法。比如,如何探測到通信目標(biāo)、由哪一邊先發(fā)起通信、使用哪種語言進(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é)對報(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ò)通信的建立必須是在通信雙方的對等層進(jìn)行,不能交錯(cuò)。 在整個(gè)數(shù)據(jù)傳輸過程中,數(shù)據(jù)在發(fā)送端時(shí)經(jīng)過各層時(shí)都要附加上相應(yīng)層的協(xié)議頭和協(xié)議尾(僅數(shù)據(jù)鏈路層需要封裝協(xié)議尾)部分,也就是要對數(shù)據(jù)進(jìn)行協(xié)議封裝,以標(biāo)識對應(yīng)層所用的通信協(xié)議。接下去介紹TCP/IP 中有兩個(gè)具有代表性的傳輸層協(xié)議----TCP 和 UDP。

二、UDP

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

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

1.面向無連接

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

具體來說就是:

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

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

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

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

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

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

4.不可靠性

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

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

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

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

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


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

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

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

整個(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)一臺計(jì)算機(jī)想要與另一臺計(jì)算機(jī)通訊時(shí),兩臺計(jì)算機(jī)之間的通信需要暢通且可靠,這樣才能保證正確收發(fā)數(shù)據(jù)。例如,當(dāng)你想查看網(wǎng)頁或查看電子郵件時(shí),希望完整且按順序查看網(wǎng)頁,而不丟失任何內(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ā)送連接請求報(bào)文段。該報(bào)文段中包含自身的數(shù)據(jù)通訊初始序號。請求發(fā)送后,客戶端便進(jìn)入 SYN-SENT 狀態(tài)。

第二次握手

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

第三次握手

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

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

2.TCP斷開鏈接


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

第一次握手

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

第二次握手

B 收到連接釋放請求后,會告訴應(yīng)用層要釋放 TCP 鏈接。然后會發(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ù)會繼續(xù)發(fā)送,完畢后會向 A 發(fā)送連接釋放請求,然后 B 便進(jìn)入 LAST-ACK 狀態(tài)。

第四次握手

A 收到釋放請求后,向 B 發(fā)送確認(rèn)應(yīng)答,此時(shí) A 進(jìn)入 TIME-WAIT 狀態(tài)。該狀態(tài)會持續(xù) 2MSL(最大段生存期,指報(bào)文段在網(wǎng)絡(luò)中生存的時(shí)間,超時(shí)會被拋棄) 時(shí)間,若該時(shí)間段內(nèi)沒有 B 的重發(fā)請求的話,就進(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)對點(diǎn)的數(shù)據(jù)傳輸,不支持多播和廣播傳輸方式。

面向字節(jié)流

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

可靠傳輸

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

提供擁塞控制

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

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

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

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

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

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

參考文章與書籍

計(jì)算機(jī)網(wǎng)絡(luò)簡明教程及仿真實(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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.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)識的就是基于協(xié)議的。 ????網(wǎng)絡(luò)協(xié)議五步登天路,我們一路邁過了物理層、鏈路層,今天終于到了傳輸層。從這一層開始,很多知識應(yīng)該都是服務(wù)端開發(fā)必備的知識了,今天我們就一起來梳理下。 ????其實(shí),講到 UDP,...

    moven_j 評論0 收藏0
  • TCPUDP比較

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

    zhaochunqi 評論0 收藏0
  • 快速理解TCPUDP的差異

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

    tomato 評論0 收藏0
  • TCPUDP~第二式

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

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

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

    Tecode 評論0 收藏0

發(fā)表評論

0條評論

chanjarster

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<