IP协议&IPv4

网络工程基础- - 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报文的格式如下;

IP协议&IPv4

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);数据字段不是首部的一部分,因此并不被包含在首部检验和中。数据的格式在协议首部字段中被指明,并可以是任意的传输层协议。

上一篇:HTTP 概述


下一篇:PHP 8.0重大版本更新正式发布:支持JIT编译器,性能提升高达3倍