中国韩国日本在线观看免费,A级尤物一区,日韩精品一二三区无码,欧美日韩少妇色

協(xié)議森林05 我盡力 (IP協(xié)議詳解)

發(fā)布時(shí)間:2016-05-14 09:59

  本文關(guān)鍵詞:ip協(xié)議,由筆耕文化傳播整理發(fā)布。


協(xié)議森林05 我盡力 (ip協(xié)議詳解)

作者:Vamei 出處: 歡迎轉(zhuǎn)載,也請(qǐng)保留這段聲明。謝謝!

 

在粗略了解了IP接力和IP地址后,我們?cè)俜催^(guò)來(lái),看一看ip協(xié)議的具體細(xì)節(jié)和設(shè)計(jì)哲學(xué)。

 

IPv4與IPv6頭部的對(duì)比

我們已經(jīng)在IP接力中介紹過(guò),一個(gè)IP包分為頭部(header)和數(shù)據(jù)(payload/data)兩部分。頭部是為了實(shí)現(xiàn)IP通信必須的附加信息,數(shù)據(jù)是IP通信所要傳送的信息。

協(xié)議森林05 我盡力 (IP協(xié)議詳解)

 

黃色區(qū)域 (同名區(qū)域)

我們看到,三個(gè)黃色區(qū)域跨越了IPv4和IPv6。Version(4位)用來(lái)表明ip協(xié)議版本,是IPv4還是IPv6(IPv4, Version=0100; IPv6, Version=0110)。Source AdrresssDestination Address分別為發(fā)出地和目的地的IP地址。

  藍(lán)色區(qū)域 (名字發(fā)生變動(dòng)的區(qū)域)

Time to Live 存活時(shí)間(Hop Limit in IPv6)。Time to Live最初是表示一個(gè)IP包的最大存活時(shí)間:如果IP包在傳輸過(guò)程中超過(guò)Time to Live,那么IP包就作廢。后來(lái),IPv4的這個(gè)區(qū)域記錄一個(gè)整數(shù)(比如30),表示在IP包接力過(guò)程中最多經(jīng)過(guò)30個(gè)路由接力,如果超過(guò)30個(gè)路由接力,那么這個(gè)IP包就作廢。IP包每經(jīng)過(guò)一個(gè)路由器,路由器就給Time to Live減一。當(dāng)一個(gè)路由器發(fā)現(xiàn)Time to Live為0時(shí),就不再發(fā)送該IP包。IPv6中的Hop Limit區(qū)域記錄的也是最大路由接力數(shù),與IPv4的功能相同。Time to Live/Hop Limit避免了IP包在互聯(lián)網(wǎng)中無(wú)限接力。

Type of Service 服務(wù)類(lèi)型(Traffic Class in IPv6)。Type of Service最初是用來(lái)給IP包分優(yōu)先級(jí),比如語(yǔ)音通話需要實(shí)時(shí)性,所以它的IP包應(yīng)該比Web服務(wù)的IP包有更高的優(yōu)先級(jí)。然而,這個(gè)最初不錯(cuò)的想法沒(méi)有被微軟采納。在Windows下生成的IP包都是相同的最高優(yōu)先級(jí),所以在當(dāng)時(shí)造成Linux和Windows混合網(wǎng)絡(luò)中,Linux的IP傳輸會(huì)慢于Windows (僅僅是因?yàn)長(zhǎng)inux更加守規(guī)矩!)。后來(lái),Type of Service被實(shí)際分為兩部分:Differentiated Service Field (DS, 前6位)和Explicit Congestion Notification (ECN, 后2位),前者依然用來(lái)區(qū)分服務(wù)類(lèi)型,,而后者用于表明IP包途徑路由的交通狀況。IPv6的Traffic Class也被如此分成兩部分。通過(guò)IP包提供不同服務(wù)的想法,并針對(duì)服務(wù)進(jìn)行不同的優(yōu)化的想法已經(jīng)產(chǎn)生很久了,但具體做法并沒(méi)有形成公認(rèn)的協(xié)議。比如ECN區(qū)域,它用來(lái)表示IP包經(jīng)過(guò)路徑的交通狀況。如果接收者收到的ECN區(qū)域顯示路徑上的很擁擠,那么接收者應(yīng)該作出調(diào)整。但在實(shí)際上,許多接收者都會(huì)忽視ECN所包含的信息。交通狀況的控制往往由更高層的比如TCP協(xié)議實(shí)現(xiàn)。

Protocol 協(xié)議(Next Header in IPv6)。Protocol用來(lái)說(shuō)明IP包Payload部分所遵循的協(xié)議,也就是IP包之上的協(xié)議是什么。它說(shuō)明了IP包封裝的是一個(gè)怎樣的高層協(xié)議包(TCP? UDP?)。

