SlideShare une entreprise Scribd logo
1  sur  52
下一代网络协议
 ----IPv6 简介



shanwei88@gmail.com
目录

 TCP/IP 概述
 IPv6 概述
 IPv6 地址结构
 IPv6 应用
 网络编程



              2
TCP/IP 概述
 互联网发展历史
 OSI 模型
 TCP/IP 模型
 TCP/IP 协议族
 数据的发送
 数据的接收




               3
互联网发展历史
 1 969 年,为了能在爆发核战争时保障通信联络,美国国防部高级研究计划
  署 ARPA 资助建立了世界上第一个分组交换试验网 ARPAN E T ,连接美国四
  个大学。 ARPAN E T 的建成和不断发展标志着计算机网络发展的新纪元。

 70 年代末到 80 年代初,计算机网络蓬勃发展,各种各样的计算机网络应运
  而生,如 MILN E T 、 U S E N E T 、 B ITN E T 、 C S N E T 等,在网络的规模和数
  量上都得到了很大的发展。一系列网络的建设,产生了不同网络之间互联的
  需求,并最终导致了 TC P/IP 协议的诞生。

 1 980 年, TC P/IP 协议研制成功。 1 982 年, ARPAN E T 开始采用 IP 协议
  。

 1 986 年,第一个互联网产生。美国国家科学基金会 N S F 资助建成了基于
  TC P/IP 技术的主干网 N S FN E T ,连接美国的若干超级计算中心、主要大学
  和研究机构,并迅速连接到世界各地。



                                4
互联网发展历史
 90 年代,随着 We b 技术和相应的浏览器的出现,互联网的发展和应用出现
  了新的飞跃。

 1 995 年以来,互联网用户数量呈指数增长趋势,平均每半年翻一番。
  截至 2009 年底,约有 1 7 亿人上网,占世界人口的 26% 。

 1 995 年未, IE TF 提交了第一份关于 IPv6 的文档 RFC 1 883 。经过不断改进
  ,到了 1 998 年, IPv6 相应的 RF C 才逐渐成为标准。




                          5
OSI 模型 ( 一 )

                    提供协议使得一个系统的进程连接到另一个系统的进
                    程成为可能。换句话说,在这一层,运行在一台主机
                    上的两个不同程序可以各自连接到不同主机上运行的
                    不同程序。

                    提供协议使得系统之间可以通信,它把系统而不仅仅
                    是网络接口连接到一起。正是在这一层,通信被认为
                    发生在系统间而不只是在网络接口间。这一层需要考
                    虑如何在位于两个不同网络的两个不同节点间传送
                    数据。

                    增加了协议,用于解释物理媒体上传输的数据,其中
                    包括可靠性和重传等功能。在这一层,系统间的通信
                    通过直接连接到网络的实际网络接口来实现。

                    代表数据转移时的真正媒体。系统通过物理层彼此间
                    发送原始电脉冲或其他合适的信号。在这一层,系统
     网络互联的 OSI 模型   间的通信通过与物理媒体的连接得以实现。




                     6
OSI 模型 ( 二 )

                    定义实际程序如何使用网络交互。例如,某个网络程
                    序的应用协议可以定义来自用户的输入类型或远端设
                    备响应的输出类型。

                    在这一层,不同的系统将自己的数据翻译为彼此都能
                    接受和理解的格式。在完全不同的系统上运行的程序
                    必须使用所有系统都能理解的标准格式,而这种翻译
                    就发生在这一层。

                    处理连接的流和定时。正是在这一层,管理连接的实
                    际结构— — 不论发送方是否在发送数据而接收方是否
                    在接收数据。




     网络互联的 OSI 模型




                     7
TCP/IP 模型 ( 一 )




                  8
TCP/IP 模型 ( 二 )
 数据链路层 ( 又称为网络接口层 ) :连接在同一网络上的系统彼此之间可以
  通信。在这一层上通信的系统不一定相同,因为两个不同网络上的系统不能
  直接在这一层通信,而在其他层通信的系统则要保持一致。

 网际层 ( 又称为网络层 ) :系统通信的层次。这一层的数据传输单元在地址
  信息之后包含一些净荷数据。换句话说,数据可视为仅仅是从源系统发送到
  目的系统。两个系统可以用多种不同的方法交互,但是至少在这一层,可将
  来自不同的应用层交互的数据仅仅视为具备相同的源地址和目的地址,而无
  需立即进行区分。

 传输层:进程间通信的层次。正是在这一层,两个通信系统间可以具有多个
  业务流。

 应用层:用户 ( 无论是个人还是程序 ) 间通过网络应用进行交互的层次。




                   9
TCP/IP 模型 ( 三 )

                                        用户进程
 应用层              F TP 协议
       FTP 客户               F TP 服务器


 传输层              TC P 协议
        TC P                  TC P
                                        内核
 网络层               IP 协议
         IP                    IP

 链路层    以太网       以太网协议
                    局域网上运行 F TP 的两台主机
                             以太网
       驱动程序                 驱动程序
                   以太网




                      10
TCP/IP 协议族

   ping          ssh         telnet           ftp      应用层



                       TCP              UDP            传输层



          ICMP                IP                IGMP   网络层



          ARP                硬件接口               RARP   链路层



                               媒体

                                   11
数据的发送

                                用户数据
                                               应用程序
                    App 首部 用户数据
                                                TCP
              TCP 首部     用户数据
                        TCP 段                   IP

         IP 首部 TCP 首部    用户数据
                                               以太网
                    IP 数据报
                                               驱动程序
 以太网首部 IP 首部 TCP 首部       用户数据         以太网尾部
   14    20     20
                     以太网帧                      以太网
                  46 ~ 1500 字
                       节


                          12
数据的接收




        以太网数据帧的分用过程

             13
目录

 TCP/IP 概述
 IPv6 概述
 IPv6 地址结构
 IPv6 应用
 网络编程



              14
IPv6 概述
 IPv4 的局限


 IPv4 报头


 IPv6 报头


 IPv6 扩展报头


 IPv6 的特性


 IPv4 与 IPv6 的比较


                    15
IPv4 的局限
 IPv4 地址空间不足
 2011 年 2 月,全球互联网数字分配机构( IANA )宣布,全球 IPv4 地址已
 经耗尽。 4 月 15 日,亚太网络信息中心 (APNIC) 宣告 IPv4 地址发罄。


 没有提供通用的 IP 级的安全性解决方案
 IPsec 方案,并非在协议 IPv4 内定义,但被 IPv6 集成。


 有限的服务质量 (QoS) 支持
    协议本身未考虑 Qos , IPv6 协议本身提供流标记域。


 手工配置比较复杂
 IPv6 即插即用,移动便捷。



                       16
