转自华为官网

1.1  介绍

定义

IPv4(Internet Protocol Version 4)协议族是TCP/IP协议族中最为核心的协议族。它工作在TCP/IP协议栈的网络层,该层与OSI参考模型的网络层相对应。网络层提供了无连接数据传输服务,即网络在发送分组时不需要先建立连接,每一个分组(也就是IP数据报文)独立发送,与前后的分组无关。

目的

网络层的IPv4协议族为数据链路层和传输层实现互通提供了保障。IPv4协议族可以屏蔽各链路层的差异,为传输层提供统一的网络层传输标准。

1.2  原理描述

1.2.1  IPv4简介

IPv4协议族

IPv4协议族是TCP/IP协议族中最为核心的协议族。IPv4协议族主要包括地址解析协议ARP(Address Resolution Protocol)、逆地址解析协议RARP(Reverse Address Resolution Protocol)、互联网控制消息协议ICMP(Internet Control Message Protocol)、传输控制协议TCP(Transmission Contronl Protocol)和用户数据报协议UDP(User Datagram Protocol)等协议。

图1-1  IPv4协议族 

从图1-1可以看出来,ARP和RARP的功能是地址解析,介于数据链路层和网络层之间,所以常常被调用。ICMP协议的功能是为了更有效地转发IP数据报文和提高数据报文交付成功的机会,是介于网络层和传输层之间的协议。

ARP协议

ARP是用来将IP地址解析为MAC地址的协议,可以分为动态和静态两种类型。另外ARP还有扩展应用功能,包括Proxy ARP功能、免费ARP、ARP安全以及ARP-Ping。

RARP协议

RARP和ARP正好相反,是将主机的MAC地址解析为IP地址的协议。

ICMP协议

为了更有效地转发IP数据报文和提高数据报文交付成功的机会,在网络层使用ICMP协议。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP报文作为IP层数据报文的数据,加上数据报文的首部,组成IP数据报文发送出去。

1.2.2  IPv4地址

在IP网络上,如果用户要将一台计算机连接到Internet上,就需要向因特网服务提供方ISP(Internet Service Provider)申请一个IP地址。

IP地址是在计算机网络中被用来唯一标识一台设备的一组数字。IPv4地址由32位二进制数值组成,但为了便于用户识别和记忆,采用了“点分十进制表示法”。采用了这种表示法的IP地址由4个点分十进制整数来表示,每个十进制整数对应一个字节。例如,IPv4地址使用二进制的表示形式为00001010 00000001 00000001 00000010,采用点分十进制表示法表示为10.1.1.2。

IPv4地址由如下两部分组成:

  • 网络号码字段(Net-id)。IP地址的网络号码字段用来标识一个网络,网络号码字段的前几位用来区分IP地址的类型。

  • 主机号码字段(Host-id)。主机号码字段用来区分一个网络内的不同主机。对于网络号相同的设备,无论实际所处的物理位置如何,它们都是处在同一个网络中。

IPv4地址的特点

IPv4地址的主要特点有:

  • IP地址是一种非等级的地址结构,IP地址不能反映任何有关主机位置的地理信息,只能通过网络号码字段判断出主机属于哪个网络。

  • 当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号码Net-id是不同的,这种主机称为多地址主机(Multihomed Host)。主机上的每个接口都对应着一个IP地址,因此多接口主机会有多个IP地址。

  • 在IP地址中,所有分配到网络号码Net-id的网络都是平等的。

IPv4地址分类

为了方便IP地址的管理及组网,IP地址分成五类,如图1-2所示。

图1-2  五类IP地址 

目前大量使用的IP地址属于A、B、C三类IP地址中的一种。D类地址是组播地址,E类地址保留。A、B、C、D、E类的类别字段分别是二进制数0、10、110、1110、1111,通过网络号码字段的前几个比特就可以判断IP地址属于哪一类,这是区分各类地址最简单的方法。在IETF(Internet Engineering Task Force)发布的RFC1166 Internet Numbers中详细描述了各类IP地址。

在使用IP地址时要注意,一些IP地址是保留作为特殊用途的,一般的用户不能使用。表1-1列出各类IP地址的范围。

表1-1  IP地址分类及范围

网络类型

地址范围

说明

A

0.0.0.0~127.255.255.255

全0的主机号码表示该IP地址就是网络的地址,用于网络路由;全1的主机号码表示广播地址,即对该网络上所有的主机进行广播。

B

128.0.0.0~191.255.255.255

全0的主机号码表示该IP地址就是网络的地址,用于网络路由;全1的主机号码表示广播地址,即对该网络上所有的主机进行广播。

C

192.0.0.0~223.255.255.255

全0的主机号码表示该IP地址就是网络的地址,用于网络路由;全1的主机号码表示广播地址,即对该网络上所有的主机进行广播。

D

224.0.0.0~239.255.255.255

D类地址是一种组播地址。

E

240.0.0.0~255.255.255.255

保留。255.255.255.255用于局域网广播地址。

特殊IPv4地址

表1-2  特殊情况的IP地址

IP地址网络号

IP地址主机号

能否作为源端地址

能否作为目的端地址

描述

