計(jì)網(wǎng)筆記(4)——網(wǎng)絡(luò)層

網(wǎng)絡(luò)層負(fù)責(zé)在不同網(wǎng)絡(luò)間盡力轉(zhuǎn)發(fā)數(shù)據(jù)包,不負(fù)責(zé)丟失重傳,也不負(fù)責(zé)順序重排序。

路由器工作在第三層網(wǎng)絡(luò)層,因此路由器是三層設(shè)備。


數(shù)據(jù)包在網(wǎng)絡(luò)中的傳輸
網(wǎng)絡(luò)設(shè)備和OSI參考模型:M1==》M4
TCP/IP協(xié)議

ARP協(xié)議

地址解析協(xié)議,即ARP(Address Resolution Protocol),是根據(jù)IP地址獲取物理地址的一個(gè)TCP/IP協(xié)議。主機(jī)發(fā)送信息時(shí)將包含目標(biāo)IP地址的ARP請(qǐng)求廣播(目標(biāo)MAC地址是FF-FF-FF-FF-FF-FF)到網(wǎng)絡(luò)上的所有主機(jī),并接收返回消息,以此確定目標(biāo)的物理地址;收到返回消息后將該IP地址和物理地址存入本機(jī)ARP緩存中并保留一定時(shí)間,下次請(qǐng)求時(shí)直接查詢ARP緩存以節(jié)約資源。ARP廣播不可跨網(wǎng)段,只在本網(wǎng)段廣播。

arp -a:查看緩存的MAC地址。

ARP欺騙
  • 單向ARP欺騙:
    掐斷 A 與 B 的通訊,實(shí)現(xiàn)原理:C 向 A 發(fā)送一條 Arp 數(shù)據(jù)包,內(nèi)容為:B 的地址是 00:00:00:00:00:00 (一個(gè)錯(cuò)誤的地址),那么 A 此后向 B 發(fā)的數(shù)據(jù)包都會(huì)發(fā)到 00,而這個(gè)地址是錯(cuò)誤的,所以通訊中斷了,但是要注意了,這里只是 A –> B 中斷了,B –> A 沒(méi)有中斷,所以這個(gè)叫單向欺騙。

    掐斷 B 與 A 的通訊,實(shí)現(xiàn)原理和第一條一樣,如果和第一條一起發(fā),那么 A 和 B 的通訊就完全中斷了,即:A <– × –> B

    嗅探 A 與 B 的通訊,實(shí)現(xiàn)原理:C 向 A 發(fā)送一條 Arp 數(shù)據(jù)包,內(nèi)容為:B 的地址是 AA:BB:CC:DD:EE:FF (C自己的地址),也就是說(shuō),C 對(duì) A 說(shuō):我才是 B,于是 A 把向 B 發(fā)送的數(shù)據(jù)都發(fā)給 C 了,C 得到數(shù)據(jù)后就可以為所欲為了,可以直接丟棄,那么通訊中斷,也可以再次轉(zhuǎn)發(fā)給 B,那么又形成回路,C 當(dāng)了個(gè)中間人,監(jiān)視 A 和 B 的通訊,此時(shí)你就可以用CAIN等任何抓包工具進(jìn)行本地嗅探了,因?yàn)槟繕?biāo)機(jī)器數(shù)據(jù)完全從你這你走,任意嗅探。當(dāng)然你可以不轉(zhuǎn)發(fā)所有數(shù)據(jù),只轉(zhuǎn)發(fā)部分?jǐn)?shù)據(jù), 把某些特定協(xié)議的數(shù)據(jù)分離出來(lái),然后單獨(dú)處理,例如替換、修改(類似 zxarp 等 Arp 工具的插入、劫持?jǐn)?shù)據(jù)功能),或者干點(diǎn)其他啥,都行。

  • 雙向ARP欺騙:
    A要跟C正常通訊,B向A說(shuō)我是才C。B向C說(shuō)我才是A,那么這樣的情況下把A跟C的ARP緩存表全部修改了。以后通訊過(guò)程就是 A把數(shù)據(jù)發(fā)送給B,B再發(fā)送給C,C把數(shù)據(jù)發(fā)送B,B再把數(shù)據(jù)給A。


ICMP協(xié)議

PING (Packet Internet Groper),因特網(wǎng)包探索器,用于測(cè)試網(wǎng)絡(luò)連接量的程序。Ping發(fā)送一個(gè)ICMP(Internet Control Messages Protocol,因特網(wǎng)信報(bào)控制協(xié)議)回聲請(qǐng)求消息給目的地并報(bào)告是否收到所希望的ICMP echo (ICMP回聲應(yīng)答)。它是用來(lái)檢查網(wǎng)絡(luò)是否通暢或者網(wǎng)絡(luò)連接速度的命令。

