ip地址是否可以取代mac地址,Fibre Channel over IP是否只使用ip地址進行通信?

ip地址就可以定位一個網路終端,是否可以取消mac地址?與網路層和ip地址相比,數據鏈路層和mac地址起到了怎樣不同的作用,是否必要?


題主的意思應該是想取消網路模型里的數據鏈路層,把網路層(IP)和數據鏈路層(MAC)合併。

確實,少一層可以節約很多不必要的計算,比如MAC層有幀校驗,合併以後就沒必要了,計算的複雜度可以降低,而且可以省掉一些資源和幀頭。

事實上,如果網路模型足夠簡單,比如兩台設備組成的點對點網路,物理層之上省掉一些中間層次是絕對可行的。早年的互聯網也沒有這麼多的層次(參見:https://en.wikipedia.org/wiki/Interface_Message_Processor ),ISO-OSI模型都是後來提出的。只是隨著網路規模的不斷擴大,網路內部大量不同的設備都要互聯,才有了各種中間層次的需求。

網路的傳輸本質就是把數據從源經歷若干節點傳輸到目的地,IP地址需要解決的是標識一個全局的源-目的地的機制,也就是建立一個完整的傳輸路徑。鏈路層需要解決的是,數據會經過若干節點(路徑),鏈路層要保證數據能夠在不同節點(路徑)之間正確傳輸

數據從源傳輸到目的地,中間可能經過雙絞線、光纜、串列鏈路等多種類型的傳輸介質或者網路類型,每種介質的MTU可能是不一樣的,linkup/linkdown的機制也可能是不一樣,這就需要每個負責轉發的節點需要判斷下一條是否存在,以及如何把數據重新打包發給下一跳。

這個動作如果在IP層實現,也並非不可行(IP層有拆分機制),但會讓IP層變得臃腫。

IP層的限制:

1. 沒有MTU機制。
2. 不具備探測鄰居節點是否存在的能力(尤其是串列鏈路)。
3. 不具備針對兩個傳輸節點之間的流量控制能力。

因為有以上的限制,所以最佳的方法就是在每兩個傳輸節點之間,根據網路類型、介質類型設計一套針對性的協商-傳輸機制,也就是數據鏈路層。同時,這套傳輸機制可以把內部的廣播信息限制在兩個節點之間。有了這樣一套設計,IP包從源到目的地的過程中,就可以不必過分關注中間經歷了哪些節點,哪些類型的網路,實現了功能上的分離。

因為有了鏈路層的設計需求,所以才有了MAC地址這種東西,但鏈路層的功能不僅僅是MAC地址。比如節點間的流量控制,對於廣域網來說就很重要,區域網可能是千兆帶寬,但出口只有十兆,這種情況下,廣域網出口上就需要有針對出口的流量控制,對於乙太網來說就是PAUSE幀,而如果只靠TCP/IP來控制流量就太複雜並且開銷太大了。

至於其它回答里提到的一些觀點,我個人不太贊同:

比如DHCP、ARP,這些都是基於鏈路層發展出來的,並不是因為有了這些才必須有鏈路層,而是有了鏈路層才有了這些協議;
IP地址並非全球唯一,這不是鏈路層存在的理由,解決重複地址通信的問題用的是NAT,跟鏈路層技術無關;
隔離廣播域是鏈路層的一個輔助作用,但也不是鏈路層存在的必要理由,畢竟IP地址也有子網的概念;

所以結論就是,如果網路模型足夠簡單,確實可以省掉鏈路層,但就是因為現在的網路太複雜了,所以鏈路層不可缺少。


不行,這是由MAC和IP的特性決定的。隨便列幾個理由:

  1. MAC是全球統一標識,在製作網路硬體的時候分配給廠商,廠商保證每設備MAC唯一。IP是專門機構管理並分配,硬體廠商分配不到也無法管理,無法保證唯一性。
  2. 工作在不同層次導致了IP之間需要得知路由才能通信,MAC之間直接假定是直連的網內,直接區域網定址通信。
  3. MAC自配置,IP需要手工指定或者DHCP,需要對網路的拓撲有所了解。

按照你的假設,如果用IP作為數據鏈路層地址,上面1和2的問題從地址定義和定址方式做出變更而上解決。但2裡面的定址方式,恐怕不可能從鏈路層解決,即使解決了,對上層協議的路由表也會是一個災難。3的話恐怕就直接無法解決。

對於網路協議理解越深,就越能體會到分層的重要。題主提出這個問題,恐怕就是因為還沒能體會。這方面的理解,其實是對於網路實際使用中逐漸加強的。即是說,現在不理解沒關係,不需要一定要想出這樣做的理由。

對於協議棧分層,我個人有一個經驗性的概括:越是上層的協議,為了實現更複雜的功能,其抽象出來的概念越多,使得需要的配置的項目就越多

舉例來說:

  • 物理層一根網線連上就能工作;但是如果僅有物理層,那世界就是:我在這頭,你在那頭。然後就沒誰了...
  • 引入數據鏈路層,假定都是乙太網,通過MAC地址之間通信。就可以用HUB或者二層交換機連接在一起了;那世界是這樣的:不只有你我,還有很多鄰居,大家共住地球村...
  • 三層配IP,引入路由 -- 有村有鎮有市有省有國家
  • 四層加埠,抽象出連接 -- 不僅能走路,還能火車飛機輪船,跨著太平洋都能對話
  • 5-7各種抽象協議代表不同數據流 -- 自己類比吧我編不出來了。

總結下來一句話:每一層干每一層的事兒。層與層之間不是不能壓縮合併或替代,而是這樣幹了就不方便了。這是一個工程上的問題。


不可以。

把Mac想像成身份證,Ip想像成居住地址。就可以發現除非確保設備永不移動,否則是不能去掉其中一個的。


被邀請,試著回答一下。

* 有時候一個 IP 並不唯一對應一個網路終端,參考 Virtual IP address

* 在任何一個網路中,網卡都能夠根據自身 Mac 地址決定當前幀是否丟棄,如果改用 IP 地址來判斷,恐怕換個網路就要給網卡重新寫入一個ID

* 對路由器而言,一個幀中的目的 IP 地址並不是路由器,僅僅是幀的目標 Mac 地址是路由器的 Mac 地址,可見,我們也會期望非目標IP的網路終端也接收和處理我們的數據包

實際上 IP 是網路層概念,Mac 地址是數據鏈路層概念,兩個層級各司其職,各有各的作用,用 IP 取代 Mac 存在太多問題了,不再列舉..


謝邀。

個人拙見,拋磚引玉。

mac和ip在現有網路架構上的應用是基於tcp/ip的技術框架決定的,mac提供了數據鏈路層的定址基礎,而ip則成為了網路層的唯一標識。

ok,繼續回到題主的問題,ip代替mac成為定址的唯一標識,我個人認為是可以實現的,但要基於兩個前提:
1 通訊方式打破現有的tcp/ip框架,關鍵是取消數據鏈路層的存在,整體網路中的定址工作都有網路層中的ip地址來完成。

2 完成從ipv4到ipv6的切換,因為目前ipv4地址數量的局限性,不可能實現每台通訊設備的地址唯一標識,但切換到ipv6則有足夠的地址提供給所有的通訊設備使用。


ip層解決的是『異構』網路的互聯。

互聯網中,區域網可能有多種類型,如乙太網、令牌環網、等各種類型的網路,它們的鏈路層都是不一樣的,mac地址也是不同類型的。

為什麼各種各樣的網路實現都能互聯,就是靠的這樣的分層設計:
現實世界中,物理層的網路實現千差萬別,所以大家都遵守mac層的協議,在傳輸時將數據分服裝為ip報文,這樣大家都可以互通。 所以從字面意義上就可以理解為什麼這一層叫做『媒體接入層』,即每種媒體都有一套實現,它們按照規範接入接入到ip網路,實現互聯。 嗯,『互聯網』。


高票答案挺接近的了。
有個數據鏈路層的原因有如下幾條:
歷史的原因。因為一些既得利益者的推動,乙太網發展的又快又便宜,現成的晶元又便宜又好使。
專業分工的原因。七層協議模型的建立就是為把複雜的通信通過垂直分層而簡化,數據鏈路層面對的問題總要有辦法解決。乙太網從來不是所有場合下性能最好的,但一直是最便宜的。
最後一個就是標準化的問題。相對於ip,,乙太網解決的問題相對簡單,標準化程度高,因而各廠家互通容易,市場上不被壟斷,有線通信的終端都會努力支持。
以上幾條原因是互相糾纏的,共同造就了乙太網的地位。

如果直接用ip通信,你要逐個回答下面這些問題:
用什麼介質,光?電?
並行還是串列?通信距離?通信可靠性?保密要求?對外干擾容忍度?對外輻射程度?
是否編碼?是否編址?是否要容錯糾錯?是否重傳確認?
是否兼容非ip應用?

以上的問題在ip領域都沒有標準,如果你仔細從零構造出一個方案的話,我相信你最後會發現不如直接用乙太網。


補充一下,從七層協議的角度解釋一下數據鏈路層的作用以及與網路層的區別。
!適配物理層。概要的說,在數字通信中物理層負責正確的傳送一個一個的0和1。網路層不關心物理層,被數據鏈路層隔離,就是通過分層降低通信複雜度。在這裡,數據鏈路層傳送一籃子的0和1。他們管這個籃子叫frame。數據鏈路層要保證這些籃子整個無錯的被傳送。
!鏈路層的編址,定址。理論上,鏈路層的地址是局部的,乙太網那種全球唯一是個巧合,在每個乙太網中都是只管自己的。網路層的地址是全局的。
!鏈路層的復用分用,qos和流控。
!為網路層提供服務。這是層次模型最說不清楚的地方:算鏈路層,網路層還是2.5層呢?具體工作包括定義鏈路層的籃子怎麼裝網路層的信,可能多個籃子裝一封信也可能一個籃子裝多封信;鏈路層地址和網路層地址的解析和翻譯;


mac是真實地址,工作在數據鏈路層
ip是邏輯地址,工作在網路層


Fibre Channel over IP 是 FCoE 嘛?

據我所知,好像FCoE用以太的二層但三層封裝的並不是ip報文..........


數據鏈路層要有地址,根據分層原則,數據鏈路層不能使用ip層的地址,只能合併數據鏈路層和ip層,鏈路層對ip層是多對一關係,這樣的話合併後的層需要包括ip層和各種鏈路層。


如果用IP地址代替MAC,那個每個終端就要寫入唯一的IP地址了,現在IPV4的地址根本就不夠用啊。而且這樣的話現在的路由器也都用不了了,還有路由也是個問題


在一個區域網內,可以開發一種協議,只使用ip地址進行通信。但是現實里的使用場景比較複雜,還是需要用MAC地址和ip地址同時使用才行。


路由器串口就只有ip地址沒有mac地址。
網卡要通過mac地址硬體定址,如果把這個工作交給ip協議來做,那操作系統的負擔就太大了。


就拿交換機舉例子 你見過二層交換機有IP地址的么。。。。所以啊 只有IP是不行的


去看看DHCP工作原理就知道了 ARP協議作用 網路分層很重要


推薦閱讀:

所有的網路請求底層協議是不是都是TCP/IP?
為什麼tcp 連接斷開只有3個包?

TAG:通信 | 計算機網路 | TCPIP | 數據鏈路層 |