ipv6子网前缀长度怎么填_IPv6学习笔记

848ef277c4781eccc214cb01d616cd2f.gif

b479adb982d0531240c089f0cd576f63.png

IPv6协议

ec6f580c1781bdfd220cf84ce82185d3.png

整体来看,IPv6协议相比IPv4, 格式上简洁很多:

  • IPv6报文头部是定长(固定为40字节),IPv4报文头部是变长的。这个意味着,写代码处理IPv6数据报文的效率会提高很多:);

  • IPv6中Hop Limit字段含义类似IPv4的TTL;

  • IPv6中的Traffic Class字段含义类似IPv4中的TOS(Type Of Service);

  • IPv6的报文头部取消了校验和字段:取消这个字段也是对IPv4协议的一个改进。当IPv4报文在网路间传输,每经过一个路由器转发就是修改TTL字段,就需要重新计算校验和,而由于数据链路层L2和传输层L4的校验已经足够强壮,因此IPv6取消这个字段会提高路由器的转发效率。值得一提的是,在IPv6协议下,传输层L4协议UDP、TCP是强制需要进行校验和的(IPv4是可选的);

  • IPv6报文头部中的Next Header字段表示“承载上一层的协议类型”或者“扩展头部类型”。

IPv6的地址语法

26c8266d34e5093e81cf5fbb352d77a8.png

一个IPv6的地址使用冒号十六进制表示方法:128位的地址每16位分成一段,每个16位的段用十六进制表示并用冒号分隔开,例如一个普通公网IPv6地址:

2001:0D12:0000:0000:02AA:0987:FE29:9871

IPv6地址支持压缩前导零的表示方法,例如上面的地址可以压缩表示为:

2001:12:0:0:2AA:987:FE29:9871

为了进一步精简IPv6地址,当冒号十六进制格式中出现连续几段数值0的位段时,这些段可以压缩为双冒号的表示,例如上面的地址还可以进一步精简表示为:

2001:12::2AA:987:FE29:9871

又例如IPv6的地址FF80:0:0:0:FF:3BA:891:67C2可以进一步精简表示为:

FE80::FF:3BA:891:67C2

这里值得注意的是:双冒号只能出现一次。

IPv6地址前缀表示法

IPv6支持子网前缀标识方法,类似于IPv4的无分类域间路由CIDR机制(注意:IPv6没有子网掩码mask的概念)。

使用IPv6地址/前缀长度表示方法,例如:

2001:C3:0:2C6A::/64表示一个子网;

而2001:C3:0:2C6A:C9B4:FF12:48BC:1A22/64表示该子网下的一个节点地址。

IPv6寻址模式

  • 单播 : 跟ipv4单播一致,在单播寻址模式下,IPv6接口(host)在网段中唯一标识。IPv6数据包包含源IP地址和目标IP地址。主机接口配备有在该网络段中唯一的IP地址。

  • 多播 : IPv6组播模式与IPv4相同。目的地为多个主机的数据包在特殊的多播地址上发送。所有对该组播信息感兴趣的主机需要首先加入该组播组。加入组的所有接口接收组播数据包并对其进行处理,而对组播数据不感兴趣的其他主机则忽略组播信息。

  • 任播 : IPv6引入了一种新型的寻址,称为Anycast寻址。在此寻址模式下,多个接口(host)被分配相同的任播IP地址。当主机希望与配备有任播IP地址的主机通信时,它发送单播消息。在复杂的路由机制的帮助下,在路由成本方面,该单播消息被递送到最接近发送方的主机。

IPv6没有广播地址,用组播地址实现广播的功能。

IPv6单播地址

  • 全球单播地址:前缀2000::/3,相当于IPv4的公网地址。这种地址在全球的路由器间可以路由。

  • 链路本地地址:前缀FE80::/10Windows和Linux支持或开启IPv6后,默认会给网卡接口自动配置一个链路本地地址。也就是说,一个接口一定有一个链路本地地址。

  • 唯一本地地址前缀:FC00::/7前缀FC00::和 FD00::的IPV6地址,相当于IPv4的私网地址10.0.0.0、172.16.0.0、192.168.0.0。

  • 回环地址:::1等同于IPv4的127.0.0.1。

面向IPv6的应用开发

Golang服务端

package main
import (
"fmt"
"net"
"net/http"
)
func main() {
var err error
http.Handle("/", &helloHandler{})
// 监听本地IPv4地址的8083端口
// err = http.ListenAndServe(":8083", nil)
// 监听指定IPv6地址的8083端口
// err = http.ListenAndServe("[2604:180:3:dd3::276e]:8083", nil)
// 同时监听本地IPv4和IPv6地址的8083端口
err = ListenAndServe(":8083", nil)
if err != nil {
fmt.Println(err)
}
}

