網路概論(一)

img

前言

看到最近 FB 上再討論 CORS(Cross-Origin Resource Sharing跨來源資源共用) 安全性問題,這時突然意識到,其實自己對網路好像不熟,不論是家裡要申請網路還是手機要上網,現在建置網路環境對大部分的人來說都不時太困難的事情,但是資料怎麼傳送?為什麼不會送錯地址?好像似懂非懂,裝防毒軟體跟架設防火牆網路就安全了嗎?這幾天就拜託 Google 大神來蒐集資料。

RJ45(8P8C)

過去資訊時代,電腦可以說是企業營運的必需品,到了現在網路資訊時代,必需品已經提升到網路層面,大多數的企業沒有網路幾乎無法營運,就硬體層面來說網路主要的目的就是協助資訊設備之間的資料傳遞,也就是設備需要具有傳送(Transport)與接收(Receive)的功能,如下圖,我們的傳遞端(Tx)會接到對方的接收端(Rx),對方的傳遞端(Tx)會接到我們的接收端(Rx),這樣就可以處理傳遞與接收的方式就是所謂的雙工(Duplex)模式。

單工(Simplex)是指設備僅具有傳遞或是接收一種功能,相較之下它是一種資料單向傳遞(一邊僅能傳遞、一邊僅能接收)的模式。

img
所以我們可以看到目前實體網路線的連接頭有 T586AT586B 2 種接線方式,其差異就是傳遞(Tx)與接收(Rx)線路相反,如下圖可以看到橘色系與綠色系對調,我們在 2 台電腦網路線直接對接時會使用所謂的跳線,其實就是指一邊為 T586A 另一邊為 T586B 的網路線。
img

早期百兆乙太網路(10/100M)只會使用到 4 條線(1、2、3、6),所以有些人實體線路也只接 4 條線,後來在 ADSL 剛興起時,筆者也有看過接線的工程師在 ADSL數據機(Modem) 與網路交換器(Switch)之間也得網路線也只接 4 條線,雖然不是正規接法,但是因為距離短且當時頻寬還不大,理論上影響可以忽略。不過現在是千兆以太網(Gigabit、1000M)普及的時代,另外4條線也會拿來傳輸資料,所以不可以再偷工取巧。
img

網路集線器(Ethernet hub)

集線器(簡稱:Hub)應該可以算是絕版品了吧!外觀雖然交換器(Switch)一樣,功能看起來也相似,可以將多台電腦(這邊泛指具有網路傳輸功能的資訊設備)串接在一起並提供資料交換功能,但是運作方式還是有差異,主要概念如下圖,任一台電腦傳遞(Tx)資料給集線器時,它會複製資料並分發到所有有效的接收端(Rx),也因為它會幫我們做轉換(Tx 轉 Rx),所以我們電腦與集線器需要使用直通的網路線(網路線兩端接發相同)來連接。
img

當集線器的連接埠(Port)的數量不足時,一般我們會串接多台集線器來做水平擴增,這時候在集線器之間則必須使用跳線,這是因為電腦由 Tx 傳入的的資料會由集線器的 Rx 送出,透過朓線才能夠讓另一台集線器由 Tx 接收,並由 Rx 傳遞給連接到它的設備。
img

沒記錯的話,早期資訊賣場販售跳線都採用紫色線材,這樣一般民眾就能夠快速識別直通線與跳線。

大部分來說我們會使用跳線的機會真的很低,所以一般公司其實很少會跳線備品,因此有些資訊設備廠商就推出內建跳線的集線器(或交換器),Uplink 也是一個網路連接埠,差別就是這個連接埠裡面的線路 Tx 與 Rx 對調,完全跟跳線一樣,因此透過這個連接埠我們可以直接使用直通線來串接集線器,當然我們也可以透過跳線(再次 Tx 與 Rx 對調)把它變成一般的連接埠來使用,下面常見具有 Uplink 的集線器,依序為獨立連接埠類型(左圖),開關類型(中間)可透過開關來切換連接埠為直通還是跳接,共用類型(右圖)則是 Uplink 的連接埠會與既有連接埠其中之一(一般不會第一個就是最後一個)共用,使用上只能二選一。
img

廣播式(Broadcast)

因為集線器它是使用廣播式來傳送資料,也就是只要任何一台電腦傳送資料到集線器上,那所有連接設備都可以收到相同的資料,因此這是一個充滿信任的純樸時代,由接收端會自己過濾掉不屬於自己的資料。

網路交換器(Network switch)

廣播式的集線器可以說是沒有安全性可言,除此之外隨著電腦串接數量的增加,非必要(不是自己需要的資料)的網路封包會越來越多,佔用的時間也會越來越多,因此網路傳遞延遲的問題也會越來越明顯,而且現今的的交換器已經可以自動識別傳送(Tx)與接收(Rx)的訊號並自動切換,所以我們不需要再使用跳線穿串接,對於網路佈線來說更加方便。

一般集線器屬於半雙工模式,也就是傳送與接收一次只能執行一個動作,就像是對講機一樣,所以比起佔用頻寬,佔用時間造成的”慢”更加明顯。

