国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 網(wǎng)絡(luò)通信 > 正文

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

2019-11-04 12:08:58
字體:
供稿:網(wǎng)友

TCP/ip協(xié)議詳解卷1學(xué)習(xí)筆記系列3-IP路由

第1卷第九章 IP路由

  本章講述的是做為TCP/IP協(xié)議簇的基礎(chǔ)。IP路由保證能為數(shù)據(jù)報(bào)找到正確的發(fā)送路徑。假如實(shí)在找不到,則通知發(fā)送方發(fā)放失敗。

  在找路過程中所作用的信息,由兩方面來維護(hù):每個(gè)主機(jī)都維護(hù)有自身的路由表(windows下用 route PRint打印出當(dāng)前的路由表)。由于一般主機(jī)上只有一個(gè)網(wǎng)卡,因此路由表都比較簡單,包含一個(gè)環(huán)回接口(127.0.0.1)和當(dāng)前使用的IP,假如連網(wǎng)卡也沒有,那就只有環(huán)回地址了。對所有發(fā)往127.0.0.1,localhost的數(shù)據(jù)報(bào)都在發(fā)往鏈路層(常見的就是以太網(wǎng)驅(qū)動(dòng)層)前,就轉(zhuǎn)往IP輸入表了。而對發(fā)往自身IP的數(shù)據(jù)在發(fā)到鏈路層后,鏈路層在檢查到這個(gè)地址是自身后,再發(fā)往IP輸入表。

  對發(fā)往其他地址的數(shù)據(jù)報(bào),選用的接口就是網(wǎng)卡,全部發(fā)到網(wǎng)卡上。默認(rèn)路由也是這個(gè)接口。

  假如安裝了多張網(wǎng)卡,windows的服務(wù)器版可以開啟路由轉(zhuǎn)發(fā)功能,也就是可以當(dāng)做路由器用。假如只裝了一張網(wǎng)卡,也使用轉(zhuǎn)發(fā)功能,而實(shí)際上還是“從哪里來,到哪里去”,根本就達(dá)不到“選路”的目的。

  這樣主機(jī)在收到一個(gè)數(shù)據(jù)報(bào)時(shí),先檢查是不是發(fā)給自己的。假如是,就是正常的通訊,直接處理。假如不是,就根據(jù)是否可以轉(zhuǎn)發(fā)的選項(xiàng)(是否開啟路由轉(zhuǎn)發(fā)功能),來決定是直接丟棄數(shù)據(jù)報(bào),還是從網(wǎng)絡(luò)接口中找一個(gè)合適的轉(zhuǎn)發(fā)出去。

  假如決定轉(zhuǎn)發(fā),這時(shí)才真正涉及到“找路”。主機(jī)和路由器各自都有一個(gè)路由表。首先檢查路由表里的指向主機(jī)的那些表項(xiàng),看是不是有哪一個(gè)條目就是要發(fā)往的目的地址。假如找到了,直接發(fā)往這個(gè)主機(jī)。假如找不到,再查指向網(wǎng)絡(luò)號(hào)的那些表項(xiàng),看主機(jī)要發(fā)往的網(wǎng)絡(luò)是不是已經(jīng)有記錄。假如找到了,就發(fā)往這個(gè)網(wǎng)絡(luò)要經(jīng)過的接口。假如這些都找不到,就把這個(gè)數(shù)據(jù)報(bào)發(fā)往默認(rèn)路由,由默認(rèn)路由去處理。通常默認(rèn)路由的表項(xiàng)更多,有更多的信息能找到要發(fā)往的目的地。假如默認(rèn)路由還找不到,就再發(fā)往它的默認(rèn)路由,一直到頂層。頂層的核心路由器假如還找不到,那就表明這個(gè)數(shù)據(jù)報(bào)確實(shí)是找不到目的地了,路由器返回一個(gè)ICMP報(bào)文,告訴發(fā)送方主機(jī)“網(wǎng)絡(luò)不可達(dá)”,或“主機(jī)不可達(dá)”。具體信息根據(jù)路由器來決定,不過收到“主機(jī)不可達(dá)”的居多。

  這些說起來是比較煩的。想像一個(gè)生活中的例子:

  我想坐火車到拉薩去,到杭州火車站去坐車。杭州沒有直達(dá)的車次(在青藏線通車前,全國都沒有:)),也就相當(dāng)于它找不到主機(jī)“拉薩”,也不知道它屬哪個(gè)鐵路局(網(wǎng)絡(luò)號(hào)),它把我送到中轉(zhuǎn)站徐州(默認(rèn)路由)。徐州站同樣找不到,但它知道主機(jī)“拉薩”屬西部,也許網(wǎng)絡(luò)號(hào)“鄭州局”知道,于是把我打發(fā)到了“鄭州”。而鄭州也沒有直達(dá)的車,它再把我打發(fā)到更近一點(diǎn)的“西寧”。然后在西寧火車站,得知青藏線還沒有全線通車,此路不通。于是告知我“主機(jī)不可達(dá)”,這拉薩去不成了。

  在生活中我就只得再回到杭州老老實(shí)實(shí)地過日子了。而在網(wǎng)絡(luò)上,發(fā)到“西寧”的數(shù)據(jù)報(bào)是不會(huì)再發(fā)回來的,路由器(火車站)只是簡單地把“我”扔掉,然后告知杭州警方。

  這樣就是一個(gè)找路的過程。假如在最后終于找到了,當(dāng)然皆大歡喜,然后就可以“握手言歡”,找到組織了。接下來的事就與路由無關(guān)了。

  從這個(gè)過程可以看到路由表項(xiàng)的重要。假如路由表的信息很具體,每個(gè)主機(jī)都能找到,那么只要發(fā)往路由器,所有的數(shù)據(jù)報(bào)都能順利到達(dá),就像杭州站有發(fā)往全國各地的車。然而實(shí)際上這樣的要求不現(xiàn)實(shí)。網(wǎng)絡(luò)上的主機(jī)不可勝數(shù),就像全國的火車站多如牛毛,要做到每個(gè)主機(jī)都有一個(gè)項(xiàng)目,要求路由器有極大的容量來存放這些記錄,而在這龐大的路由表中查找條目的效率也成問題。于是現(xiàn)在的路由器構(gòu)成層次結(jié)構(gòu),每一層的路由器保存局部的路由信息。對自己處理不了的數(shù)據(jù)報(bào),發(fā)往默認(rèn)的路由去處理,這樣對單臺(tái)路由器的要求可以降低一些。

  然后就是路由信息的創(chuàng)建與更新問題了。主機(jī)的開機(jī)關(guān)機(jī),路由器的開機(jī)關(guān)機(jī),這些都是不可預(yù)知的,也就是說路由信息可能是不確定的,這一分鐘這條路還是通的,下一分鐘說不定就不通了(關(guān)機(jī)了,崩潰了,被攻擊了。。。)。這樣造成的路由信息失效需要及時(shí)更新,以免造成錯(cuò)誤的路由。

  路由基本信息的創(chuàng)建一般是在系統(tǒng)啟動(dòng)過程中完成,如默認(rèn)路由的配置。用 route add 命令可以手動(dòng)加入一個(gè)靜態(tài)路由。更多的路由信息是在通信過程不斷充實(shí)的,也就是路由器自己慢慢“學(xué)”到的。這個(gè)跟ARP有一點(diǎn)類似的地方。在局域網(wǎng)內(nèi),假如要發(fā)數(shù)據(jù)報(bào)到另一臺(tái)主機(jī),例如從A發(fā)到B。假如一開始A不知道B在哪里,就發(fā)一個(gè)ARP詢問B在哪里。B收到后回答自己的MAC地址,然后ARP守護(hù)程序會(huì)把這個(gè)MAC與B機(jī)的IP組合成一項(xiàng)保存起來。下次有數(shù)據(jù)要發(fā)到B時(shí),就不用再問了,直接發(fā)到對應(yīng)的MAC地址(用arp -a 可以查到當(dāng)前的arp表項(xiàng))。路由器也類似,假如它知道有一個(gè)接口可以發(fā)送,就把這個(gè)接口保存起來。不同的是,ARP工作在鏈路層,在IP層以下,而路由器處理起這些信息來,比ARP守護(hù)程序要復(fù)雜得多。

  路由器是可以“學(xué)習(xí)”的。學(xué)習(xí)的是其他路由器發(fā)出的路由通告報(bào)文(ICMP數(shù)據(jù)報(bào))。路由器大約9~10分鐘發(fā)一次路由通告報(bào)文,收到報(bào)文的路由器就更新自己的相應(yīng)條目。這種學(xué)習(xí)是被動(dòng)的。而在路由器啟動(dòng)時(shí),會(huì)發(fā)出路由請求報(bào)文(同樣是ICMP數(shù)據(jù)報(bào)),其他路由器會(huì)做出響應(yīng),回復(fù)路由通告報(bào)文,這樣路由器就可以主動(dòng)學(xué)習(xí)其他路由器上的路由信息了。

 另一種修改路由信息的途徑是ICMP重定向報(bào)文。還以上面做例子,我被杭州站送到徐州后,徐州站覺得我應(yīng)該被直接送到鄭州,而不必跑一趟冤枉路,于是它通知杭州站,以后對所有象我這樣的旅客,直接送到鄭州就行了。杭州收到后,更新路由信息,也就是重新定向。

  當(dāng)然主機(jī)接收ICMP重定向要求并更新路由信息的要求要嚴(yán)格許多。書上列出了4.4BSD系統(tǒng)接收ICMP重定向的四個(gè)要求。沒接觸過這個(gè)系統(tǒng),而且書是幾年前寫的,現(xiàn)在的網(wǎng)絡(luò)環(huán)境比當(dāng)時(shí)要復(fù)雜。因?yàn)檫@些環(huán)節(jié)是輕易被人惡意利用的。


