網線,有兩個頭。一頭插在一臺電腦的網卡上,另外一頭插在另外一臺電腦的網卡上。普通的網線這樣是通不了的,因此水晶頭要作交叉線,用的就是所謂的1-三、2-6 交叉接法。水晶頭的第 一、2 和第 三、6 腳,它們分別起着收、發信號的做用。將一端的 1 號和 3 號線、2 號和 6 號線互換一下位置,就可以在物理層實現一端發送的信號,另外一端能收到。nginx
固然電腦連電腦,除了網線要交叉,還須要配置這兩臺電腦的 IP 地址、子網掩碼和默認網關。這三個概念上一節詳細描述過了。要想兩臺電腦可以通訊,這三項必須配置成爲一個網絡,能夠一個是 192.168.0.1/24,另外一個是 192.168.0.2/24,不然是不通的。算法
兩臺電腦之間的網絡包,包含 MAC 層嗎?固然包含,要完整。IP層要封裝了 MAC 層才能將包放入物理層。到此爲止,兩臺電腦已經構成了一個最小的局域網,也即LAN。緩存
怎麼把三臺電腦連在一塊兒呢?Hub,也就是集線器。這種設備有多個口,能夠將宿舍裏的多臺電腦鏈接起來。可是,和交換機不一樣,集線器沒有大腦,它徹底在物理層工做。它會將本身收到的每個字節,都複製到其餘端口上去。這是第一層物理層聯通的方案。安全
Hub 採起的是廣播的模式,若是每一臺電腦發出的包,宿舍的每一個電腦都能收到,那就麻煩了。這就須要解決幾個問題:網絡
這幾個問題,都是第二層,數據鏈路層,也即 MAC 層要解決的問題。MAC的全稱是Medium Access Control,即媒體訪問控制。其實就是控制在往媒體上發數據的時候,誰先發、誰後發的問題。防止發生混亂。這解決的是第二個問題。這個問題中的規則,學名叫多路訪問。 有不少算法能夠解決這個問題。好比接下來這三種方式:數據結構
接下來要解決第一個問題:發給誰,誰接收?這裏用到一個物理地址,叫做鏈路層地址。可是由於第二層主要解決媒體接入控制的問題,因此它常被稱爲MAC 地址。解決第一個問題就牽扯到第二層的網絡包格式。對於以太網,第二層的最開始,就是目標的MAC 地址和源的 MAC 地址。
接下來是類型,大部分的類型是 IP 數據包,而後 IP 裏面包含 TCP、UDP,以及 HTTP等,這都是裏層封裝的事情。有了這個目標 MAC 地址,數據包在鏈路上廣播,MAC 的網卡才能發現,這個包是給它的。MAC 的網卡把包收進來,而後打開 IP 包,發現 IP 地址也是本身的,再打開 TCP包,發現端口是本身,也就是 80,而 nginx 就是監聽 80。學習
對於以太網,第二層的最後面是CRC,也就是循環冗餘檢測。經過 XOR 異或的算法,來計算整個包是否在發送的過程當中出現了錯誤,主要解決第三個問題。spa
這裏還有一個沒有解決的問題,當源機器知道目標機器的時候,能夠將目標地址放入包裏面,若是不知道呢?一個廣播的網絡裏面接入了 N 臺機器,我怎麼知道每一個 MAC 地址是誰呢?這就是ARP 協議,也就是已知 IP 地址,求 MAC 地址的協議。
在一個局域網裏面,當知道了 IP 地址,不知道 MAC 怎麼辦呢?靠「吼」。
爲了不每次都用 ARP 請求,機器本地也會進行 ARP 緩存。固然機器會不斷地上線下線,IP 也可能會變,因此 ARP 的 MAC 地址緩存過一段時間就會過時。計算機網絡
上面這種組網的方法,對一個宿舍來講沒有問題,可是一旦機器數目增多,問題就出現了。由於Hub 是廣播的,無論某個接口是否須要,全部的 Bit 都會被髮送出去,而後讓主機來判斷是否是須要。這時這就須要一個能把MAC 頭拿下來,檢查一下目標 MAC 地址,而後根據策略轉發的設備,咱們稱爲交換機,這個設備顯然是個二層設備。翻譯
一臺 MAC1 電腦將一個包發送給另外一臺 MAC2 電腦,當這個包到達交換機的時候,一開始交換機也不知道 MAC2 的電腦在哪一個口,因此沒辦法,它只能將包轉發給除了來的那個口以外的其餘全部的口。這個時候,交換機會記住,MAC1 是來自一個明確的口。之後有包的目的地址是 MAC1 的,直接發送到這個口就能夠了。交換機上的學習的結果,咱們稱爲轉發表,是有一個過時時間的。
多臺交換機之間鏈接起來,就造成一個稍微複雜的拓撲結構。
一個交換機表明着一個局域網,交換機互聯就是局域網互聯。
一開始,機器 1 並不知道機器 2 的 MAC 地址,因此它須要發起一個 ARP 的廣播。廣播到達機器 2,機器 2 會把 MAC 地址返回來,可是問題來了,這兩個交換機仍是都可以收到廣播包的。交換機 A 一開始是不知道機器 2在哪一個局域網的,因此它會把廣播消息放到局域網二,在局域網二廣播的時候,交換機 B右邊這個網口也是可以收到廣播消息的。交換機 B 會將這個廣播息信息發送到局域網一。局域網一的這個廣播消息,又會到達交換機 A 左邊的這個接口。交換機 A 這個時候仍是不知道機器 2 在哪一個局域網,因而將廣播包又轉發到局域網二。這樣也會破環交換機學習的轉發表。
在數據結構中,有一個方法叫做最小生成樹。有環的咱們常稱爲圖。將圖中的環破了,就生成了樹。在計算機網絡中,生成樹的算法叫做STP,全稱Spanning Tree Protocol。
一開始,全部的交換機都認爲本身是掌門,每一個網橋都被分配了一個 ID。這個 ID 裏有管理員分配的優先級,固然網絡管理員知道哪些交換機貴,哪些交換機好,就會給它們分配高的優先級。
既然都是掌門,互相都連着網線,就互相發送 BPDU 來比功夫唄。贏的接着當掌門,輸的就只好作小弟了。當掌門的還會繼續發BPDU,而輸的人就沒有機會了。它們只有在收到掌門發的 BPDU 的時候,轉發一下,表示服從命令。
有兩種分的方法,一個是物理隔離。就是每一個部門有單獨的交換機,配置單獨的子網,這樣不一樣子網之間的溝通就須要路由器了。
另一種方式是虛擬隔離,就是用咱們常說的VLAN,或者叫虛擬局域網。使用 VLAN,一個交換機上會連屬於多個局域網的機器。
只須要在原來的二層的頭上加一個 TAG,裏面有一個 VLAN ID,一共 12 位。爲何是 12 位呢?由於 12 位能夠劃分 4096 個 VLAN。
若是咱們買的交換機是支持 VLAN 的,當這個交換機把二層的頭取下來的時候,就可以識別這個 VLAN ID。這樣只有相同 VLAN 的包,纔會互相轉發,不一樣 VLAN 的包,是看不到的。這樣廣播問題和安全問題就都可以解決了。
對於支持 VLAN 的交換機,有一種口叫做Trunk 口。它能夠轉發屬於任何 VLAN 的口。交換機之間能夠經過這種口相互鏈接。