国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

這篇具有很好參考價(jià)值的文章主要介紹了【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

小亭子正在努力的學(xué)習(xí)編程,接下來(lái)將開(kāi)啟javaEE的學(xué)習(xí)~~

分享的文章都是學(xué)習(xí)的筆記和感悟,如有不妥之處希望大佬們批評(píng)指正~~

同時(shí)如果本文對(duì)你有幫助的話,煩請(qǐng)點(diǎn)贊關(guān)注支持一波, 感激不盡~~

?

目錄

前言

TCP協(xié)議

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

TCP協(xié)議通信場(chǎng)景

TCP協(xié)議的幾個(gè)重要機(jī)制

一、確認(rèn)應(yīng)答

二、 超時(shí)重傳

三、連接管理(重點(diǎn))

四、滑動(dòng)窗口

五、流量控制

六、擁塞控制

七、延時(shí)應(yīng)答

八、捎帶應(yīng)答

九、面向字節(jié)流 -粘包問(wèn)題

十、異常處理-心跳包

緩沖區(qū):

UDP協(xié)議

?UDP協(xié)議的特點(diǎn)?

UDP協(xié)議通信場(chǎng)景

?UDP協(xié)議端格式

傳輸層的2個(gè)常見(jiàn)協(xié)議

TCP(Transmission Control Protocol) :傳輸控制協(xié)議

UDP(User Datagram Protocol):用戶數(shù)據(jù)報(bào)協(xié)議

TCP協(xié)議

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

使用TCP協(xié)議,必須雙方先建立連接,它是一種面向連接的可靠通信協(xié)議。

傳輸前,采用“三次握手”方式建立連接,所以是可靠的 。

在連接中可進(jìn)行大數(shù)據(jù)量的傳輸 。

連接、發(fā)送數(shù)據(jù)都需要確認(rèn),且傳輸完畢后,還需釋放已建立的連接,通信效率較低。

TCP協(xié)議通信場(chǎng)景

對(duì)信息安全要求較高的場(chǎng)景,例如:文件下載、金融等數(shù)據(jù)通信。

TCP協(xié)議的幾個(gè)重要機(jī)制

?TCP對(duì)數(shù)據(jù)傳輸提供的管控機(jī)制,主要體現(xiàn)在兩個(gè)方面:安全和效率。

這些機(jī)制和多線程的設(shè)計(jì)原則類似:保證數(shù)據(jù)傳輸安全的前提下,盡可能的提高傳輸效率

一、確認(rèn)應(yīng)答

是實(shí)現(xiàn)可靠性的最核心機(jī)制

舉個(gè)栗子:你約女同學(xué)出去吃飯,給她發(fā)消息

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

為了解決上述問(wèn)題,就需要對(duì)信息進(jìn)行編號(hào),給發(fā)出去的消息分配一個(gè)“序號(hào)”,同時(shí)應(yīng)答報(bào)文給出“確認(rèn)序號(hào)”

確認(rèn)序號(hào),是取發(fā)送方發(fā)過(guò)來(lái)的所有數(shù)據(jù),最后一個(gè)字節(jié)的下一個(gè)字節(jié)的序號(hào)

TCP從前往后將每個(gè)字節(jié)分別分配一個(gè)編號(hào)即為序列號(hào)

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

?每一個(gè)ACK都帶有對(duì)應(yīng)的確認(rèn)序列號(hào),意思是告訴發(fā)送者,我已經(jīng)收到了哪些數(shù)據(jù),下一次你從哪里開(kāi)始發(fā)。

舉個(gè)栗子:

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

確認(rèn)序號(hào) 1001的含義:

1.<1001的數(shù)據(jù),我已經(jīng)收到

2.我接下來(lái)想向發(fā)送方索要從1001開(kāi)始的數(shù)據(jù)

接收方通過(guò)ack的確認(rèn)序號(hào),告訴發(fā)送方哪些數(shù)據(jù)已經(jīng)收到了。

如果一切順利的話,就可以直接確認(rèn)應(yīng)答了,可靠性就得到了支持。

二、 超時(shí)重傳

什么是超時(shí)重傳?

?主機(jī)A發(fā)送數(shù)據(jù)給B之后,可能因?yàn)榫W(wǎng)絡(luò)擁堵等原因,數(shù)據(jù)無(wú)法到達(dá)主機(jī)B