書上的內(nèi)容說完,說些我感愛好的方面。

  arp和路由都是用來探路的。arp用于局域網(wǎng),而路由用于廣域網(wǎng)(不是嚴(yán)格的劃分,大致上是這樣)。為了靈活,這些信息都是可以通過icmp數(shù)據(jù)報(bào)修改的。而一旦能被修改,以后所有相關(guān)的數(shù)據(jù)流量就牽引到其他地方去了。這樣有隱患,很可能被人利用。

  arp協(xié)議規(guī)定,假如收到其他主機(jī)發(fā)出的arp數(shù)據(jù)報(bào),就要以數(shù)據(jù)報(bào)中的IP與MAC對應(yīng)信息更新arp緩存中已經(jīng)保存的信息,以后發(fā)到這個(gè)IP的信息發(fā)到新的MAC上。這樣就可以通過構(gòu)造ICMP數(shù)據(jù)報(bào),偽造一個(gè)arp信息,實(shí)施arp欺騙。

  現(xiàn)在流行的arp欺騙步驟是這樣的:假設(shè)A與B、C同是一個(gè)局域網(wǎng),各自有IP地址。A對B是完全信任的,而對C則有限制,例如過濾所有來自C的數(shù)據(jù),或者限制一些端口等,反正就是C不如B有地位。而C覺得不平,想得到B同等待遇(具體的原因多種多樣,反正結(jié)果是一樣)。這樣C就開始做手腳了,直接向治理員要求肯定不行,只好暗地里取代B的位置。

  1.首先把B搞死機(jī)。假如B還在網(wǎng)上,對C后面的arp欺騙有妨礙。

  2.把C自己改成B的IP,這樣就可以騙過A,讓A以為真的是B。

  3.發(fā)放偽造的arp包,把B的IP與C的MAC聯(lián)系起來。

  4.所有主機(jī)收到arp包,并根據(jù)內(nèi)容更新arp緩存,于是所有發(fā)往B的數(shù)據(jù)現(xiàn)在改發(fā)到C,所有收到C發(fā)出數(shù)據(jù)的主機(jī)都以為是B發(fā)過來的。而B這時(shí)正死機(jī)呢,一點(diǎn)都不知道。

  這種欺騙實(shí)施起來有難度。只能在局域網(wǎng)內(nèi)使用。首先要搞定B,假如B拿不下,后面就很難。而且針對IP開放服務(wù)的越來越來越少,一般都附加有其他的限制,頂替掉B也難有作為。
