C++ ipv6向后兼容ipv4吗?
我有一个使用ipv4编写的udp示例程序。如果我将代码改为ipv6,我是否仍然能够与使用ipv4地址的侦听器的任何人通信?我正在研究在C++ ipv6向后兼容ipv4吗?,c++,udp,ipv6,ipv4,C++,Udp,Ipv6,Ipv4,我有一个使用ipv4编写的udp示例程序。如果我将代码改为ipv6,我是否仍然能够与使用ipv4地址的侦听器的任何人通信?我正在研究在 我不确定简单地修改代码是否能确保它工作,或者我是否必须以双堆栈模式编写它 IPv4和IPv6天生不兼容。 有几个基本原因: 地址空间完全不同(IPv6有128位地址,IPv4有32位地址) IPv6的协议头与IPv4的协议头完全不同。如果您试图将IPv6数据包解析为IPv4,您将得到无意义的结果 这样做的明显结果是,如果打开IPv6套接字,则无法使用IPv
我不确定简单地修改代码是否能确保它工作,或者我是否必须以双堆栈模式编写它 IPv4和IPv6天生不兼容。
有几个基本原因:
- 地址空间完全不同(IPv6有128位地址,IPv4有32位地址)
- IPv6的协议头与IPv4的协议头完全不同。如果您试图将IPv6数据包解析为IPv4,您将得到无意义的结果
这样做的明显结果是,如果打开IPv6套接字,则无法使用IPv4套接字侦听它。IPv4和IPv6本质上是互不兼容的。
有几个基本原因:
- 地址空间完全不同(IPv6有128位地址,IPv4有32位地址)
- IPv6的协议头与IPv4的协议头完全不同。如果您试图将IPv6数据包解析为IPv4,您将得到无意义的结果
这样做的明显结果是,如果打开IPv6套接字,则无法使用IPv4套接字侦听它。是和否。。。IPv6确实包含完全不同的寻址,因此您必须重新编码应用程序,以使用可选的头和结构大小
但是,IPv4地址范围在IPv6中可用,语法是在标准地址之前添加两个冒号(例如:10.11.12.13)。你也可以 是和否。。。IPv6确实包含完全不同的寻址,因此您必须重新编码应用程序,以使用可选的头和结构大小
但是,IPv4地址范围在IPv6中可用,语法是在标准地址之前添加两个冒号(例如:10.11.12.13)。你也可以 并非没有网络中的辅助,即使这样,通信也将受到网络地址转换网关引入的限制。对于面临类似决策的程序员,传统的建议是建议同时支持IPv4和IPv6。如果没有网络中的A的帮助,即使这样,通信也会受到网络地址转换网关引入的限制。对于面临类似决策的程序员,传统的建议是建议同时支持IPv4和IPv6。只有在您只知道其IPv4地址的情况下,如果希望向计算机发送IPv6数据包,则该地址范围才真正有用。但是,如果另一台计算机不理解IPv6,则您发送到::10.11.12.13的v6数据包仍将丢失。正确的语法实际上是
::ffff:n.n.n
。与IPv4兼容的IPv6地址已被弃用,并且无论如何都无法用于IPv4和IPv6应用程序之间的通信。只有在您只知道其IPv4地址的情况下,如果要向计算机发送IPv6数据包,该地址范围才真正有用。但是,如果另一台计算机不理解IPv6,则您发送到::10.11.12.13的v6数据包仍将丢失。正确的语法实际上是::ffff:n.n.n
。IPv4兼容的IPv6地址已被弃用,并且无论如何都无法用于IPv4和IPv6应用程序之间的通信。这是完全正确的,但会产生误导。IPv6应用程序可以通过多种方式与仅IPv4的主机通信。事实并非如此。也可以在IPv6套接字上侦听来自IPv4应用程序的连接。这是严格正确的,但有误导性。IPv6应用程序可以通过多种方式与仅IPv4的主机通信。事实并非如此。还可以在IPv6套接字上侦听来自IPv4应用程序的连接。