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

深入了解UDP協(xié)議

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
下文摘要:對于UDP協(xié)議,我們今天主要討論一下它的原理和結(jié)構(gòu)。那么包括它的基本介紹,協(xié)議頭結(jié)構(gòu),IP分片,UDP和ARP交互模式。

相對于TCP,我們知道UDP協(xié)議是不可靠的傳輸協(xié)議。那么對于這個協(xié)議我們還是有著很多用途。因?yàn)?,它的傳輸方式和速度是TCP無法相比的。那么對于這個協(xié)議我們就來深入了解一下吧。

1.UDP簡要介紹

UDP是傳輸層協(xié)議,和TCP協(xié)議處于一個分層中,但是與TCP協(xié)議不同,UDP協(xié)議并不提供超時(shí)重傳,出錯重傳等功能,也就是說其是不可靠的協(xié)議。

2.UDP協(xié)議頭

UDP端口號由于很多軟件需要用到UDP協(xié)議,所以UDP協(xié)議必須通過某個標(biāo)志用以區(qū)分不同的程序所需要的數(shù)據(jù)包。端口號的功能就在于此,例如某一個UDP程序A在系統(tǒng)中注冊了3000端口,那么,以后從外面?zhèn)鬟M(jìn)來的目的端口號為3000的UDP包都會交給該程序。端口號理論上可以有2^16這么多。因?yàn)樗拈L度是16個bit

UDP檢驗(yàn)和這是一個可選的選項(xiàng),并不是所有的系統(tǒng)都對UDP數(shù)據(jù)包加以檢驗(yàn)和數(shù)據(jù)(相對TCP協(xié)議的必須來說),但是RFC中標(biāo)準(zhǔn)要求,發(fā)送端應(yīng)該計(jì)算檢驗(yàn)和。

UDP檢驗(yàn)和覆蓋UDP協(xié)議頭和數(shù)據(jù),這和IP的檢驗(yàn)和是不同的,IP協(xié)議的檢驗(yàn)和只是覆蓋IP數(shù)據(jù)頭,并不覆蓋所有的數(shù)據(jù)。UDP和TCP都包含一個偽首部,這是為了計(jì)算檢驗(yàn)和而攝制的。偽首部甚至還包含IP地址這樣的IP協(xié)議里面都有的信息,目的是讓UDP兩次檢查數(shù)據(jù)是否已經(jīng)正確到達(dá)目的地。如果發(fā)送端沒有打開檢驗(yàn)和選項(xiàng),而接收端計(jì)算檢驗(yàn)和有差錯,那么UDP數(shù)據(jù)將會被悄悄的丟掉(不保證送達(dá)),而不產(chǎn)生任何差錯報(bào)文。

UDP長度UDP可以很長很長,可以有65535字節(jié)那么長。但是一般網(wǎng)絡(luò)在傳送的時(shí)候,一次一般傳送不了那么長的協(xié)議(涉及到MTU的問題),就只好對數(shù)據(jù)分片,當(dāng)然,這些是對UDP等上級協(xié)議透明的,UDP不需要關(guān)心IP協(xié)議層對數(shù)據(jù)如何分片,下一個章節(jié)將會稍微討論一些分片的策略。

3.IP分片

IP在從上層接到數(shù)據(jù)以后,要根據(jù)IP地址來判斷從那個接口發(fā)送數(shù)據(jù)(通過選路),并進(jìn)行MTU的查詢,如果數(shù)據(jù)大小超過MTU就進(jìn)行數(shù)據(jù)分片。數(shù)據(jù)的分片是對上層和下層透明,而數(shù)據(jù)也只是到達(dá)目的地還會被重新組裝,不過不用擔(dān)心,IP層提供了足夠的信息進(jìn)行數(shù)據(jù)的再組裝。

在IP頭里面,16bit識別號唯一記錄了一個IP包的ID,具有同一個ID的IP片將會被重新組裝;而13位片偏移則記錄了某IP片相對整個包的位置;而這兩個表示中間的3bit標(biāo)志則標(biāo)示著該分片后面是否還有新的分片。這三個標(biāo)示就組成了IP分片的所有信息,接受方就可以利用這些信息對IP數(shù)據(jù)進(jìn)行重新組織(就算是后面的分片比前面的分片先到,這些信息也是足夠了)。

因?yàn)榉制夹g(shù)在網(wǎng)絡(luò)上被經(jīng)常的使用,所以偽造IP分片包進(jìn)行流氓攻擊的軟件和人也就層出不窮。