IPv4 报头 ( 一 )

 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service|             Total Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Identification         |Flags|     Fragment Offset    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live |      Protocol    |        Header Checksum       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Source Address                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Destination Address                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Options                    |    Padding    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+




                                17
IPv4 报头 ( 二 )
 Version           版本
 IHL               Internet 报头长度
 Type of Service             服务类型
 Total Length      总长度
 Identification 、 Flags 、 Fragment Offset 标识、标
  志、片段偏移
 Time to Live       生存时间
 Protocol           协议
 Header Checksum             报头检验和
 Source Address              源地址
 Destination Address         目标地址
 Options           选项

                         18
IPv6 报头 ( 一 )
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
   Version| Traffic Class |            Flow Label                 |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |         Payload Length         | Next Header |    Hop Limit   |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                                                               |
  +                          Source Address                       +
  |                                                               |
  +                                                               +
  |                                                               |
  +                                                               +
  |                                                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                                                               |
  +                       Destination Address                     +
  |                                                               |
  +                                                               +
  |                                                               |
  +                                                               +
  |                                                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                    19
IPv6 报头 ( 二 )
 版本  =6
 通信流类型    ( 类似于 IPv4 服务器类型字段 )
 流标签
 有效载荷长度    < 65535
 下一个报头
 跳限制
 源地址
 目标地址




                      20
IPv4 和 IPv6 报头比较

 IPv4 报头字段          IPv6 报头字段
 版本= 4             =6
 Internet 报头长度    已经弃用
 服务类型             由通信流字段取代
 总长度              由有效载荷字段取代
 标识、标志、片段偏移       弃用
 生存时间             由 IPv6 跳限制取代
 协议               由下一个报头字段取代
 报头检验和            IPv6 已弃用
 源、目标地址 (32 位 )    128 位
 选项               IPv6 已弃用。由扩展报头取代




                      21
扩展报头
 RFC2460 规定的 IPv6 扩展报头 :
  逐跳选项报头
  目标选项报头
  路由报头
  分片报头
  身份验证报头
  封装安全有效载荷报头




                      22
扩展报头
 IPv6 报头以及 0 个或多个扩展报头中的下一个报头字段 , 组成
  一个指针链表


     IPv6 报头
    下一个报头 =6               TCP 段
       (TCP)

    IPv6 报头     路由报头
   下一个报头 =43   下一个报头 =6            TCP 段
     ( 路由 )      (TCP)

    IPv6 报头     路由报头        身份验证报头
   下一个报头 =43   下一个报头 =51    下一个报头 =6       TCP 段
     ( 路由 )      (AH)         (TCP)



                     23
IPv6 的特性
 扩展了寻址能力
IPv6 将 IP 地址长度从 32 位扩展到 1 28 位,支持更多级别的地址层次、
更多的可寻址节点数以及更简单的地址自动配置。

 简化了报头格式
一些 IPv4 报头字段被删除或变为了可选项,以减少包处理中例行处理的消耗并
限制 IPv6 报头消耗的带宽;

 改进了扩展报头和选项
IP 报头选项编码方式的改变可以提高转发效率,使得对选项长度的限制
更宽松,且提供了将来引入新的选项的更大的灵活性;

   增加了标识流的能力 ( Q o S )

 增加了认证和加密的能力
IPv6 中指定了支持认证、数据完整性和(可选的)数据机密性的扩展功能。
                          24
IPv4 与 IPv6 的比较 ( 一 )

         IPv4                    IPv6

   源、目标地址长度为 32 位         源、目标地址长度为 128 位


   对 IPSec 的支持是可选的           必须支持 IPSec

                          添加流标签,路由器可以进行
     无法进行 QoS 管理
                               QoS 管理

   数据包的分片在发送主机和
                          分片只能在发送主机上进行
  路由器上进行,降低路由性能

  链路层数据包没有要求,必须       链路层支持 1280 字节数据包,
   能重组 576 字节的数据包     必须能重组 1500 字节的数据包

                     25
IPv4 与 IPv6 的比较 ( 二 )

         IPv4                     IPv6
   使用 ARP 将 IP 地址解析为
                            ARP 被邻居发现协议取代
        链路层地址

 使用 IGMP 来管理本地子网组成员         IGMP 被 MLD 协议取代

    必须手动或者使用 DHCP
                            IPv6 地址可以自动配置
     来配置 IPv4 地址




                       26
目录

 TCP/IP 概述
 IPv6 概述
 IPv6 地址结构
 IPv6 应用
 网络编程



              27
IPv6 地址结构
 IPv6 的地址空间


 IPv6 的地址表示法


 IPv6 的地址类型
  单播地址
  多播地址
  泛播地址




                28
IPv6 的地址空间
 地址长度 128 位


 2128 = 3.4×1038 个可能地址,地球上每平方米拥有 6.65×1023
  个 IPv6 地址。

 地址分配
 分配             前缀                   格式

 未指定的地址          00...0 (128 bits)   ::/128
 回环地址            00...1 (128 bits)   ::1/128
 多播地址            11111111            FF00::/8
 链路本地单播地址        1111111010          FE80::/10
 全局地址           ( 其余的 )




                        29
IPv6 的地址表示法
 冒号十六进制表示法

  128   位地址按每 16 位划分为一个位段 :
  0010000111011010 0000000011010011
  0000000000000000 0010111100111011
  0000001010101010 0000000011111111
  1111111000101000 1001110001011010
 21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A


  使用前导零压缩法进行简化 :
   21DA:D3:0:2F3B:2AA:FF:FE28:9C5A


                        30
IPv6 的地址表示法
 零压缩法


  FE80:0:0:0:2AA:FF:FE9A:4CA2
 FE80::2AA:FF:FE9A:4CA2



    有效零不能被压缩
     FF02:30:0:0:0:0:0:5  FF02:30::5 而不是 FF02:3::5

    单个地址只能使用一次
     FF02:3:0:0:1:0:0:5 不能写成 FF02:3::1::5


                           31
IPv6 的地址表示法

 兼容 IPv4 的表示法 x1:x2:x3:x4:x5:x6:d.d.d.d
  1. IPv4 映射的 IPv6 地址( ::FFFF:d.d.d.d )
      例 : 10.167.143.117 --> ::FFFF:10.167.143.117


  2. IPv4 兼容的 IPv6 地址 (::d.d.d.d)
      例 : 10.167.143.117 --> ::10.167.143.117


 IPv6 前缀
  21DA:D3:0:2F3B::/64 子网前缀




                                 32
