公司電話:0531-82927198
公司傳真:0531-82927298
公司郵箱:sdszxxkj@163.com
公司地址:山東省濟南市歷下區山大南路舜怡佳園3-4-101從網絡實現 實現層面 網絡可以劃分為以太網、令牌環、FDDI、ATM,它們都規定了各自的物理介質、網絡適配器(網卡)、數據傳輸協議。從網絡 覆蓋范圍 可以劃分為局域網、城域網、廣域網。但是 這只是意味著網絡的覆蓋范圍變大了而不是說網絡的實現發生了變化。以現在的網絡為例,無論是局域網、廣域網、還是整個互聯網基本上都是以太網 。
網絡適配器即網卡,它是一個插在計算機主板上的(或者集成在主板上)硬件設備。在以太網中每個網卡都有一個48位標識就是我們常說的“MAC地址”(一般用每16進制每字節一組表示,比如:0a:00:27:00:00:06)。 當計算機通訊的時候網卡負責實現帶沖突檢測的載波監聽多路訪問技術(CSMA/CD) ,網卡屬于OSI參考模型中的物理層和數據鏈路層。網絡層以上的部分則由操作系統中的協議棧實現,所以 TCP/IP協議棧其實只包含了網絡層(IP)和傳輸層(TCP、UDP) 。
如果僅僅是兩臺計算機通訊那么通過網絡傳輸介質(比如雙絞線)把二者的網卡連接起來,在操作系統中配置網絡層信息(配置IP地址)就可以了。如果三臺或者多臺計算機通訊則須借助一些額外的設備,其中集線器就是其中一種。 集線器也叫Hub,它本質上是多端口的網卡,為了理解它的工作原理通過GNS3搭建一個網絡拓撲:
上面的拓撲中有三個終端,我們要做的實驗是當PC1和PC2通訊的時候,在Hub1-》PC3這條鏈路上是否能收到數據包。先配置PC1、PC2、PC3的IP地址
然后開啟Hub1到PC3之間的抓包,通過PC1 ping PC2。
ping一共產生了兩種數據包:ARP數據包是廣播包(目標地址是ff:ff:ff:ff:ff:ff:ff)只有廣播域內的終端可以收到;ICMP則是單播(有明確目標地址)包只有處于沖突域中才可能收到數據包。集線器互聯起來的機器都屬于同一個廣播域也屬于同一個沖突域,所以無論是什么樣的數據包,網絡中的每個節點都會收到(即便數據包和自己無關)。
集線器和每個終端都有一個物理鏈路,當PC1發送數據到PC2的時候首先到達集線器,而集線器則把數據 從自己的每個端口發送出去 。所以 即便這次通訊和PC3沒有關系但是Hub1到PC3之間的鏈路還是被占用了 ,如果此時PC3也有數據包要發送那么就會產生沖突(還記得以太網的原理嗎?共享介質中會有“碰撞”),而這種沖突對于PC3來說是非常“無辜”的(PC1和PC2通訊和PC3根本沒有關系)。
有些交換機的樣子和集線器長的很像,但是二者有本質的區別。 交換機轉發數據的時候是有策略的,它是依據mac地址表執行的轉發 。
打開Swtich和PC3之間開啟抓包,在Swtich和PC2之間開啟抓包,然后從PC1 ping PC2(Wireshark會抓到交換機上的STP數據包,這是交換機產生的數據包,可以忽略)。
SW1《-》PC3 SW1《-》PC2
交換機非常“智能”,它“知道”PC1和PC2通訊不涉及到PC3所以只有廣播包轉發到PC3,而后續的單播數據包是直接發送到PC2所處的端口的。 區別于集線器,分割了沖突域,把一個大沖突域分割成了3個小沖突域(分別是Swtich和PC1、Swtich和PC2、Swtich和PC3),每個沖突域通訊的時候都不會影響另一個沖突域的終端(Swtich和PC1之間的數據包在PC2、PC3上都接收不到);而廣播域沒有變化三個終端還是屬于同一個廣播域。 通過描述PC1和PC2的通訊過程來揭示交換機的工作原理:
PC1根據PC2的IP地址查詢去本地的ARP表中查詢對應的MAC地址;
PC1沒有找到MAC地址,則發送一條廣播包;
廣播包達到交換機,交換機把PC1的Mac地址和對應端口放入到MAC地址表;
交換機判斷是廣播包,則發起一次泛洪(從所有和PC1相同VLAN的端口發送出去);
廣播數據包分別送到PC2和PC3。PC3發現和自己沒關系直接丟棄;PC2發現是發送給自己的數據包則接收數據包,進一步判斷是ARP數據包則返回一個ARP回復。PC2的ARP回復是一個單播數據包,目標地址是PC1的MAC地址,源地址是PC2的MAC地址。
PC2的ARP回復數據包達到交換機,交換機把PC2的MAC地址放入到MAC地址表;
交換機發現是單播包,目標地址是“00:50:79:66:68:01”,查詢得到對應端口是E0/1。則從E0/1把數據包發送出去;
PC1收到PC2的ARP回復數據包,把PC2的MAC地址寫入到**本地的ARP表**;
PC1發送ICMP數據包,根據IP地址查詢MAC地址;找到PC2的MAC地址是“00:50:79:66:68:02”。發送單播包,目標地址是“00:50:79:66:68:02”;
單播數據包達到交換機,交換機判斷“00:50:79:66:68:02”在端口E0/2,則從E0/2端口發送出去;
PC2收到ICMP數據包,產生一條ICMP的回復數據包發送出去;
ICMP回復數據包達到交換機,交換機判斷目標地址是“00:50:79:66:68:01”(PC1)則從E0/1發送出去;
PC1收到ICMP的回復數據包,顯示一條 “84 bytes from 192.168.10.12 icmp_seq=1 ttl=64 time=0.649 ms”提示;
通過分析我們看出交換機中重要的內容就是MAC地址表,它是交換機轉發數據包的依據。有了這張表交換機就可以知道數據包應該從哪個端口出去,而不是像Hub一樣從所有端口發送出去。 通過分析不難看出和Hub比較交換機中重要的內容就是 MAC地址表,它是交換機轉發數據包的依據 。有了這張表交換機就可以知道數據包應該從哪個端口出去,而不是像Hub一樣從所有端口發送出去。 通過在交換機的CLI界面中輸入 show mac address-table 查看本臺交換機的MAC地址表
交換機中為了讀取速度會把MAC地址表保存在一種專用的存儲硬件上叫:CAM (Content Addressable Memory) ,這種存儲器區別于常見的內存,它的尋址方式是基于“內容”(內存是基于地址)。所以制作工藝上要復雜很多,價格也要貴很多,一般交換機配置的容量都不是特別大。交換機的這個“弱點”導致了一種“無解”的攻擊方法——通過向交換機發送大量的ARP信息塞滿CAM,讓交換機無法正常工作。
交換機把以太網的沖突域切分成多個沖突域,提高了線路的利用率,但是所有人還是在同一個廣播域,這種網絡結構是早期的網絡結構,它只有一個廣播域,當網絡中任何一個終端發送廣播數據包其他節點都可以收到,因此而得名平面型網絡。這種網絡結構會產生如下問題: 1. 安全問題,大家都在同一個廣播域任何一個人中了病毒都會影響所有人;更要命的是如果有人非法接入到網絡中可以輕而易舉的監聽到網絡中所有的數據包; 2. 帶寬利用問題,網絡中任何人都可能消耗大量帶寬,其他人可能會因此而受到影響——甚至無法正常使用網絡; 3. 廣播風暴,試想一個上百臺終端接入到網絡中,各種廣播數據包(ARP、DHCP等)會充斥在整個網絡中; 把一個大的LAN(廣播域)拆分成多個小的LAN不但安全、便于管理而且可以均衡資源利用、提高線路利用率。那么如何拆分呢?劃分方法還是體現在交換機上,我們為每個交換機端口設置一個數字標識,相同數字標識的端口屬于同一個廣播域。比如下圖中交換機E0/1、E0/2、E0/4、E0/7有相同的標識100;E0/3、E0/6相同的標識300(下圖是交換機的示意圖)
這種技術就叫——虛擬局域網(Virtual Local Area Network,VLAN),一個VLAN就代表一個廣播域(Broadcast Domain,BD),每個交換機端口都可以設置一個VLAN ID標識廣播域,交換機在相同VLAN ID內執行廣播數據包叫 泛洪 。
通過在交換機的CLI界面中輸入 show vlan 查看本臺交換機的所有VLAN(或者叫廣播域、BD、在OpenStack之類的系統中叫網絡)
一列VLAN表示VLAN ID,它是一個數字,name是一個備注名,ports表示當前有哪些端口屬于這個VLAN
我們做個試驗,把PC1和PC2放到VLAN 100,把PC3放到VLAN 200
此時,通過PC1 ping PC2是正常,PC1 ping PC3則失敗。
通過在SW1《-》PC3之間抓包我們發現ARP數據包根本沒有抵達這條鏈路上,說明SW1已經識別出它們屬于不同的VLAN(廣播域)所以不會把數據包轉發到這條鏈路上。
為了證明交換機轉發只和MAC地址有關系,我們把PC3的IP地址修改成192.168.10.10
發現PC1《-》PC2依舊可以正常通訊,證明交換機只查看數據包的MAC地址而無視IP地址。
那么如何實現不同的VLAN之間通訊呢?這就需要另一個網絡設備——路由器。這是一個非常復雜的課題,可以說它是構建互聯網的基礎,所以我們需要花費單獨的章節講解。