先說一下資料的封裝:
資料從應用程式層開始向下傳,當傳到網路層時,添加一個IP資料報,IP資料報中標誌有資料的源地址、目的地址
這個源地址和目的地址是資料從開始的源地址到最終的目的地址
網路層封裝了IP資料報,再到下面是鏈路將上面資料層封裝成幀,幀裡面標誌有Src、Desc,注意,這裡面的Src、Desc
也是地址,只不過其指的是Mac物理地址,資料發送都是以幀的格式發送的,所以幀裡面封裝的Src、Desc
才是資料轉送的真實路徑,但是這個路徑並不一定是從一開始 的源IP到最終的目的IP,因為這要關係到多個網路
資料的轉寄。
所以總體來說:IP資料報裡面封裝的源IP、目的IP是資料轉送的起始、與目的地,其並不一定能到達,
而幀裡面封裝的Src、Desc是要到達目的IP要走的當前路線,到了這個Desc不一定會到達目的地,可能
還要經過無數個轉寄才能到達
下面說一下資料在多個網路中的轉寄
案例:
Lan1
Pc1 IP:192.168.1.2 Mac:000B.BE06.4AC1
Router1
介面1: IP:192.168.1.1 Mac:000B.BE36.8D86(串連區域網路Lan1)
介面2: IP:192.168.12.1 (串連Lan2)
Lan2
PC2 IP:192.168.3.2 Mac:0001.C934.E830
Router2
介面1: IP:192.168.3.1 Mac:00E0.8FD1.1957(串連區域網路Lan2)
介面2: IP:192.168.12.2 (串連Lan1)
上面是兩個區域網路通過兩個路由器Router1 、 Router2 串連起來的,下面我們看一看Lan1中的Pc1向Lan2的Pc2發送資料的過程
1、PC1在網路層形成IP資料報,裡面封裝了起始地址:192.168.1.2,終點地址:192.168.3.1
2、IP資料在到鏈路層被封裝成資料幀,幀裡面標誌Src:000B.BE06.4AC1(PC1 mac) DeSc:000B.BE36.8D86(Router1 介面1Mac)
因為IP資料報中的源地址與目的地址不是在同一個網路,所以不能直接將目的地址封裝到幀中,要經過Router1路由器的轉換到
相應網路,所以就要把資料先發送到路由器,因為資料發送是按照資料幀裡面的地址線路進行發送的,所以Desc 為路由器串連
區域網路的Mac 地址
3、路由器收到資料,根據IP資料報中的目的地址IP 查詢路由器路由表,如果找到與目的地址IP在同一個網路中的目的網路,那麼就將資料
發送到其下一跳網路,走到下一跳網路的路由器,再接著尋找路徑表,再繼續轉寄
。。。。。。。。。。。
4、終於找到最後一個了、192.168.3.0,該目的地址所在的網路,那麼再接著修改資料幀,因為現在的資料是從Router2的路由器開始發送的
了,所以資料幀的Src 為:00E0.8FD1.1957,而目的地址是誰呢????
我們來想想哈。現在已經到了一個區域網路內了。接下來要做的就是在這個區域網路內把IP地址為192.168.3.2 的主機找出來,然後把資料
發送過去,因為是靠幀來進行資料轉送的,我們要知道目的主機的 Mac地址,而我們怎麼才能知道其Mac呢?嘿嘿。。想起來了吧。
這不是我們學的 ARP(位址解析通訊協定麼),在Router2首先發送ARP,找到Mac,將Mac封裝成幀,然後發送資料
5、接收資料成功,返回接收訊息
這就是一個簡單的資料在多個網路中發達的模型,
IP資料報只是在前序中記錄了源地址IP與目的地址IP,並沒有中間路由的IP地址,當路由器收到一個待轉寄的分組時,從路由表中尋找出下
一跳路由器的IP地址後,不是將下一跳路由器的IP地址填入IP資料報中,而是將其送給下層的網路介面軟體,網路介面軟體負責將下一跳
路由器的IP地址換成硬體地址(使用ARP協議),並將此硬體地址放在串連層的Mac幀首部,然後根據這個硬體地址找到下一跳路由
記住:只要源IP地址與目的IP地址不在同一個網路,就得先把資料發送到路由器,直接將路由器Mac封裝到Desc中,然後根據路由錶轉發,
如果路由表中沒有找到與地址IP在同一個網路的記錄,那麼就按照預設路由指定的下一跳發達,預設路由為0.0.0.0,其掩
碼為0.0.0.0,而預設路由的下一跳可以任意指定
如果找到的相匹配的網路中沒有下一跳地址,那麼資料會返回原來的網路