互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),缩写为IP地址(IP Address),在Internet上,一种给主机编址的方式。常见的IP地址,分为IPv4与IPv6两大类。

由32位二进制数组成,为便于使用,常以XXX.XXX.XXX.XXX形式表现,每组XXX代表小于或等于255的10进制数。例如维基媒体的一个IP地址是208.80.152.2。地址可分为A,B,C,D,E五大类,其中E类属于特殊保留地址。

IP地址是唯一的。目前IP技术可能使用的IP地址最多可有约42亿个。骤看可能觉得很难会用尽,但由于早期编码和分配上的问题,使很多区域的编码实际上被空出或不能使用。加上互联网的普及,使大部分家庭都至少有一部电脑,连同公司的电脑,以及连接网络的各种设备都消耗了大量IPv4地址资源。

随着互联网的快速成长,IPv4的42亿个地址的分配最终于2011年2月3日用尽[1][2]。相应的科研组织已研究出128位的IPv6,其IP地址数量最高可达3.402823669 × 1038个,届时每个人家居中的每件电器,每件对象,甚至地球上每一粒沙子都可以拥有自己的IP地址。

在A类、B类、C类IP地址中,如果主机号是全1,那么这个地址为直接广播地址,它是用来使路由器将一个分组以广播形式发送给特定网络上的所有主机。32位全为1的IP地址”255.255.255.255”为受限广播地址(”limited broadcast” destination address),用来将一个分组以广播方式发送给本网络中的所有主机,路由器则阻挡该分组通过,将其广播功能限制在本网内部。

从IPv4到IPv6最显著的变化就是网络地址的长度。RFC 2373和RFC 2374定义的IPv6地址,就像下面章节所描述的,有128位长;IPv6地址的表达形式,一般采用32个十六进制数。

IPv6中可能的地址有2128 ≈ 3.4×1038个,具体数量为340,282,366,920,938,463,463,374,607,431,768,211,456 个。也可以想象为1632个,因为32位地址每位可以取16个不同的值(参考组合数学)。

在很多场合,IPv6地址由两个逻辑部分组成:一个64位的网络前缀和一个64位的主机地址,主机地址通常根据物理地址自动生成,叫做EUI-64(或者64-位扩展唯一标识)

IPv6地址表示

IPv6地址为128位长但通常写作8组每组四个十六进制数的形式。例如:

2001:0db8:85a3:08d3:1319:8a2e:0370:7344

是一个合法的IPv6地址。

如果四个数字都是0,可以被省略。例如:

2001:0db8:85a3:0000:1319:8a2e:0370:7344

等价于

2001:0db8:85a3::1319:8a2e:0370:7344

遵从这些规则,如果因为省略而出现了两个以上的冒号的话,可以压缩为一个,但这种零压缩在地址中只能出现一次。因此:

2001:0DB8:0000:0000:0000:0000:1428:57ab

2001:0DB8:0000:0000:0000::1428:57ab

2001:0DB8:0:0:0:1428:57ab

2001:0DB8:0::0:1428:57ab

2001:0DB8::1428:57ab

都是合法的地址,并且他们是等价的。但

2001::25de::cade

是非法的。(因为这样会使得搞不清楚每个压缩中有几个全零的分组)

同时前导的零可以省略,因此:

2001:0DB8:02de::0e13

等价于

2001:DB8:2de::e13

如果这个地址实际上是IPv4的地址,后32位可以用10进制数表示;因此:

ffff:192.168.89.9等价于::ffff:c0a8:5909,但不等价于::192.168.89.9和::c0a8:5909。

ffff:1.2.3.4格式叫做IPv4映射地址,是不建议使用的。而::1.2.3.4格式叫做IPv4一致地址。

IPv4地址可以很容易的转化为IPv6格式。举例来说,如果IPv4的一个地址为135.75.43.52(十六进制为0x874B2B34),它可以被转化为0000:0000:0000:0000:0000:0000:874B:2B34或者::874B:2B34。同时,还可以使用混合符号(IPv4-compatible address),则地址可以为::135.75.43.52。

版权声明:本文为博主原创文章,未经博主允许不得转载。

