為什麼要為每個介面分配ip,而不是每台主機?

換句話說,為每台主機只分配一個ip地址,用這個地址來標識這個主機不行嗎?


這個問題提得好,但很難回答,嘗試回答一下。

真實網路中確實有題主所描述的,一個伺服器主機,有兩到三塊網卡,將網卡物理介面用LACP協議(Link Aggregate Control Protocol)邏輯綁定成一個邏輯介面,那麼呈現給IP層的就是一個介面,然後再給IP分配一個IP地址,手工靜態、或動態DHCP都可以,但常用前者分配。

需要對端的交換機支持LACP協議,同時每個物理介面位於同一個VLAN,否則不能正確工作。任何一塊網卡down掉(網線鬆動,硬體異常等),都會被邏輯鏈路踢出,依然可以依靠剩餘網卡提供二層接入,這樣最大限度地提供冗餘鏈路支持。如果down掉的網卡重新UP,又可以加入邏輯鏈路的隊伍,繼續為IP層服務。

在早年,路由器還沒有普及並且價格高昂時,有些伺服器主機可以有多個物理介面,一塊連著乙太網某個網段如10.1.1.0/24,另外一塊連著10.1.2.0/24, 那麼兩個網段都可以訪問伺服器IP,一個是10.1.1.1/24,另一個是10.1.2.1/24。

有同學會問,為何這兩個網卡不在一個網段?和上文提供冗餘鏈路不同的是,這裡需要對不同業務部門做邏輯隔離,一個網段對應一個業務部門,比如公司不允許其他部門訪問財務部的網段。

如果伺服器不做其他配置,網路里也沒有其他三層設備,那麼10.1.1.0/24、10.1.2.0/24這兩個網段是無法通信的,即使在伺服器上也無法用10.1.1.1/24 Ping 通 10.1.2.1/24,如果想讓這兩個網段可以通信,必須配置伺服器主機,使之工作在路由模式,這時主機就是一個提供三層轉發的路由器。

綜上,一塊網卡綁定一個IP,還是多塊網卡綁定一個IP,完全看業務需求。


IP的設計目的是為了路由,而不是為了標識主機。


由於現實需要確實存在一個主機配備多個網卡的情況。比如筆記本電腦,一個有線網卡一個無線網卡。想像一下移動網路和聯通網路相互不通的情況。如果一個人在這兩個網路中都有朋友,他就只能雙卡雙待了。因此你不能要求他只能有一個手機號。另外,IP地址之於網卡就好像手機號之於手機卡,手機號並不是設置在手機上的,IP地址與主機同理。網卡就是主機的網路介面。


如果有多個介面,你這樣想:

路由器(網關)發了一個arp請求,這兩個介面誰回復呢?

不管誰回復,另一個網口將進入空閑的下行(路由器向主機發包)狀態(路由器不會給這個介面的mac地址發包)。

實際上,一般情況下,主機的多個介面是接在多個子網下(多個路由器)。這樣,從新浪發過來到某個IP地址的包可以準確地到達那個路由器(網路路由配置),然後由這個網關(最後一跳路由器)發給相應的介面。

多個介面只用一個IP地址,下行的包只能到達同一個路由器(網關)。


額。

因為有時候你的電腦一邊上著網,一邊還掛著一塊開發板。你上網的ip是公司分配的。而你用來連接開發板的網口ip則是你自己定義的。


IP地址確定就確定了歸屬哪個子網,而有的主機會同時在兩個不同的子網之中啊。


我是一種人稱路由器的主機


1:資源有限

2:便與管理


按主機分配IP,分配到哪?是主板,CPU,硬碟?只有專門的網路模塊(網卡)才能分配地址.


因為一台電腦上不一定只有一個網卡。

例如路由器,wan口是公網ip,lan口是內網網關ip(然後這個口上接上了一台四口到八口的交換機,上面可能還橋接了一塊無線網卡)。

作為路由器使用的雙網卡電腦同理。

不過,如果你是想要給每台機子一個獨特的名字,可以用域名(http://host.network.com,windows和Linux都可用),也可以用NetBIOS名(\networkhost,windows可用),這個就與電腦裝了多少塊網卡無關,每台電腦只有一個了


介面IP只是主機的網路屬性,只要數據包從網卡進來後主機網路協議棧能合理地處理包,怎麼設置都可以,和主機的標識無關。

舉個例子,如果你的主機IP是2.2.2.2,從網卡上收到一個報文,源IP是1.1.1.1, 目的IP是3.3.3.3,作為主機你要怎麼處理?

下面的圖是Linux里Netfilter框架,因為目的地址不是主機本身,其實你可以走NF_IP_FORWARD處理。在這個過程中,如果設計到地址轉換,你可能就需要利用到不同介面的不同IP地址了。


我覺得這個東西應該反過來講:一個ip(應該)唯一標識一個介面

假如說,網路上有多個介面具有相同的ip,那麼網路中的某個設備就會發出這樣的疑問

「這個目的ip地址我是知道的,但是有兩個介面有一樣的ip地址,那我應該發給誰啊」


乙太網的三層通信必須使用同一子網ip,哪怕是互聯也得用個/30的子網,既然互聯用了一組/30,主機還要用一個/32,還得跑個協議把/32宣告出去,還不如用個大一點的子網....

如果你考慮的是不想用哪些蛋疼的二層冗餘協議,我看vswitch配vxlan會是主流啊...


如果裝了一個虛擬機,而這個虛擬機需要和物理機一起都在公司的區域網里,那你的物理機就得有兩個網卡,需要兩個IP地址~


如果一台主機5個網卡5線接入你怎麼用一個IP?

還有如果2個網卡接入1個交換機!

一個IP怎麼使用2個網卡?


路由器可以看做是多網卡主機!


因為每個介面都工作在OSI三層,三層地址就是IP咯。如果想一個主機只配一個IP,可以把所有介面橋接在一起,這時候介面本身都工作在二層,只要有MAC地址就可以了。IP配在三層的橋接介面(虛擬)上。


你說的是mac地址?

通過mac地址代替ip地址

也就是數據鏈路層代替網路層的功能

這樣的話

  1. 不利於網路分層實現
  2. 不利於抽象

小白作答,歡迎指正


推薦閱讀:

普通路由器的DHCP中繼有什麼作用?
裝修時需要安裝幾根網線?
網線從路由器接出來, 再接一個路由器怎麼設置?
為什麼一定要通過網關來找計算機?
路由器進行NAT地址轉換時,如何避免可能出現的如下錯誤?

TAG:路由器 | 計算機網路 | 計算機科學 | TCPIP |