?如果主機(jī)A在一個(gè)特定時(shí)間間隔內(nèi)沒(méi)有收到B發(fā)來(lái)的確認(rèn)應(yīng)答,就會(huì)進(jìn)行重發(fā)

丟包,是一個(gè)網(wǎng)絡(luò)通信中常見(jiàn)的問(wèn)題,那么為什么會(huì)丟包呢?

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

在網(wǎng)絡(luò)通信中,數(shù)據(jù)的發(fā)送很復(fù)雜,需要經(jīng)過(guò)很多的設(shè)備,每個(gè)設(shè)備的轉(zhuǎn)發(fā)能力都是有上限的,某一時(shí)刻,某個(gè)設(shè)備上面的流量達(dá)到峰值,就有可能引起部分?jǐn)?shù)據(jù)被丟包。

【補(bǔ)充:看直播,看視頻,對(duì)于丟包是不敏感的(看視頻提前有預(yù)緩沖)

打游戲,特別是LOL,王者等對(duì)抗性游戲,對(duì)于丟包非常敏感,丟包率高直接卡成ppt】

發(fā)送方對(duì)于丟包的判定:

1.數(shù)據(jù)直接丟了,接收方?jīng)]收到,自然不會(huì)發(fā)送ack

2.接收方收到了數(shù)據(jù),但返回的ack丟了

發(fā)送方無(wú)法區(qū)分這兩種情況,都會(huì)觸發(fā)超時(shí)重傳,

但是第二種情況下,接收方會(huì)收到重復(fù)的數(shù)據(jù),但是沒(méi)關(guān)系,TCP會(huì)在接收緩沖區(qū)中,根據(jù)收到的數(shù)據(jù)的序號(hào)自動(dòng)去重,保證了應(yīng)用程序督導(dǎo)的數(shù)據(jù)任然只有一份。

【也有可能出現(xiàn)連續(xù)丟包的情況,TCP的處理方式是繼續(xù)超時(shí)重傳,但是每一次丟包后等待的時(shí)間就會(huì)變長(zhǎng),此時(shí)說(shuō)明網(wǎng)絡(luò)出現(xiàn)了比較嚴(yán)重的問(wèn)題,TCP就會(huì)嘗試重置連接,如果還不行,TCP就會(huì)關(guān)閉連接,放棄通信,總之就是,能重傳就重傳,實(shí)在傳不了就關(guān)閉連接,盡最大可能完成傳輸】

【一切順利的情況下,使用確認(rèn)應(yīng)答保證可靠性,出現(xiàn)丟包,使用超時(shí)重傳作為補(bǔ)充,這兩個(gè)機(jī)制是TCP可靠性的基石

三、連接管理(重點(diǎn))

?在正常情況下,TCP要經(jīng)過(guò)三次握手建立連接,四次揮手?jǐn)嚅_(kāi)連接

建立連接三次握手

握手(handshake)是指通信雙方,進(jìn)行一次網(wǎng)絡(luò)交互

三次握手相當(dāng)于客戶機(jī)與服務(wù)器之間通過(guò)三次交互建立了連接(雙方各自記錄對(duì)方的信息)

syn:同步報(bào)文段,意思是一方向另一方申請(qǐng)建立連接

ack:確認(rèn)字符,表示發(fā)來(lái)的數(shù)據(jù)已確認(rèn)接收無(wú)誤

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

三次握手這個(gè)過(guò)程,本質(zhì)上是投石問(wèn)路,驗(yàn)證一下客戶端和服務(wù)器各自的接收和發(fā)送能力是否正常。

【舉個(gè)栗子:就像每天的第一趟高鐵和地鐵一樣,第一趟車都是空的,為了檢驗(yàn)線路是否通暢】

【補(bǔ)充:中間的syn和ack也可以分開(kāi)發(fā)送,但是沒(méi)必要,一起發(fā)效率高】

斷開(kāi)連接——四次揮手

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解四次揮手和三次握手非常像,最主要的區(qū)別就是:

三次握手中,ack和syn是同一個(gè)時(shí)機(jī)觸發(fā)的,都是內(nèi)核完成的

四次揮手中,ack和fin則是不同時(shí)機(jī)觸發(fā)的,ack是內(nèi)核完成的,會(huì)在收到fin的時(shí)候第一時(shí)間返回,fin則是應(yīng)用程序代碼控制的,在調(diào)用到socket的close方法是才會(huì)觸發(fā)。

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