它所利用的原理是這樣的:利用網(wǎng)絡(luò)上機(jī)器IP地址的唯一性,給目標(biāo)IP地址發(fā)送一個(gè)數(shù)據(jù)包,再要求對(duì)方返回一個(gè)同樣大小的數(shù)據(jù)包來(lái)確定兩臺(tái)網(wǎng)絡(luò)機(jī)器是否連接相通,時(shí)延是多少。

ping指的是端對(duì)端連通,通常用來(lái)作為可用性的檢查, 但是某些病毒木馬會(huì)強(qiáng)行大量遠(yuǎn)程執(zhí)行ping命令搶占你的網(wǎng)絡(luò)資源,導(dǎo)致系統(tǒng)變慢,網(wǎng)速變慢。嚴(yán)禁ping入侵作為大多數(shù)防火墻的一個(gè)基本功能提供給用戶進(jìn)行選擇。通常的情況下你如果不用作服務(wù)器或者進(jìn)行網(wǎng)絡(luò)測(cè)試,可以放心的選中它,保護(hù)你的電腦。

ping + ip地址/域名         //發(fā)四次ICMP包,如 ping www.baidu.com
ping + ip地址/域名 + -t    // 一直發(fā)ICMP包,直到 ctrl+c停止,用來(lái)不斷檢驗(yàn)網(wǎng)絡(luò)是否通暢,如 ping www.baidu.com -t
ping /?                   // 查看ping的參數(shù)說(shuō)明

TTL是 Time To Live的縮寫,該字段指定IP包被路由器丟棄之前允許通過(guò)的最大網(wǎng)段數(shù)量。TTL是IPv4包頭的一個(gè)8 bit字段。TTL每過(guò)一次路由器減一,減到零后數(shù)據(jù)包丟失。不同操作系統(tǒng)的默認(rèn)初始TTL不同,Linux 64,Windows 128,Unix 255

pathping是指提供有關(guān)在源和目標(biāo)之間的中間躍點(diǎn)處網(wǎng)絡(luò)滯后和網(wǎng)絡(luò)丟失的信息。

C:\Users\Yukim>pathping www.baidu.com

通過(guò)最多 30 個(gè)躍點(diǎn)跟蹤
到 www.a.shifen.com [220.181.111.188] 的路由:
  0  DESKTOP-0V38VPE [10.170.53.153]
  1  10.170.72.254
  2  172.16.255.242
  3  172.16.255.254
  4  113.140.11.97
  5  10.224.13.9
  6  117.36.240.109
  7     *     202.97.65.113
  8     *        *        *
正在計(jì)算統(tǒng)計(jì)信息,已耗時(shí) 175 秒...
            指向此處的源   此節(jié)點(diǎn)/鏈接
躍點(diǎn)  RTT    已丟失/已發(fā)送 = Pct  已丟失/已發(fā)送 = Pct  地址
  0                                           DESKTOP-0V38VPE [10.170.53.153]
                                0/ 100 =  0%   |
  1    0ms     0/ 100 =  0%     0/ 100 =  0%  10.170.72.254
                                0/ 100 =  0%   |
  2   19ms     0/ 100 =  0%     0/ 100 =  0%  172.16.255.242
                                0/ 100 =  0%   |
  3    0ms     0/ 100 =  0%     0/ 100 =  0%  172.16.255.254
                                0/ 100 =  0%   |
  4    0ms     0/ 100 =  0%     0/ 100 =  0%  113.140.11.97
                                0/ 100 =  0%   |
  5    1ms     0/ 100 =  0%     0/ 100 =  0%  10.224.13.9
                                0/ 100 =  0%   |
  6    3ms     0/ 100 =  0%     0/ 100 =  0%  117.36.240.109
                              100/ 100 =100%   |
  7  ---     100/ 100 =100%     0/ 100 =  0%  202.97.65.113

跟蹤完成。

Tracert(跟蹤路由)是路由跟蹤實(shí)用程序,用于確定 IP數(shù)據(jù)包訪問(wèn)目標(biāo)所采取的路徑。Tracert 命令使用用 IP 生存時(shí)間 (TTL) 字段和 ICMP 錯(cuò)誤消息來(lái)確定從一個(gè)主機(jī)到網(wǎng)絡(luò)上其他主機(jī)的路由。


IGMP協(xié)議

IGMP(因特網(wǎng)組播管理協(xié)議,Internet Group Management Protocol)可跨網(wǎng)段傳播,比較節(jié)省流量。

