一、網(wǎng)絡層提供的服務

說明:網(wǎng)絡層負責在不同網(wǎng)絡之間轉發(fā)數(shù)據(jù)包,基于數(shù)據(jù)包的
IP地址轉發(fā)。至于多個數(shù)據(jù)包在接收端的順序、是否丟包(不負責重傳)這些都不是網(wǎng)絡層的任務,而是傳輸層的任務了。
二、網(wǎng)絡層如何發(fā)送數(shù)據(jù)
- 應用程序準備要傳輸?shù)奈募?/li>
- 傳輸層將文件分段并且編號
- 網(wǎng)絡層田間目標
IP地址和源IP地址 - 數(shù)據(jù)鏈路層一般有兩種情況,一種是使用自己的子網(wǎng)掩碼,判斷自己在哪個網(wǎng)段和目標地址在哪個網(wǎng)段。如果在同一個網(wǎng)段,則直接使用
ARP廣播解析目標IP地址的MAC地址,然后直接傳輸。如果不是在同一個網(wǎng)段,則首先要詢問網(wǎng)關的MAC地址,將數(shù)據(jù)先傳遞給路由器,路由器根據(jù)目標IP地址將數(shù)據(jù)發(fā)送目的主機。對于數(shù)據(jù),在傳輸層叫段,在網(wǎng)絡層叫包,在鏈路層叫幀。
2
說明:從上圖中我們可以清晰的看到數(shù)據(jù)是如何傳送的,同時也可以看到各類設備工作在哪一層。
三、網(wǎng)絡層協(xié)議
3.1 ARP協(xié)議
將IP地址通過廣播目標MAC地址是FF-FF-FF-FF-FF-FF來解析目標IP地址的MAC地址。只能在本網(wǎng)絡,不能跨網(wǎng)絡。也就是只能掃描本網(wǎng)絡的MAC地址。使用命令arp -a可以查看某時刻的網(wǎng)絡MAC地址。
3.1.1 ARP欺騙
比如現(xiàn)在同一個網(wǎng)絡中有三臺計算機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,當然P3為了不被發(fā)現(xiàn),可以將數(shù)據(jù)再次轉發(fā)給P2。這就是ARP欺騙。我們可以使用命令arp -s 192.168.88.100 00-0c-29-53-48-c4修改某個IP地址的MAC地址,此時本計算機就緩存了這個MAC地址,而且是靜態(tài)的,因為是管理員告訴的。如果要清除緩存的物理地址可以點本地連接,點擊修復即可。以上我們可以知道,ARP協(xié)議是用來將IP地址解析為MAC地址,而IP地址用來將數(shù)據(jù)從一個網(wǎng)段轉發(fā)到另一個網(wǎng)段。
3.2 網(wǎng)際控制報文協(xié)議ICMP
此協(xié)議用來檢測網(wǎng)絡是否通暢,比如我們使用ping命令測試網(wǎng)絡就是使用的此協(xié)議。在使用此命令的時候我們可以查看延時,同時關注一個信息,就是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ù)報結構
一個IP數(shù)據(jù)報由首部和數(shù)據(jù)兩部分組成
- 首部的前一部分是固定長度,供
20字節(jié),是所有IP數(shù)據(jù)報必須有的 - 在首部的固定部分的后面是一些可選字段,其長度是可變的
3
4
說明:版本用來標識TCP/IP協(xié)議的版本。區(qū)分服務是指,在傳輸信息的過程中,有些信息可能要求實時性,但是有些卻沒有這樣的要求,于是對于這兩種信息我們可以對其做上標記,同時也高速路由器優(yōu)先傳輸哪種信息,這就是區(qū)分服務。總長度即數(shù)據(jù)報或分片之后數(shù)據(jù)報的長度。而前面講到數(shù)據(jù)鏈路層的數(shù)據(jù)最大是1500字節(jié)(最大傳輸單元MTU),而這里的數(shù)據(jù)報卻最大是2^16-1個字節(jié),這里就會產(chǎn)生沖突,這里使用分片將網(wǎng)絡層數(shù)據(jù)報分成小的片,然后由鏈路層傳輸,一般情況下是不需要分片的。分片實例如下圖6。
5
6
而這里的標識是指,當一個數(shù)據(jù)報分片之后如何在接收端進行組裝,那時就需要使用這個標識。標志表示數(shù)據(jù)報是否進行了分片,標志站3位,目前只有前兩位有意義。標志字段的最低位是MF(More Fragment)。MF=1表示后面“還有分片”;MF=0表示最后一個分片。標志字段中間的一位是DF(Don't Fragment)。只有當DF=0時才允許分片。片偏移表示在分片之后, 某一個數(shù)據(jù)報在整個數(shù)據(jù)報中的分片位置的偏移是多少。生存時間(TTL) 即數(shù)據(jù)報的生存時間,可以防止路由中的環(huán)路導致數(shù)據(jù)不能送達目的地。協(xié)議是指數(shù)據(jù)使用的是什么協(xié)議,是TCP還是UDP還是其他。
7
其中各協(xié)議對應的協(xié)議號為,ICMP:1、IGMP:2、TCP:6、UDP:17、IPv6:41、OSPF:89。首部檢驗和(16位)用于檢驗數(shù)據(jù)報是否被修改或者出錯,首部檢驗和字段只檢驗數(shù)據(jù)報的首部,不檢驗數(shù)據(jù)部分,這里不采用CRC檢驗碼而采用簡單的計算方法。
8
可選字段一般沒有,用于支持排錯測量等,在IPv6中已被取消了。我們可以使用抓包工具進行查看,同時還可以使用抓包工具來排查網(wǎng)絡故障。
五、IP協(xié)議
網(wǎng)絡層的職責就是在路由器之間轉發(fā)數(shù)據(jù),不負責數(shù)據(jù)的是否出錯等問題。而路由器是如何判斷數(shù)據(jù)應該從哪個口轉發(fā)出去呢?是如何選擇路徑的?這是通過路由表來進行選擇的,路由表一種是由管理員告知的這一段數(shù)據(jù)應該怎么走,這就是靜態(tài)路由;另一種是好幾個路由器通過某種協(xié)議(RIP等)相互學習到某個網(wǎng)段該怎么走,在傳輸?shù)臅r候自己選擇走哪條路徑傳輸,這就是動態(tài)路由。這里所述的IP協(xié)議是一個統(tǒng)稱,即所有能讓路由器學習到路由表的協(xié)議統(tǒng)稱為IP協(xié)議。
5.1 網(wǎng)絡暢通的條件