上述兩個(gè)過(guò)程和可靠性多少有點(diǎn)關(guān)系,但是可靠性主要還是靠確認(rèn)應(yīng)答和超時(shí)重傳。

四、滑動(dòng)窗口

?剛才我們討論了確認(rèn)應(yīng)答策略,對(duì)每一個(gè)發(fā)送的數(shù)據(jù)段,都要給一個(gè)ACK確認(rèn)應(yīng)答。收到ACK后再發(fā)送

下一個(gè)數(shù)據(jù)段。這樣做有一個(gè)比較大的缺點(diǎn),就是性能較差。尤其是數(shù)據(jù)往返的時(shí)間較長(zhǎng)的時(shí)候。

TCP要保證的不僅僅是可靠性,還要保證效率。

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

想要提升效率就需要縮短等待時(shí)間,解決的方法就是一次發(fā)送多條數(shù)據(jù),一次等待多個(gè)ack,(批量發(fā)送)

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

上圖所示就是批量發(fā)送4條數(shù)據(jù),發(fā)完以后統(tǒng)一等待ack,每次收到一個(gè)ack后就立刻發(fā)送下一條(注意不是收到4個(gè)ack再發(fā)下一組)如下圖:

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

?窗口大小指的是無(wú)需等待確認(rèn)應(yīng)答而可以繼續(xù)發(fā)送數(shù)據(jù)的最大值。上圖的窗口大小就是4000

個(gè)字節(jié)(四個(gè)段)。

發(fā)送前四個(gè)段的時(shí)候,不需要等待任何ACK,直接發(fā)送;

收到第一個(gè)ACK后,滑動(dòng)窗口向后移動(dòng),繼續(xù)發(fā)送第五個(gè)段的數(shù)據(jù);依次類推;

操作系統(tǒng)內(nèi)核為了維護(hù)這個(gè)滑動(dòng)窗口,需要開(kāi)辟 發(fā)送緩沖區(qū) 來(lái)記錄當(dāng)前還有哪些數(shù)據(jù)沒(méi)有應(yīng)

答;只有確認(rèn)應(yīng)答過(guò)的數(shù)據(jù),才能從緩沖區(qū)刪掉;

窗口越大,則網(wǎng)絡(luò)的吞吐率就越高;

?那么如果出現(xiàn)了丟包,如何進(jìn)行重傳?這里分兩種情況討論。

情況一:數(shù)據(jù)包已經(jīng)抵達(dá),ACK被丟了

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

?這種情況下,部分ACK丟了并不要緊,因?yàn)榭梢酝ㄟ^(guò)后續(xù)的ACK進(jìn)行確認(rèn)

?情況二:數(shù)據(jù)包就直接丟了。

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

?當(dāng)某一段報(bào)文段丟失之后,發(fā)送端會(huì)一直收到 1001 這樣的ACK,就像是在提醒發(fā)送端 "我想要的是 1001" 一樣;

如果發(fā)送端主機(jī)連續(xù)三次收到了同樣一個(gè) "1001" 這樣的應(yīng)答,就會(huì)將對(duì)應(yīng)的數(shù)據(jù) 1001 -2000 重新發(fā)送;

這個(gè)時(shí)候接收端收到了 1001 之后,再次返回的ACK就是7001了(因?yàn)?/span>2001 - 7000)接收端

其實(shí)之前就已經(jīng)收到了,被放到了接收端操作系統(tǒng)內(nèi)核的接收緩沖區(qū)中;

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

上述重傳過(guò)程,沒(méi)有任何冗余操作,數(shù)據(jù)丟了才會(huì)重傳,不丟數(shù)據(jù)不會(huì)重傳,整體速度還是比較快的。

這種機(jī)制被稱為 "高速重發(fā)控制"(也叫 "快重傳")。

五、流量控制

?接收端處理數(shù)據(jù)的速度是有限的。如果發(fā)送端發(fā)的太快,導(dǎo)致接收端的緩沖區(qū)被打滿,這個(gè)時(shí)候如果發(fā)送端繼續(xù)發(fā)送,就會(huì)造成丟包,繼而引起丟包重傳等等一系列連鎖反應(yīng)。