單播(unicast): 是指封包在計(jì)算機(jī)網(wǎng)絡(luò)的傳輸中,目的地址為單一目標(biāo)的一種傳輸方式。它是現(xiàn)今網(wǎng)絡(luò)應(yīng)用最為廣泛,通常所使用的網(wǎng)絡(luò)協(xié)議或服務(wù)大多采用單播傳輸,例如一切基于TCP的協(xié)議。
組播(multicast): 也叫多播, 多點(diǎn)廣播或群播。 指把信息同時(shí)傳遞給一組目的地址。它使用策略是最高效的,因?yàn)橄⒃诿織l網(wǎng)絡(luò)鏈路上只需傳遞一次,而且只有在鏈路分叉的時(shí)候,消息才會(huì)被復(fù)制。
廣播(broadcast):是指封包在計(jì)算機(jī)網(wǎng)絡(luò)中傳輸時(shí),目的地址為網(wǎng)絡(luò)中所有設(shè)備的一種傳輸方式。實(shí)際上,這里所說(shuō)的“所有設(shè)備”也是限定在一個(gè)范圍之中,稱為“廣播域”。


IP數(shù)據(jù)包

一個(gè)IP數(shù)據(jù)包由首部和數(shù)據(jù)兩部分組成:

  • 首部的前一部分是固定長(zhǎng)度,共20字節(jié),是所有IP數(shù)據(jù)包必須具有的。
  • 在首部的固定部分后是一些可選字段,其長(zhǎng)度可變,通常沒(méi)有。
