UDP:
UDP位于傳輸層喇颁,與IP一樣提供不可靠的侈玄,無連接的數(shù)據(jù)交付服務(wù)古掏。
引入傳輸層的必要性:
在TCP/IP模型中,傳輸層位于IP層和應(yīng)用層之間匀钧。源主機(jī)的應(yīng)用層進(jìn)程與目的主機(jī)的應(yīng)用層通信時(shí)翎碑,要使用傳輸層的服務(wù)。因此傳輸層在應(yīng)用層和IP層之間起著承上啟下的作用之斯。
傳輸層需要滿足的條件:
????1. 傳輸層要提供比IP層質(zhì)量更高的服務(wù)日杈。
????2. 傳輸層要提供識(shí)別應(yīng)用層進(jìn)程的機(jī)制。
????3. 傳輸層要針對(duì)不同尺寸的應(yīng)用層數(shù)據(jù)進(jìn)行適當(dāng)?shù)奶幚淼趸#ㄟ@里主要是說TCP協(xié)議,UDP協(xié)議沒有對(duì)數(shù)據(jù)尺寸進(jìn)行調(diào)整的能力翰蠢。)
UDP的特點(diǎn):
○ 提供不可靠项乒,無連接的數(shù)據(jù)交付服務(wù)。
○ 沒有使用確認(rèn)機(jī)制梁沧,所以不能保證報(bào)文全部到達(dá)檀何。
○ 不對(duì)傳入的報(bào)文進(jìn)行排序處理。
○ 不提供反饋信息來控制機(jī)器之間報(bào)文傳輸速率。
UDP首部報(bào)文格式:
源端口和目的端口:包含了16bit的UDP端口號(hào)频鉴,用以在各個(gè)等待接收?qǐng)?bào)文的應(yīng)用程序之間栓辜,對(duì)數(shù)據(jù)報(bào)進(jìn)行多路分解操作。其中源端口字段可選垛孔,若選用藕甩,則指定了應(yīng)答報(bào)文發(fā)往的端口,不選用周荐,該字段應(yīng)為0狭莱。
報(bào)文長(zhǎng)度:指明以字節(jié)為單位的UDP首部和UDP數(shù)據(jù)的長(zhǎng)度,最小值為8概作,即UDP首部報(bào)文長(zhǎng)度腋妙。
UDP校驗(yàn)和:是可選的,如果為0讯榕,則代表不進(jìn)行校驗(yàn)骤素。
UDP最大的用戶數(shù)據(jù)長(zhǎng)度:IP數(shù)據(jù)報(bào)最大64kB,需要除去20字節(jié)的IP首部愚屁,8字節(jié)的UDP首部济竹,所以UDP數(shù)據(jù)區(qū)用戶內(nèi)容最長(zhǎng)為65535-20-8=65507字節(jié)
UDP校驗(yàn)和計(jì)算方法:
UDP校驗(yàn)和校驗(yàn)的區(qū)域包含UDP首部和數(shù)據(jù)區(qū)。從五元組來看集绰,正確的目的地應(yīng)該包含正確的端口和主機(jī)地址规辱,所以UDP校驗(yàn)也要對(duì)地址進(jìn)行校驗(yàn)。但是UDP首部不包含主機(jī)地址栽燕,所以UDP添加了一個(gè)12字節(jié)的偽首部罕袋。
這個(gè)偽首部邏輯上是UDP首部的一部分,但實(shí)際上并不傳送碍岔。
偽首部結(jié)構(gòu):
源IP地址和目的IP地址:記錄的是發(fā)送UDP報(bào)文時(shí)使用的源IP地址和目的IP地址浴讯。
協(xié)議:指明了使用的協(xié)議類型,UDP是17
UDP長(zhǎng)度:指明了UDP數(shù)據(jù)報(bào)的長(zhǎng)度蔼啦,不包含偽首部榆纽。
對(duì)于校驗(yàn)和字段的使用,UDP給出了兩種方案捏肢,一種是使用奈籽,另一種自然是不使用了。當(dāng)使用校驗(yàn)和時(shí)鸵赫,如果接收方檢驗(yàn)校驗(yàn)和字段時(shí)發(fā)現(xiàn)錯(cuò)誤衣屏,則整個(gè)數(shù)據(jù)報(bào)就會(huì)被丟棄,這未免太苛刻了辩棒,所以在2004年7月狼忱,TETF推出了UDP-lite標(biāo)準(zhǔn)膨疏。
UDP-Lite:
它將數(shù)據(jù)劃分為敏感區(qū)域和非敏感區(qū)域,其中敏感區(qū)域?yàn)樾r?yàn)和計(jì)算的輸入?yún)^(qū)域钻弄,當(dāng)這個(gè)區(qū)域發(fā)生差錯(cuò)時(shí)佃却,則整個(gè)數(shù)據(jù)包會(huì)被丟棄。非敏感區(qū)域發(fā)生差錯(cuò)時(shí)窘俺,報(bào)文不會(huì)被丟棄饲帅。
其數(shù)據(jù)報(bào)結(jié)構(gòu)只是將UDP 報(bào)文中16bit的UDP長(zhǎng)度修改為了校驗(yàn)和覆蓋字段。
校驗(yàn)和覆蓋字段是指從UDP數(shù)據(jù)報(bào)首部第一個(gè)字節(jié)開始計(jì)算校驗(yàn)和的字節(jié)數(shù)批销,取值為0 或者大于等于8的整數(shù)洒闸,取值為0 表示UDP數(shù)據(jù)報(bào)全部參與校驗(yàn)和計(jì)算,因?yàn)閁DP首部必須參與校驗(yàn)和計(jì)算均芽,所以起始值必須為8丘逸。任何1-7的數(shù)值都會(huì)別認(rèn)為非法,數(shù)據(jù)報(bào)會(huì)被丟棄掀宋。
UDP的一些安全問題:
由于UDP是無連接的深纲,使用簡(jiǎn)便,這便給攻擊者提供了便利劲妙。
§ 一種是UDP泛洪攻擊湃鹊,原理是利用偽造IP地址向某個(gè)特定的目的主機(jī)端口發(fā)送大量的UDP報(bào)文。目標(biāo)主機(jī)收到報(bào)文后镣奋,會(huì)將其交付給相應(yīng)端口進(jìn)程處理币呵,如果該端口沒有處于監(jiān)聽狀態(tài),目標(biāo)主機(jī)就會(huì)向UDP數(shù)據(jù)報(bào)源地址回應(yīng)一個(gè)ICMP報(bào)文侨颈,指明“目的端口不可達(dá)”余赢,這是一種流量型拒絕服務(wù)攻擊。
§ 另一種是基于UDP反射的分布式拒絕服務(wù)攻擊哈垢。攻擊者并不直接對(duì)目標(biāo)主機(jī)發(fā)起攻擊妻柒,而是利用互聯(lián)網(wǎng)中的一些開放的服務(wù)器。攻擊者向這些服務(wù)器發(fā)送基于UDP的請(qǐng)求報(bào)文耘分,并將該報(bào)文的源地址修改為目標(biāo)主機(jī)举塔,之后數(shù)倍于請(qǐng)求報(bào)文的回復(fù)報(bào)文會(huì)發(fā)送給目標(biāo)主機(jī),從而對(duì)目標(biāo)主機(jī)造成DDoS攻擊求泰。
歡迎指出文章中的錯(cuò)誤央渣,謝謝