因此TCP支持根據(jù)接收端的處理能力,來(lái)決定發(fā)送端的發(fā)送速度。這個(gè)機(jī)制就叫做流量控制(FlowControl;

接收端將自己可以接收的緩沖區(qū)大小放入 TCP 首部中的 "窗口大小" 字段,通過(guò)ACK端通知發(fā)送端;

窗口大小字段越大,說(shuō)明網(wǎng)絡(luò)的吞吐量越高;

接收端一旦發(fā)現(xiàn)自己的緩沖區(qū)快滿了,就會(huì)將窗口大小設(shè)置成一個(gè)更小的值通知給發(fā)送端;

發(fā)送端接受到這個(gè)窗口之后,就會(huì)減慢自己的發(fā)送速度;

如果接收端緩沖區(qū)滿了,就會(huì)將窗口置為0;這時(shí)發(fā)送方不再發(fā)送數(shù)據(jù),但是需要定期發(fā)送一

個(gè)窗口探測(cè)數(shù)據(jù)段,使接收端把窗口大小告訴發(fā)送端。

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

補(bǔ)充:

?各個(gè)字段的含義:

源/目的端口號(hào):表示數(shù)據(jù)是從哪個(gè)進(jìn)程來(lái),到哪個(gè)進(jìn)程去;
32位序號(hào):指的是報(bào)文段序號(hào),有時(shí)候我們會(huì)發(fā)多條數(shù)據(jù),為了方便回答,進(jìn)行編號(hào);
32位確認(rèn)號(hào):這個(gè)確認(rèn)號(hào)是針對(duì)序號(hào)設(shè)定的,為了防止回復(fù)串行;
4位TCP報(bào)頭長(zhǎng)度:表示該TCP頭部有多少個(gè)32位bit(有多少個(gè)4字節(jié));所以TCP頭部最大長(zhǎng)度是15 * 4 = 60
6位標(biāo)志位:
URG:緊急指針是否有效
ACK:確認(rèn)號(hào)是否有效
PSH:提示接收端應(yīng)用程序立刻從TCP緩沖區(qū)把數(shù)據(jù)讀走
RST:對(duì)方要求重新建立連接;我們把攜帶RST標(biāo)識(shí)的稱為復(fù)位報(bào)文段
SYN:請(qǐng)求建立連接;我們把攜帶SYN標(biāo)識(shí)的稱為同步報(bào)文段
FIN:通知對(duì)方,本端要關(guān)閉了,我們稱攜帶FIN標(biāo)識(shí)的為結(jié)束報(bào)文段
16位窗口大?。嚎刂泼看位瑝K的流量
16位校驗(yàn)和:發(fā)送端填充,CRC校驗(yàn)。接收端校驗(yàn)不通過(guò),則認(rèn)為數(shù)據(jù)有問(wèn)題。此處的檢驗(yàn)和不光包含TCP首部,也包含TCP數(shù)據(jù)部分。
16位緊急指針:標(biāo)識(shí)哪部分?jǐn)?shù)據(jù)是緊急數(shù)據(jù);

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

六、擁塞控制

?雖然TCP有了滑動(dòng)窗口這個(gè)大殺器,能夠高效可靠的發(fā)送大量的數(shù)據(jù)。但是如果在剛開(kāi)始階段就發(fā)送大量的數(shù)據(jù),仍然可能引發(fā)問(wèn)題。

因?yàn)榫W(wǎng)絡(luò)上有很多的計(jì)算機(jī),可能當(dāng)前的網(wǎng)絡(luò)狀態(tài)就已經(jīng)比較擁堵。在不清楚當(dāng)前網(wǎng)絡(luò)狀態(tài)下,貿(mào)然發(fā)送大量的數(shù)據(jù),是很有可能引起雪上加霜的。

TCP引入 慢啟動(dòng) 機(jī)制,先發(fā)少量的數(shù)據(jù),探探路,摸清當(dāng)前的網(wǎng)絡(luò)擁堵?tīng)顟B(tài),再?zèng)Q定按照多大的速度傳輸數(shù)據(jù);

擁塞控制就是通過(guò)實(shí)驗(yàn)的方式找到一個(gè)合適的發(fā)送速率??!