說明:網(wǎng)絡暢通的條件就是數(shù)據(jù)報在發(fā)送的過程中有去有回,即傳輸路徑中的每個路由器都知道其要傳遞的下一個路由器地址,并且也知道數(shù)據(jù)反向回來時的目的路由器地址。所以計算機和路由器必須配置網(wǎng)關,同一個局域網(wǎng)中通信是不需要網(wǎng)關的。
5.2 靜態(tài)路由
在使用靜態(tài)路由時,需要管理員高速所有路由器所有沒有直連的網(wǎng)絡下一跳(下一個傳輸結點)給哪個路由器。這里注意:如果是如上圖那樣的網(wǎng)絡我們可以手動設置一些靜態(tài)路由即可,但是如果網(wǎng)絡較為復雜,都手動設置會特別麻煩,而且容易出錯,此時就需要使用動態(tài)路由了。靜態(tài)路由適合于小規(guī)模網(wǎng)絡,不能夠自動調整路由。
5.3 動態(tài)路由

說明:
RIP:周期性的廣播路由表,使得網(wǎng)絡中的其他路由器知道此路由器連接的線路。同時自己判斷轉發(fā)次數(shù)最少的路徑為最佳路徑,一般30秒更新一次路由信息。最大轉發(fā)次數(shù)為15次,如果有16個及以上的路由器則仍未不可到達,不適合網(wǎng)絡規(guī)模較大的情況。OSPF:此協(xié)議選擇最佳路徑的方式不是以轉發(fā)多少次為標準,而是以帶寬為標準,哪個路徑的帶寬大就選擇哪條路徑轉發(fā),這樣會更快。






