互联网协议地址(英语: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. spring boot json 首字母大小写问题解决方案

     spring boot默认使用的json解析框架是jackson,对于.net转java的项目来说太坑了,首字母大写的属性会自动转为小写,然后前端就悲剧了,十几个属性的ViewModel增加几个Js ...

  2. insert小细节,大问题

    今天现场报流程无法查看,已查看流程表中没有数据了.昨天有运行过删除垃圾数据的脚步.大致过程是: create table bak_test a as select * from test; creat ...

  3. 【BZOJ】1003 Cards

    [解析]Burnside引理+背包dp+乘法逆元 [Analysis] 这道题卡了好久,就是没想懂置换跟着色是不一样的. 依据burnside引理.在一个置换群作用下不等价类的个数为每一个置换作用下不 ...

  4. mybatis 各组件生命周期

    1.SqlSessionFactoryBuilder SqlSessionFactoryBuilder是通过利用XML或者java编码来获取Configuration配置来构建SqlSessionFa ...

  5. mapreduce的一个模版

    import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import j ...

  6. 使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器

    参考: 1,使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(一)http://blog.csdn.net/xdwyyan/article/details/4319 ...

  7. sourceSet

    android { sourceSets { main{ manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources ...

  8. Java多线程系列 基础篇02 线程的创建和运行

    1.线程创建的方式常用有两种 1. 继承 Thread 类创建线程 2. 实现 Runnable 接口创建线程 2.Thread 和 Runnable的区别 Thread和Runnable的相同点:都 ...

  9. python输出shell命令执行结果

    import os,subprocess p = subprocess.Popen("df -h", shell=True, stdout=subprocess.PIPE) out ...

  10. python操作cad

    from pyautocad import Autocad # 自動連接上cad,只要cad是開着的,就創建了一個<pyautocad.api.Autocad> 對象.這個對象連接最近打開 ...