2020~2021

IPv4简单介绍

1. What’s IPv4

1.1 定义

IPv4(Internet Protocol Version 4)是TCP/IP协议族中最为核心的协议。它工作在TCP/IP协议栈的网络层。该层与OSI七层模型中的网络层相对应。IP层将数据分割成数据单元,并添加地址信息和控制信息,使得数据包能够按照路由转发。(以下IP地址等均默认为IPv4地址,本文不讨论IPv6)

1.2 特点

IP层提供的是不可靠、无连接数据传输服务。
不可靠的意思是它不能保证IP数据报能成功地到达目的地。IP仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP会丢弃该数据报,然后发送ICMP消息报给信源端。任何要求的可靠性必须由上层来提供(如TCP)
无连接的意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明,IP数据报可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。

2. IPv4地址

2.1 地址表示方法

在IP网络中通信,每个设备都至少需要有一个IP地址,IP地址长度为4个字节32比特,常用点分十进制表示,即将每个字节的数据转换为10进制,每个字节间以“.”隔开。例如
点分十进制:1.1.1.1
对应二进制则为: 00000001 0000001 0000001 0000001
IP地址由网络号和主机号两部分组成,IP地址的网络号字段用来唯一的标识一个网段,或者若干网段的聚合。IP地址与子网掩码转换为二进制,进行AND计算后的结果即为网络号字段。
IP地址的主机号字段用来唯一的标识同一网段内的具体某台网络设备。IP地址与子网掩码转换为二进制,再将子网掩码取反,进行AND计算后的结果即为主机号字段。
对于同一网段内的设备而言,无论实际所处的物理位置如何,只要它们的网络号相同,它们就处在同一个网络中。

2.2 划分子网优缺点:

使用子网掩码将网络划分为更小的部分(即子网)。通过从主机号码字段部分划出一些比特位作为子网号码字段,能够将一个网络划分为多个子网。子网号码字段的长度由子网掩码确定。
子网掩码是一个长度为32比特的数字,由一串连续的“1”和一串连续的“0”组成。“1”对应于网络号码字段和子网号码字段,而“0”对应于主机号码字段。
多划分出一个子网号码字段会浪费一些IP地址。例如,一个B类地址可以容纳65534(216-2,去掉主机号码字段全1的广播地址和主机号码字段全0的网段地址)个主机号码。但划分出9比特长的子网字段后,最多可有512(29)个子网,每个子网有7比特的主机号码,即每个子网最多可有126(27-2,去掉主机号码字段全1的广播地址和主机号码字段全0的网段地址)个主机号码。因此主机号码的总数是512*126=64512个,比不划分子网时要少1022个。
若不进行子网划分,则子网掩码为默认值,此时子网掩码中“1”的长度就是网络号码的长度,即A、B、C类IP地址对应的子网掩码默认值分别为255.0.0.0、255.255.0.0和255.255.255.0(见下一节)。

3. IPv4地址分类

地址类型 地址范围 说明
A 0.0.0.0~127.255.255.255 IP地址0.0.0.0仅用于主机在系统启动时进行临时通信,并且永远不是有效目的地址;127.0.0.0网段的地址都保留作环回测试,发送到这个地址的分组不会输出到链路上,它们被当作输入分组在内部进行处理。
B 128.0.0.0~191.255.255.255
C 192.0.0.0~223.255.255.255
D 224.0.0.0~239.255.255.255 组播地址
E 240.0.0.0~255.255.255.255 255.255.255.255用于广播地址,其它地址保留今后使用

下列IP地址具有特殊的用途,不能作为主机的IP地址:
· 网络号为全0的地址:表示本网络内的主机。例如,0.0.0.16表示本网络内Host-id为16的主机。
· 主机号为全0的地址:网络地址,用于标识一个网络。
· 主机号为全1的地址:网络广播地址。例如,目的地址为192.168.1.255的报文,将转发给192.168.1.0网络内所有的主机。
私有地址,不能用于Internet,只能用于局域网(如家庭企业内网,可用ifcong等命令查看设备地址是否为内网地址),被局域网重复利用以缓解IP不足的问题:
A类:10.0.0.1-10.255.255.254(2^24个)
B类:172.16.0.1-172.31.255.254(2^20个)
C类:192.168.0.1-192.168.255.254(2^16个)

4. IP报文结构

4.1 IP报文结构图

报文结构
网络层的分组称为数据报(datagram)/IP数据报。数据报是一个可变长度的分组,它由两部分组成:首部和数据。首部长度由 20字节基本首部+0-40字节可选部分构成,包含有关路由选择和交付的重要信息。

4.2 字段解释:

