前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Node.js源码中,为什么会首选binding ipv6 ? 【精简小知识】

Node.js源码中,为什么会首选binding ipv6 ? 【精简小知识】

作者头像
Peter谭金杰
发布2020-05-09 17:31:50
1.2K0
发布2020-05-09 17:31:50
举报

​写这篇文章的起因,在阅读Node.js源码的关键环节,看到了这行代码

意思就是调用listen函数监听端口的最终是调用了这个函数

借此我找到了CVTE技术经理,张师傅,张师傅给我的回复:

于是我点开了翻译,确定了一下大概意思:

意思是说,ipv4套接字无法接受ipv6包

让我们一起看看某度是怎么说ipv4和ipv6的区别的:

1.地址空间不同,IPv4中规定IP地址长度为32,而IPv6中IP地址的长度为128

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

3.IPv6的组播支持以及对流的支持要强于IPv4。

4.安全性不同,IPv6的安全性更高,在使用IPv6的网络时,用户可对网络层的数据进行加密。

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档