首先要明白一點,
IOS一共七層, 發送數據的過程是從上到下,也就是從應用層一直到物理層,接受數據是從下至上.
來看你的問題,環境如下,我們來用一個
ping命令的過程來解釋:
一個交換機,連兩個電腦A和B,A和B不在一個網段,他們的
IP分別是192.168.1.2,255.255.255.0,B是 192.168.2.1,255.255.255.0,網關也可以設也可以不設,但其實你設了也是個假的網關,因為在你的環境里面只有一個交換機,並沒有
路由器,對嗎?
A ping B:
1.
Ping命令會構建一個固定格式的
ICMP請求數據包,然后由
ICMP協議將這個數據包連同
IP地址“192.168.2.1”一起交給
IP層協議.
2.IP協議會查看目的IP地址是否和源IP在同一網段,如果在同一網段就直接查找
ARP緩存,查找目的
MAC,如果目的IP地址是否和源IP不在同一網段,那么就將數據包發送到網關.
3.按照前面的描述,在A電腦上有兩種情況,1是沒設網關 2是設了一個假的網關,那么如果沒設的話,數據包到這一步就丟棄了,目的IP和源IP不在一個網段而且A沒有網關,那么就無法發送.如果A設網關了的話,接着往走.
4.假設A電腦設定的網關是192.168.1.1,那么IP協議知道了目的IP,但是不知道目的
MAC,所以會查找A電腦的
ARP緩存,看里面有沒有目的
MAC,很遺憾,肯定沒有,因為環境里並沒有這個網關設備存在.所以A會發一個
ARP廣播到192.168.1.X整個網段,來查找IP是192.168.1.1 的MAC,當然,物理上就不存在192.168.1.1這個設備,自然就沒有設備來響應這個ARP廣播,所以最終IP協議無法知道目的MAC,就無法將數據包往下一個層數據鏈路層傳遞.
回到最開始,還是那句話:
IOS一共七層, 發送數據的過程是從上到下,也就是從應用層一直到物理層,接收數據是從下至上.
在此場景中數據包在三層就停住了,根本不會涉及到二層.