IPV4和IPV6的划分
IP(Internet Protocol,网络互联协议)地址就是连接互联网的主机被分配或指派的一段数字标识,是传输报文组装时最重要的组成部分,用来在互联网中数据传输时标识源和目标主机。
IPv4
IPv4地址长度为32位(bit),每8位为一个字节,用十进制表示值从0到255,共四段。
IP地址按作用范围分为两类:一类是公网IP地址,另一类为私网IP地址
IP按用途可分五大类:A类(政府)、B类(公司)、C类(公用)、D类(组播)和E类(实验),地址格式为网络地址+主机地址或网络地址+子网地址+主机地址形式。 它们之间的区别和特征如下表所示:
地址类型 | 特征 | 介绍 |
A类地址 | 第一位为0,注意是位 |
1、第1字节为网络地址,其它3个字节为主机地址 |
B类地址 | 前两位为10,注意是位 |
1、 第1字节和第2字节为网络地址,后2个字节为主机地址 |
C类地址 | 前三位为110,注意是位 |
1、前三个字节为网络地址,最后字节为主机地址 |
D类地址 | 前四位为1110,注意是位 |
1、不分网络地址和主机地址。 |
E类地址 | 前五位为11110,注意是位 |
1、不分网络地址和主机地址 |
此外还有几个特殊IP地址:
1、0.0.0.0只能做源地址
2、255.255.255.255是广播地址
3、127.x.x.x为环回地址,本机使用
4、专用地址:
10/8 地址范围:10.0.0.0——10.255.255.255,
172.16/12 地址范围:172.16.0.0——172.31.255.255,
192.168/16地址范围:192.168.0.0——192.168.255.255。
匹配IPv4的正则表达式
IPv4地址由4个这样的数字组成,中间用"."隔开,所以可以匹配IPv4的正则表达式为:
(((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))
使用边界匹配,不然256.1.1.1也会匹配成功,会匹配成56.1.1.1,那么最终正确的匹配IPv4的正则表达式为:
(?=(\b|\D))(((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))(?=(\b|\D))
用python实现
import re
pattern = re.compile(r'(2(5[0-5]{1}|[0-4]\d{1})|[0-1]?\d{1,2})(\.(2(5[0-5]{1}|[0-4]\d{1})|[0-1]?\d{1,2})){3}')
str = ''
print(pattern.search(str))
IPv6
IPv6地址长度为128位(bit),每16位为一个字节,使用十六进制表示,用十进制表示的话值为从0到65535,共八段
IPv6按照传输类型分为单播地址、任播地址和多播地址,其表示方法如下:
1.冒号分隔的形式:x:x:x:x:x:x:x:x,其中x是16进制数,值为0x0000-0xFFFF。示例:FB21:1233:55B2:AA44:12B8:6761:890F:AB31。
2.同0压缩形式:就是地址中如果出现连续两个或两个以上0时,可以采用压缩表示形式::(双冒号表示),但只能出现一次,因为如果出现两个或以上双冒号,技术上无法识别出实际的地址,比如FB21:0:0:0:12B8:6761:0:0,就可表示成FB21::12B8:6761:0:0,或FB21:0:0:0:12B8:6761::,不能表示成FB21::12B8:6761::。如果8个段值都是0,可以用::表示。
3.混合形式:用来组合IPv4和IPv6地址,x:x:x:x:x:x:d.d.d.d,前6个段表示IPv6高序位,后面四段表示IPv4地址。
IPv6作为IPv4的下一个版本,由RFC 2373 和RFC 2374定义。优点主要有:更大的地址空间、更小的路由表、增强的组播和流控制、自动配置和更高的安全性。
IPv6的正则表达式
支持IPv6基本格式的正则表达式:
^([\\da-fA-F]{1,4}:){7}([\\da-fA-F]{1,4})$
IPV4和IPV6的划分的更多相关文章
- RFC2474 - Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers的双语版
RFC2474 - Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers英文版 ...
- 计算机网络-网络层(1)IPv4和IPv6
IPv4数据报格式: 版本号 这4比特规定了数据报的IP 协议版本.通过查看版本号,路由器能够确定如何解释IP数据报的剩余部分. 首部长度 以4字节为单位,没有选项的首部长度为5*4=20字节 服务类 ...
- 一起来聊聊 IP 地址、局域网、广域网、IPV4 和 IPV6
背景 谁都知道 IP 地址是干嘛的,但是它出现的前因后果你真的知道吗? 我觉得很有必要重新复习下计算机网络基础知识,实在太太太重要了 本篇文章素材均来自:https://www.bilibili.co ...
- IPv4 与 IPv6的区别
在介绍 IPv4 到 IPv6 区别之前,我们先来简单了解一下 IPv4 和 IPv6. IPv4 网际协议版本4(英语:Internet Protocol version 4,IPv4),又称互联网 ...
- IP地址(IPv4)/IPv6地址的正则表达式
原地址:http://pfeishao.blog.163.com/blog/static/18162337020112113130453/ Pv4地址正则表达式:^((25[0-5]|2[0-4]\d ...
- ipv4、ipv6的socket同时监听“bind: Address already in use”的解决方法
创建ipv4和ipv6的socket,同时监听某个端口的ipv4和ipv6报文,运行时bind函数执行失败,提示“bind: Address already in use”.原因:ipv6的socke ...
- ios 兼容IPV4和IPV6网络通信
前言: 苹果官方出了新的规定,要求新上架的app都必须单独支持ipv6-only的网络. 准备工作: 搭建IPV6测试环境:http://blog.csdn.net/potato512/article ...
- VLC测试IPv4 IGMP/IPv6 MLD协议
1 简述 VLC既可以充当流客户端,又可以充当流服务器,并且可以跨平台使用,是一款开源.免费的软件,基于GNU GPL许可证. 2 搭建组播服务器 第一步:运行程序后选择“媒体 串流”:第二步:通过 ...
- TCP/IP读书笔记(4) IPv4和IPv6 路由选择
TCP/IP读书笔记(4) IPv4和IPv6 路由选择 网络层是位于链路层之上,TCP/IP模型中网络层的核心协议是IP协议(Internet protocol). 目前主流的IP协议是IPv4(I ...
随机推荐
- SpringBoot:SpringBoot整合JdbcTemplate
个人其实偏向于使用类似于JdbcTemplate这种的框架,返回数据也习惯于接受Map/List形式,而不是转化成对象,一是前后台分离转成json方便,另外是返回数据格式,数据字段可以通过SQL控制, ...
- 解决从github上下载代码仓库慢的问题
一,打开命令提示符,最好之前准备一个仓库地址,这样下载下来的文件方便查看,这里打开你想要的下载根目录,进行下载. github上下载代码仓库慢的问题"> 二:复制代码仓库的地址 三:右 ...
- Netty学习篇②
Channel.ChannelPipeline.ChannelHandlerContent发送数据的不同 // channel往回写数据 Channel channel = ctx.channel() ...
- select示例
#include <sys/select.h> #include <sys/time.h> #include <sys/types.h> #include < ...
- [转帖]yaml语言格式
yaml语言格式 YAML是"YAML Ain't a Markup Language"(YAML不是一种标记语言),强调这种语言以数据做为中心,而不是以置标语言为重点. 转载2篇 ...
- c# 金钱大写转小写工具类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 解决python语言在cmd下中文乱码的问题
解决python语言在cmd下中文乱码的问题: a = "再见!"print (a.decode('utf-8').encode('gbk')) #解决在cmd下中文乱码的问题
- fiddler笔记:TimeLine时间轴选项卡
1.TimeLine选项卡介绍 TimeLine选项卡支持使用"瀑布"模型查看1~250个选中的Session.主要用于帮助性能分析和理解请求之间的关联.选项卡的主体内容是数据流视 ...
- 网络编程[第三篇]基于tcp协议实现远程连接
需要用到subprogress模块来远程控制cmd控制台程序来得到控制台的输出信息 一.服务端 —— 控制输出信息 import socket import subprocess #socket实例化 ...
- spark调优篇-oom 优化(汇总)
spark 之所以需要调优,一是代码执行效率低,二是经常 OOM 内存溢出 内存溢出无非两点: 1. Driver 内存不够 2. Executor 内存不够 Driver 内存不够无非两点: 1. ...