Total Length, 以及IPv6中Payload Length的討論要和IHL區(qū)域放在一起,我們即將討論。

 

紅色區(qū)域 (IPv6中刪除的區(qū)域)

我們看一下IPv4和IPv6的長(zhǎng)度信息。IPv4頭部的長(zhǎng)度。在頭部的最后,是options。每個(gè)options有32位,是選填性質(zhì)的區(qū)域。一個(gè)IPv4頭部可以完全沒(méi)有options區(qū)域。不考慮options的話,整個(gè)IPv4頭部有20 bytes(上面每行為4 bytes)。但由于有options的存在,整個(gè)頭部的總長(zhǎng)度是變動(dòng)的。我們用IHL(Internet Header Length)來(lái)記錄頭部的總長(zhǎng)度,用Total Length記錄整個(gè)IP包的長(zhǎng)度。IPv6沒(méi)有options,它的頭部是固定的長(zhǎng)度40 bytes,所以IPv6中并不需要IHL區(qū)域。Payload Length用來(lái)表示IPv6的數(shù)據(jù)部分的長(zhǎng)度。整個(gè)IP包為40 bytes + Payload Length。

IPv4中還有一個(gè)Header Checksum區(qū)域。這個(gè)checksum用于校驗(yàn)IP包的頭部信息。Checksum與之前在小喇叭中提到的CRC算法并不相同。IPv6則沒(méi)有checksum區(qū)域。IPv6包的校驗(yàn)依賴(lài)高層的協(xié)議來(lái)完成,這樣的好處是免去了執(zhí)行checksum校驗(yàn)所需要的時(shí)間,減小了網(wǎng)絡(luò)延遲 (latency)。

Identification, flagsfragment offset,這三個(gè)包都是為碎片化(fragmentation)服務(wù)的。碎片化是指一個(gè)路由器將接收到的IP包分拆成多個(gè)IP包傳送,而接收這些“碎片”的路由器或者主機(jī)需要將“碎片”重新組合(reassembly)成一個(gè)IP包。不同的局域網(wǎng)所支持的最大傳輸單元(MTU, Maximum Transportation Unit)不同。如果一個(gè)IP包的大小超過(guò)了局域網(wǎng)支持的MTU,就需要在進(jìn)入該局域網(wǎng)時(shí)碎片化傳輸(就好像方面面面餅太大了,必須掰碎才能放進(jìn)碗里)。碎片化會(huì)給路由器和網(wǎng)絡(luò)帶來(lái)很大的負(fù)擔(dān)。最好在IP包發(fā)出之前探測(cè)整個(gè)路徑上的最小MTU,IP包的大小不超過(guò)該最小MTU,就可以避免碎片化。IPv6在設(shè)計(jì)上避免碎片化。每一個(gè)IPv6局域網(wǎng)的MTU都必須大于等于1280 bytes。IPv6的默認(rèn)發(fā)送IP包大小為1280 bytes。

 

協(xié)議森林05 我盡力 (IP協(xié)議詳解)

令人痛苦的碎片化

綠色區(qū)域 (IPv6新增區(qū)域)

Flow Label是IPv6中新增的區(qū)域。它被用來(lái)提醒路由器來(lái)重復(fù)使用之前的接力路徑。這樣IP包可以自動(dòng)保持出發(fā)時(shí)的順序。這對(duì)于流媒體之類(lèi)的應(yīng)用有幫助。Flow label的進(jìn)一步使用還在開(kāi)發(fā)中。

 

“我盡力”

IP協(xié)議在產(chǎn)生時(shí)是一個(gè)松散的網(wǎng)絡(luò),這個(gè)網(wǎng)絡(luò)由各個(gè)大學(xué)的局域網(wǎng)相互連接成的,由一群碰頭垢面的Geek維護(hù)。所以,ip協(xié)議認(rèn)為自己所處的環(huán)境是不可靠(unreliable)的:諸如路由器壞掉、實(shí)驗(yàn)室失火、某個(gè)PhD踢掉電纜之類(lèi)的事情隨時(shí)會(huì)發(fā)生。

協(xié)議森林05 我盡力 (IP協(xié)議詳解)

不靠譜的網(wǎng)絡(luò)

這樣的兇險(xiǎn)環(huán)境下,ip協(xié)議提供的傳送只能是“我盡力” (best effort)式的。所謂的“我盡力”,其潛臺(tái)詞是,如果事情出錯(cuò)不要怪我,我只是答應(yīng)了盡力,可沒(méi)保證什么。所以,如果IP包傳輸過(guò)程中出現(xiàn)錯(cuò)誤(比如checksum對(duì)不上,比如交通太繁忙,比如超過(guò)Time to Live),根據(jù)IP協(xié)議,你的IP包會(huì)直接被丟掉。Game Over, 不會(huì)再有進(jìn)一步的努力來(lái)修正錯(cuò)誤。Best effort讓IP協(xié)議保持很簡(jiǎn)單的形態(tài)。更多的質(zhì)量控制交給高層協(xié)議處理,ip協(xié)議只負(fù)責(zé)有效率的傳輸。

