IP無(wú)連接協(xié)議的意義
對(duì)于IP協(xié)議,我們都知道它是和網(wǎng)絡(luò)地址息息相關(guān)的。那么我們?nèi)绾握_定義IP協(xié)議的意義呢?這個(gè)協(xié)議在最初定制的時(shí)候,就是一個(gè)無(wú)連接協(xié)議。具體什么是IP無(wú)連接協(xié)議讓我們從后文來(lái)慢慢體會(huì)。
IP是一個(gè)無(wú)連接的協(xié)議,主要就是負(fù)責(zé)在主機(jī)間尋址并為數(shù)據(jù)包設(shè)定路由,在交換數(shù)據(jù)前它并不建立會(huì)話。因?yàn)樗槐WC正確傳遞,另一方面,數(shù)據(jù)在被收到時(shí),IP不需要收到確認(rèn),所以它是不可靠的。
有一些字段,在當(dāng)數(shù)據(jù)從傳輸層傳下來(lái)時(shí),會(huì)被附加在數(shù)據(jù)包中,我們來(lái)看一下這些字段:
源IP地址:用IP地址確定數(shù)據(jù)報(bào)發(fā)送者。
目標(biāo)IP地址:用IP地址確定數(shù)據(jù)報(bào)目標(biāo)。
協(xié)議:告知目的機(jī)的IP是否將包傳給TCP或UDP。
檢查和:一個(gè)簡(jiǎn)單的數(shù)學(xué)計(jì)算,用來(lái)證實(shí)收到的包的完整性。
TTL生存有效時(shí)間:指定一個(gè)數(shù)據(jù)報(bào)被丟棄之前,在網(wǎng)絡(luò)上能停留多少時(shí)間(以秒計(jì))。它避免了包在網(wǎng)絡(luò)中無(wú)休止循環(huán)。路由器會(huì)根據(jù)數(shù)據(jù)在路由器中駐留的時(shí)間來(lái)遞減TTL。其中數(shù)據(jù)報(bào)通過(guò)一次路由器,TTL至少減少一秒。
根據(jù)我們前面提到關(guān)于ARP的知識(shí),如果IP無(wú)連接協(xié)議的地址目標(biāo)為本地地址時(shí),IP將數(shù)據(jù)包直接傳給那個(gè)主機(jī);如果目標(biāo)地址為遠(yuǎn)程地址的話,IP在本地的路由表中查找遠(yuǎn)程主機(jī)的路由(看來(lái)好象我們平時(shí)撥114一樣)。如果找到一個(gè)路由,IP用它傳送數(shù)據(jù)包。如果沒(méi)找到呢,就會(huì)將數(shù)據(jù)包發(fā)送到源主機(jī)的缺省網(wǎng)關(guān),也稱之為路由器。(很多時(shí)候一直在搞網(wǎng)關(guān)和路由器的定義,其實(shí)我覺(jué)得在學(xué)的時(shí)候不一定死摳概念,現(xiàn)在硬件和軟件結(jié)合的產(chǎn)品越來(lái)越多了,一時(shí)很分清的,只要我們運(yùn)用的時(shí)候可以解決實(shí)際問(wèn)題嘛。)
這樣當(dāng)路由器收到一個(gè)包后,該包向上傳給IP無(wú)連接協(xié)議:
(1)如果交通阻塞(聽起來(lái)蠻可怕的),包在路由器中停滯,TTL至少減1或更多。要是它降到0的話,包就會(huì)被拋棄。
(2)如果對(duì)于下一網(wǎng)絡(luò)來(lái)說(shuō)包太大的話,IP會(huì)將它分割成若干個(gè)小包。
(3)如果包被分解,IP無(wú)連接協(xié)議為每個(gè)新包制造一個(gè)新頭,其中包括:一個(gè)標(biāo)志,用來(lái)顯示其它小包在其后;一個(gè)小包ID,用來(lái)確定所有小包是一起的;一個(gè)小包偏移,用來(lái)告訴接收主機(jī)怎么重新組合它們。
(4)IP計(jì)算一個(gè)新的檢驗(yàn)和。
(5)IP獲取一個(gè)路由的目標(biāo)硬件地址。
(6)IP轉(zhuǎn)發(fā)包。
在下一主機(jī),包被發(fā)送到TCP或UDP。每個(gè)路由器都要重復(fù)該過(guò)程。直到包到達(dá)最終目的地。當(dāng)包到達(dá)最終目的地后,IP無(wú)連接協(xié)議將小包組裝成原來(lái)的包。