閘道器到底是什麼?
主機們在不在一個廣播域,完全取決於
主機連線的交換機埠們在不在同一個VLAN
:
1. 如果在同一個VLAN,即使主機們的網段不相同,也是工作在一個廣播域。
1。1 主機們的網段相同,可以ARP發現彼此的MAC,直接通訊,不需要任何三層裝置(閘道器)的介入。
1。2 主機們的網段不相同,即使在一個廣播域,也不能直接通訊,需要三層裝置(閘道器)的介入。
2. 如果不在一個VLAN,主機們不在一個廣播域
2。1 一個VLAN對應一個網段,那麼主機之間的通訊需要三層裝置(閘道器)的介入。
2。2 如果很不巧,兩個VLAN裡的主機使用相同的網段,主機並不知道有VLAN 的存在,所以依然認為其它主機和自己在一個廣播域,但是這個廣播域被交換機VLAN邏輯隔離,成為兩個廣播域,這時無法使用三層裝置使得它們通訊,唯一的方法,使用一個網橋將兩個VLAN二層橋接起來,它們就可以通訊了。
所謂閘道器,就是上文提到的三層裝置,可以是路由器、或三層交換機、防火牆。
哈哈,這個2。2的情況估計沒有幾個看得懂,凡是沒點讚的都是看不懂的,整個知乎使用者能看懂2。2情況的不會超過1000人…
廣播域是個二層概念,一個廣播域裡可以配很多個網段(雖然這種配置並不常見)。二層和三層從配置上來說是解耦的,並不要求廣播域範圍和子網網段配置一致,當然如果子網掩碼配置和實際的廣播域範圍設定不一樣,可能會引發網路故障。
DHCP是個典型的跨二三四層協議,它的正常工作充分利用到了二三四層各層的特性,首先它自己本質上來說是個UDP包,但是:
它的源埠和目的埠都是固定的,因此四層部分並不重要,只起協議區分作用
它的傳送通常不是依靠IP地址的,因為DHCP協議發起的時候源裝置還沒有IP地址;實際上除了DHCP中繼以外,都是依靠二層直接通訊的
DHCP DISCOVER/REQUEST透過二層廣播協議將資料包廣播到整個二層廣播域當中去,DHCP(或中繼)則以二層單播的方式返回結果(DHCP OFFER/ACK/NACK)
所以雖然貌似是個四層UDP協議,本質上還是靠二層通訊機制。ARP也有類似的地方,它是跨二三層的
用比較通俗的例子說明一下,環境簡介
路由A,地址192。168。1。1
子網掩碼255。255。255。0
典型計算機B,地址192。168。1。129
一個典型機器的路由表
192。168。1。129機器的路由表
192。18。1。129機器的ARP表
如果 B 要和 外界進行三層通訊,有兩種情況
目標地址為192。168。1。1/24 網段內部,例如192。168。1。184,那麼傳送的鏈路層幀
目的 MAC
為ARP表中相應 MAC 地址(1c:1b:。。。),網路層目的IP為192。168。1。184
目的地址為192。168。1。1/24 網段外部,例如114。114。114。114, 那麼傳送的鏈路層幀
目的 MAC
為
閘道器 MAC 地址
(bc:d1:。。。),網路層目的IP
仍為114.114.114.114
。
在後一種情況使用閘道器通訊的過程中,大概發生了幾件事
透過路由表查詢得到,114。114。114。114 需要使用 192。168。1。1 作為閘道器進行通訊,介面為 eth0。這也就是為什麼有人說“閘道器就是一條路由”。
透過 ARP 表查詢得到,192。168。1。1 的 MAC 地址為 bc:d1:。。。
向 eth0 介面傳送如上所述鏈路層幀
在自己所在子網通訊不需要路由器(網路內),不需要閘道器。
和自己所在子網之外通訊(網路間),需要透過閘道器。
“
閘道器能在網路間轉遞資料包
”,這個就是閘道器最初始的定義。
具體到你的問題,截圖截得很隨意,而且內容好像也很隨意,不如不看。
在常見的家用路由器/小型辦公室用企業路由器中,一般集成了交換機,路由器,NAT,DHCP Server 等多個角色。你題目中截圖中閘道器有時候指的是 DHCP Server。
所謂廣播域,就是從任意機器傳送一個目的 MAC 地址為 FF。FF。FF。FF。FF。FF(廣播地址) 的鏈路層幀,能收到幀的所有介面(機器)的集合。廣播域中的機器相當於使用經典交換機(不支援 VLAN 的二層交換機)用網線連線起來。
VLAN 是
用來
劃分廣播域的一種方法/概念,可以使得同一根網線中流過多個廣播域的幀而不互相沖突,以及實現一個交換機多個埠分別屬於多個廣播域。歷史要比廣播域晚很多,為了簡便先不討論。
在一個廣播域中,完全可以存在多個子網,只要他們
子網互不相交
即可。
再舉一個例子,一個經典交換機有4個埠,連線四臺計算機A,B,C,D
A繫結兩個IP,192。168。1。1/24, 192。168。2。1/24
B繫結一個IP,192。168。1。2/24
C繫結一個IP,192。168。2。2/24
D繫結一個IP,192。168。2。3/24
我們在不配置任何閘道器的情況下,A-B之間可以進行三層通訊,A-C之間可以進行三層通訊,
B-C之間不能進行網路層通訊
,
C-D之間可以進行三層通訊且不經過A
(因為在一個子網中)。同時ABCD互相都可以直接進行二層通訊,不需要經過其他計算機,
如果把B的閘道器設定成192。168。1。1,C的閘道器設定成192。168。2。1,並在A上開啟網路層轉發功能並正確配置路由表,那麼
B-C之間就可以透過閘道器A進行網路層通訊
,但是網路層包要經過A的
轉發
。
於此同時,ABCD始終處於一個
廣播域
中,AB處於一個子網,ACD處於一個子網。這也舉例說明了,
閘道器一般都會處於多個子網
。
前面大多數答主都是從狹義網路的角度來解釋這個“閘道器”這個詞,總結概括一下可以理解為“連線,分離不同區域網路的統一進出口角色”謂之“閘道器”。
從定義出發,在現有我瞭解的領域內,閘道器這個詞的含義已被擴充套件到了應用與服務層面。比如,在提供Restful API的服務介面,一般被稱作“應用閘道器”。這裡,閘道器作為一個對外提供應用服務的媒介,一方面對外提供介面服務,接受請求並給予應答,另一方面,又遮蔽內部實現細節,只暴露黑盒呼叫方式與函式,保護了內部邏輯與結構。和網路中的NAT閘道器功能類比一下,可以發現有類似的設計思想。
有很多詞的含義被從網路中擴充套件到其他相關領域內,比如如果你和一個。NET開發者說“路由”,他第一想到的可能就是xaml裡的“路由事件”。這裡的路由指一個event可以隨著xml標籤依次傳遞給父標籤或其他自定義標籤的路徑。但是,這與網路中的路由依然有著某種類似的特徵。
說到底都是一個抽象詞彙在不同場景下具體化表達,所以,不用過分地在某種說法上糾結。回到網路本身,一個三層交換機上某個看不見摸不著的vlan if、家裡的tplink還是某些特殊涉密行業龐大複雜的“資料交換系統”,都可以叫做“閘道器”。
只要是進入某個網的“入口”,都可以叫做閘道器。你要是跟程式設計師講閘道器,他第一反應是API閘道器,你跟他講路由,他第一反應是URL路由。
這是一個高度抽象的詞彙,就像“網路”本身也是個高度抽象的詞彙一樣,當然,它們源於IP網路。
那麼在IP網路裡,它也是這麼一個意思——離開“本地”網路,進入其他網路的“入口”。
順帶我又看到了神奇的東西——
2。2 如果很不巧,兩個VLAN裡的主機使用相同的網段,主機並不知道有VLAN 的存在,所以依然認為其它主機和自己在一個廣播域,但是這個廣播域被交換機VLAN邏輯隔離,成為兩個廣播域,這時無法使用三層裝置使得它們通訊,唯一的方法,使用一個網橋將兩個VLAN二層橋接起來,它們就可以通訊了。
所謂閘道器,就是上文提到的三層裝置,可以是路由器、或三層交換機、防火牆。
哈哈,這個2。2的情況估計沒有幾個看得懂,凡是沒點讚的都是看不懂的,整個知乎使用者能看懂2。2情況的不會超過1000人…
不就個VLAN橋接,不知道有多少專業網工潛伏在知乎懶得說話,於是跳大神的就真以為能看懂的人不多了…
很難嗎?很難嗎?很難嗎?這也就是工作第一年的時候學到的東西而已呀!