网络工程基础- - IPv4协议
前言
IP协议作为互联网的底层,现有的互联网大都是在IPv4的网络中运行的。本文章总结了一些IPv4特点和原理,如果错误留言改正
提示:以下是本篇文章正文内容,下面案例可供参考
一、IPv4- - - 基本了解
1.1 IPv4.全称为 '‘Internet protocol version 4’’;
1.2 由IETF在1981年9月提出RFC791,替换了1980年1月RFC 760 ;
1.3 IP协议工作在无连接的分组交换的链路层上(如:以太网);
1.4 IP协议属于无连接的协议;
(1). 尽力转发;
(2).不保证数据包可以到达目的地;
(3).不保证数据包顺序准确的到达目的;
二、 IPv4- - - 地址格式
2.1 IPv4地址格式
IPv4使用32位(4字节),地址地址空间中只有4,294,967,296(2^32)个地址;可以有不同的表达方式;日常工作中,我们经常使用的就为点分十进制。像我们的的电脑配置ip地址也是以点分十进制的方式表达的,这样的表达方式方便记忆,也方便我们的配置。
格式 值 从点分十进制转换
点分十进制 192.0.2.235 不适用
点分十六进制 0xC0.0x00.0x02.0xEB 每个字节被单独转换为十六进制
点分八进制 0300.0000.0002.0353 每个字节被单独转换为八进制
十六进制 0xC00002EB 将点分十六进制连在一起
十进制 3221226219 用十进制写出的32位整数
八进制 030000001353 用八进制写出的32位整数
三、 IPv4- - - 地址分类
3.1、 IPV4地址的分类:
我们所有的IPv4地址可以分为A、B、C、D、E五类。其中A、B、C类为我们常见的IP地址,常用于配置于我们的电脑和网络设备上。D类和E类地址作为保留;
地址块 | 描述 | 参考资料 |
---|---|---|
0.0.0.0/8 | 本网络(仅作为源地址时合法) | RFC 689 |
10.0.0.0/8 | 专用网络 | RFC 1918 |
100.64.0.0/10 | 电信级NAT | RFC 6598 |
127.0.0.0/8 | 环回 | RFC 5735 |
169.254.0.0/16 | 链路本地 | RFC 3927 |
172.16.0.0/12 | 专用网络 | RFC 1918 |
192.0.0.0/24 | 保留(IANA) | RFC 5735 |
192.0.2.0/24 | TEST-NET-1 | RFC 5735 |
192.88.99.0/24 | 6to4中继 | RFC 3068 |
192.168.0.0/16 | 专用网络 | RFC 1918 |
198.18.0.0/15 | 网络基准测试 | RFC 2544 |
198.51.100.0/24 | TEST-NET-2 | RFC 5737 |
203.0.113.0/24 | TEST-NET-3 | RFC 5737 |
224.0.0.0/4 | 多播(之前的D类网络) | RFC 3171 |
240.0.0.0/4 | 保留(之前的E类网络) | RFC 1700 |
255.255.255.255/32 | 受限广播 | RFC 919 |
3.2、IPv4地址专用网络地址分类
A、B、C类地址分为公用地址和私有地址(专用地址),其中专用地址被用于分配给互联网用户的私有网络使用(包括家庭,监控,小型局域网内),用户访问互联网需要通过NAT地址转换转换为公网IP地址;
地址类别 | IP地址段 | 掩码 | IP地址范围 | 可用地址数量 | 备注 |
---|---|---|---|---|---|
A | 10.0.0.0 | 255.0.0.0/8 | 10.0.0.0-10.255.255.255 | 16,777,216 | 整个A类地址 |
B | 172.16.0.0 | 255.240.0.0/12 | 172.16.0.0-172.31.255.255 | 1,048,576 | 16个连续的B类 |
C | 192.168.0.0 | 255.255.0.0/16 | 192.168.0.0–192.168.255.255 | 65,536 | 256个连续的C类 |
四、 IPv4- - - 报文格式
IP报文的格式如下;
1、版本字段(Version):此字段为IP的版本型号;此报文为IPv4的报文,所以版本为V4,占用4bit(0100);通信双方协议版本必须一致;
2、首部长度(Internet harder length ;IHL);IP首部固定部分有20字节,除非含有选项部分。故最小长度为20字节;
首部长度是指IP首部占32bit字的数目,包括选项(如果有)。首部长度本身为4bit字段,能表示的二进制最大数为1111,换算成十进制为15,即首部最长为15个32bit长度,即最大长度60字节。*
3、服务类型(Type of Service); 该字段长度为8比特位。被分为俩个部分,前6位被称为区分服务字段—DS字段;后2位是显示拥塞通知字段—ECN字段,用于QS。
此段是用于实施QOS,RFC 791中TOS 的IP Precedence分为8个优先级,值越大优先级越高。RFC2474中对TOS重新定义,前6位定义成DSCP,可以标识64中等级,后两位保留;
4、 全长(Total Length); 这个16位字段定义了报文总长,包含首部和数据,单位为字节。
这个字段的最小值是20(20字节首部+0字节数据),最大值是216-1=65,535。*
IP规定所有主机都必须支持最小576字节的报文,这是假定上层数据长度512字节,加上最长IP首部60字节,加上4字节富裕量,得出576字节,但大多数现代主机支持更大的报文。当下层的数据链路协议的最大传输单元(MTU)字段的值小于IP报文长度时,报文就必须被分.
5、 标识符(Identification);占16位,这个字段主要被用来唯一地标识一个报文的所有分片;一个大的报文经常要被拆分为几个小包进行传输;这个字段就是用于标识该IP包是整个报文被拆分的第几个包,用于报文达到之后重组。
每产生一个数据报,计数器加1,并赋值给此字段。一些实验性的工作建议将此字段用于其它目的,例如增加报文跟踪信息以协助探测伪造的源地址。
6、 标志 (Flags)占三个bit.这个3位字段用于控制和识别分片,它们是:
位0:保留,必须为0;
位1:禁止分片(Don’t Fragment,DF),当DF=0时才允许分片;
位2:更多分片(More Fragment,MF),MF=1代表后面还有分片,MF=0 代表已经是最后一个分片。
如果DF标志被设置为1,但路由要求必须分片报文,此报文会被丢弃。这个标志可被用于发往没有能力组装分片的主机。
当一个报文被分片,除了最后一片外的所有分片都设置MF为1。最后一个片段具有非零片段偏移字段,将其与未分片数据包区分开,未分片的偏移字段为0。
7、 分片偏移 (Fragment Offset);这个13位字段指明了每个分片相对于原始报文开头的偏移量,以8字节作单位。
8、 存活时间(Time To Live,TTL); 这个8位字段避免报文在互联网中永远存在(例如陷入路由环路)。
存活时间以秒为单位,但小于一秒的时间均向上取整到一秒。在现实中,这实际上成了一个跳数计数器:报文经过的每个路由器都将此字段减1,当此字段等于0时,报文不再向下一跳传送并被丢弃,最大值是255。常规地,一份ICMP报文被发回报文发送端说明其发送的报文已被丢弃。这也是traceroute的核心原理。
9、 协议 (Protocol); 占8bit,这个字段定义了该报文数据区使用的协议。IANA维护着一份协议列表(最初由RFC 790定义)如下列:。
协议号 | 协议 |
---|---|
1 | ICMP |
2 | UDP |
4 | IPv4 |
6 | TCP |
8 | EGP |
9 | IGP |
41 | IPv6 |
10、首部检验和 (Header Checksum);占用16位字段,这个16位检验和字段只对首部查错,不包括数据部分
在每一跳,路由器都要重新计算出的首部检验和并与此字段进行比对,如果不一致,此报文将会被丢弃。重新计算的必要性是因为每一跳的一些首部字段(如TTL、Flag、Offset等)都有可能发生变化,不检查数据部分是为了减少工作量。数据区的错误留待上层协议处理——用户数据报协议(UDP)和传输控制协议(TCP)都有检验和字段。此处的检验计算方法不使用CRC。
RFC 1071
11、 源地址(Source address);一个IPv4地址由四个字节共32位构成,此字段的值是将每个字节转为二进制并拼在一起所得到的32位值。
例如,10.9.8.7是00001010000010010000100000000111。
但请注意,因为NAT的存在,这个地址并不总是报文的真实发送端,因此发往此地址的报文会被送往NAT设备,并由它被翻译为真实的地址。
11、 目的地址(Destination address);与源地址格式相同,但指出报文的接收端。
12、 选项(Options);附加的首部字段可能跟在目的地址之后,但这并不被经常使用,从1到40个字节不等。
请注意首部长度字段必须包括足够的32位字来放下所有的选项(包括任何必须的填充以使首部长度能够被32位整除)。当选项列表的结尾不是首部的结尾时,EOL(选项列表结束,0x00)选项被插入列表末尾。下表列出了可能
字段 | 长度(位) | 描述 |
---|---|---|
备份 | 1 | 当此选项需要被备份到所有分片中时,设为1。 |
类 | 2 | 常规的选项类别,0为“控制”2为“查错和措施1和3保留。 |
数字 | 5 | 指明一个选项。 |
长度 | 8 | 指明整个选项的长度,对于简单的选项此字段可能不存在。 |
数据 | 可变 | 选项相关数据,对于简单的选项此字段可能不存在。 |
注:如果首部长度大于5,那么选项字段必然存在并必须被考虑。
注:备份、类和数字经常被一并称呼为“类型”。
宽松的源站选路(LSRR)和严格的源站选路(SSRR)选项不被推荐使用,因其可能带来安全问题。许多路由器会拒绝带有这些选项的报文。
13、 数据(date);数据字段不是首部的一部分,因此并不被包含在首部检验和中。数据的格式在协议首部字段中被指明,并可以是任意的传输层协议。