開(kāi)始的時(shí)候,按照一個(gè)小的速率發(fā)送,如果不丟包,就可以提高一下速率(擴(kuò)大窗口大?。?/span>

如果出現(xiàn)丟包,則立刻把速率調(diào)小。

重復(fù)上述過(guò)程,讓傳輸速率達(dá)到一個(gè)動(dòng)態(tài)平衡。

另外,網(wǎng)絡(luò)的擁堵情況也不是一成不變的,擁塞控制這一策略也能很好地解決這一問(wèn)題。

慢啟動(dòng):

?慢啟動(dòng)" 只是指初使時(shí)慢,但是增長(zhǎng)速度非???。

?為了不增長(zhǎng)的那么快,因此不能使擁塞窗口單純的加倍。

此處引入一個(gè)叫做慢啟動(dòng)的閾值

當(dāng)擁塞窗口超過(guò)這個(gè)閾值的時(shí)候,不再按照指數(shù)方式增長(zhǎng),而是按照線性方式增長(zhǎng)

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

滑動(dòng)窗口的大小取決于 流量控制 和 擁塞控制

流量控制衡量了接收方的處理能力,擁塞控制衡量了傳輸路徑的處理能力

七、延時(shí)應(yīng)答

如果接收數(shù)據(jù)的主機(jī)立刻返回ACK應(yīng)答,這時(shí)候返回的窗口可能比較小。

假設(shè)接收端緩沖區(qū)為1M。一次收到了500K的數(shù)據(jù);如果立刻應(yīng)答,返回的窗口就是500K;

但實(shí)際上可能處理端處理的速度很快,10ms之內(nèi)就把500K數(shù)據(jù)從緩沖區(qū)消費(fèi)掉了;

在這種情況下,接收端處理還遠(yuǎn)沒(méi)有達(dá)到自己的極限,即使窗口再放大一些,也能處理過(guò)

來(lái);如果接收端稍微等一會(huì)再應(yīng)答,比如等待200ms再應(yīng)答,那么這個(gè)時(shí)候返回的窗口大小就是

1M;

一定要記得,窗口越大,網(wǎng)絡(luò)吞吐量就越大,傳輸效率就越高。我們的目標(biāo)是在保證網(wǎng)絡(luò)不擁塞的情況下盡量提高傳輸效率

舉個(gè)栗子:你媽媽早上出門(mén)前讓你干家務(wù),你給忘了,然后他下午給你發(fā)消息說(shuō)你怎么沒(méi)干,你當(dāng)做沒(méi)看到?jīng)]回消息,立刻去把家務(wù)做的差不多了,就只還剩一點(diǎn)的時(shí)候給他回消息,你就可以很有底氣的說(shuō)說(shuō)馬上完事兒了。

八、捎帶應(yīng)答

?在延遲應(yīng)答的基礎(chǔ)上,我們發(fā)現(xiàn),很多情況下,客戶端服務(wù)器在應(yīng)用層也是 "一發(fā)一收" 的。意味著客戶端給服務(wù)器說(shuō)了 "How are you",服務(wù)器也會(huì)給客戶端回一個(gè) "Fine, thank you";

那么這個(gè)時(shí)候ACK就可以搭順風(fēng)車,和服務(wù)器回應(yīng)的 "Fine,thank you" 一起回給客戶端

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

九、面向字節(jié)流 -粘包問(wèn)題

當(dāng)A給B連續(xù)發(fā)了多個(gè)應(yīng)用層數(shù)據(jù)報(bào)后,這些數(shù)據(jù)就會(huì)都積累到B的接收緩沖區(qū)中,緊緊挨在一起,此時(shí)B的應(yīng)用程序在讀數(shù)據(jù)的時(shí)候就很難區(qū)分從哪到哪是一個(gè)完整的應(yīng)用層數(shù)據(jù)報(bào),這就是粘包問(wèn)題。

舉個(gè)栗子:

你吃了嗎爸爸餓了一起吃飯吧

這句話既可以理解為:

你吃了嗎爸爸 餓了一起吃吧

或者:你吃了嗎 爸爸餓了 一起吃吧

那么怎么解決呢?

1.定義分隔符

2.約定有效長(zhǎng)度

十、異常處理-心跳包

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

補(bǔ)充:

緩沖區(qū):

?創(chuàng)建一個(gè)TCPsocket,同時(shí)在內(nèi)核中創(chuàng)建一個(gè) 發(fā)送緩沖區(qū) 和一個(gè) 接收緩沖區(qū)

調(diào)用write時(shí),數(shù)據(jù)會(huì)先寫(xiě)入發(fā)送緩沖區(qū)中;

如果發(fā)送的字節(jié)數(shù)太長(zhǎng),會(huì)被拆分成多個(gè)TCP的數(shù)據(jù)包發(fā)出;

如果發(fā)送的字節(jié)數(shù)太短,就會(huì)先在緩沖區(qū)里等待,等到緩沖區(qū)長(zhǎng)度差不多了,或者其他合適

的時(shí)機(jī)發(fā)送出去;

