自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

UDP協(xié)議的那點(diǎn)事兒

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
UDP( User Datagram Protocol )協(xié)議,翻譯過來(lái)就是用戶數(shù)據(jù)報(bào)協(xié)議 ,跟 TCP 協(xié)議一樣,都是位于 OSI 模型的傳輸層。

UDP( User Datagram Protocol )協(xié)議,翻譯過來(lái)就是用戶數(shù)據(jù)報(bào)協(xié)議 ,跟 TCP 協(xié)議一樣,都是位于 OSI 模型的傳輸層。不過比起 TCP 協(xié)議,UDP 協(xié)議就顯得簡(jiǎn)單多了,因?yàn)樗鼪]有「流量控制」、「擁塞控制」等復(fù)雜的處理機(jī)制。它甚至沒有重傳機(jī)制,也就是說,如果你的數(shù)據(jù)包半路走丟了,那就是真找不回來(lái)了,所以說 UDP 協(xié)議是不可靠的。當(dāng)然了,這個(gè)重傳機(jī)制是針對(duì)傳輸層而言的,你完全可以在應(yīng)用層寫一個(gè)協(xié)議來(lái)進(jìn)行丟包處理,比如說像 TCP 一樣,增加 ACK 和序列號(hào)機(jī)制。

那你可能會(huì)疑惑了,為什么放著可靠的 TCP 協(xié)議不用,而選擇 UDP 協(xié)議?

UDP 報(bào)文段結(jié)構(gòu)

這當(dāng)然要根據(jù)應(yīng)用的需求來(lái),不過在說這個(gè)話題之前,我們先來(lái)詳細(xì)了解一下 UDP 協(xié)議。

說實(shí)話,UDP 的報(bào)文段結(jié)構(gòu)比 TCP 報(bào)文段簡(jiǎn)潔多了(見下圖),畢竟 UDP 協(xié)議就沒有什么多余的機(jī)制。

言歸正傳,報(bào)文段里的「源端口號(hào)」和「目的端口號(hào)」是為了告訴傳輸層,我這個(gè)報(bào)文是從哪兒(哪個(gè)進(jìn)程)來(lái)的,要到哪兒(哪個(gè)進(jìn)程)去。但要注意一點(diǎn):一個(gè) UDP 套接字是由一個(gè)二元組標(biāo)識(shí)的,這個(gè)二元組指的是目的 IP 地址和目的端口號(hào),也就是說,服務(wù)器上對(duì)應(yīng)的進(jìn)程,不在乎你是從哪個(gè)客戶端來(lái)的,我都放進(jìn)同一個(gè)套接字處理,處理完了再根據(jù)源端口號(hào)和源 IP 地址,把應(yīng)答信息發(fā)送給客戶端。相較而言,TCP 套接字需要一個(gè)四元組來(lái)標(biāo)識(shí):源 IP 地址,源端口號(hào),目的 IP 地址和目的端口號(hào)。這一點(diǎn)在講 TCP 協(xié)議的時(shí)候還會(huì)細(xì)講,所以這里就不贅述了。

PS:你可能會(huì)問,這報(bào)文段里怎么沒有 IP 地址啊?這是因?yàn)镮P 地址保存在網(wǎng)絡(luò)層的 IP 協(xié)議段里,傳輸層的報(bào)文段里當(dāng)然就沒有了。

無(wú)連接

每次提到 TCP 協(xié)議,我們最先想到的就是三次握手和四次揮手,對(duì) UDP 協(xié)議來(lái)說,這都是沒有的事兒~ 使用 UDP 協(xié)議的時(shí)候,如果客戶端要發(fā)送報(bào)文段給服務(wù)端,不用握手,直接就發(fā)出去了,也正因?yàn)檫@樣,UDP 協(xié)議被稱為是無(wú)連接的。

很容易想到,不需要握手這一過程的話,就沒有因?yàn)榻⑦B接而造成的時(shí)延,一個(gè)字,快!這也是 DNS(域名系統(tǒng))運(yùn)行在 UDP 協(xié)議之上的很大一部分原因。

但是 UDP 協(xié)議不可靠啊,傳輸過程中丟包了怎么辦?最簡(jiǎn)單的做法就是——忽略它!(否則就得像文章開頭說的那樣,在應(yīng)用層實(shí)現(xiàn)重傳機(jī)制)就拿 DNS 來(lái)說吧,如果數(shù)據(jù)包丟失,客戶端重發(fā)就是了(有超時(shí)機(jī)制),而且在正常情況下,丟包的概率很低。但如果使用 TCP 協(xié)議的話,因?yàn)橐⑦B接,域名查詢就會(huì)慢很多,除此之外,使用 UDP 協(xié)議的網(wǎng)絡(luò)開銷更小——UDP 報(bào)文段有 8 個(gè)字節(jié)的首部開銷,而 TCP 協(xié)議有 20 字節(jié)的開銷(看前面的關(guān)于報(bào)文段的兩張圖)。網(wǎng)絡(luò)開銷小,意味著 DNS 服務(wù)器能接受更多客戶端的請(qǐng)求。

還有一個(gè)方面,TCP 協(xié)議有擁塞控制機(jī)制,它會(huì)在網(wǎng)絡(luò)擁塞時(shí)遏制 TCP 發(fā)送方,以至于延遲報(bào)文段的傳送,所以對(duì)于一些要求傳輸延遲小,且能夠容忍一些數(shù)據(jù)丟失的實(shí)時(shí)程序來(lái)說,UDP 協(xié)議可能是一個(gè)更好的選擇。路由選擇協(xié)議(RIP)、 網(wǎng)絡(luò)管理協(xié)議(SNMP) 也都選擇了 UDP 來(lái)作為底層的傳輸協(xié)議。

最后,這是一張客戶端與服務(wù)端利用 UDP 協(xié)議通信的流程圖:

UDP 協(xié)議要講的內(nèi)容不多,下次要講的 TCP 協(xié)議,就比較燒腦了,做好準(zhǔn)備吧!

 

 

責(zé)任編輯:趙寧寧 來(lái)源: tobe的囈語(yǔ)
相關(guān)推薦

2011-12-26 11:13:24

密碼

2015-12-08 14:49:13

SDN軟件定義網(wǎng)絡(luò)

2022-05-26 15:30:21

Spring AOP框架

2022-05-26 09:03:39

AOP編程

2017-09-12 08:03:29

數(shù)據(jù)庫(kù)MySQL主庫(kù)

2013-12-26 13:35:39

2012-03-12 21:23:47

Windows pho

2023-12-04 11:02:53

C++空類

2013-09-17 10:37:03

AOPAOP教程理解AOP

2018-03-30 16:03:04

軟件無(wú)狀態(tài)”

2021-04-13 09:12:45

網(wǎng)絡(luò)設(shè)備無(wú)線路由器交換機(jī)

2019-02-12 11:45:05

Java數(shù)據(jù)庫(kù)開發(fā)

2009-08-18 17:55:20

C#操作符重載

2010-05-21 15:34:02

Exchange 20

2010-07-06 15:16:34

UDP協(xié)議

2018-05-17 09:46:40

apachenginx阻塞

2013-12-04 09:46:56

Hyper-VNUMA

2017-04-19 08:35:34

2018-11-01 17:06:06

cell自適應(yīng)高主

2012-04-17 11:21:50

Java
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)