為什麼IPv4不能像電話那樣升級呢?
比如9位的電話號碼,在前面加一位變成10位,容量就變成了原來的10倍。IPv4也可以同樣這麼干啊。
比如原來是32位的IPv4,可以增加8位,變成40位,如果考慮處理器32位或64位的,處理40位這種數字不方便,可以一次增加32位,變成64位的IP地址,這樣地址也超過1800億億個,不敢說給地球每一粒沙子分配一個IP地址,但是給地球上每個帶電的設備分配一個IP地址恐怕幾百年都用不完。如果按照人頭算,可以給每人分一個C類地址,也夠用幾百年了。關鍵是簡單啊,不用重新搞一套協議了。
美國國防部一個研究小組,鼓搗出TCP/IP協議用于軍方的內部通信,做夢也沒有想到有朝一日可以壟斷世界,如果知道肯定會把IP地址設計得更長一些。
為何電話號碼容易升級?
ITU在設計電話編號時,充分考慮到可能的擴容,所以電話編碼可以變長,用於電話連接的信令協議可以接受變長電話編碼。還記得90年代末,2000年初,一些大中城市升級電話,從7位升級到8位,只需要升級本地交換機即可,其他城市要不要升級?不需要,因為不在乎,那其他國家要不要升級交換機,也不需要,哪有空噢,只要一個國家號86就可以轉接到中國國際局了,要操那麼多心幹嘛?
那反過來說,美國要升級電話號碼,中國的交換機要升級哇?同樣也不需要,who care? 國家代碼001就可以轉接到美國國際局,至於接下來如果選路,那是美國內部的事情。
看出端倪了哇?電話號碼的升級只需要升級局部的交換機,工作量小,風險也小。
那IPv4可以立馬升級到IPv6嗎?
這是牽一髮而動全身,全球的所有路由器、交換機、主機都需要升級,如果不升級將失去與升級的主機互聯,如果升級將失去與IPv4主機的互聯,這種事情絕對不會發生,一定是一個長期的IPv4到IPv6的平滑遷移過程,在此之前一定是雙協議棧共存,加上NAT64、NAT46的地址轉換。大家發現沒有,IPv6還是採用固定長度(128位),為何?
因為固定長度地址欄位,協議頭長度固定,可以大大提高數據轉發效率,比如ATM也是採用固定長度包,ATM信元之間的時間間隙是恆定的,特別適合傳輸語音。
為何電話號碼可以變長?
因為信令協議使用電話號碼來連接,一旦接通,就不再需要電話號碼來路由語音數據了,意味著號碼只使用一次,號碼定長或不定長影響不大。而IP包卻不是這個樣子,每個IP包都需要IP地址來定址到目的地,IP包的轉發效率就至關重要了,故IPv6依然採用固定長度。先看看網際網路的沙漏模型:
我們可以看到,IP協議實際上是處於Internet的核心地位,所有上層和下層的協議都要經過它。它的改變,會涉及到網路中所有的路由器、網關。
另一方面,Internet與電話網路有本質的不同:電話網路是基於連接的(connection-oriented)。每撥一個電話,有一個事實的連接建立,然後一直會使用這個連接到通話結束。
而Internet是基於數據包的(packet-oriented)。路由器需要對每一個數據包做單獨的處理,必須保證處理的高效和快速。所以使用定長地址更簡單有效。
所以簡單來說,兩個原因:
- IP協議在Internet中的核心地位
- 基於數據包的處理方式
決定了任何對IP協議的改變都會是痛苦的。
好問題
電話號碼是一串數字,人們按自己的記憶或者用電話本輔助撥這一串數字,電話網中的設備按照這一串數字來分析接續,一串數字加一位之後依然是一串數字。而IPV4地址則不然,規定好了是4位元組,4位元組加1位元組就不是4位元組了,4位元組加4位元組也不是4位元組。如果強行搞一個小改,比如弄個IP V4.1,規定地址長度64位,其他都不變,這個升級的難度和IPV6是一樣的,而驅動力比IPV6還小。
你家電話可以同時每秒鐘外呼65535路不同的號碼么。
IP網路可以。
取捨就是,外呼號碼長度一樣。這樣交換機才能處理得過來。
謝邀, @車小胖 和 @Jiazi 等,已經把網路通信的原由和IP協議的重要性,說得很清楚了。我就不多說了。從另一個角度上來說,計算機網路通信,是各個行業標準最規範的行業,而且,它是一張鋪滿了全世界的「網」,比手機移動通信影響範圍還要大(各個國家和地區的從2G到3G和4G,都還有不同的標準)。既然是IP協議是一種標準,不是說隨便想像電話號碼那樣增加位數就行的了,它不光是軟體層面的設計,還牽扯到硬體規格和參數,很多網路設備的硬體標準,更不是說想改就想改的(詳情見上面各位大神所述),尤其是像整個互聯網中,最重要的設備路由器、還有防火牆等的硬體設計開發。而且,打個比方來說,即便你能升級,也要別人整體全面升級才行,不然,你的IP地址和別人不一樣,那相互怎麼通信?有些機構和企業,不要說中斷一天的網路業務,有時候就是一個小時幾十分鐘(比如銀行),影響和損失都非常巨大,何況,這也不是想升級就升級的事情。
而互聯網發展這麼多年,像各大廠商生產的設備,還有全世界眾多企業和金多提供網路連接服務的運營商,當初投入購買的網路設備,不是一下想更新迭代,說換就能換的,這裡面有巨大的前期投入的經濟成本要算,還有升級所涉及到各種軟體成本,人力成本。不要說IPv4升級到IPv6,就是其它某個網路協議的切換,也可能會牽一髮而動全身,尤其是一些ISP,利益影響最深,而它們又是提供互聯網連接最重要的基礎運營商。
因為互聯網的雛形和前身,原本是美國軍方的阿帕網,當時只是基於美國軍方一個項目設計考慮的,而IPv4地址設計之初,也沒想到阿帕網日後來會發展成連接全世界的互聯網,更沒想到到IPv4地址枯竭的問題,後來才推出了號稱可以給全世界每粒砂子分配一個IP地址的IPv6,但即便如此,很多企業廠商,尤其是運營商,只要業務穩定,還能維持運運,加上NAT技術,也在一定程度上,緩解了這個問題,所以,大家能過,也就將就著過吧。
之所以不能那麼簡單地升級,是因為IPv4地址在設計之初,就沒有考慮可將來要升級。
在否定這種"將來要升級"的前提之下,各種基於IPv4地址的程序和硬體設計都把IPv4地址的長度寫死。
例如:
1. 程序中IPv4的地址聲明為32bits
2. 轉發晶元中IPv4地址用32bits地址空間表示。
……
當這種「長度寫死」的軟體和硬體越來越廣泛地普級到全世界之後,地址長度升級的改動量變得越來越大,升級就變成越來越困難,到最後就變成不可能了。
於是就只能重新設計了 -- 然後就有了IPv6.
謝邀,已升級,請關注IPV6和可能更符合你期望的IPV9
年青人 有理想 歡迎加入悲催的網路行業 在這裡 你幹啥子外面都不曉得 但是網路一下子斷了 全世界都曉得 他們異口同聲的說:媽賣批
好現在開始實話實說:ip這玩意就是兔子尾巴 長不了 為毛呢 因為這不是電話號碼 你一分鐘打幾個電話?多久才接通的?按秒計算 在網路人眼裡 這tmd是絲綢之路一樣的漫長 但是在某神奇的國度 為了養活一些怪獸 它們絕對不許用ip打電話 在2000年以前就判決了 你妹吧 那時候你還小
ip就算是你電腦的1G網卡都能一秒鐘轉發將近1.5M個報文 這是多麼恐怖的速度 150萬一秒 你要僱人干 得花多少錢?到了10G/100G這活CPU也幹不了 慢啊 所以網路世界裡面 要想快 做asic 網路處理器都跟不上節奏 當然現在也有DPDK這種用多核去堆性能
回到ASIC 這就是工廠固定的機器 ip地址就4位元組 要查路由都顯得長 多級pipeline路面大家都按這長度用 別說變長 ipv6推這麼久也沒人愛用 查表最快是線性表查數組片上sram搞定 飛快 索引再長放到DDR查表 費電 延遲 要麼用hash或者tcam都有缺點 你要變長 首先晶元這查表就麻煩很多 也能做 堆錢
這裡還有個生態問題 土豪也不行 你整出個新報文 好不容易出了你家 電信路由還不認識呢 後面一堆路由都是人傻速度快的ASIC 臉不熟直接丟棄 還沒空告訴你咋回事 人家是上層路由器 就算你矇混過關 跟你聊天的設備還說不認識
這事理論很美 要工業化 要速度就只能簡單粗暴 兼容 當然 我也想整個簡化報文格式 連mac都沒有 肯定沒人贊助我來給一個相對權威的回答
原因在於:電話交換機(又稱為語音路由器)和網路交換機工作原理不同,其定址方式是不同的
一、先說網路交換機
首先要理解IP地址與交換機層級的關係。二層交換機對應的是OSI七層模型中的數據鏈路層,其定址依靠的是MAC地址;而三層交換機對應網路層,其定址方式是通過IP地址(包括IPV4和IPV6)。
三層交換機需要通過IP地址找到通網目的地址的路徑,他所發送的是報文,報文格式中地址長度是固定的,IPv4是8*4=32bit,IPv6是128bit
從發送到接收,從源地址到目的地址,報文中的源IP和目的IP始終不變,不會被替換,必須遵循IEEE802.3標準。而電話交換機則完全不同,電話交換機採取的是信令試逐段投遞,投遞過程中電話號碼長度並不被完整保留,而是由各中繼自行設定的長度,因此可變。
二、電話交換機(語音路由器)
電話的號碼是有所在地的中心局分配,因此其長度並不需要遵循國際規範,是由所在地運營商,甚至用戶交換機、公司的信息部門來決定的,因此其長度可變。
舉一個呼叫的例子。
你的分機號是1000,公司總機號是88880000,地區區號是010,中國地區代碼是+86(座機是0086)位於美國芝加哥的00-1-213-1234567電話撥打你的電話時,其工作過程時這樣的:
- 如果電話支持DID向前轉發特性,對方撥出的完整號碼是 0086-10-88880000-1000,一次性撥出
- 在位於美國芝加哥的中心局,通過00識別是國際長途,轉發至北美中心局,同時剝除00,剩餘86-10-88880000-1000,同時尋找北美中心局交換機IP地址建立呼叫路由
- 在北美中心局,轉發至中國中心局,剝除86,剩餘10-88880000-1000,同時建立呼叫路由
- 到中國中心局,轉發至北京市中心局,剝除10,剩餘88880000-1000,同時建立呼叫路由
- 到北京中心局,發到公司語音交換機,剝除88880000,剩餘1000
- 用戶電話振鈴
- 接聽,傳輸語音數據
- 呼叫結束,拆除連接
由此可以看到,每一步的號碼是多少位、怎麼識別,完全是由所在地的語音交換機自行決定的,所以電話號碼位數是可以變更的。你經常能收到來自網路上不規則號碼撥打的騷擾電話,就是這個原因。
IPv4當然可以升級,關鍵問題不是技術,是誰來買單。
電話系統可以認為是一個集中式系統:用戶有個終端(電話機),除此以外是各級電話交換設備。一個地區的電話交換設備由該地區電信運營商統一管理,該地區所有電話都要經過這些設備。要升級了,電信運營商把自己的設備一換,對外發個通知,就搞定了。應對升級,用戶不需要更換電話機,所有代價只是撥號的時候多按一個數字,僅此而已。
IP網路則天然是一個分散式系統:用戶有個終端(電腦或手機),除此以外是各級交換和路由設備。只有部分路由器由電信運營商統一管理,互聯網上的數據也只有一部分經過電信運營商的路由器。大量路由設備散落在民間,即使電信運營商願意升級,企業和老百姓還不願意花錢呢。
所以,別說是32位升40位這種野路子方法了,就算是標準化多年信誓旦旦取代IPv4的IPv6標準,這些年又普及了多少呢?
前面很多人都提到了為什麼不能隨意改變位長的原因了。關鍵是ip通信比以前的電話通信複雜太多了。IPv4到IPv6的升級比電話升號位複雜程度和影響面廣度大很多!但其實我國現在已經具備v6的升級條件了,運營商在網設備大多數都已經支持v6了,終端也基本都支持v6。但為什麼一直都不推呢?我覺得有幾方面原因。1.升級到v6後不利於「國家層面對網路監控」,這也是工信部沒有推行v6比較重要的原因,如果工信部發話強推v6相信絕對不會像現在這樣。2.在網設備即使支持v6,但實際使用v6時性能相比v4會有很大幅度下降(接近50%)。3.各種nat技術的出現,且nat的性能也非常強,現在運營商(特別是手上IP資源較少SP)都不給普通上網用戶分配公網ip了,需求量進一步下降。4.其他國家和地區v6普及率低。
相信IPv6就能解決你說的問題,但它不能像電話一樣這麼容易升級,更多的不是技術/協議的限制,而是成本和時間的問題。
試想一下,所有現網內的中大小型企業要重新投入購買支持IPv6的設備,這在時間和成本上都是不那麼現實的一件事情。所以只能等目前市面上的主流設備到了生命周期(我相信過了生命周期也還是會很多人繼續用舊設備的,因為便宜啊!)更換成支持新協議的設備之後,才能慢慢談這個升級的步驟。
更重要的是,IPv4的地址不夠用,好像暫時沒有影響運營商的蛋糕啊……
這個就是協議設計上的敗筆,沒考慮地址擴展能力,想當然的認為40多億地址足夠用,地址長度定死了,結果全世界互聯網企業個人都為此付出巨大的代價。
其實是這樣,電話號碼在你整個通話過程中只用一次,那就是你撥號的時候查一次。打個比方的話,類似於你網遊的登陸用戶名密碼,隨便改,現網涉及到要改的東西很少。IPv4不行,每一個數據報文轉發都需要通過三層設備查詢IP路由表來完成,你一個1G bps的光纖鏈路,以125位元組的速率傳送數據,數據包速率達到了1m pps,每秒100萬包,這個速率下每個包過三層設備時都需要查一次IPv4的路由表,用定長地址,那就搞個32bit的模具(asic)往那套,套進來的就是地址,我不用考慮其它情況,如果用變長IPv4地址。。。費時費力不討好,好一點說就是增加轉發延遲,不好了說就是網路不可用。即便下一代的IPv6,也是定長64bit的。
就算現在技術上可以按你說的升級到64位IPv4地址,那現網設備也100%支持不了,有的甚至軟體都更新不了,到現在現網還有很多不支持IPv6的設備呢。要升級的話,誰來出這筆錢?運營商可不願意花錢把還在掙錢的設備扔掉換新的。所以現在要把數傳網路的基石IPv4改一改,比登天還難。原因就是現網裡現在運行著數以萬計的設備,它們只認識現在的IPv4。
使用IPV4協議的設備太多了,沒有自動更新功能的情況下全部更新一遍要耗費的時間太多了
你說的有道理,我資瓷你
去干吧
32位和64位不是簡單的升級關係,你能兼容完全是因為微軟爸爸秒天秒地好不好!
推薦閱讀:
※電腦是怎麼通過ip找到對應的終端的?
※網路傳輸時通過ip可知下一個的mac地址,但我最開始只知道最終的ip那麼中途的ip和mac怎麼確定呢?
※為什麼每台電腦都要設置子網掩碼?
※一區域網內有 5 台電腦,其中一台是固定 IP,經常會上不去網,這是為什麼?
※黑客攻擊某台機器時,隱藏自己的IP的方法有幾種?相比較哪種更難以追蹤?