Curl客户端

curl "http://[2604:180:3:dd3::276e]:8083"
curl -g -6 'http://[2604:180:3:dd3::276e]:8083/'

Python UDP服务端:

import socket
UDP_IP = "::" # = IPv4 0.0.0.0
UDP_PORT = 5005
sock = socket.socket(socket.AF_INET6, # Internet
socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))
while True:
data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
print "received message:", data

Python UDP客户端:

import socket
UDP_IP = "::1" # localhost
UDP_PORT = 5005
MESSAGE = "Hello, World!"
print "UDP target IP:", UDP_IP
print "UDP target port:", UDP_PORT
print "message:", MESSAGE
sock = socket.socket(socket.AF_INET6, # Internet
socket.SOCK_DGRAM) # UDP
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))

上海艾磊科技有限公司专门为企业提供IT咨询,IT外包,系统集成,以及各类IT增值服务。其中增值服务包括OFFICE 365云服务,鼎捷企业ERP管理软件,云备份,企业邮箱,无线覆盖,上网行为管理,VPN架设,网络安全服务,INTERNET接入,设备租赁, IP电话服务

9766445cd7a94076d79a8b92d147ca92.png

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IPv4 包头为12字段 (点分十进制) IPv6 包头为8字段 (冒号分16进制) 共8个小节,每小节4个16bit IPV6地址=前缀+接口标识 <为何要部署IPV6> ·IPv4的局限性: 1.地址空间的局限性:IP地址空间的危机由来已久,并正是升级到IPv6的主要动力。 2.安全性:IPv4在网络层没有安全性可言,安全性一直被认为是由网络层以上的层负责。 3.自动配置:对于IPv4节点的配置比较复杂,让很多普通用户无所适从。 4.NAT:破坏了Internet端到端的网络模型。 5.由于IPv4地址分配杂乱无章,没有层次性,网络设备需要维护庞大的路由表项。 6.IPv4包头过于复杂,使得网络节点处理的效率不高。 IPV6的好处: 1、超大的地址空间 2、全球可达性,不需要再用NAT 3、全球重新部署,有规划,易于实现聚合 4、能自动配置,实现即插即用 5、方便的进行重编址 6、包头简单,通过扩展包头技术可实现以后的新技术扩展 (基本包头 + n多个扩展包头) ipv4 路由转发的时候,ip包会改变checksum(校验和) 和TTL(每经过一个路由器TTL值减一) ipv6 只变TTL,没有校验和 CPU现在无法实现128位的转发。 最好只是64位的。 ·Theoretical limit: 4.3 billion (十亿) 43亿 Practical limit : 250 million (百万) 2.5亿 Over 420 million Internet in Y2001 (less than 10% of the worldwide population) 没有广播,组播代替广播。所以没有ARP。 IPv4中的广播(broadcast)可以导致网络性能的下降甚至广播风暴(broadcast storm).在IPv6中,就不存在广播这一概念了,取而代之的是组播(multicast)和任意播(anycast),任意播也称为泛播. IPV6在以太网中的协议ID值是0x86DD <IPV6地址的表示方法> ·IPv4 点分十进制 32bit IPv6 冒号分十六进制 128bit 0000:0000:0000:0000:0000:0000:0000:0000=>:: 0000:0000:0000:0000:0000:0000:0000:0001=>0:0:0:0:0:0:0:1=>::1 2001:0000:0000:1234:0000:0000:0567:00ff=>2001::1234:0:0:567:ff 只能有一个:: fe80:0000:0000:0000:0000:0000:0000:0009=>fe80::9 URL的IPV6地址表示 为了区分IPV6地址中的冒号和端口号前的冒号,要把IPV6地址用[]括起来 www.example.net:8080/index.html https:[2001:410:0:1:250:fcee:e450:33ab]:8443/abc.html IPV6中掩码的表示: 在IPV6中掩码只能使用CIDR表示法 2001:410:0:1::45ff/128 2001:410::1/64 注意:在IPV6中没有广播地址和网络号保留地址 ------------------------------------------------------------------------------------------ <IPV6的地址类型> 可分为三大类: 1、单播地址 2、组播地址 3、任意播地址 单播--Unicast : one to one ·单播地址用于一对一的连接 ·IPv6单播地址有以下六种类型:  1-Aggregate Global Unicast Address 2xxx:xxxxx/3 - 3FFF: :FFFF 2001::/16 IPV6因特网地址 2002::/16 6to4过渡地址 2-Link Local Address    FE80::/10 (前10位以FE80开头) 3-Site Local Address (Private) FEC0::/10 4-Unspecified Address   0:0:0:0:0:0:0:0/128 => :

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值