(多么不負(fù)責(zé)任的郵遞系統(tǒng))

“效率優(yōu)先”也體現(xiàn)在IP包的順序(order)上。即使出發(fā)地和目的地保持不變,ip協(xié)議也不保證IP包到達(dá)的先后順序。我們已經(jīng)知道,IP接力是根據(jù)routing table決定接力路線的。如果在連續(xù)的IP包發(fā)送過(guò)程中,routing table更新(比如有一條新建的捷徑出現(xiàn)),那么后發(fā)出的IP包選擇走不一樣的接力路線。如果新的路徑傳輸速度更快,那么后發(fā)出的IP包有可能先到。這就好像是多車(chē)道的公路上,每輛車(chē)都在不停變換車(chē)道,最終所有的車(chē)道都塞滿汽車(chē)。這樣可以讓公路利用率達(dá)到最大。

協(xié)議森林05 我盡力 (IP協(xié)議詳解)

“插隊(duì)”

 

IPv6中的Flow Label可以建議路由器將一些IP包保持一樣的接力路徑。但這只是“建議”,路由器可能會(huì)忽略該建議。

 

Header Checksum算法

Header Checksum區(qū)域有16位。它是這樣獲得的,從header取得除checksum之外的0/1序列,比如:

9194 8073 0000 4000 4011 C0A8 0001 C0A8 00C7 (十六進(jìn)制hex, 這是一個(gè)為演示運(yùn)算過(guò)程而設(shè)計(jì)的header)

按照十六位(也就是4位hex)分割整個(gè)序列。將分割后的各個(gè)4位hex累積相加。如果有超過(guò)16位的進(jìn)位出現(xiàn),則將進(jìn)位加到后16位結(jié)果的最后一位:

  Binary                Hex

  1001000110010100      9194

+ 1000000001110011      8073

  ----------------

1 0001001000000111     11207

+                1

  ----------------

  0001001000001000      1208
上面的計(jì)算叫做one's complement sum。求得所有十六位數(shù)的和,

one's complement sum(4500, 0073, 0000, 4000, 4011, C0A8, 0001, C0A8, 00C7) = 1433

然后,將1433的每一位取反(0->1, 1->0), 就得到checksum:EBCC

這樣,我們的header就是:

9194 8073 0000 4000 4011 EBCC C0A8 0001 C0A8 00C7

IP包的接收方在接收到IP包之后,可以求上面各個(gè)16位數(shù)的one's complement sum,應(yīng)該得到FFFF。如果不是FFFF,那么header是不正確的,整個(gè)IP包會(huì)被丟棄。

(再次提醒,示例所用的IP header不是真實(shí)的header,它只是起演示算法的作用)

 

總結(jié)

每個(gè)網(wǎng)絡(luò)協(xié)議的形成都有其歷史原因。比如ip協(xié)議是為了將各個(gè)分散的實(shí)驗(yàn)室網(wǎng)絡(luò)連接起來(lái)。由于當(dāng)時(shí)的網(wǎng)絡(luò)很小,所以IPv4(IPv4產(chǎn)生與70年代)的地址總量為40億。盡管當(dāng)時(shí)被認(rèn)為是很大的數(shù)字,但數(shù)字浪潮很快帶來(lái)了地址耗盡危機(jī)。IPv6的主要目的是增加IPv4的地址容量,但同時(shí)根據(jù)IPv4的經(jīng)驗(yàn)和新時(shí)代的技術(shù)進(jìn)步進(jìn)行改進(jìn),比如避免碎片化,比如取消checksum (由于高層協(xié)議TCP的廣泛使用)。網(wǎng)絡(luò)協(xié)議技術(shù)上并不復(fù)雜,更多的考量是政策性的。

IP協(xié)議是"Best Effort"式的,IP傳輸是不可靠的。但這樣的設(shè)計(jì)成就了ip協(xié)議的效率。

 

歡迎繼續(xù)閱讀“協(xié)議森林”系列

 

posted @


  本文關(guān)鍵詞:ip協(xié)議,由筆耕文化傳播整理發(fā)布。



本文編號(hào):45020

資料下載
論文發(fā)表

本文鏈接:http://www.lk138.cn/kejilunwen/jisuanjikexuelunwen/45020.html


Copyright(c)文論論文網(wǎng)All Rights Reserved | 網(wǎng)站地圖 |

版權(quán)申明:資料由用戶0e9ed***提供,本站僅收錄摘要或目錄,作者需要?jiǎng)h除請(qǐng)E-mail郵箱bigeng88@qq.com