摘自:
使命召喚 博客,https://www.cnblogs.com/zszmhd/archive/2012/05/08/2490078.html
交換機(網橋)是數據鏈路層上的設備,用於將同一個子網的多個節點連接在一起,沒有進/出口之分。它只能處理MAC地址,不能處理IP地址。
與路由器不同,它內部沒有網絡適配器,即沒有IP和MAC地址,只有端口。也就是說,它對接收到的數據包,只負責解開MAC地址,查詢對應的端口,然后發送出去,並不管數據包的進端口和出端口是否屬於同一個子網。
一方面,這一高效簡潔的處理方式,使其很適合用於組織同一子網的節點;
另一方面,實際上可以利用它來組織不同子網的節點。
實際上,用交換機連接的兩個計算機,只要它們知道對方的MAC地址,就能進行鏈路層的通信,進一步,再知道對方的IP地址,就能進行網絡層及更上層的通信了。
原因是:
因為交換機上每個端口都和網線另一端的計算機直接相連,所以交換機可以輕易的知道該設備的MAC地址(人工配置或自動查詢),進而交換機會生成端口與MAC地址的對應表,當來一個數據包時,交換機便解開其中的目標MAC地址,查詢映射表,將其發送出去,在這之前可能會對數據包進行校驗。當目標計算機接收到數據包時,會查看目標MAC地址是否是自己,若是,則向上層提交,否則丟棄。
進一步,如果網絡層發現IP地址也是自己的,則將數據包繼續向上層提交,接收完畢。
所以,用交換機連接的兩個計算機,只要知道對方的MAC和IP就能完全通信,不論它們是否處於同一網段。
實驗如下:
用VMware Workstation新建一個Windows XP的虛擬機,虛擬機的網絡連接方式設置為Host-only,也就是與宿主機處在一個虛擬子網里,通過一個虛擬交換機連接。
手工配置虛擬機的網卡為:

手工配置宿主機的虛擬網卡VMnet1為:

可以看出,它們不在同一網段。
讓它們作為自己的網關,並手動在宿主機和虛擬機里添加ARP映射表:
在宿主機上添加虛擬機的IP<->MAC映射條目;

在虛擬機上添加宿主機的IP<->MAC映射條目;

這是為了讓它們知道對方的MAC地址。
然后,分別在宿主機和虛擬機里ping對方,可以ping通:


注意:在宿主機上測試時,若無法ping通虛擬機,請禁用宿主機上的其他網卡。