IP數(shù)據(jù)包
  • 版本:占4位,指IP協(xié)議的版本。通信雙方使用的IP協(xié)議版本必須一致。日前廣泛使用的 IP協(xié)議版本號(hào)為 4 (即 IPv4)。IPv6 目前還處于起步階段。
  • 首部長(zhǎng)度:占 4 位,可表示的最大十進(jìn)制數(shù)值是 15。請(qǐng)注意,這個(gè)字段所表示數(shù)的單位是32位字 ( 1 個(gè)32位字長(zhǎng)是4 字節(jié)),因此,當(dāng) IP 的首部長(zhǎng)度為 1111 時(shí) (即十進(jìn)制的 15),首部長(zhǎng)度就達(dá)到 60字節(jié)。當(dāng) IP 分組的首部長(zhǎng)度不是4字節(jié)的整數(shù)倍時(shí),必須利用最后的填充字段加以填充。因此數(shù)據(jù)部分永遠(yuǎn)在 4字節(jié)的整數(shù)倍開始,這樣在實(shí)現(xiàn) IP協(xié)議時(shí)較為方便。首部長(zhǎng)度限制為 60字節(jié)的缺點(diǎn)是有時(shí)可能不夠用。這樣做的目的是希望用戶盡量減少開銷。最常用的首部長(zhǎng)度就是 20 字節(jié) (即首部長(zhǎng)度為 0101),這時(shí)不使用任何選項(xiàng)。
  • 服務(wù):占 8 位,用來(lái)獲得更好的服務(wù)。這個(gè)字段在舊標(biāo)準(zhǔn)中叫做服務(wù)類型,但實(shí)際上一直沒(méi)有被使用過(guò)。1998年IETF把這個(gè)字段改名為區(qū)分服務(wù) DS (DifferentiatedServices)。只有在使用區(qū)分服務(wù)時(shí),這個(gè)字段才起作用。
  • 總長(zhǎng)度:總長(zhǎng)度指首部及數(shù)據(jù)之和的長(zhǎng)度,單位為字節(jié)。因?yàn)榭傞L(zhǎng)度字段為 16位,所以數(shù)據(jù)報(bào)的最大長(zhǎng)度為 2^16-1=65 535字節(jié)。在IP層下面的每一種數(shù)據(jù)鏈路層都有自己的幀格式,其中包括幀格式中的數(shù)據(jù)字段的最大長(zhǎng)度,即最大傳送單元 MTU (Maximum Transfer Unit)。當(dāng)一個(gè)數(shù)據(jù)報(bào)封裝成鏈路層的幀時(shí),此數(shù)據(jù)報(bào)的總長(zhǎng)度 (即首部加上數(shù)據(jù)部分)一定不能超過(guò)下面的數(shù)據(jù)鏈路層的MTU值。
  • 標(biāo)識(shí):占 16位。IP軟件在存儲(chǔ)器中維持一個(gè)計(jì)數(shù)器,每產(chǎn)生一個(gè)數(shù)據(jù)報(bào),計(jì)數(shù)器就加 1,并將此值賦給標(biāo)識(shí)字段。但這個(gè)“標(biāo)識(shí)”并不是序號(hào),因?yàn)?IP是無(wú)連接的服務(wù),數(shù)據(jù)報(bào)不存在按序接收的問(wèn)題。當(dāng)數(shù)據(jù)報(bào)由于長(zhǎng)度超過(guò)網(wǎng)絡(luò)的 MTU 而必須分片時(shí),這個(gè)標(biāo)識(shí)字段的值就被復(fù)制到所有的數(shù)據(jù)報(bào)的標(biāo)識(shí)字段中。相同的標(biāo)識(shí)字段的值使分片后的各數(shù)據(jù)報(bào)片最后能正確地重裝成為
    原來(lái)的數(shù)據(jù)報(bào)。
  • 標(biāo)志(Flag):占3 位,但目前只有2位有意義。標(biāo)志字段中的最低位記為 MF (More Fragment)。MF=1即表示后面“還有分片”的數(shù)據(jù)報(bào)。MF=0表示這已是若干數(shù)據(jù)報(bào)片中的最后一個(gè)。標(biāo)志字段中間的一位記為 DF(Don't Fragment),意思是“不能分片”。只有當(dāng) DF=0時(shí)才允許分片。
  • 片偏移:占 13位。較長(zhǎng)的分組在分片后,某片在原分組中的相對(duì)位置。也就是說(shuō),相對(duì)用戶數(shù)據(jù)字段的起點(diǎn),該片從何處開始。片偏移以 8個(gè)字節(jié)為偏移單位。這就是說(shuō),每個(gè)分片的長(zhǎng)度一定是 8字節(jié) (64位)的整數(shù)倍。
  • 生存時(shí)間:占 8位,生存時(shí)間字段常用的英文縮寫是TTL (Time To Live),其表明數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中的壽命。由發(fā)出數(shù)據(jù)報(bào)的源點(diǎn)設(shè)置這個(gè)字段。其目的是防止無(wú)法交付的數(shù)據(jù)報(bào)無(wú)限制地在因特網(wǎng)中兜圍子,因而白白消耗網(wǎng)絡(luò)資源。最初的設(shè)計(jì)是以秒作為 TTL的單位。每經(jīng)過(guò)一個(gè)路由器時(shí),就把TTL減去數(shù)據(jù)報(bào)在路由器消耗掉的一段時(shí)間。若數(shù)據(jù)報(bào)在路由器消耗的時(shí)間小于 1 秒,就把TTL值減 1。當(dāng) TTL值為 0時(shí),就丟棄這個(gè)數(shù)據(jù)報(bào)。
  • 協(xié)議:占 8 位,協(xié)議字段指出此數(shù)據(jù)報(bào)攜帶的數(shù)據(jù)是使用何種協(xié)議,以便使目的主機(jī)的IP層知道應(yīng)將數(shù)據(jù)部分上交給哪個(gè)處理過(guò)程。
  • 首部檢驗(yàn)和:占 16位。這個(gè)字段只檢驗(yàn)數(shù)據(jù)報(bào)的首部,不包括數(shù)據(jù)部分。這是因?yàn)閿?shù)據(jù)報(bào)每經(jīng)過(guò)一個(gè)路由器,都要重新計(jì)算一下首都檢驗(yàn)和 (一些字段,如生存時(shí)間、標(biāo)志、片偏移等都可能發(fā)生變化)。不檢驗(yàn)數(shù)據(jù)部分可減少計(jì)算的工作量。
  • 源地址:占32位。
  • 目的地址:占 32位。
  • IP數(shù)據(jù)報(bào)首部的可變部分就是一個(gè)可選字段。選項(xiàng)字段用來(lái)支持排錯(cuò)、測(cè)量以及安全等措施,內(nèi)容很豐富。此字段的長(zhǎng)度可變,從 1 個(gè)字節(jié)到40個(gè)字節(jié)不等,取決于所選擇的項(xiàng)目。某些選項(xiàng)只需要 1 個(gè)字節(jié),它只包括 1 個(gè)字節(jié)的選項(xiàng)代碼。但還有些選項(xiàng)需要多個(gè)字節(jié),這些選項(xiàng)一個(gè)個(gè)拼接起來(lái),中間不需要有分隔符,最后用全0 的填充字段補(bǔ)齊成為 4字節(jié)的整數(shù)倍。 增加首都的可變部分是為了增加 IP 數(shù)據(jù)報(bào)的功能,但這同時(shí)也使得 IP 數(shù)據(jù)報(bào)的首部長(zhǎng)度成為可變的。這就增加了每一個(gè)路由器處理數(shù)據(jù)報(bào)的開銷。實(shí)際上這些選項(xiàng)很少被使用。新的 IPv6就將 IP數(shù)據(jù)報(bào)的首部長(zhǎng)度做成固定的。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容