ipv4 ipv6简介的更多相关文章

  1. IPv4&IPv6双重协议栈

    IPV4 TCP客户与IPV6服务器之间的通信: 1 启动IPV6服务器,创建套接监听口,绑定通配地址 2 IPV4调用gethostbyname找到该服务器对应的A记录 3 调用connect,向服 ...

  2. LwIP Application Developers Manual10---LwIP IPv4/IPv6 stacks

    1.前言 lwIP正在加入IPv6,一个实验性的版本可以通过git下载,该版本实现了一个IPv4/IPv6的双协议栈.通过在lwipopts.h定义LWIP_IPV6可以使能IPv6 2.已实现的IP ...

  3. IP协议/地址(IPv4&IPv6)概要

    IP协议/地址(IPv4&IPv6)概要 IP协议 什么是IP协议 IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议. [1] 协议的特征 无连 ...

  4. 网络编程中常见地址结构与转换(IPv4/IPv6)

    1. sockaddr/sockaddr_in/in_addr (IPv4).sockaddr6_in/in6_addr/addrinfo (IPv6) struct sockaddr { unsig ...

  5. nginx同时监听本机ipv4/ipv6端口

    修改nginx.conf配置文件 server { listen ; listen [::]:; } 0.0.0.0  表示本机所有ipv4地址,需要监听特定地址替换即可 [::]  表示本机所有ip ...

  6. IPv6简介

    https://segmentfault.com/a/1190000008794218 IPv6的优点 更大的地址空间 名字叫IPv6,但它的长度并不是64位,而是128位,总的地址空间大约为3.4* ...

  7. IP-v4&IP-v6

    IPv6与IPv4区别: 1:IPv6的地址空间更大.IPv4中规定IP地址长度为32,即有2^32-1个地址: 而IPv6中IP地址的长度为128,即有2^128-1个地址. 2.IPv6的路由表更 ...

  8. IPV4/IPV6双协议栈配置案例

    拓扑: XRV1配置: =================================================================== hostname XRV1! ipv6 ...

  9. IPv4&&IPv6地址结构分析

    IPv4套接字地址结构: 套接字都需要有一个指向套接字地址结构的指针作为参数.每个协议簇都定义它自己的套接字地址结构.这些结构的名字均已sockaddr_开头,并以对应每个协议族的唯一后缀结尾. wi ...

随机推荐

  1. java 发展简史

    [0]README 0.1) 本文转自 core java volume 1,仅供了解Java 的发展历史,它的前世今生,所谓知己知彼,百战不殆(just a joke) : [1]java 发展简史 ...

  2. iOS7 文本转语音 AVSpeechSynthesizer -转载-

    http://www.cnblogs.com/qingjoin/p/3160945.html iOS7 的这个功能确实不错.我刚试了下,用官方提供的API ,简单的几句代码就能实现文本转语音! Xco ...

  3. phpstudy nginx下curl请求本地其他项目

    curl 请求的时候 如果用post请求,传递参数为 数组的时候 header 头 会被设置为  multipart/form-data  如果是字符串 形式 header 头会被设置为applica ...

  4. JS中try.. catch..的用法

    try 测试代码块的错误. catch 语句处理错误. throw 创建并跑出错误. try { //在这里运行代码 抛出错误 } catch(err) { //在这里处理错误 } 下面是一个实例: ...

  5. 1355: [Baltic2009]Radio Transmission[循环节]

    1355: [Baltic2009]Radio Transmission Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 796  Solved: 538 ...

  6. 负载均衡,会话保持,session同步(转)

    一,什么负载均衡一个新网站是不要做负载均衡的,因为访问量不大,流量也不大,所以没有必要搞这些东西.但是随着网站访问量和流量的快速增长,单台服务器受自身硬件条件的限制,很难承受这么大的访问量.在这种情况 ...

  7. Ubuntu编译Android使用的FFmpeg

    本文介绍在Ubuntu平台编译FFmpeg库,用于Android使用.前提需要配置好NDK的环境.可以参考之前的文章Android NDK环境搭建. 下载FFmpeg 在官网下载FFmpeg源码,ht ...

  8. HTML语义化理解

    对所要表达的事物或者思想使用正确的标签. 例如:标题用<h > 来表示. 在<table>中加入summary的简介.   在<a>中加入title 在<im ...

  9. 简单的C++程序题总结

    1.求一个数的二进制中1的个数. 思想的关键在于x=x&(x-1)这里,例如二进制为0x0729,即x=0000 0111 0010 1001,那么x-1=0000 0111 0010 100 ...

  10. js修改div标签中的内容

    <div id='divId'>初始文字</div> <script> $(document).ready(function(e){ $('#divId').htm ...