Node.js源碼中,爲何會首選binding ipv6 ? 【精簡小知識】

​寫這篇文章的原由,在閱讀Node.js源碼的關鍵環節,看到了這行代碼web

意思就是調用listen函數監聽端口的最終是調用了這個函數安全

藉此我找到了CVTE技術經理,張師傅,張師傅給個人回覆:網絡

因而我點開了翻譯,肯定了一下大概意思: 函數

意思是說,ipv4套接字沒法接受ipv6包加密

讓咱們一塊兒看看某度是怎麼說ipv4和ipv6的區別的:spa

1.地址空間不一樣,IPv4中規定IP地址長度爲32,而IPv6中IP地址的長度爲128翻譯

2.路由表大小不一樣,IPv6的路由表相比IPv4的更小。blog

3.IPv6的組播支持以及對流的支持要強於IPv4。接口

4.安全性不一樣,IPv6的安全性更高,在使用IPv6的網絡時,用戶可對網絡層的數據進行加密。ip

5.協議擴充不一樣,IPv6容許協議進行擴充而IPv4不容許。

打開wireshark抓包

咱們看ip頭部的信息,0100表明ipv4

0110表示IPv6

當IPv4接口接收到IPv6的數據包的時候會自動丟棄。在開啓IPv6協議的路由器上會自動識別IP數據包的版本,並做須要處理。對於通常的電腦網卡,只要開啓IPv6協議就能夠處理IPv6數據包。

這也印證了那句英語的後半句:

這樣你應該就搞明白了,爲何源碼中會是這樣寫了呢。


目前ipv4和ipv6實現雙協議棧通訊的三種方式:

ipv4與ipv6差別
  1. 雙IP層技術

 雙IP層是保持IPv6與IPv4互操做性的最直接方式。適用於Internet有IPv4向IPv6過渡的前期。具備雙IP層的節點成爲IPv4/IPv6節點。它具備兩個IP協議的完整實現。

2. 隧道技術

  隧道技術適用於Internet有IPv4向IPv6過渡的中期。其原理是兩個IPv6的網絡之間的中間網絡的多協議路由器接收到源主機的IP包時,將其放入中間網絡層數據包在和域中,當其到達中間網絡另外一端多協議路由器時再恢復源IP包並轉發到目的主機,這樣整個中間網絡就像一條隧道。

3. 報頭翻譯技術

  當Internet中只有極少數IPv4節點時(過渡階段後期),報頭翻譯技術能夠保持IPv6與IPv4節點間的通信。向IPv4節點發送消息時,路徑上最後一個IPv6/IPv4路由器發現目的地址是IPv4映射地址則進行報頭翻譯,將IPv6報頭替換成IPv4報頭,並轉發到目的IPv4節點。

接下來,我將會寫webAssebmly在項目中的實踐、Node.js核心源碼解析,以爲寫得不錯,能夠點個在看,謝謝

相關文章
相關標籤/搜索