IPv6 的地址类型
 单播地址
  标识单个接口


 多播地址
  标识零个或多接口


 任播地址
  标识多个接口中的任一个




                 33
单播 IPv6 地址
 全球单播地址 ( 例如: 3ffe : )
      全球范围内路由可达                             MAC 地址 (48 bits): 00:0D:87:96:E7:18
| n bits       |           64-n bits      EUI-64 地址 (64bits): 00:0D:87:FF:FE:96:E7:18
                                           |             64 bits              |
+--------------+---------------------------+-----------------------------+
                                          接口标志符: 02:0D:87:FF:FE:96:E7:18
| 全球路由前缀 |                  子网 ID            |          接口标志符
                                                    (020D:87FF:FE96:E718)        |
+--------------+---------------------------+-----------------------------+
                                          u 位为统一 / 本地 :
                                             1 表示由本地管理此地址 ,
 链路本地地址( FE80::/10 )                        0 表示统一管理 ;
      用于同一链路上的邻节点之间和邻节点发现过程
| 10 bits     |              54 bits      |            64 bits          |
+-------------+---------------------------+-----------------------------+
| 11111110 10 | 00000000000000…0000       |         接口标志符                |
+-------------+---------------------------+-----------------------------+

 站点本地地址 (FEC0::/10)
      用于同一机构中的节点之间的通信

 特殊地址
    未指定地址 ( :: ) 0.0.0.0
    回环地址 ( :: 1 ) 1 27.0.0.1

                                             34
多播 IPv6 地址
 用于发送多播通信流


 多播地址总是以 FF 开头


 不能用作源地址或者路由报头中的中间目标地址




                  35
任播 IPv6 地址
 任播地址分配给多个接口
| n bits                                        | 128-n bits      |
+------------------------------------------------+----------------+
| subnet prefix                                 | 00000000000000 |
+------------------------------------------------+----------------+


 数据包被路由转发给匹配了任播地址的接口中距离最近的


 距离用路由来度量




                                     36
IPv4 地址和 IPv6 地址的对应

             IPv4                            IPv6
多播地址 (224.0.0.0/4)               IPv6 多播地址 (FF00::/8)
广播地址                             在 IPv6 中不适用
未指定地址 0.0.0.0                    未指定地址 ::
回环地址是 127.0.0.1                  回环地址 ::1
公共 IP 地址                         全球单播地址
私有 IP 地址 (10.0.0.1/8,            站点本地地址 (FEC0::/48)
172.16.0.0/12, 192.168.0.0/16)
网络位表示法 ( 子网掩码或前缀长                前缀长度符号
度)




                                 37
目录

 TCP/IP 概述
 IPv6 概述
 IPv6 地址结构
 IPv6 应用
 网络编程


              38   Copyright 2010 FUJITSU LIMITED
IPv6 应用
 现状
   1. 技术已不是问题,普及还需时日。
   OS (微软系, Linux 系均支持 IPv6 ),网络设备(交换机,路由器,网关)。
   网络服务提供商,网络内容提供商,网络设备供应商积极参与。

  2. 教育网有试用服务,商业网还未支持。
    预计 2013 年底有小范围试用。

  3. 全球积极推进,中国 80 亿专项资金。

  4. 6.8 ,全球 IPv6 测试日。腾讯网,朋友网已支持 IPv6 。

  5. 中国 IPv6 地址申请量超过日本和德国,仅次于巴西和美国,列第三。
    http://bgp.potaroo.net/iso3166/v6cc.html




                                     39
IPv6 应用                           [root@TN ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth2
                                  DEVICE=eth2
                             BOOTPROTO=static
 地址配置
                             HWADDR=00:0D:87:96:E7:18
MAC 地址: 00:0D:87:96:E7:18    ONBOOT=yes
链路本地地址: fe80::20d:87ff:fe96:e718
                             TYPE=Ethernet

全局地址: 3ffe:501:ffff:101:20d:87ff:fe96:e718
                             IPADDR=192.168.1.19
[root@TN ~]# ifconfig eth2 add 3ffe:501:ffff:101:20d:87ff:fe96:e718
                             NETMASK=255.255.255.0


 路由配置                       IPV6INIT=yes
                             IPV6ADDR=3ffe:501:ffff:101:020d:87ff:fe96:e718/64
[root@TN ~]# ip -6 route add 3ffe:501:ffff:101::/64 dev eth2
[root@TN ~]# ip -6 route show
3ffe:501:ffff:101::/64 dev eth2 metric 1024 mtu 1500 advmss 1440 hoplimit
    4294967295

 连通测试
[root@TN ~]# ping6 -I eth2 3ffe:501:ffff:101:227:19ff:fe9b:3ede
64 bytes from 3ffe:501:ffff:101:227:19ff:fe9b:3ede: icmp_seq=0 ttl=64 time=0.192 ms
64 bytes from 3ffe:501:ffff:101:227:19ff:fe9b:3ede: icmp_seq=1 ttl=64 time=0.147 ms


                                              40
IPv6 应用
 ssh 连接
[root@TN ~]# ssh 3ffe:501:ffff:101:227:19ff:fe9b:3ede
 root@3ffe:501:ffff:101:227:19ff:fe9b:3ede's password:


 查看网络连接
[root@(none) ~]# netstat -at
tcp 0 0 3ffe:501:ffff:101:227:1:ssh 3ffe:501:ffff:101:20d:57013 ESTABLISHED




                                        41
目录

 TCP/IP 概述
 IPv6 概述
 IPv6 地址结构
 IPv6 应用
 网络编程



              42
网络编程
 编程模型
 套接口地址结构
 基本函数
 套接口选项
 IPv4 和 IPv6 的互操性




                     43
编程模型
 TCP 编程模型 :        UDP 编程模型 :




               44
编程模型
简单的示例: TCP 回显程序
Server 端:
root@(none)]# ./tcpserver -A inet6
Recv: 三部二课
Send: [FNST] 三部二课



Client 端:
[root@TN]# ./tcpclient -i eth2 -t fe80::227:19ff:fe9b:3ede -m " 三部二课 "
Send: 三部二课
Recvd:[FNST] 三部二课




                                     45
套接口地址结构
 IPv4                                                   IPv6
struct in_addr {                                        struct in6_addr {
     in_addr_t s_addr; /* 32-bit IPv4 address */             uint8_t s6_addr[16]; /* 128-bit IPv6 address */
};                                                      };


struct sockaddr_in {                                    struct sockaddr_in6 {
     uint8_t sin_len; /* length of structure (16) */         uint8_t sin6_len; /* length of this struct (28) */


