一藏杖、網(wǎng)絡(luò)層提供的服務(wù)
說明:網(wǎng)絡(luò)層負責(zé)在不同網(wǎng)絡(luò)之間轉(zhuǎn)發(fā)數(shù)據(jù)包芽丹,基于數(shù)據(jù)包的
IP
地址轉(zhuǎn)發(fā)北启。至于多個數(shù)據(jù)包在接收端的順序、是否丟包(不負責(zé)重傳)這些都不是網(wǎng)絡(luò)層的任務(wù),而是傳輸層的任務(wù)了暖庄。
二聊替、網(wǎng)絡(luò)層如何發(fā)送數(shù)據(jù)
- 應(yīng)用程序準(zhǔn)備要傳輸?shù)奈募?/li>
- 傳輸層將文件分段并且編號
- 網(wǎng)絡(luò)層田間目標(biāo)
IP
地址和源IP
地址 - 數(shù)據(jù)鏈路層一般有兩種情況,一種是使用自己的子網(wǎng)掩碼培廓,判斷自己在哪個網(wǎng)段和目標(biāo)地址在哪個網(wǎng)段惹悄。如果在同一個網(wǎng)段,則直接使用
ARP
廣播解析目標(biāo)IP
地址的MAC
地址肩钠,然后直接傳輸泣港。如果不是在同一個網(wǎng)段,則首先要詢問網(wǎng)關(guān)的MAC
地址价匠,將數(shù)據(jù)先傳遞給路由器当纱,路由器根據(jù)目標(biāo)IP
地址將數(shù)據(jù)發(fā)送目的主機。對于數(shù)據(jù)踩窖,在傳輸層叫段坡氯,在網(wǎng)絡(luò)層叫包,在鏈路層叫幀洋腮。
說明:從上圖中我們可以清晰的看到數(shù)據(jù)是如何傳送的箫柳,同時也可以看到各類設(shè)備工作在哪一層。
三啥供、網(wǎng)絡(luò)層協(xié)議
3.1 ARP協(xié)議
將IP
地址通過廣播目標(biāo)MAC
地址是FF-FF-FF-FF-FF-FF
來解析目標(biāo)IP
地址的MAC
地址悯恍。只能在本網(wǎng)絡(luò),不能跨網(wǎng)絡(luò)伙狐。也就是只能掃描本網(wǎng)絡(luò)的MAC
地址涮毫。使用命令arp -a
可以查看某時刻的網(wǎng)絡(luò)MAC
地址。
3.1.1 ARP欺騙
比如現(xiàn)在同一個網(wǎng)絡(luò)中有三臺計算機P1贷屎、P2罢防、P3
,其物理地址分別是M1唉侄、M2篙梢、M3
,此時P1
要向P2
發(fā)送數(shù)據(jù)美旧,于是使用ARP
協(xié)議廣播渤滞,首先P2
將自己的物理地址高速了P1
,于是這個地址M2
就存儲在了P1
上榴嗅,但是此時P3
通過黑客軟件偽裝成P2
告訴P1
物理地址為M3
妄呕,于是之后所有數(shù)據(jù)都發(fā)送給P3
,當(dāng)然P3
為了不被發(fā)現(xiàn)嗽测,可以將數(shù)據(jù)再次轉(zhuǎn)發(fā)給P2
绪励。這就是ARP
欺騙肿孵。我們可以使用命令arp -s 192.168.88.100 00-0c-29-53-48-c4
修改某個IP
地址的MAC
地址,此時本計算機就緩存了這個MAC
地址疏魏,而且是靜態(tài)的停做,因為是管理員告訴的。如果要清除緩存的物理地址可以點本地連接大莫,點擊修復(fù)即可蛉腌。以上我們可以知道,ARP
協(xié)議是用來將IP
地址解析為MAC
地址只厘,而IP
地址用來將數(shù)據(jù)從一個網(wǎng)段轉(zhuǎn)發(fā)到另一個網(wǎng)段烙丛。
3.2 網(wǎng)際控制報文協(xié)議ICMP
此協(xié)議用來檢測網(wǎng)絡(luò)是否通暢,比如我們使用ping
命令測試網(wǎng)絡(luò)就是使用的此協(xié)議羔味。在使用此命令的時候我們可以查看延時河咽,同時關(guān)注一個信息,就是TTL
赋元。TTL
表示數(shù)據(jù)包的生存周期忘蟹,一般來說Linux
為64
、Windows
為128
搁凸、Unix
為255
媚值,然后數(shù)據(jù)在傳輸?shù)倪^程中每經(jīng)過一個路由器則TTL
減一,通過這個值我們可以大概判斷所ping
計算機的系統(tǒng)坪仇,如果TTL
減為零則數(shù)據(jù)不再傳輸,直接被丟棄垃你。如果給ping
命令加上-t
椅文,則表示讓此命令一直進行下去。Windows
中pathping
命令能跟蹤數(shù)據(jù)包路徑惜颇,計算丟包情況皆刺。
3.3 Internet組播管理協(xié)議IGMP
- 組播(多播)
通過一個組播地址讓一組計算機來進行接收,而不是向廣播那樣凌摄,所有的計算機都能接收到羡蛾。 -
IGMP
協(xié)議
就是配置在一個組的路由器上面的,如果這個組都不需要接收數(shù)據(jù)了锨亏,那么配置了此協(xié)議的路由器就會知道發(fā)送端不需要發(fā)送數(shù)據(jù)了痴怨。
四、抓包分析數(shù)據(jù)
4.1 IP數(shù)據(jù)報結(jié)構(gòu)
一個IP
數(shù)據(jù)報由首部和數(shù)據(jù)兩部分組成
- 首部的前一部分是固定長度器予,供
20
字節(jié)浪藻,是所有IP
數(shù)據(jù)報必須有的 - 在首部的固定部分的后面是一些可選字段,其長度是可變的
說明:版本用來標(biāo)識TCP/IP
協(xié)議的版本乾翔。區(qū)分服務(wù)是指爱葵,在傳輸信息的過程中,有些信息可能要求實時性,但是有些卻沒有這樣的要求萌丈,于是對于這兩種信息我們可以對其做上標(biāo)記赞哗,同時也高速路由器優(yōu)先傳輸哪種信息,這就是區(qū)分服務(wù)辆雾。總長度即數(shù)據(jù)報或分片之后數(shù)據(jù)報的長度肪笋。而前面講到數(shù)據(jù)鏈路層的數(shù)據(jù)最大是1500
字節(jié)(最大傳輸單元MTU
),而這里的數(shù)據(jù)報卻最大是2^16-1
個字節(jié)乾颁,這里就會產(chǎn)生沖突涂乌,這里使用分片將網(wǎng)絡(luò)層數(shù)據(jù)報分成小的片,然后由鏈路層傳輸英岭,一般情況下是不需要分片的湾盒。分片實例如下圖6
。
而這里的標(biāo)識是指诅妹,當(dāng)一個數(shù)據(jù)報分片之后如何在接收端進行組裝罚勾,那時就需要使用這個標(biāo)識。標(biāo)志表示數(shù)據(jù)報是否進行了分片吭狡,標(biāo)志站3
位尖殃,目前只有前兩位有意義。標(biāo)志字段的最低位是MF(More Fragment)
划煮。MF=1
表示后面“還有分片”送丰;MF=0
表示最后一個分片。標(biāo)志字段中間的一位是DF(Don't Fragment)
弛秋。只有當(dāng)DF=0
時才允許分片器躏。片偏移表示在分片之后, 某一個數(shù)據(jù)報在整個數(shù)據(jù)報中的分片位置的偏移是多少蟹略。生存時間(TTL
) 即數(shù)據(jù)報的生存時間登失,可以防止路由中的環(huán)路導(dǎo)致數(shù)據(jù)不能送達目的地。協(xié)議是指數(shù)據(jù)使用的是什么協(xié)議挖炬,是TCP
還是UDP
還是其他揽浙。
其中各協(xié)議對應(yīng)的協(xié)議號為,ICMP:1意敛、IGMP:2馅巷、TCP:6、UDP:17草姻、IPv6:41令杈、OSPF:89
。首部檢驗和(16
位)用于檢驗數(shù)據(jù)報是否被修改或者出錯碴倾,首部檢驗和字段只檢驗數(shù)據(jù)報的首部逗噩,不檢驗數(shù)據(jù)部分掉丽,這里不采用CRC
檢驗碼而采用簡單的計算方法。
可選字段一般沒有异雁,用于支持排錯測量等捶障,在IPv6
中已被取消了。我們可以使用抓包工具進行查看纲刀,同時還可以使用抓包工具來排查網(wǎng)絡(luò)故障项炼。
五、IP協(xié)議
網(wǎng)絡(luò)層的職責(zé)就是在路由器之間轉(zhuǎn)發(fā)數(shù)據(jù)示绊,不負責(zé)數(shù)據(jù)的是否出錯等問題锭部。而路由器是如何判斷數(shù)據(jù)應(yīng)該從哪個口轉(zhuǎn)發(fā)出去呢?是如何選擇路徑的面褐?這是通過路由表來進行選擇的拌禾,路由表一種是由管理員告知的這一段數(shù)據(jù)應(yīng)該怎么走,這就是靜態(tài)路由展哭;另一種是好幾個路由器通過某種協(xié)議(RIP
等)相互學(xué)習(xí)到某個網(wǎng)段該怎么走湃窍,在傳輸?shù)臅r候自己選擇走哪條路徑傳輸,這就是動態(tài)路由匪傍。這里所述的IP
協(xié)議是一個統(tǒng)稱您市,即所有能讓路由器學(xué)習(xí)到路由表的協(xié)議統(tǒng)稱為IP
協(xié)議。
5.1 網(wǎng)絡(luò)暢通的條件
說明:網(wǎng)絡(luò)暢通的條件就是數(shù)據(jù)報在發(fā)送的過程中有去有回役衡,即傳輸路徑中的每個路由器都知道其要傳遞的下一個路由器地址茵休,并且也知道數(shù)據(jù)反向回來時的目的路由器地址。所以計算機和路由器必須配置網(wǎng)關(guān)手蝎,同一個局域網(wǎng)中通信是不需要網(wǎng)關(guān)的榕莺。
5.2 靜態(tài)路由
在使用靜態(tài)路由時,需要管理員高速所有路由器所有沒有直連的網(wǎng)絡(luò)下一跳(下一個傳輸結(jié)點)給哪個路由器柑船。這里注意:如果是如上圖那樣的網(wǎng)絡(luò)我們可以手動設(shè)置一些靜態(tài)路由即可帽撑,但是如果網(wǎng)絡(luò)較為復(fù)雜泼各,都手動設(shè)置會特別麻煩鞍时,而且容易出錯,此時就需要使用動態(tài)路由了扣蜻。靜態(tài)路由適合于小規(guī)模網(wǎng)絡(luò)逆巍,不能夠自動調(diào)整路由。
5.3 動態(tài)路由
說明:
RIP
:周期性的廣播路由表莽使,使得網(wǎng)絡(luò)中的其他路由器知道此路由器連接的線路锐极。同時自己判斷轉(zhuǎn)發(fā)次數(shù)最少的路徑為最佳路徑,一般30
秒更新一次路由信息芳肌。最大轉(zhuǎn)發(fā)次數(shù)為15
次灵再,如果有16
個及以上的路由器則仍未不可到達肋层,不適合網(wǎng)絡(luò)規(guī)模較大的情況。OSPF
:此協(xié)議選擇最佳路徑的方式不是以轉(zhuǎn)發(fā)多少次為標(biāo)準(zhǔn)翎迁,而是以帶寬為標(biāo)準(zhǔn)栋猖,哪個路徑的帶寬大就選擇哪條路徑轉(zhuǎn)發(fā),這樣會更快汪榔。