接收數(shù)據(jù)的時(shí)候,數(shù)據(jù)也是從網(wǎng)卡驅(qū)動(dòng)程序到達(dá)內(nèi)核的接收緩沖區(qū);

然后應(yīng)用程序可以調(diào)用read從接收緩沖區(qū)拿數(shù)據(jù);

另一方面,TCP的一個(gè)連接,既有發(fā)送緩沖區(qū),也有接收緩沖區(qū),那么對(duì)于這一個(gè)連接,既

可以讀數(shù)據(jù),也可以寫(xiě)數(shù)據(jù)。這個(gè)概念叫做 全雙工

由于緩沖區(qū)的存在,TCP程序的讀和寫(xiě)不需要一一匹配,例如:

寫(xiě)100個(gè)字節(jié)數(shù)據(jù)時(shí),可以調(diào)用一次write寫(xiě)100個(gè)字節(jié),也可以調(diào)用100write,每次寫(xiě)一

個(gè)字節(jié);

100個(gè)字節(jié)數(shù)據(jù)時(shí),也完全不需要考慮寫(xiě)的時(shí)候是怎么寫(xiě)的,既可以一次read 100個(gè)字

節(jié),也可以一次read一個(gè)字節(jié),重復(fù)100次;

UDP協(xié)議

?UDP協(xié)議的特點(diǎn)?

UDP是一種無(wú)連接、不可靠傳輸?shù)膮f(xié)議。

將數(shù)據(jù)源IP、目的地IP和端口封裝成數(shù)據(jù)包,不需要建立連接

每個(gè)數(shù)據(jù)包的大小限制在64KB內(nèi)

發(fā)送不管對(duì)方是否準(zhǔn)備好,接收方收到也不確認(rèn),故是不可靠的

可以廣播發(fā)送 ,發(fā)送數(shù)據(jù)結(jié)束時(shí)無(wú)需釋放資源,開(kāi)銷小,速度快。

UDP協(xié)議通信場(chǎng)景

語(yǔ)音通話,視頻會(huì)話等。

舉個(gè)栗子:

街邊的燒烤店,廚房和前廳,廚房做好了韭菜,把他裝進(jìn)盤(pán)子里,直接把盤(pán)子里的韭菜拋到客戶的盤(pán)子里,只管拋,不管客戶接沒(méi)接到。

?UDP協(xié)議端格式

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

上面那個(gè)是教科書(shū)上的,不好理解,我們看下面這個(gè)

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

校驗(yàn)和:網(wǎng)絡(luò)傳輸中,可能會(huì)因?yàn)閺?qiáng)磁場(chǎng)等外部的干擾,導(dǎo)致低電平變高,高電平變低,這樣就會(huì)導(dǎo)致數(shù)據(jù)傳輸出錯(cuò)

校驗(yàn)和就是用來(lái)判斷當(dāng)前傳輸?shù)臄?shù)據(jù)是否出錯(cuò)的。

舉個(gè)栗子:

媽媽讓我去買四樣菜,我買回了五樣,這一定是買錯(cuò)了直接一頓臭罵,但是如果我買回了四樣,就有可能買對(duì)了,暫時(shí)不會(huì)被罵,但是當(dāng)媽媽做飯的時(shí)候打開(kāi)袋子,發(fā)現(xiàn)買錯(cuò)了品種,我還是會(huì)被罵。

再舉個(gè)栗子:

【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解

至于校驗(yàn)的方法教科書(shū)中常見(jiàn)的有奇偶校驗(yàn)等,在這里我們就不詳細(xì)說(shuō)了。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-418042.html