     sa_family_t sin_family; /* AF_INET */                   sa_family_t sin6_family; /* AF_INET6 */
                                                             in_port_t sin6_port; /* transport layer port# */
     /* 16-bit TCP or UDP port number */
     in_port_t sin_port;                                     /* flow information, undefined */
                                                             uint32_t sin6_flowinfo;
     /* 32-bit IPv4 address */
     struct in_addr sin_addr;                                struct in6_addr sin6_addr; /* IPv6 address */
                                                             /* set of interfaces for a scope */
     char sin_zero[8]; /* unused */                          uint32_t sin6_scope_id;
};                                                      };
                                                       46
基本函数 (1)
 socket()                                     struct sockaddr {
                                                  uint8_t sa_len;
int socket (int family, int type, int protocol); /* address family: AF_xxx value */
Family:AF_INET,AF_INET6
                                                  sa_family_t sa_family;
Type:SOCK_STREAM, SOCK_DGRAM,SOCK_SEQPACKET,SOCK_RAW
                                                  /* protocol-specific address */
Protocol:IPPROTO_TCP, IPPROTO_UDP, IPPROTO_SCTP
                                                  char sa_data[14];
 connect()                                    };
int connect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen);
 bind()
int bind (int sockfd, const struct sockaddr *myaddr, socklen_t addrlen);
 listen()
int listen (int sockfd, int backlog);
 accept()
int accept (int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen);
 close()
int close (int sockfd);

                                        47
基本函数 (2)
 read()/write()                          MSG_DONTROUTE: 绕过路由表查找 ( 不适用于 rec
                                          MSG_DONTWAIT :本操作非阻塞
ssize_t read(int fd,void *buf,size_t nbyte); 
                                          MSG_OOB :发送 / 接收附加数据
                                          MSG_PEEK :窥看外来消息 ( 不适用于 send)
ssize_t write(int fd,const void *buf,size_t nbytes) ;
                                          MSG_WAITALL :等待所有数据 ( 不适用于 send)
 recv()/send()
ssize_t recv(int fd,void *buf,size_t nbyte, int flags); 
ssize_t send(int fd,const void *buf,size_t nbytes, int flags) ;
 readv()/writev()
ssize_t readv(int filedes, const struct iovec *iov, int iovcnt);
ssize_t writev(int filedes, const struct iovec *iov, int iovcnt);
 recvmsg()/sendmsg()
ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags);
ssize_t sendmsg(int sockfd, struct msghdr *msg, int flags);



                                          48
基本函数 (3)

      函数名                  函数说明                      废弃函数
inet_pton        将字符串地址转化为二进制的地址      inet_aton();
                                      inet_addr();


inet_ntop        将二进制的地址转化为字符串        inet_ntoa();


getaddrinfo      处理从名字到地址以及服务到端口的转换   gethostbyname();
                                      gethostbyaddr();
if_nametoindex   根据接口名获取接口索引值         -


if_indextoname   根据接口索引值获取接口名         -




                            49
套接口选项
 设置 / 获取
int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);
int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);

 选项 (RFC3542)
IPV6_CHECKSUM
IPV6_DONTFRAG
IPV6_NEXTHOP
IPV6_PATHMTU
IPV6_RECVDSTOPTS
IPV6_RECVHOPLIMIT
IPV6_RECVHOPOPTS
IPV6_RECVPATHMTU
IPV6_RECVPKTINFO
IPV6_RECVRTHDR
IPV6_RECVTCLASS
IPV6_UNICAST_HOPS
IPV6_USE_MIN_MTU
IPV6_V6ONLY

                                             50
IPv4 和 IPv6 的互操性
            IPv4 服务器    IPv6 服务器       IPv4 服务器   IPv6 服务器
            IPv4 单栈主机   IPv6 单栈主       双栈主机       双栈主机
                        机
IPv4 客户端
IPv4 单栈主机      IPv4         ×             IPv4       IPv4



IPv6 客户端
                           IPv6            ×         IPv6
IPv6 单栈主机       ×


IPv4 客户端
双栈主机           IPv4         ×             IPv4       IPv4


IPv6 客户端
双栈主机           IPv4        IPv6          ×(★)        IPv6



                                  51
参考文献
 《 UNIX 网络编程(第三版)》


 《 IPv6 详解》


   相关 RFC




                  52

Contenu connexe

En vedette (20)

Linux内核社区开发
Linux内核社区开发Linux内核社区开发
Linux内核社区开发
 
Colonial women
Colonial womenColonial women
Colonial women
 
Joanof arc
Joanof arcJoanof arc
Joanof arc
 
Moriscos Fullet
Moriscos  FulletMoriscos  Fullet
Moriscos Fullet
 
тема 3
тема 3тема 3
тема 3
 
Psychological impact of chronic illness2
Psychological impact of chronic illness2Psychological impact of chronic illness2
Psychological impact of chronic illness2
 
тема 3
тема 3тема 3
тема 3
 
Sojourner truth
Sojourner truthSojourner truth
Sojourner truth
 
Histology (Skin) - Part 1
Histology (Skin) - Part 1Histology (Skin) - Part 1
Histology (Skin) - Part 1
 
Pharmacogenetics
PharmacogeneticsPharmacogenetics
Pharmacogenetics
 
What is csr
What is csrWhat is csr
What is csr
 
Anatomy of the Leg
Anatomy of the LegAnatomy of the Leg
Anatomy of the Leg
 
faktor-faktor memulakan perniagaan
faktor-faktor memulakan perniagaanfaktor-faktor memulakan perniagaan
faktor-faktor memulakan perniagaan
 
Pharmacodynamics revised
Pharmacodynamics   revisedPharmacodynamics   revised
Pharmacodynamics revised
 
The back of the thigh and popliteal fossa
The back of the thigh and popliteal fossaThe back of the thigh and popliteal fossa
The back of the thigh and popliteal fossa
 
Anti cancer drugs
Anti cancer drugsAnti cancer drugs
Anti cancer drugs
 
Histology (Skin) - Part 2
Histology (Skin) - Part 2Histology (Skin) - Part 2
Histology (Skin) - Part 2
 
Gluteal region
Gluteal regionGluteal region
Gluteal region
 
Histology of the breast
Histology of the breastHistology of the breast
Histology of the breast
 
General Mycology
General MycologyGeneral Mycology
General Mycology
 

Similaire à IPv6简介

第3讲 Tcpip协议栈
第3讲 Tcpip协议栈第3讲 Tcpip协议栈
第3讲 Tcpip协议栈
F.l. Yu
 
[圣思园][Java SE]Network
[圣思园][Java SE]Network[圣思园][Java SE]Network
[圣思园][Java SE]Network
ArBing Xie
 