交換器(簡稱:Switch)的出現解決了這類的問題,它添加了一個通訊錄(MAC Address Table)功能,負責記錄電腦的實體位置(Physical Address)與連接埠(Port)的對應關係。

這邊的 連接埠(Port) 與我們一般講的應用程式連接埠(例如:網頁的 HTTP 80 Port、HTTPS 443 Port,FTP 的 21 Port)不同,這裡指的是集線器或交換器上面的實體網路孔。

img

這邊實體位置指的是電腦內的網路連結設備(網路卡)的 MAC位址(Media Access Control Address),理論上每一個網路卡會有一個全球唯一的 MAC 位址。
img

因此我們發送的資料就必須包含我們自己的 MAC 位置(Source MAC Address)與發送對象的 MAC 位置(Destination MAC Address),這樣交換器就可以建立 MAC 位址與連接埠的關聯表,藉由這個表它也可以知道資料要派送到哪一個連接埠,因此就不需要像集線器那樣每個連接埠都發送資料。
img

我們透過 Wireshark 來查看網路封包就可看到 MAC 位址放在最前面,因為又是固定長度,對於交換器來說它只要抓取最前面的 MAC 位址資訊即可,不需要解析整個封包,因此需要花費的時間很短暫。
img

運作原理

MAC Address Table 的資料是怎麼產生的?如下圖,我們假設從 A 電腦發送訊息給 C 電腦,交換器收到資料(網路封包)時可以知道是來自哪一個連接埠(Port),同時它會去抓取資料內的來源端 MAC 位址(Source MAC Address)也就是 00:0A:02:0B:03:0C,最後將連接埠與 MAC 位址寫入到 MAC Address Table,不採用目的端的 MAC 位址是因為這個台設備不一定在交換器所連結的網路內,甚至這個 MAC 位址是無效的。
img

接著交換器會拿目的端 MAC 位址(Destination MAC Address)比對 MAC Address Table 內有沒有符合的 MAC 位址,如果有就將資料由對應的連接埠輸出,如果沒有就採取廣播(Broadcast)方式,接資料傳送給所有連接埠。
img

所以要讓交換器廣播,只要網路封包的 Destination MAC Address 不存在 MAC Address Table 內即可,習慣上我們會使用 FF:FF:FF:FF:FF:FF 這組不存在現實中的 MAC 位址。

安全性

既然知道交換器的運作原理,那我們開始思考交換器會遇到那些安全問題:

  • MAC 欺騙功能(MAC Spoofing Attack)
    在網路封包內使用別人的 MAC 位址當作來源端 MAC 位址(Source MAC Address)來發送,這樣 MAC Address Table 就會有一筆這組 MAC 位址的紀錄,但是連接埠是指向我們,因此只要透過這台交換器發送給這組 MAC 位址的資料就會改發送給我們。

  • MAC 洪水攻擊(MAC Flooding Attack)
    MAC Address Table 上面的資料是有時效性的,失效的資料會被移除,這樣可以避免佔用空間容量,我們可以透過持續發送來源端不同的虛假 MAC 位址來填滿 MAC Address Table,這樣會造成後續網路封包傳送時因為 MAC 位址不存在 MAC Address Table 內而改採用廣播式(Broadcast) 來散佈資料,這樣我們也可以擷取到相同的資料。

    購買交換器時可以仔細看一下規格,正常也會標示 MAC Address Table 的大小,1K 的容量已經足以應付一般正常使用,但是容量越大,它就可以抵禦越強的洪水攻擊。
    img

正常來說電腦來傳送網路封包時會使用網路卡的 MAC 位址當作來源端的 MAC 位址,但是要串改 MAC 位址難度並不大,我們在作業系統內可以透過修改設定達到目的。

後記

今天其實都沒有提到 IP Address,這是多麼可怕的事情,因為我們正常都會利用不同的 IP 網段來對電腦做業務性質的隔離,但是對交換器來說它是不會幫我們阻擋的,最貼近我們的網路設備竟然如此的不安全,所以市面上出現了比較貴的 L3 交換器(Layer 3 Switch),它具備路由表(Routing Table)功能,增加了 IP 的控管功能。

另外我們應該注意到另一件事-WiFi無線分享器,這也是很普遍的網路設備,要讓公司有無線網路,就是使用網路線將無線分享器與還有網路孔的交換器連接,然後大家共用同一組 SSID 與密碼,其實這安全性也很低,從網際網路透過路由器滲透攻擊,由無線分享器入侵似乎簡單多了,而且一但入侵成功,就會身處在交換器連接的網路環境內,所以建置上還是要思考一下。

Switching Hub 陷阱

這是過去式,所以當個笑話,記得交換器剛在消費性市場出現時價格明顯比集線器高,因此市面上出現外盒標示 Switching Hub 的網路設備,價位十分親民,非常貼近一般集線器價格,它的強項就會依照你的電腦支援的網路頻寬(當時就分 10M 與 100M)自動切換,說白一點就是支援 10/100 的集線器,就功能面來它是沒有問題的,但是應該不少人以為是交換器而購買它,筆者當時在電腦賣場打工,就看到有販售的店家多少會有比較懂的人回來退貨,現在網路上提到的 Switching Hub 應該就是指交換器。