IP的功能就是把數(shù)據(jù)報(bào)在互聯(lián)的網(wǎng)絡(luò)上傳送,通過將數(shù)據(jù)報(bào)在一個(gè)個(gè)IP模塊間傳送直到目的模塊來達(dá)到目的。網(wǎng)絡(luò)中每個(gè)主機(jī)和網(wǎng)關(guān)上都有IP模塊。數(shù)據(jù)報(bào)在一個(gè)個(gè)模塊間通過路由處理網(wǎng)絡(luò)地址傳送到目的地址。因此網(wǎng)絡(luò)地址對于IP協(xié)議十分重要。如前所述,因?yàn)楦鱾(gè)網(wǎng)絡(luò)上的數(shù)據(jù)報(bào)大小可能不同,因此有必要對大的數(shù)據(jù)報(bào)進(jìn)行分段。
尋址
名字,地址和路由是有區(qū)別的,名字是我們要找的,地址指出這個(gè)名字在什么地方,路由解決如何到那里的問題。IP主要處理地址的問題。把名字和地址進(jìn)行映射的工作由上層協(xié)議完成。IP模塊將地址和本地網(wǎng)絡(luò)地址加以映射,而將本地網(wǎng)絡(luò)地址和路由進(jìn)行映射則是低層協(xié)議的任務(wù)。
地址是32位長,由網(wǎng)絡(luò)號和本地地址兩部分構(gòu)成。地址有三類:A類的最高位為0,后7位表示網(wǎng)絡(luò)號,其它的24位表示本地地址;B類前兩位為10,后14位表示網(wǎng)絡(luò)地址,其它16位表示本地地址;C類三位為110,后21位是網(wǎng)絡(luò)號,其它8位代表本地地址。
在將網(wǎng)絡(luò)地址和本地網(wǎng)絡(luò)地址進(jìn)行映射時(shí)必須注意,有些主機(jī)可能使用幾個(gè)不同的IP地址(我們可以把本地網(wǎng)絡(luò)地址理解為MAC地址)。我們必須能夠處理一臺主機(jī)有幾個(gè)處理端口,而每個(gè)端口都有幾個(gè)邏輯的IP地址。
分段
對于不同的網(wǎng)絡(luò),其中傳送的包大小可能不一樣,因此把大包分小的功能是必須的。數(shù)據(jù)報(bào)也可以被標(biāo)記為“不可分段”,如果一個(gè)數(shù)據(jù)報(bào)被如何標(biāo)記了,那么在任何情況下都不準(zhǔn)對它進(jìn)行分段。如果不分段到不了目的地,那就把包在半路拋棄了。在本地網(wǎng)內(nèi)進(jìn)行的重新分段和重組對IP模塊是不可見的,這種方法也可以使用。
本地網(wǎng)分段和重組把重組的各段加上標(biāo)記,接收方使用這些標(biāo)記使不同的段區(qū)別開來。段偏移量域告訴接收方應(yīng)該把這一段放在什么地方,多段標(biāo)記指示最后一個(gè)段,利用不同的域完全可以重組一個(gè)數(shù)據(jù)報(bào)。標(biāo)記域是用于唯一標(biāo)記數(shù)據(jù)報(bào)的,它是最初的發(fā)送方設(shè)置,而且要保證數(shù)據(jù)報(bào)在網(wǎng)絡(luò)傳輸?shù)娜^程中它中唯一的。最初的發(fā)送方把多段標(biāo)記設(shè)置為零,段偏移量設(shè)置為零。
我們假設(shè)IP模塊把一個(gè)大數(shù)據(jù)報(bào)分為兩個(gè)小的,IP模塊首先取得數(shù)據(jù)報(bào)頭,再分隔數(shù)據(jù)為兩份,將數(shù)據(jù)報(bào)頭加在兩份數(shù)據(jù)上。分隔數(shù)據(jù)時(shí)以8個(gè)字節(jié)為單位,第二段不一定是8個(gè)字節(jié),但第一個(gè)必須是。我們把第一段中的8位字節(jié)數(shù)稱為段塊數(shù)(NFB)。新生成的第一個(gè)數(shù)據(jù)報(bào)內(nèi)是生成的第一段數(shù)據(jù),設(shè)置多段標(biāo)記為1;新生成的第二個(gè)數(shù)據(jù)報(bào)內(nèi)是生成的第二段數(shù)據(jù),多段標(biāo)記等于原來數(shù)據(jù)報(bào)內(nèi)的值,段偏移量等于原數(shù)據(jù)報(bào)中的值加上NFB。上述過程可以從2擴(kuò)展至N的情況。
對段的重組要求以下四個(gè)域有相同的值:標(biāo)記,源地址,目標(biāo)地址和協(xié)議。將不同的數(shù)據(jù)報(bào)根據(jù)自己帶的偏移量重新組合為新段,第一個(gè)段的偏移量為0,最后一個(gè)段的多段標(biāo)記為0。