全0

全0

可以

不可以

用于本网络上的本主机

全0

主机号

可以

不可以

用于网络上的特定主机

127

非全0或全1的任何值

可以

可以

用于环回地址

全1

全1

不可以

可以

用于受限的广播(永远不被转发)

Net-id

全1

不可以

可以

用于向以Net-id为目的的网络广播

 说明:

Net-id表示不全为0和不全为1的对应字段。

私有IPv4地址

为了解决IP地址短缺的问题,提出了私有地址的概念。私有地址是指内部网络或主机地址,这些地址只能用于某个内部网络,不能用于公共网络。RFC1918描述了为私有网络预留的3个IP地址段。

表1-3  私有IP地址

网络类型

地址范围

A

10.0.0.0~10.255.255.255

B

172.16.0.0~172.31.255.255

C

192.168.0.0~192.168.255.255

1.2.3  IPv4报文格式

IPv4报文格式如图1-3所示。
图1-3  IPv4报文格式 

一个IPv4数据报文由首部和数据两部分组成。首部的前一部分是固定长度,共20个字节,是所有IPv4数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。

主要字段的解释如表1-4所示。

表1-4  IPv4报文各字段的含义

字段

长度

含义

版本

4比特

IP协议的版本号,分为IPv4和IPv6协议。

首部长度

4比特

IPv4的首部长度。

区分服务

8比特

用来获得更好的服务。只有在使用区分服务时,这个字段才起作用。

总长度

16比特

指首部和数据之和的长度。

标识

16比特

IPv4软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。

标志

3比特

目前只有两位有意义。最低位为1表示后面“还有分片”的数据报,为0表示这已经是最后一个数据片;中间一位为1表示“不能分片”,为0才允许分片。

片位移

13比特

指出较长的分组在分片后,该片在原分组中的相对位置。

生存时间

8比特

表示数据报在网络中的寿命,英文缩写是TTL(Time To Live),功能是“跳数限制”。

协议

8比特

指出此数据报携带的数据是使用何种协议。

首部检验和

16比特

数据报每经过一个路由器,路由器都要重新计算一下首部检验和,若首部未发生变化,则此结果必为0,于是就保留这个数据报。这个字段只检验数据报的首部,但不包括数据部分。

源地址

32比特

报文发送方的IPv4地址。

目的地址

32比特

报文接收方的IPv4地址。

选项字段(长度可变)

0~40字节

用来支持排错、测量以及安全等措施。在必要的时候插入值为0的填充字节。

数据部分

可变

用来填充报文。

1.2.4  子网划分

通过将IP地址的网络部分进一步划分为若干个子网,解决了IP地址空间利用率低和两级IP地址不够灵活的问题。

当一个单位的主机很多而且分布在很广的地理范围时,为了便于管理,可将单位内部的主机号码再进一步划分为多个子网。通过子网划分,整个网络地址可以划分成更多的小网络。

子网的划分是网络内部的行为,从外部看,这个单位只有一个网络号码。只有当外部的报文进入到本单位范围后,本单位的路由设备才根据子网号码再进行选路,找到目的主机。

如图1-4所示,为一个B类IP地址子网划分情况,其中子网掩码由一串连续的“1”和一串连续的“0”组成。“1”对应于网络号码和子网号码字段,而“0”对应于主机号码字段。
图1-4  IP地址子网划分 

图1-4中,把一个B类地址的Host-id的高位5bits用来划分子网,Subnet-id的范围是从00000~11111,总共可以划分25(32)个子网出来。对应的子网掩码也会相应的发生变化,比如Subnet-id为11111的子网掩码就是255.255.248.0。将IP地址与其相应掩码位执行与运算的结果就是网络地址。

多划分出一个子网号码字段是要付出代价的。举例来说,本来一个B类IP地址可以容纳65534个主机号码。但划分出5bits长的子网字段后,最多可有32个子网,每个子网有11bit的主机号码,即每个子网最多可有2046(211-2,去掉全1和全0的主机号码)个主机号码。因此主机号码的总数是(32 x 2046 = 65472)个,比不划分子网时要少62个。

子网划分与IP地址规划时,通常需要综合考虑以下原则,实现合理高效的网络规划。

层次性

实现网络的层次性划分,需要综合考虑地域和业务因素,采用自顶向下的方法划分,达到有效管理网络、简化路由表的目标。一般情况下:

  • 对于大骨干网络和大城域网络相结合的网络,采用层次性划分方式。
  • 对于行政区类型的网络,采用多级网络分配方式。

连续性

连续地址在层次结构的网络中易于进行路由聚合,大大缩减路由表数量,提高路由查找的效率。

  • 尽量为每个区域分配连续的IP地址空间。
  • 尽量为具有相同业务和功能的设备分配连续的IP地址。

扩展性

分配地址时,在每一层次上都要留有余量。当网络规模扩展时能保证地址分配的连续性,实现网络的长远规划。

骨干网络应有足够的连续地址组成独立的自治域,并为今后的扩展留有余地。

高效性