到了這里,關(guān)于【網(wǎng)絡(luò)編程】TCP,UDP協(xié)議詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java網(wǎng)絡(luò)編程之IP,端口號(hào),通信協(xié)議(UDP,TCP)

    Java網(wǎng)絡(luò)編程之IP,端口號(hào),通信協(xié)議(UDP,TCP)

    ① C/S :客戶端/服務(wù)器 在用戶本地需要下載安裝客戶端程序,在遠(yuǎn)程有一個(gè)服務(wù)器端程序。 優(yōu)點(diǎn):畫(huà)面精美,用戶體驗(yàn)好 缺點(diǎn):用戶需要下載更新 ② B/S :瀏覽器/服務(wù)器 只需要一個(gè)瀏覽器,用戶通過(guò)指定網(wǎng)址訪問(wèn)對(duì)應(yīng)的服務(wù)器。 優(yōu)點(diǎn):不需要開(kāi)發(fā)客戶端,只需要頁(yè)面+服務(wù)

    2024年02月03日
    瀏覽(96)
  • 網(wǎng)絡(luò)編程詳解-UDP-TCP

    網(wǎng)絡(luò)編程詳解-UDP-TCP

    網(wǎng)絡(luò)編程 在網(wǎng)絡(luò)通信協(xié)議下,不同計(jì)算機(jī)上運(yùn)行的程序,可以進(jìn)行數(shù)據(jù)傳輸 網(wǎng)絡(luò)編程的三要素是 IP地址、端口和協(xié)議 。具體分析如下: IP地址 :IP地址是網(wǎng)絡(luò)中每一臺(tái)計(jì)算機(jī)的唯一標(biāo)識(shí),它類似于現(xiàn)實(shí)生活中的家庭住址,用于在網(wǎng)絡(luò)中找到具體的設(shè)備。IP地址是由數(shù)字組成

    2024年03月15日
    瀏覽(19)
  • 【探索Linux】—— 強(qiáng)大的命令行工具 P.27(網(wǎng)絡(luò)編程套接字 —— UDP協(xié)議介紹 | TCP協(xié)議介紹 | UDP 和 TCP 的異同)

    【探索Linux】—— 強(qiáng)大的命令行工具 P.27(網(wǎng)絡(luò)編程套接字 —— UDP協(xié)議介紹 | TCP協(xié)議介紹 | UDP 和 TCP 的異同)

    在上一篇文章中,我們深入探討了Linux網(wǎng)絡(luò)編程的基石——套接字(Socket)的概念以及相關(guān)的編程接口。我們了解到,套接字是網(wǎng)絡(luò)通信過(guò)程中端與端之間數(shù)據(jù)交換的關(guān)鍵抽象概念,它提供了一套豐富的編程接口,使得開(kāi)發(fā)者能夠在應(yīng)用層直接進(jìn)行網(wǎng)絡(luò)通信的開(kāi)發(fā)。不僅如此

    2024年03月16日
    瀏覽(97)
  • 【網(wǎng)絡(luò)編程】詳解UDP/TCP套接字的創(chuàng)建流程

    【網(wǎng)絡(luò)編程】詳解UDP/TCP套接字的創(chuàng)建流程

    需要云服務(wù)器等云產(chǎn)品來(lái)學(xué)習(xí)Linux的同學(xué)可以移步/--騰訊云--/--阿里云--/--華為云--/官網(wǎng),輕量型云服務(wù)器低至112元/年,新用戶首次下單享超低折扣。 ? 目錄 一、網(wǎng)絡(luò)編程套接字 1、一些概念 1.1源IP地址和目的IP地址 1.2端口號(hào)port 1.3TCP和UDP的性質(zhì) 1.4網(wǎng)絡(luò)字節(jié)序、IP地址類型轉(zhuǎn)換

    2024年02月05日
    瀏覽(96)
  • 【網(wǎng)絡(luò)編程】詳解UDP/TCP套接字的創(chuàng)建流程+守護(hù)進(jìn)程

    【網(wǎng)絡(luò)編程】詳解UDP/TCP套接字的創(chuàng)建流程+守護(hù)進(jìn)程

    需要云服務(wù)器等云產(chǎn)品來(lái)學(xué)習(xí)Linux的同學(xué)可以移步/--騰訊云--/--阿里云--/--華為云--/官網(wǎng),輕量型云服務(wù)器低至112元/年,新用戶首次下單享超低折扣。 ? 目錄 一、網(wǎng)絡(luò)編程套接字 1、一些概念 1.1源IP地址和目的IP地址 1.2端口號(hào)port 1.3TCP和UDP的性質(zhì) 1.4網(wǎng)絡(luò)字節(jié)序、IP地址類型轉(zhuǎn)換

    2024年02月05日
    瀏覽(35)
  • 【Java基礎(chǔ)教程】(四十七)網(wǎng)絡(luò)編程篇:網(wǎng)絡(luò)通訊概念,TCP、UDP協(xié)議,Socket與ServerSocket類使用實(shí)踐與應(yīng)用場(chǎng)景~

    【Java基礎(chǔ)教程】(四十七)網(wǎng)絡(luò)編程篇:網(wǎng)絡(luò)通訊概念,TCP、UDP協(xié)議,Socket與ServerSocket類使用實(shí)踐與應(yīng)用場(chǎng)景~

    了解多線程與網(wǎng)絡(luò)編程的操作關(guān)系; 了解網(wǎng)絡(luò)程序開(kāi)發(fā)的主要模式; 了解 TCP 程序的基本實(shí)現(xiàn); 在Java中,網(wǎng)絡(luò)編程的核心意義是實(shí)現(xiàn)不同電腦主機(jī)之間的數(shù)據(jù)交互。Java采用了一種簡(jiǎn)化的概念,將這個(gè)過(guò)程進(jìn)一步抽象為JVM(Java虛擬機(jī))進(jìn)程之間的通信。可以在同一臺(tái)電腦上

    2024年02月15日
    瀏覽(98)
  • C++開(kāi)發(fā)基礎(chǔ)之網(wǎng)絡(luò)編程WinSock庫(kù)使用詳解TCP/UDP Socket開(kāi)發(fā)

    Winsock是Windows操作系統(tǒng)提供的用于網(wǎng)絡(luò)編程的API庫(kù)。它是Windows Sockets的簡(jiǎn)稱,也就是套接字庫(kù)。Winsock可以讓開(kāi)發(fā)人員使用TCP/IP協(xié)議族中的各種協(xié)議,如TCP、UDP等,在Windows平臺(tái)下進(jìn)行網(wǎng)絡(luò)編程。 Winsock提供了一組函數(shù)和數(shù)據(jù)結(jié)構(gòu),這些函數(shù)和數(shù)據(jù)結(jié)構(gòu)可以讓開(kāi)發(fā)人員創(chuàng)建和管理

    2024年01月23日
    瀏覽(25)
  • 「網(wǎng)絡(luò)編程」傳輸層協(xié)議_ TCP協(xié)議學(xué)習(xí)_及原理深入理解(一)[萬(wàn)字詳解]

    「網(wǎng)絡(luò)編程」傳輸層協(xié)議_ TCP協(xié)議學(xué)習(xí)_及原理深入理解(一)[萬(wàn)字詳解]

    「前言」文章內(nèi)容大致是傳輸層協(xié)議,TCP協(xié)議講解,續(xù)上篇UDP協(xié)議。 「歸屬專欄」網(wǎng)絡(luò)編程 「主頁(yè)鏈接」個(gè)人主頁(yè) 「筆者」楓葉先生(fy) TCP( Transmission Control Protoco l)是一種面向連接的、可靠的傳輸協(xié)議,TCP全稱為 \\\"傳輸控制協(xié)議”,TCP人如其名,要對(duì)數(shù)據(jù)的傳輸進(jìn)行一個(gè)

    2024年02月16日
    瀏覽(28)
  • 「網(wǎng)絡(luò)編程」傳輸層協(xié)議_ TCP協(xié)議學(xué)習(xí)_及原理深入理解(二 - 完結(jié))[萬(wàn)字詳解]

    「網(wǎng)絡(luò)編程」傳輸層協(xié)議_ TCP協(xié)議學(xué)習(xí)_及原理深入理解(二 - 完結(jié))[萬(wàn)字詳解]

    「前言」文章內(nèi)容大致是傳輸層協(xié)議,TCP協(xié)議講解的第二篇,續(xù)上篇TCP。 「歸屬專欄」網(wǎng)絡(luò)編程 「主頁(yè)鏈接」個(gè)人主頁(yè) 「筆者」楓葉先生(fy) 首先明確,TCP是面向連接的,TCP通信之前需要先建立連接,就是因?yàn)?TCP的各種可靠性保證都是基于連接的,要保證傳輸數(shù)據(jù)的可靠性

    2024年02月15日
    瀏覽(28)
  • 【C++】6.網(wǎng)絡(luò)編程:網(wǎng)絡(luò)編程(TCP&UDP)

    【C++】6.網(wǎng)絡(luò)編程:網(wǎng)絡(luò)編程(TCP&UDP)

    網(wǎng)絡(luò)編程是C++ API操作中很重要的一部分,包含 TCP 和 UDP 。 網(wǎng)絡(luò)傳輸模型可以抽象為7個(gè)層: 物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層、應(yīng)用層 。 但在使用TCP/IP協(xié)議時(shí),可以簡(jiǎn)化為這4層: 網(wǎng)絡(luò)接口、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層 。 TCP:可靠傳輸,三次握手建立

    2024年02月16日
    瀏覽(28)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包