對這種欺騙我知道的有兩個(gè)案例:一個(gè)是在一個(gè)論壇上,有網(wǎng)友說他用這種方法做網(wǎng)絡(luò)治理軟件,用它來屏蔽一些網(wǎng)站,所有發(fā)到被屏蔽網(wǎng)站IP的請求轉(zhuǎn)到別的網(wǎng)站,不使用代理服務(wù)器。這個(gè)思路不錯(cuò)。另一個(gè)是前兩天(9月15日下午),某安全會(huì)議召開期間,站點(diǎn)“被黑”,網(wǎng)頁不能正常打開。據(jù)網(wǎng)站成員說,是托管服務(wù)商的另外一臺(tái)主機(jī)被黑,用arp欺騙把訪問正常網(wǎng)頁的請求轉(zhuǎn)移到被黑的主機(jī)上。于是現(xiàn)場實(shí)施一場“攻防對抗”,一個(gè)不斷地發(fā)欺騙報(bào)文,把訪問轉(zhuǎn)移;另一個(gè)不斷發(fā)正常報(bào)文,把訪問奪回來。于是在這段時(shí)間訪問網(wǎng)頁時(shí),就出現(xiàn)了一下子出現(xiàn)正常網(wǎng)頁,刷新時(shí)變成變黑的頁面,再刷新又正常的奇觀。可惜當(dāng)時(shí)我正在上班,沒有親眼看到。

  路由信息同樣有偽造的可能。路由通知信息可以更新其他路由器的路由表。假如發(fā)出一個(gè)偽造的路由通知信息,那就破壞了路由器的正常路由表。這個(gè)實(shí)現(xiàn)起來比較難,而ICMP重定向的實(shí)現(xiàn)起來的難度就要小許多。

  arp欺騙只能在局域網(wǎng)內(nèi)實(shí)現(xiàn)。假如要在廣域網(wǎng)上達(dá)到相同的目的,就必須結(jié)合ICMP欺騙了。

  用arp欺騙可以把流量轉(zhuǎn)移,但是轉(zhuǎn)移時(shí)有個(gè)限制,不能轉(zhuǎn)移到路由器上,也就是arp信息是不能跨路由的(不同于代理ARP)。這樣即使把其他主機(jī)的arp信息刷新成路由器的MAC,發(fā)送數(shù)據(jù)時(shí)還是只在局域網(wǎng)內(nèi)尋址,就是不往路由器那里發(fā)。這時(shí)必須再發(fā)一個(gè)ICMP欺騙,說發(fā)到路由器的MAC才是正確的。主機(jī)收到這個(gè)消息后,才能達(dá)到目的,C完全取代B。之后的事情,就象入侵者的心情了。

  從這個(gè)意義上,可以實(shí)現(xiàn)任何機(jī)器的Sniffer(跟蹤所有通訊數(shù)據(jù))。

  上面說的這些,我現(xiàn)在還只是在概念、原理層面上的了解,以及對這些方面了解的總結(jié)。要?jiǎng)邮謱?shí)現(xiàn)水平還不夠,還得學(xué)習(xí)。網(wǎng)絡(luò)抓包現(xiàn)在是會(huì)了,但是要談協(xié)議分析還早。連構(gòu)造 RAW Socket都不太會(huì),要玩其他就更是扯遠(yuǎn)了。



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 靖边县| 清水县| 湖南省| 泸定县| 宜兴市| 青冈县| 都昌县| 阿拉尔市| 蓬莱市| 荔浦县| 资阳市| 许昌县| 灵丘县| 威宁| 仙桃市| 白河县| 怀柔区| 怀仁县| 新绛县| 林西县| 图们市| 上高县| 青岛市| 介休市| 彭州市| 东莞市| 临沭县| 牙克石市| 河东区| 武夷山市| 浦县| 健康| 松阳县| 阳春市| 托克逊县| 观塘区| 托克逊县| 思茅市| 公安县| 庆云县| 榆社县|