4位版本:
这个4位字段定义了使用了那个版本的IP协议,4表示IPv4,6表示IPv6(此处使用十进制表示);

4位首部长度:
其定义了数据报首部的总长度,以4字节(Byte)为单位计算;上面说过,IP报文的长度是可变的,由此可知,理论上IP报文首部的长度最大为(2^4-1)*4 =60Byte,即首部长度范围为20~60Byte;

8位服务类型:
TOS(type of service),它指明了应当如何处理数据报;
8位TOS包括3 bit的优先权字段(取值可以从000-111所有值),4 bit的TOS子字段和1 bit未用位但必须置0;
3bit的8个优先级的定义如下:
111–Network Control(网络控制);
110–Internetwork Control(网间控制);
101–Critic(关键);
100–Flash Override(疾速);
011–Flash(闪速);
010–Immediate(快速);
001–Priority(优先);
000–Routine(普通);
优先级6和7一般保留给网络控制数据使用,如路由;
优先级5推荐给语音数据使用;
优先级4由视频会议和视频流使用;
优先级3给语音控制数据使用;
优先级1和2给数据业务使用;
优先级0为默认标记值;
在标记数据时,既可以使用数值,也可以使用名称(英文名称);

4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4 bit中只能置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务;
语音业务要求最小的传输时延,F文件传输要求最大吞吐量,最高可靠性是指网络管理(SNMP)和路由选择协议,新闻业务需要最小费用等。

16位总长度(字节数):
定义了以字节为单位的数据报总长度(首部+数据),所以数据报最大长度限制在65535($2^16-1$)Byte;虽然65535字节的长度看起来好像很长,但是,随着底层技术使得更大的吞吐量(高带宽)成为可能,IP数据报的长度在不久的将来可能会大大增加;
大多数网卡驱动无法把65535字节的数据报封装成帧,需要对数据报进行分片(涉及到MTU,下文会解释);
但有些情况下,因为数据报长度很小,需要对封装的帧附加一些填充(IP报文长度至少64字节)。

16位标识:
此16位字段用于分片。

3位标志:
此3位字段用于分片。

13位片偏移:
此13位字段用于分片。

8位生存时间(TTL):
TTL(Time To Live)表示数据报在互联网中是有生存时间限制的(实际上是报文可在网络间最大转发的跳数);IP数据报文在网络中传输时,每经过一个路由器,路由器就会对TTL减一,如果TTL为0,那么报文就会被丢弃,同时发送目的不可达信息给源主机;
使用TTL可有效避免IP数据报在网络中的无限循环和收发。

8位协议(Protocol):
定义了使用此IP服务的高层协议;有许多高层协议(如TCP,UDP,ICMP,IGMP等)的数据都能被封装到IP数据报中;这个字段指明了IP数据报必须交付给哪个最终目的协议。

协议
1 ICMP
2 IGMP
6 TCP
17 UDP
89 OSPF

16位首部检验和:
主要用于对报文进行校验,发送方将IP报文首部校验和存在此字段中;如果路由器转发时进行校验,发现出错,则丢弃报文。
源地址:
IP数据报文的发送者IP地址。
目的地址:
IP数据报文的目的IP地址。

5. 分片

最大传输单元(MTU)
不同的数据链路层协议,MTU的值一般是不同的,当然,有些也可以人为手工设定;
MTU决定了本机发出去的最长帧长度,而收到的帧长度由此报文经过的上个设备的MTU决定;
上面介绍IP报文字段的时候说过,IP数据报的最大长度为65535字节;但是目前一般的以太网帧的长度为1518,去掉18字节的以太头,那么IP数据报文的最大长度就是1500字节。
假设MTU为1400,如果将要发送出去的报文长度为2000字节,那么就要对数据进行分片,使这些数据能够进行网络传输;
当数据报被分片时,每一个数据报都有自己的首部,其中大部分的字段是重复的,但有些是变化的;
如果已经分片的数据报遇到具有更小MTU的网络,那么这些已经分片的数据报还可以再进行分片;
数据报可以被源主机或途中任何路由器分片,但数据报的重装只能在目的主机上进行,因为每一个分片都变成了独立的数据报;
对数据报进行分片的主机或路由器必须改变三个字段的值:标志,分片偏移,总长度;这三个字段,决定了该分片报文在完整报文中的位置。

6. IP安全

IPSec(Internet Protocol Security)
目前我们可以使用一种称为 IPSec(IP安全性) 的协议来保护IP报文;IPSec提供了对IP数据报文的加密、认证,由于其细节较为复杂,可能会单独写一篇~


参考:
RFC791 INTERNET PROTOCOL

发表评论

电子邮件地址不会被公开。 必填项已用*标注