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核心源码解析,以为写得不错,能够点个在看,谢谢

相关文章
相关标签/搜索