I pv6 ipv6網路管理與安全_企業網路課程_0901
I pv6 ipv6網路管理與安全_企業網路課程_0901I pv6 ipv6網路管理與安全_企業網路課程_0901
I pv6 ipv6網路管理與安全_企業網路課程_0901
宏義 張
 
提高扩展能力的常用模式——黄东
提高扩展能力的常用模式——黄东提高扩展能力的常用模式——黄东
提高扩展能力的常用模式——黄东
programmermag
 
网管会 一些基础知识
网管会 一些基础知识网管会 一些基础知识
网管会 一些基础知识
Jammy Wang
 
防火墙产品原理介绍20080407
防火墙产品原理介绍20080407防火墙产品原理介绍20080407
防火墙产品原理介绍20080407
paulqi
 
I pv6 windows 實做課程_0705
I pv6 windows 實做課程_0705I pv6 windows 實做課程_0705
I pv6 windows 實做課程_0705
宏義 張
 
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕
ideawu
 
如何設定netis路由器的虛擬伺服器?
如何設定netis路由器的虛擬伺服器?如何設定netis路由器的虛擬伺服器?
如何設定netis路由器的虛擬伺服器?
臺灣塔米歐
 
Linux幻灯片教程
Linux幻灯片教程Linux幻灯片教程
Linux幻灯片教程
yixun
 
深入浅出Netty l.t
深入浅出Netty   l.t深入浅出Netty   l.t
深入浅出Netty l.t
oleone
 

Similaire à IPv6简介 (20)

金盾集訓 II
金盾集訓 II金盾集訓 II
金盾集訓 II
 
第3讲 Tcpip协议栈
第3讲 Tcpip协议栈第3讲 Tcpip协议栈
第3讲 Tcpip协议栈
 
[圣思园][Java SE]Network
[圣思园][Java SE]Network[圣思园][Java SE]Network
[圣思园][Java SE]Network
 
I pv6 ipv6網路管理與安全_企業網路課程_0901
I pv6 ipv6網路管理與安全_企業網路課程_0901I pv6 ipv6網路管理與安全_企業網路課程_0901
I pv6 ipv6網路管理與安全_企業網路課程_0901
 
第2讲 Osi分层模型
第2讲 Osi分层模型第2讲 Osi分层模型
第2讲 Osi分层模型
 
如何应用Tcpdump分析应用性能
如何应用Tcpdump分析应用性能如何应用Tcpdump分析应用性能
如何应用Tcpdump分析应用性能
 
提高扩展能力的常用模式——黄东
提高扩展能力的常用模式——黄东提高扩展能力的常用模式——黄东
提高扩展能力的常用模式——黄东
 
网管会 一些基础知识
网管会 一些基础知识网管会 一些基础知识
网管会 一些基础知识
 
SACC2015 ”互联网+“任重而道远-白金&高春辉
SACC2015 ”互联网+“任重而道远-白金&高春辉SACC2015 ”互联网+“任重而道远-白金&高春辉
SACC2015 ”互联网+“任重而道远-白金&高春辉
 
network1
network1network1
network1
 
Linux bonding
Linux bondingLinux bonding
Linux bonding
 
TCP/IP通訊協定
TCP/IP通訊協定TCP/IP通訊協定
TCP/IP通訊協定
 
组网实践
组网实践组网实践
组网实践
 
防火墙产品原理介绍20080407
防火墙产品原理介绍20080407防火墙产品原理介绍20080407
防火墙产品原理介绍20080407
 
I pv6 windows 實做課程_0705
I pv6 windows 實做課程_0705I pv6 windows 實做課程_0705
I pv6 windows 實做課程_0705
 
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕
 
如何設定netis路由器的虛擬伺服器?
如何設定netis路由器的虛擬伺服器?如何設定netis路由器的虛擬伺服器?
如何設定netis路由器的虛擬伺服器?
 
Linux幻灯片教程
Linux幻灯片教程Linux幻灯片教程
Linux幻灯片教程
 
DNS IPv6
DNS IPv6DNS IPv6
DNS IPv6
 
深入浅出Netty l.t
深入浅出Netty   l.t深入浅出Netty   l.t
深入浅出Netty l.t
 

