這篇文章是接著上一篇文章的文狱,地址是這個(gè) 互聯(lián)網(wǎng)協(xié)議入門(二)。
本機(jī)的IP地址缘挽、子網(wǎng)掩碼如贷、 網(wǎng)關(guān)的IP地址、DNS的IP地址到踏,這四個(gè)參數(shù)缺一不可杠袱。
計(jì)算機(jī)每次開機(jī),都會(huì)分到同樣的IP地址窝稿,這種情況被稱作"靜態(tài)IP地址上網(wǎng)"楣富。
"動(dòng)態(tài)IP地址",指計(jì)算機(jī)開機(jī)后伴榔,會(huì)自動(dòng)分配到一個(gè)IP地址纹蝴,不用人為設(shè)定。它使用的協(xié)議叫做DHCP協(xié)議踪少。
這個(gè)協(xié)議規(guī)定塘安,每一個(gè)子網(wǎng)絡(luò)中,有一臺(tái)計(jì)算機(jī)負(fù)責(zé)管理本網(wǎng)絡(luò)的所有IP地址援奢,它叫做"DHCP服務(wù)器"兼犯。新的計(jì)算機(jī)加入網(wǎng)絡(luò),必須向"DHCP服務(wù)器"發(fā)送一個(gè)"DHCP請(qǐng)求"數(shù)據(jù)包集漾,申請(qǐng)IP地址和相關(guān)的網(wǎng)絡(luò)參數(shù)切黔。
DHCP協(xié)議是一種應(yīng)用層協(xié)議,建立在UDP協(xié)議之上具篇,數(shù)據(jù)包是這樣的:
以太網(wǎng)是廣播發(fā)送纬霞,同一個(gè)子網(wǎng)絡(luò)的每臺(tái)計(jì)算機(jī)都收到了這個(gè)包。當(dāng)看到發(fā)出方IP地址是0.0.0.0驱显,接收方是255.255.255.255诗芜,于是DHCP服務(wù)器判斷這個(gè)是發(fā)給他的。
接下來埃疫,DHCP服務(wù)器讀出這個(gè)包的數(shù)據(jù)內(nèi)容伏恐,分配好IP地址,發(fā)送回去一個(gè)"DHCP響應(yīng)"數(shù)據(jù)包熔恢。這個(gè)響應(yīng)包的結(jié)構(gòu)也是類似的脐湾,以太網(wǎng)標(biāo)頭的MAC地址是雙方的網(wǎng)卡地址臭笆,IP標(biāo)頭的IP地址是DHCP服務(wù)器的IP地址(發(fā)出方)和255.255.255.255(接收方)叙淌,UDP標(biāo)頭的端口是67(發(fā)出方)和68(接收方)秤掌,分配給請(qǐng)求端的IP地址和本網(wǎng)絡(luò)的具體參數(shù)則包含在Data部分。
新加入的計(jì)算機(jī)收到這個(gè)響應(yīng)包鹰霍,于是就知道了自己的IP地址闻鉴、子網(wǎng)掩碼、網(wǎng)關(guān)地址茂洒、DNS服務(wù)器等等參數(shù)孟岛。
打開一個(gè)網(wǎng)頁分別經(jīng)過這些協(xié)議,進(jìn)行了如下操作:
1督勺、確認(rèn)本地網(wǎng)絡(luò)參數(shù)渠羞。
2、DNS協(xié)議幫助我們將一個(gè)網(wǎng)址轉(zhuǎn)換成IP地址智哀。
3次询、子網(wǎng)掩碼判斷出IP地址不是在同一個(gè)子網(wǎng)絡(luò)后,我們要向一個(gè)網(wǎng)站發(fā)送數(shù)據(jù)包瓷叫,必須通過網(wǎng)關(guān)192.168.1.1轉(zhuǎn)發(fā)屯吊,也就是說,接收方的MAC地址將是網(wǎng)關(guān)的MAC地址摹菠。
4盒卸、瀏覽網(wǎng)頁用的是HTTP協(xié)議,它的整個(gè)數(shù)據(jù)包構(gòu)造是這樣的:
5次氨、TCP數(shù)據(jù)包需要設(shè)置端口蔽介,接收方(Google)的HTTP端口默認(rèn)是80,發(fā)送方(本機(jī))的端口是一個(gè)隨機(jī)生成的1024-65535之間的整數(shù)煮寡,假定為51775屉佳。
6、TCP數(shù)據(jù)包再嵌入IP數(shù)據(jù)包洲押。IP數(shù)據(jù)包需要設(shè)置雙方的IP地址武花,這是已知的,發(fā)送方是本機(jī)杈帐,接收方是172.194.72.105(Google)体箕。
7、IP數(shù)據(jù)包嵌入以太網(wǎng)數(shù)據(jù)包挑童。以太網(wǎng)數(shù)據(jù)包需要設(shè)置雙方的MAC地址累铅,發(fā)送方為本機(jī)的網(wǎng)卡MAC地址,接收方為網(wǎng)關(guān)192.168.1.1的MAC地址(通過ARP協(xié)議得到)站叼。
8娃兽、經(jīng)過多個(gè)網(wǎng)關(guān)的轉(zhuǎn)發(fā),服務(wù)器收到了以太網(wǎng)數(shù)據(jù)包尽楔。如果數(shù)據(jù)包過大投储,會(huì)分成多個(gè)第练,這時(shí)候可以根據(jù)IP標(biāo)頭的序號(hào),將多個(gè)包拼起來玛荞,取出完整的TCP數(shù)據(jù)包娇掏,然后讀出里面的"HTTP請(qǐng)求",接著做出"HTTP響應(yīng)"勋眯,再用TCP協(xié)議發(fā)回來婴梧。
9、本機(jī)收到HTTP響應(yīng)以后客蹋,就可以將網(wǎng)頁顯示出來塞蹭,完成一次網(wǎng)絡(luò)通信。