划分子网时,要保证充分利用地址资源,使子网的划分满足主机个数的要求。

  • 利用可变长子网掩码VLSM(Variable Length Subnet Mask)技术分配IP地址,充分合理地利用地址资源。
  • 与网络的路由机制设计相结合,合理使用已划分的地址空间,提高地址的利用率。

1.2.5  IP地址解析

一台路由设备用来连接多个网络,具有多个网络的IP地址。为保证用户使用IP地址进行正常通信,需要满足如下两点:

  • IP地址只是主机在网络层中的地址,若要将网络层中传送的数据报交给目的主机,必须知道该主机的物理地址,因此必须将IP地址解析为物理地址。

  • 用户平时不愿意使用难于记忆的IP地址,而更愿意使用易于记忆的主机名,因此也需要将主机名解析为IP地址。

在以太网上,主机的物理地址就是指MAC地址。将主机名解析为IP地址的操作是由DNS服务器来完成,而将IP地址解析为MAC地址的操作是由ARP来完成的,详细内容请参见DNS和ARP章节内容。

1.3  参考标准和协议

本特性的参考资料清单如下:

文档

描述

备注

RFC1166

Internet Numbers

-

RFC1918

Address Allocation for Private Internets

-

IPV4基本知识介绍的更多相关文章

  1. ElasticSearch实战系列四: ElasticSearch理论知识介绍

    前言 在前几篇关于ElasticSearch的文章中,简单的讲了下有关ElasticSearch的一些使用,这篇文章讲一下有关 ElasticSearch的一些理论知识以及自己的一些见解. 虽然本人是 ...

  2. [推荐]dubbo分布式服务框架知识介绍

    [推荐]dubbo分布式服务框架知识介绍 CentOS+Jdk+Jboss+dubbo+zookeeper集群配置教程    http://wenku.baidu.com/view/20e8f36bf ...

  3. [推荐]Zookeeper大型分布式系统的可靠协调系统知识介绍

    [推荐]Zookeeper大型分布式系统的可靠协调系统知识介绍 基于Zookeeper的锁开发手册 http://wenku.baidu.com/view/acbb8fc6102de2bd960588 ...

  4. [推荐]DDOS攻击与防范知识介绍

    [推荐]DDOS攻击与防范知识介绍 DDOS攻防体系建设v0.2(淘宝-林晓曦)     http://wenku.baidu.com/view/39549a11a8114431b90dd866.ht ...

  5. [推荐]WebService开发知识介绍

    [推荐]WebService开发知识介绍 WebService开发手册  http://wenku.baidu.com/view/df3992ce050876323112128a.html WebSe ...

  6. [转] - Linux网络编程 -- 网络知识介绍

    (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...

  7. (转)Linxu磁盘体系知识介绍及磁盘介绍

    Linxu磁盘体系知识介绍及磁盘介绍 系统管理 / 2017-01-14 / 0 条评论 / 浴春风 Linu磁盘设备基础知识指南磁盘速度快具备的条件: 1)主轴的转速5400/7200/10000/ ...

  8. linux字符设备驱动--基本知识介绍

    一.设备驱动的分类 1.字符设备 字符设备是指那些能一个字节一个字节读取数据的设备,如LED灯.键盘.鼠标等.字符设备一般需要在驱动层实现open().close().read().write().i ...

  9. PySpark SQL 相关知识介绍

    title: PySpark SQL 相关知识介绍 summary: 关键词:大数据 Hadoop Hive Pig Kafka Spark PySpark SQL 集群管理器 PostgreSQL ...

随机推荐

  1. tomcat 修改根路径

    修改setting.xml 在 </Host> 正上面 添加 <Context path="/" docBase="/TomExam" deb ...

  2. C语言中的常用函数_持续更新

    isspace函数: 背景:之前遇到scanf()输入时会把换行符留在输入队列的情况,如果下次要用到getchar(),但是会导致其先返回这个我们不需要的换行符:从而导致不希望出现的行为: 说明:检查 ...

  3. ListItemType.AlternatingItem 和 ListItemType.Item

    项目中后台绑定Reapter项时,判断 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.Alte ...

  4. http转https的各种应用

    http://www.lccee.com/content-57.html https://www.gworg.com/ssl/127.html apach: LoadModule socache_sh ...

  5. MVC中Cookies的简单读写操作

    写入 public static void WriteCookie(string cn, string cv, DateTime Time) { HttpCookie cookie = new Htt ...

  6. vmware 三种连接方式 如何设置独立ip

    转载:https://blog.csdn.net/xiaoyangsavvy/article/details/73718473

  7. 2.3 Rust函数

    2.3 函数 [root@itoracle src]# cargo new functions Created binary (application) `functions` package [ro ...

  8. Sublime text中文乱码解决办法

    ConvertToUTF8 安装这个插件可以解决编码混乱问题 首先必须先配一下Sublime text ,安装 Package Control 1.  用Sublimt text 打开任意一个文件,C ...

  9. 转 Celery 使用

    http://www.mamicode.com/info-detail-1798782.html https://blog.csdn.net/lu1005287365/article/details/ ...

  10. Oracle基础篇--03DML语言

    1.数据准备: --创建表格的 create table dept as select * from scott.dept; create table emp as select * from sco ...