可以用Trancdroute程序來進(jìn)行簡單的MTU偵測。請參看教材。

3.UDP和ARP之間的交互式用

這是不常被人注意到的一個細(xì)節(jié),這是針對一些系統(tǒng)地實(shí)現(xiàn)來說的。當(dāng)ARP緩存還是空的時(shí)候。UDP在被發(fā)送之前一定要發(fā)送一個ARP請求來獲得目的主機(jī)的MAC地址,如果這個UDP的數(shù)據(jù)包足夠大,大到IP層一定要對其進(jìn)行分片的時(shí)候,想象中,該UDP數(shù)據(jù)包的第一個分片會發(fā)出一個ARP查詢請求,所有的分片都輝等到這個查詢完成以后再發(fā)送。事實(shí)上是這樣嗎?

結(jié)果是,某些系統(tǒng)會讓每一個分片都發(fā)送一個ARP查詢,所有的分片都在等待,但是接受到第一個回應(yīng)的時(shí)候,主機(jī)卻只發(fā)送了最后一個數(shù)據(jù)片而拋棄了其他,這實(shí)在是讓人匪夷所思。這樣,因?yàn)榉制臄?shù)據(jù)不能被及時(shí)組裝,接受主機(jī)將會在一段時(shí)間內(nèi)將永遠(yuǎn)無法組裝的IP數(shù)據(jù)包拋棄,并且發(fā)送組裝超時(shí)的ICMP報(bào)文(其實(shí)很多系統(tǒng)不產(chǎn)生這個差錯),以保證接受主機(jī)自己的接收端緩存不被那些永遠(yuǎn)得不到組裝的分片充滿。

4.ICMP源站抑制差錯

當(dāng)目標(biāo)主機(jī)的處理速度趕不上數(shù)據(jù)接收的速度,因?yàn)榻邮苤鳈C(jī)的IP層緩存會被占滿,所以主機(jī)就會發(fā)出一個“我受不了”的一個ICMP報(bào)文。

5.UDP服務(wù)器設(shè)計(jì)

UDP協(xié)議的某些特性將會影響我們的服務(wù)器程序設(shè)計(jì),大致總結(jié)如下:

關(guān)于客戶IP和地址:服務(wù)器必須有根據(jù)客戶IP地址和端口號判斷數(shù)據(jù)包是否合法的能力(這似乎要求每一個服務(wù)器都要具備)

關(guān)于目的地址:服務(wù)器必須要有過濾廣播地址的能力。

關(guān)于數(shù)據(jù)輸入:通常服務(wù)器系統(tǒng)的每一個端口號都會和一塊輸入緩沖區(qū)對應(yīng),進(jìn)來的輸入根據(jù)先來后到的原則等待服務(wù)器的處理,所以難免會出現(xiàn)緩沖區(qū)溢出的問題,這種情況下,UDP數(shù)據(jù)包可能會被丟棄,而應(yīng)用服務(wù)器程序本身并不知道這個問題。

服務(wù)器應(yīng)該限制本地IP地址,就是說它應(yīng)該可以把自己綁定到某一個網(wǎng)絡(luò)接口的某一個端口上。

責(zé)任編輯:佟健 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2009-12-22 14:06:03

距離向量路由協(xié)議

2010-11-19 16:22:14

Oracle事務(wù)

2010-06-23 20:31:54

2022-08-26 13:48:40

EPUBLinux

2020-09-21 09:53:04

FlexCSS開發(fā)

2009-08-25 16:27:10

Mscomm控件

2019-06-28 14:31:03

網(wǎng)絡(luò)協(xié)議棧Flink數(shù)據(jù)

2020-07-20 06:35:55

BashLinux

2022-06-03 10:09:32

威脅檢測軟件

2010-11-15 11:40:44

Oracle表空間

2011-07-18 15:08:34

2013-04-16 10:20:21

云存儲服務(wù)云存儲SLA服務(wù)水平協(xié)議

2021-04-28 10:13:58

zookeeperZNode核心原理

2021-01-19 12:00:39

前端監(jiān)控代碼

2010-11-08 13:54:49

Sqlserver運(yùn)行

2018-06-22 13:05:02

前端JavaScript引擎

2010-09-27 09:31:42

JVM內(nèi)存結(jié)構(gòu)

2019-08-02 08:59:21

Token認(rèn)證服務(wù)器

2009-09-24 16:22:50

Hibernate自動

2019-11-29 16:21:22

Spring框架集成
點(diǎn)贊
收藏

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