綠(lǜ)色資源網(wǎng):您身邊最放心的安全下載站! 最新軟件|熱門排行|軟件分類|軟件專題|廠商大(dà)全

綠色資源網

技術教程
您的位置(zhì):首頁係(xì)統集(jí)成網絡管理 → 路由器網絡中數據包傳輸分(fèn)析

路由器網絡中數據包傳輸分析

我(wǒ)要評論 2013/01/28 21:58:23 來源:綠色資源網 編輯(jí):www.ynaad.com [ ] 評論:0 點擊:324次

本篇介紹一個基礎的知識,關於數(shù)據包在路由器中是(shì)如何進行傳輸和(hé)交換(huàn)的,隻(zhī)要明白這點(diǎn),那麽對你配置(zhì)出一個好的網絡環境會有很(hěn)大(dà)的幫助。

一、輸入的問題

1、原始套接口可(kě)以接收到任何TCP或UDP報文。

2、要想接收到原始套接口,首先要(yào)接收的數據包必須有(yǒu)一個完整的、正確的(de)IP頭,否則不能通過ip_rcv()中的包頭(tóu)檢查和檢驗和(hé)驗證。

3、在原始套接口接收的數據包過程中,內核會對接收的IP包進(jìn)行校(xiào)驗和驗證,但不(bú)會對(duì)IP包以後的(de)任何字段進行檢測和驗證。如(rú),我們創建原始套接口時,所指定的protocol參數為IPPROTO_TCP,內核也不會進行TCP校驗和驗證,而(ér)是直接把(bǎ)IP頭(tóu)中協議字段為TCP的所有數據包都複製一份,提交給(gěi)該(gāi)原始套接口。

4、用原始套(tào)接口接(jiē)收到(dào)的TCP包都是進行了IP重組以後,TCP排序以前的報文。

5、如果(guǒ)在(zài)創建原始套接口時,所指定的(de)protocol參數不為零,(socket的第三個參數),則接收到的(de)數據報(bào)的協議(yì)字段應(yīng)該與之匹配。否則該數據報不傳遞給該套接口。

6、如果此原始套接口上綁(bǎng)定了一個本地IP地址,那麽接收到的數據報的目的IP地址應該(gāi)與該綁定的IP地(dì)址相匹配,否則該數據包將不傳遞到該套接(jiē)口。

7、如果此原始套接口通過connect指定了一個對方IP地(dì)址(zhǐ),那(nà)麽接收到的數據包的源IP地址應與(yǔ)該以連接地址相匹配,否則該數據包不傳遞給該套接口(kǒu)。

8、如果一個(gè)原始套接口(kǒu)以protocol參數為0的方(fāng)式創建,並且未調用(yòng)connect或bind,那麽對於內核傳遞給(gěi)原始套接口的(de)每一(yī)個原始數據報(bào),該套接口都會(huì)收到一份拷貝。

9、原始套接口接收不到任何(hé)的ARP或RARP協議類型的套接口,因為net_rx_action()會(huì)把(bǎ)ARP或RARP協議類型的數據包傳遞給ARP的(de)接收函(hán)數類(lèi)處理,不會傳遞給IP層的接收函數(shù)ip_rcv()。

10、原始套(tào)接口並不是可以接收到任何的ICMP類型的數據包,因為有些ICMP類型(xíng)的數據(jù)包在傳遞給原始套接口之前已經被係統所響(xiǎng)應,並(bìng)不再(zài)向上(shàng)層(céng)傳(chuán)遞。

11、如果對方(fāng)的數據包分片了,由於原始套接口的接收是在IP上層,所以(yǐ)會接(jiē)收到重組以後的原始IP包。

二、輸出的問題

1、普通輸出通常通過sendto或sendmsg並指定目的IP地址(zhǐ)來(lái)完成,如果套接口已經連接,也可以調用write、writev或send。

2、如果IP_HDRINCL選項未設置,則內(nèi)核寫的數(shù)據起始地址是IP頭部之後的第一個字節。因為這種情況下(xià),內核將構造IP頭部,並將它安在來自進程數據之前。內核將IPv4頭部的協議字段設置成用戶在調用socket函數時所給的第三個參(cān)數。

3、如果IP_HDRINCL選(xuǎn)項(xiàng)已(yǐ)設置,則內核寫的數據其實地址是IP頭部的第一個字節。用戶(hù)所提供的(de)數(shù)據必須包括IP頭部。此時進程(chéng)構造(zào)除了(le)以下兩(liǎng)項以外的整個IP頭部:IPv4標示字段可以設為0,要(yào)求內核設置該值。而且僅當該字段為0時,內核才為其(qí)設置,IPv4頭部校驗和由內核來計算和(hé)存儲(chǔ)。

4、如果創建原始(shǐ)套接口(kǒu)時指定了協議類型,即第三個參數protocol,那也並不是說隻能發該類(lèi)型的數據包。如,即(jí)使將protocol指定為 IPPROTO_TCP,也可以發(fā)送用戶自己組裝的UDP報文,不過此時(shí)如果IP_HDRINCL選項未(wèi)設置(zhì),那麽(me)內核將會在IP頭的協議字段指明後(hòu)麵(miàn)的報文為TCP報(bào)文(不過此時卻為UDP報文(wén))。

等數據包發送到對方TCP層,一般說來會因為找不到合適(shì)的TCP套接口接收該數據包而被丟棄。不過該包可以在目標主機的原始套接口上接收到。

5、正如前麵(miàn)所述,任何時候,IP頭的校驗和都是由內核來設置的。

6、內核任何時候那(nà)會(huì)都不會對(duì)IP包以後的字段進行校驗和驗證。如,即使我們指定第三個(gè)參數protocol為IPPROTO_TCP,在數據發送時(shí)內核也不會對進行TCP校(xiào)驗和計算和驗證。

7、如果IP_HDRINCL選項已設置,按照常規(guī),我們應該組建自己的IP頭,但是即(jí)使我們沒有組(zǔ)建IP頭,用sendto或(huò)sendmsg 並指定目的IP地址來發送(sòng)數據是(shì)照樣可以完成的。但是這樣的數據包在目標機上用原始套接口(kǒu)是接收不到的,因為在ip_rcv()中要對IP頭進行驗證,並且要分(fèn)析(xī)校驗和,所以該包會被丟棄,不過在鏈路層應該能夠接收到該數據包(bāo)。

8、如果設置(zhì)了(le)IP_HDRINCL選項,並(bìng)且數據包超長,那麽數據會被丟棄,並會返回出錯碼(mǎ)EMSGSIZE。如果未設(shè)置IP_HDRINCL選項,並且數據包超長(zhǎng),那麽數據包會被分片。

正是因(yīn)為數(shù)據包具上述的結構,安裝了(le)TCP/IP協議的電腦之間才能相互通信,在使(shǐ)用(yòng)基於TCP/IP協議的網絡時(shí),網絡中其實傳遞的就是數據包。

關鍵詞:路由器

閱讀本文後您有什麽感想? 已有 人給出評價!

  • 0 歡迎喜歡
  • 0 白癡
  • 0 拜托
  • 0 哇
  • 0 加油
  • 0 鄙視
免费人欧美成又黄又爽的视频丨一本色道久久88综合日韩精品丨国产专区日韩精品欧美色丨午夜无遮挡男女啪啪视频丨国产欧美日韩综合精品一区二区丨亚洲精品无码不卡在线播HE丨亚洲精品国产精品国自产观看丨日韩国产高清av不卡