日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

TCP/IP協(xié)議詳解卷1學(xué)習(xí)筆記系列二

TCP/IP協(xié)議詳解卷1學(xué)習(xí)筆記系列二
【TCP/IP協(xié)議詳解卷1學(xué)習(xí)筆記系列二】卷1第七、八章
第七章是Ping程序的基本原理,第八章是traceroute( Win2000下是tracert)的原理 。主要介紹的是一些原理性的東西,并以實(shí)際的tcpdump的抓包的內(nèi)容作解釋 。
ping 程序是利用icmp的回復(fù)請(qǐng)求來(lái)探測(cè)遠(yuǎn)端主機(jī)是否可達(dá) 。(并不能繼續(xù)判定端口是否可達(dá) 。要想查看端口,就要使用掃描器了 。)win2000里的網(wǎng)絡(luò)庫(kù)里已經(jīng)提供網(wǎng)絡(luò)函數(shù)庫(kù)(icmp.dll)可以實(shí)現(xiàn)利用icmp來(lái)探測(cè)遠(yuǎn)端主機(jī) 。相比起使用管道來(lái)讀ping的結(jié)果,或者嵌入ping源碼,這個(gè)是最簡(jiǎn)單的方法了(沒(méi)辦法,人懶) 。ping其實(shí)還有一個(gè)R選項(xiàng),用來(lái)記錄經(jīng)過(guò)的路由,以前一直不知道 。(ping www.Google.com -r 7)記錄經(jīng)過(guò)的7個(gè)路由器 。按照分析,根據(jù)所在環(huán)境限制最多可以記錄8~9個(gè)項(xiàng)目 。
除了回顯請(qǐng)求外,還可以利用icmp來(lái)實(shí)現(xiàn)時(shí)間請(qǐng)求 。在icmp的數(shù)據(jù)包中可以包含發(fā)送時(shí)間,目的主機(jī)收到后再附上自身當(dāng)時(shí)時(shí)間才發(fā)回 。這樣可以做一個(gè)時(shí)間校驗(yàn),并可以判定源與目的之間的通訊速度 。由于具體的內(nèi)容部分比較煩,類(lèi)型太多,一下子記不住各個(gè)類(lèi)型的意思 。
一般用ping的時(shí)候只是用了它的最簡(jiǎn)單的功能:檢查主機(jī)能不能連到 。其實(shí)使用它所提供的其他選項(xiàng),可以實(shí)現(xiàn)許多細(xì)節(jié)上的控制,例如數(shù)據(jù)包長(zhǎng)度,TTL,路由記錄,寬/嚴(yán)路由經(jīng)過(guò)路由等 。
tracetroute,也就是 trace route,跟蹤路由 。這個(gè)程序最早是Van Jacobson實(shí)現(xiàn)的 。源碼在網(wǎng)上可以找到,不過(guò)我還沒(méi)有去找 。主要的原理是IP路由過(guò)程中對(duì)數(shù)據(jù)包TTL(Time to Live,存活時(shí)間)的處理 。當(dāng)路由器收到一個(gè)IP包時(shí),會(huì)修改IP包的TTL(及由此造成的頭部檢驗(yàn)和checksum變化) 。每收到一個(gè)包,檢查這個(gè)的TTL是否是0或1 。假如是,表明這個(gè)包還沒(méi)有到達(dá)目的地,而且剩余時(shí)間不多了,肯定是到不了目的地了 。這樣路由器就簡(jiǎn)單地丟棄這個(gè)包,并給源主機(jī)發(fā)送 ICMP通知,說(shuō)這個(gè)包已經(jīng)超時(shí)了 。ICMP的通知信息里包含當(dāng)前路由器發(fā)送時(shí)所用的IP 。
這樣就可以通過(guò)構(gòu)造數(shù)據(jù)包,來(lái)間接檢查到達(dá)一個(gè)主機(jī)時(shí)經(jīng)過(guò)了哪些路由 。一開(kāi)始發(fā)送一個(gè)TTL為1的包,這樣到達(dá)第一個(gè)路由器的時(shí)候就已經(jīng)超時(shí)了,第一個(gè)路由器就發(fā)通知說(shuō)包超時(shí),這樣就可以記錄下所經(jīng)過(guò)的第一個(gè)路由器的IP 。然后TTL加1,安全通過(guò)第一個(gè)路由器,而第二個(gè)路由器的的處理與第一個(gè)相同,丟包,發(fā)通知說(shuō)包超時(shí)了,這樣記錄下第二個(gè)路由器IP,由此可以一直進(jìn)行下去,直到這個(gè)數(shù)據(jù)包到達(dá)目標(biāo)主機(jī),由此打印出所有經(jīng)過(guò)的路由器 。
在通信中,IP層只負(fù)責(zé)數(shù)據(jù)的路由與傳輸,并不處理數(shù)據(jù)包的內(nèi)容 。例如ICMP,或TCP,UDP,這些協(xié)議是依靠IP層的傳輸功能來(lái)傳送數(shù)據(jù)的 。在通信雙方的主機(jī)中,收到這些協(xié)議的數(shù)據(jù)包后,一般在通信的對(duì)應(yīng)主機(jī)上,會(huì)有程序來(lái)處理這些數(shù)據(jù) 。而直接的IP數(shù)據(jù)報(bào)是沒(méi)有用處的(win2000的驅(qū)動(dòng)層可以直接使用IP報(bào)而不需要加上其他協(xié)議,但是一般是不會(huì)這樣用的) 。因此traceroute程序發(fā)送一個(gè)UDP包來(lái)試探 。對(duì)路由器來(lái)說(shuō),UDP數(shù)據(jù)報(bào)只是IP數(shù)據(jù)報(bào)的一種,它并不關(guān)心UDP數(shù)據(jù)報(bào)的具體內(nèi)容 。直到這個(gè)包到達(dá)目的端的主機(jī)會(huì),目的主機(jī)的內(nèi)核會(huì)解析UDP數(shù)據(jù)報(bào),并查找數(shù)據(jù)報(bào)中要求端口是否已經(jīng)有進(jìn)程在使用 。假如找到,則通知進(jìn)程有數(shù)據(jù)到達(dá) 。而假如找不到,則發(fā)送一個(gè)“目的端口不可達(dá)”的ICMP錯(cuò)誤數(shù)據(jù)回到源主機(jī) 。
這樣就可以完全確定下來(lái) 。trcertroute建立一個(gè)UDP數(shù)據(jù)包,不斷修改TTL值并發(fā)送出去,假如收到“超時(shí)錯(cuò)”,表示剛剛到達(dá)的是路由器,而假如收到的是“端口不可達(dá)”錯(cuò)誤,表示剛剛到達(dá)的就是目的主機(jī) 。這樣路由跟蹤完成,程序結(jié)束 。

推薦閱讀