IPv6简介

  • 2. 目录  TCP/IP 概述  IPv6 概述  IPv6 地址结构  IPv6 应用  网络编程 2
  • 3. TCP/IP 概述  互联网发展历史  OSI 模型  TCP/IP 模型  TCP/IP 协议族  数据的发送  数据的接收 3
  • 4. 互联网发展历史  1 969 年,为了能在爆发核战争时保障通信联络,美国国防部高级研究计划 署 ARPA 资助建立了世界上第一个分组交换试验网 ARPAN E T ,连接美国四 个大学。 ARPAN E T 的建成和不断发展标志着计算机网络发展的新纪元。  70 年代末到 80 年代初,计算机网络蓬勃发展,各种各样的计算机网络应运 而生,如 MILN E T 、 U S E N E T 、 B ITN E T 、 C S N E T 等,在网络的规模和数 量上都得到了很大的发展。一系列网络的建设,产生了不同网络之间互联的 需求,并最终导致了 TC P/IP 协议的诞生。  1 980 年, TC P/IP 协议研制成功。 1 982 年, ARPAN E T 开始采用 IP 协议 。  1 986 年,第一个互联网产生。美国国家科学基金会 N S F 资助建成了基于 TC P/IP 技术的主干网 N S FN E T ,连接美国的若干超级计算中心、主要大学 和研究机构,并迅速连接到世界各地。 4
  • 5. 互联网发展历史  90 年代,随着 We b 技术和相应的浏览器的出现,互联网的发展和应用出现 了新的飞跃。  1 995 年以来,互联网用户数量呈指数增长趋势,平均每半年翻一番。 截至 2009 年底,约有 1 7 亿人上网,占世界人口的 26% 。  1 995 年未, IE TF 提交了第一份关于 IPv6 的文档 RFC 1 883 。经过不断改进 ,到了 1 998 年, IPv6 相应的 RF C 才逐渐成为标准。 5
  • 6. OSI 模型 ( 一 ) 提供协议使得一个系统的进程连接到另一个系统的进 程成为可能。换句话说,在这一层,运行在一台主机 上的两个不同程序可以各自连接到不同主机上运行的 不同程序。 提供协议使得系统之间可以通信,它把系统而不仅仅 是网络接口连接到一起。正是在这一层,通信被认为 发生在系统间而不只是在网络接口间。这一层需要考 虑如何在位于两个不同网络的两个不同节点间传送 数据。 增加了协议,用于解释物理媒体上传输的数据,其中 包括可靠性和重传等功能。在这一层,系统间的通信 通过直接连接到网络的实际网络接口来实现。 代表数据转移时的真正媒体。系统通过物理层彼此间 发送原始电脉冲或其他合适的信号。在这一层,系统 网络互联的 OSI 模型 间的通信通过与物理媒体的连接得以实现。 6
  • 7. OSI 模型 ( 二 ) 定义实际程序如何使用网络交互。例如,某个网络程 序的应用协议可以定义来自用户的输入类型或远端设 备响应的输出类型。 在这一层,不同的系统将自己的数据翻译为彼此都能 接受和理解的格式。在完全不同的系统上运行的程序 必须使用所有系统都能理解的标准格式,而这种翻译 就发生在这一层。 处理连接的流和定时。正是在这一层,管理连接的实 际结构— — 不论发送方是否在发送数据而接收方是否 在接收数据。 网络互联的 OSI 模型 7
  • 8. TCP/IP 模型 ( 一 ) 8
  • 9. TCP/IP 模型 ( 二 )  数据链路层 ( 又称为网络接口层 ) :连接在同一网络上的系统彼此之间可以 通信。在这一层上通信的系统不一定相同,因为两个不同网络上的系统不能 直接在这一层通信,而在其他层通信的系统则要保持一致。  网际层 ( 又称为网络层 ) :系统通信的层次。这一层的数据传输单元在地址 信息之后包含一些净荷数据。换句话说,数据可视为仅仅是从源系统发送到 目的系统。两个系统可以用多种不同的方法交互,但是至少在这一层,可将 来自不同的应用层交互的数据仅仅视为具备相同的源地址和目的地址,而无 需立即进行区分。  传输层:进程间通信的层次。正是在这一层,两个通信系统间可以具有多个 业务流。  应用层:用户 ( 无论是个人还是程序 ) 间通过网络应用进行交互的层次。 9
  • 10. TCP/IP 模型 ( 三 ) 用户进程 应用层 F TP 协议 FTP 客户 F TP 服务器 传输层 TC P 协议 TC P TC P 内核 网络层 IP 协议 IP IP 链路层 以太网 以太网协议 局域网上运行 F TP 的两台主机 以太网 驱动程序 驱动程序 以太网 10
  • 11. TCP/IP 协议族 ping ssh telnet ftp 应用层 TCP UDP 传输层 ICMP IP IGMP 网络层 ARP 硬件接口 RARP 链路层 媒体 11
  • 12. 数据的发送 用户数据 应用程序 App 首部 用户数据 TCP TCP 首部 用户数据 TCP 段 IP IP 首部 TCP 首部 用户数据 以太网 IP 数据报 驱动程序 以太网首部 IP 首部 TCP 首部 用户数据 以太网尾部 14 20 20 以太网帧 以太网 46 ~ 1500 字 节 12
  • 13. 数据的接收 以太网数据帧的分用过程 13
  • 14. 目录  TCP/IP 概述  IPv6 概述  IPv6 地址结构  IPv6 应用  网络编程 14
  • 15. IPv6 概述  IPv4 的局限  IPv4 报头  IPv6 报头  IPv6 扩展报头  IPv6 的特性  IPv4 与 IPv6 的比较 15
  • 16. IPv4 的局限  IPv4 地址空间不足 2011 年 2 月,全球互联网数字分配机构( IANA )宣布,全球 IPv4 地址已 经耗尽。 4 月 15 日,亚太网络信息中心 (APNIC) 宣告 IPv4 地址发罄。  没有提供通用的 IP 级的安全性解决方案 IPsec 方案,并非在协议 IPv4 内定义,但被 IPv6 集成。  有限的服务质量 (QoS) 支持 协议本身未考虑 Qos , IPv6 协议本身提供流标记域。  手工配置比较复杂 IPv6 即插即用,移动便捷。 16
  • 17. IPv4 报头 ( 一 ) 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 17
  • 18. IPv4 报头 ( 二 )  Version 版本  IHL Internet 报头长度  Type of Service 服务类型  Total Length 总长度  Identification 、 Flags 、 Fragment Offset 标识、标 志、片段偏移  Time to Live 生存时间  Protocol 协议  Header Checksum 报头检验和  Source Address 源地址  Destination Address 目标地址  Options 选项 18
  • 19. IPv6 报头 ( 一 ) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version| Traffic Class | Flow Label | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Payload Length | Next Header | Hop Limit | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Source Address + | | + + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Destination Address + | | + + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 19
  • 20. IPv6 报头 ( 二 )  版本 =6  通信流类型 ( 类似于 IPv4 服务器类型字段 )  流标签  有效载荷长度 < 65535  下一个报头  跳限制  源地址  目标地址 20
  • 21. IPv4 和 IPv6 报头比较 IPv4 报头字段 IPv6 报头字段 版本= 4 =6 Internet 报头长度 已经弃用 服务类型 由通信流字段取代 总长度 由有效载荷字段取代 标识、标志、片段偏移 弃用 生存时间 由 IPv6 跳限制取代 协议 由下一个报头字段取代 报头检验和 IPv6 已弃用 源、目标地址 (32 位 ) 128 位 选项 IPv6 已弃用。由扩展报头取代 21
  • 22. 扩展报头  RFC2460 规定的 IPv6 扩展报头 :  逐跳选项报头  目标选项报头  路由报头  分片报头  身份验证报头  封装安全有效载荷报头 22
  • 23. 扩展报头  IPv6 报头以及 0 个或多个扩展报头中的下一个报头字段 , 组成 一个指针链表 IPv6 报头 下一个报头 =6 TCP 段 (TCP) IPv6 报头 路由报头 下一个报头 =43 下一个报头 =6 TCP 段 ( 路由 ) (TCP) IPv6 报头 路由报头 身份验证报头 下一个报头 =43 下一个报头 =51 下一个报头 =6 TCP 段 ( 路由 ) (AH) (TCP) 23
  • 24. IPv6 的特性  扩展了寻址能力 IPv6 将 IP 地址长度从 32 位扩展到 1 28 位,支持更多级别的地址层次、 更多的可寻址节点数以及更简单的地址自动配置。  简化了报头格式 一些 IPv4 报头字段被删除或变为了可选项,以减少包处理中例行处理的消耗并 限制 IPv6 报头消耗的带宽;  改进了扩展报头和选项 IP 报头选项编码方式的改变可以提高转发效率,使得对选项长度的限制 更宽松,且提供了将来引入新的选项的更大的灵活性;  增加了标识流的能力 ( Q o S )  增加了认证和加密的能力 IPv6 中指定了支持认证、数据完整性和(可选的)数据机密性的扩展功能。 24
  • 25. IPv4 与 IPv6 的比较 ( 一 ) IPv4 IPv6 源、目标地址长度为 32 位 源、目标地址长度为 128 位 对 IPSec 的支持是可选的 必须支持 IPSec 添加流标签,路由器可以进行 无法进行 QoS 管理 QoS 管理 数据包的分片在发送主机和 分片只能在发送主机上进行 路由器上进行,降低路由性能 链路层数据包没有要求,必须 链路层支持 1280 字节数据包, 能重组 576 字节的数据包 必须能重组 1500 字节的数据包 25
  • 26. IPv4 与 IPv6 的比较 ( 二 ) IPv4 IPv6 使用 ARP 将 IP 地址解析为 ARP 被邻居发现协议取代 链路层地址 使用 IGMP 来管理本地子网组成员 IGMP 被 MLD 协议取代 必须手动或者使用 DHCP IPv6 地址可以自动配置 来配置 IPv4 地址 26
  • 27. 目录  TCP/IP 概述  IPv6 概述  IPv6 地址结构  IPv6 应用  网络编程 27
  • 28. IPv6 地址结构  IPv6 的地址空间  IPv6 的地址表示法  IPv6 的地址类型  单播地址  多播地址  泛播地址 28
  • 29. IPv6 的地址空间  地址长度 128 位  2128 = 3.4×1038 个可能地址,地球上每平方米拥有 6.65×1023 个 IPv6 地址。  地址分配 分配 前缀 格式 未指定的地址 00...0 (128 bits) ::/128 回环地址 00...1 (128 bits) ::1/128 多播地址 11111111 FF00::/8 链路本地单播地址 1111111010 FE80::/10 全局地址 ( 其余的 ) 29
  • 30. IPv6 的地址表示法  冒号十六进制表示法  128 位地址按每 16 位划分为一个位段 : 0010000111011010 0000000011010011 0000000000000000 0010111100111011 0000001010101010 0000000011111111 1111111000101000 1001110001011010 21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A 使用前导零压缩法进行简化 :  21DA:D3:0:2F3B:2AA:FF:FE28:9C5A 30
  • 31. IPv6 的地址表示法  零压缩法 FE80:0:0:0:2AA:FF:FE9A:4CA2  FE80::2AA:FF:FE9A:4CA2 有效零不能被压缩 FF02:30:0:0:0:0:0:5  FF02:30::5 而不是 FF02:3::5 单个地址只能使用一次 FF02:3:0:0:1:0:0:5 不能写成 FF02:3::1::5 31
  • 32. IPv6 的地址表示法  兼容 IPv4 的表示法 x1:x2:x3:x4:x5:x6:d.d.d.d 1. IPv4 映射的 IPv6 地址( ::FFFF:d.d.d.d ) 例 : 10.167.143.117 --> ::FFFF:10.167.143.117 2. IPv4 兼容的 IPv6 地址 (::d.d.d.d) 例 : 10.167.143.117 --> ::10.167.143.117  IPv6 前缀 21DA:D3:0:2F3B::/64 子网前缀 32
  • 33. IPv6 的地址类型  单播地址  标识单个接口  多播地址  标识零个或多接口  任播地址  标识多个接口中的任一个 33
  • 34. 单播 IPv6 地址  全球单播地址 ( 例如: 3ffe : )  全球范围内路由可达 MAC 地址 (48 bits): 00:0D:87:96:E7:18 | n bits | 64-n bits EUI-64 地址 (64bits): 00:0D:87:FF:FE:96:E7:18 | 64 bits | +--------------+---------------------------+-----------------------------+ 接口标志符: 02:0D:87:FF:FE:96:E7:18 | 全球路由前缀 | 子网 ID | 接口标志符 (020D:87FF:FE96:E718) | +--------------+---------------------------+-----------------------------+ u 位为统一 / 本地 : 1 表示由本地管理此地址 ,  链路本地地址( FE80::/10 ) 0 表示统一管理 ;  用于同一链路上的邻节点之间和邻节点发现过程 | 10 bits | 54 bits | 64 bits | +-------------+---------------------------+-----------------------------+ | 11111110 10 | 00000000000000…0000 | 接口标志符 | +-------------+---------------------------+-----------------------------+  站点本地地址 (FEC0::/10)  用于同一机构中的节点之间的通信  特殊地址  未指定地址 ( :: ) 0.0.0.0  回环地址 ( :: 1 ) 1 27.0.0.1 34
  • 35. 多播 IPv6 地址  用于发送多播通信流  多播地址总是以 FF 开头  不能用作源地址或者路由报头中的中间目标地址 35
  • 36. 任播 IPv6 地址  任播地址分配给多个接口 | n bits | 128-n bits | +------------------------------------------------+----------------+ | subnet prefix | 00000000000000 | +------------------------------------------------+----------------+  数据包被路由转发给匹配了任播地址的接口中距离最近的  距离用路由来度量 36
  • 37. IPv4 地址和 IPv6 地址的对应 IPv4 IPv6 多播地址 (224.0.0.0/4) IPv6 多播地址 (FF00::/8) 广播地址 在 IPv6 中不适用 未指定地址 0.0.0.0 未指定地址 :: 回环地址是 127.0.0.1 回环地址 ::1 公共 IP 地址 全球单播地址 私有 IP 地址 (10.0.0.1/8, 站点本地地址 (FEC0::/48) 172.16.0.0/12, 192.168.0.0/16) 网络位表示法 ( 子网掩码或前缀长 前缀长度符号 度) 37
  • 38. 目录  TCP/IP 概述  IPv6 概述  IPv6 地址结构  IPv6 应用  网络编程 38 Copyright 2010 FUJITSU LIMITED
  • 39. IPv6 应用  现状 1. 技术已不是问题,普及还需时日。 OS (微软系, Linux 系均支持 IPv6 ),网络设备(交换机,路由器,网关)。 网络服务提供商,网络内容提供商,网络设备供应商积极参与。 2. 教育网有试用服务,商业网还未支持。 预计 2013 年底有小范围试用。 3. 全球积极推进,中国 80 亿专项资金。 4. 6.8 ,全球 IPv6 测试日。腾讯网,朋友网已支持 IPv6 。 5. 中国 IPv6 地址申请量超过日本和德国,仅次于巴西和美国,列第三。 http://bgp.potaroo.net/iso3166/v6cc.html 39
  • 40. IPv6 应用 [root@TN ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth2 DEVICE=eth2 BOOTPROTO=static  地址配置 HWADDR=00:0D:87:96:E7:18 MAC 地址: 00:0D:87:96:E7:18 ONBOOT=yes 链路本地地址: fe80::20d:87ff:fe96:e718 TYPE=Ethernet 全局地址: 3ffe:501:ffff:101:20d:87ff:fe96:e718 IPADDR=192.168.1.19 [root@TN ~]# ifconfig eth2 add 3ffe:501:ffff:101:20d:87ff:fe96:e718 NETMASK=255.255.255.0  路由配置 IPV6INIT=yes IPV6ADDR=3ffe:501:ffff:101:020d:87ff:fe96:e718/64 [root@TN ~]# ip -6 route add 3ffe:501:ffff:101::/64 dev eth2 [root@TN ~]# ip -6 route show 3ffe:501:ffff:101::/64 dev eth2 metric 1024 mtu 1500 advmss 1440 hoplimit 4294967295  连通测试 [root@TN ~]# ping6 -I eth2 3ffe:501:ffff:101:227:19ff:fe9b:3ede 64 bytes from 3ffe:501:ffff:101:227:19ff:fe9b:3ede: icmp_seq=0 ttl=64 time=0.192 ms 64 bytes from 3ffe:501:ffff:101:227:19ff:fe9b:3ede: icmp_seq=1 ttl=64 time=0.147 ms 40
  • 41. IPv6 应用  ssh 连接 [root@TN ~]# ssh 3ffe:501:ffff:101:227:19ff:fe9b:3ede root@3ffe:501:ffff:101:227:19ff:fe9b:3ede's password:  查看网络连接 [root@(none) ~]# netstat -at tcp 0 0 3ffe:501:ffff:101:227:1:ssh 3ffe:501:ffff:101:20d:57013 ESTABLISHED 41
  • 42. 目录  TCP/IP 概述  IPv6 概述  IPv6 地址结构  IPv6 应用  网络编程 42
  • 43. 网络编程  编程模型  套接口地址结构  基本函数  套接口选项  IPv4 和 IPv6 的互操性 43
  • 44. 编程模型  TCP 编程模型 : UDP 编程模型 : 44
  • 45. 编程模型 简单的示例: TCP 回显程序 Server 端: root@(none)]# ./tcpserver -A inet6 Recv: 三部二课 Send: [FNST] 三部二课 Client 端: [root@TN]# ./tcpclient -i eth2 -t fe80::227:19ff:fe9b:3ede -m " 三部二课 " Send: 三部二课 Recvd:[FNST] 三部二课 45
  • 46. 套接口地址结构  IPv4  IPv6 struct in_addr { struct in6_addr { in_addr_t s_addr; /* 32-bit IPv4 address */ uint8_t s6_addr[16]; /* 128-bit IPv6 address */ }; }; struct sockaddr_in { struct sockaddr_in6 { uint8_t sin_len; /* length of structure (16) */ uint8_t sin6_len; /* length of this struct (28) */ sa_family_t sin_family; /* AF_INET */ sa_family_t sin6_family; /* AF_INET6 */ in_port_t sin6_port; /* transport layer port# */ /* 16-bit TCP or UDP port number */ in_port_t sin_port; /* flow information, undefined */ uint32_t sin6_flowinfo; /* 32-bit IPv4 address */ struct in_addr sin_addr; struct in6_addr sin6_addr; /* IPv6 address */ /* set of interfaces for a scope */ char sin_zero[8]; /* unused */ uint32_t sin6_scope_id; }; }; 46
  • 47. 基本函数 (1)  socket() struct sockaddr { uint8_t sa_len; int socket (int family, int type, int protocol); /* address family: AF_xxx value */ Family:AF_INET,AF_INET6 sa_family_t sa_family; Type:SOCK_STREAM, SOCK_DGRAM,SOCK_SEQPACKET,SOCK_RAW /* protocol-specific address */ Protocol:IPPROTO_TCP, IPPROTO_UDP, IPPROTO_SCTP char sa_data[14];  connect() }; int connect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen);  bind() int bind (int sockfd, const struct sockaddr *myaddr, socklen_t addrlen);  listen() int listen (int sockfd, int backlog);  accept() int accept (int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen);  close() int close (int sockfd); 47
  • 48. 基本函数 (2)  read()/write() MSG_DONTROUTE: 绕过路由表查找 ( 不适用于 rec MSG_DONTWAIT :本操作非阻塞 ssize_t read(int fd,void *buf,size_t nbyte);  MSG_OOB :发送 / 接收附加数据 MSG_PEEK :窥看外来消息 ( 不适用于 send) ssize_t write(int fd,const void *buf,size_t nbytes) ; MSG_WAITALL :等待所有数据 ( 不适用于 send)  recv()/send() ssize_t recv(int fd,void *buf,size_t nbyte, int flags);  ssize_t send(int fd,const void *buf,size_t nbytes, int flags) ;  readv()/writev() ssize_t readv(int filedes, const struct iovec *iov, int iovcnt); ssize_t writev(int filedes, const struct iovec *iov, int iovcnt);  recvmsg()/sendmsg() ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags); ssize_t sendmsg(int sockfd, struct msghdr *msg, int flags); 48
  • 49. 基本函数 (3) 函数名 函数说明 废弃函数 inet_pton 将字符串地址转化为二进制的地址 inet_aton(); inet_addr(); inet_ntop 将二进制的地址转化为字符串 inet_ntoa(); getaddrinfo 处理从名字到地址以及服务到端口的转换 gethostbyname(); gethostbyaddr(); if_nametoindex 根据接口名获取接口索引值 - if_indextoname 根据接口索引值获取接口名 - 49
  • 50. 套接口选项  设置 / 获取 int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);  选项 (RFC3542) IPV6_CHECKSUM IPV6_DONTFRAG IPV6_NEXTHOP IPV6_PATHMTU IPV6_RECVDSTOPTS IPV6_RECVHOPLIMIT IPV6_RECVHOPOPTS IPV6_RECVPATHMTU IPV6_RECVPKTINFO IPV6_RECVRTHDR IPV6_RECVTCLASS IPV6_UNICAST_HOPS IPV6_USE_MIN_MTU IPV6_V6ONLY 50
  • 51. IPv4 和 IPv6 的互操性 IPv4 服务器 IPv6 服务器 IPv4 服务器 IPv6 服务器 IPv4 单栈主机 IPv6 单栈主 双栈主机 双栈主机 机 IPv4 客户端 IPv4 单栈主机 IPv4 × IPv4 IPv4 IPv6 客户端 IPv6 × IPv6 IPv6 单栈主机 × IPv4 客户端 双栈主机 IPv4 × IPv4 IPv4 IPv6 客户端 双栈主机 IPv4 IPv6 ×(★) IPv6 51
  • 52. 参考文献  《 UNIX 网络编程(第三版)》  《 IPv6 详解》  相关 RFC 52