什么是IP协议

描述

引言

从上一篇文章,我们知道,ARP协议的工作原理,那么本次就来学习IP层的另一个重要协议——IP协议。

IP协议

IP协议(Internet Protocol),又称之为网际协议,IP协议处于IP层工作,它是整个TCP/IP协议栈的核心协议之一,上层协议都要依赖IP协议提供的服务,IP协议负责将数据报从源主机发送到目标主机,通过IP地址作为唯一识别码,简单来说,不同主机之间的IP地址是不一样的,在发送数据报的过程中,IP协议还可能对数据报进行分片处理,同时在接收数据报的时候还可能需要对分片的数据报进行重装等等。注意:分片仅在IPv4中实现,而IPv6是没有分片的。本系列教程若非特别说明,IP协议均为IPv4。

IP协议是一种无连接的不可靠数据报交付协议,协议本身不提供任何的错误检查与恢复机制。

IP地址

在学习IP协议之前,先来明确一下IP地址的概念。

在TCP/IP设计之初,为了标识互联网中的每台主机的身份,设计人员为每个接入网络中的主机都分配一个IP地址(Internet Protocol Address),是一个32位的整数地址,只有合法的IP地址才能接入互联网中并且与其他主机进行通信,IP地址是软件地址而非硬件地址,硬件MAC地址是存储在网卡中的,应用于本地网络中寻找目标主机。而IP地址能让一个网络中的主机能够与另一个网络中的主机进行通信,因为MAC地址的多样性是很难通过MAC地址直接通信的,因此只能通过IP协议屏蔽这些差异。由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。

连接到因特网的主机都拥有统一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为调用 ARP 来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。

在学习IP地址之前,我们需要简述一下主机与路由器连入网络的通信的方法:一台主机通常只有一条或多条链路连接到网络,即有一个或多个网卡;当主机中想发送一个数据报时,它就在对应的链路上发送,一个网卡对应一个MAC地址与IP地址。

每个IP地址长度为32比特(4字节),因此总共有2^32个可能的IP地址,大约有40亿个IP地址能被使用的。这些地址一般按所谓点分十进制记法(dotted-decimal notation)书写,即地址中的每个字节用它的十进制形式书写,各字节间以点分隔开。例如, IP地址为192.168.0.122,192是该地址第一个8比特的十进制等价数,168是该地址第二个8比特的十进制等价数,依次类推。IP协议

IP地址编址

我们把整个因特网看成为一个单一的、抽象的网络。IP 地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围是唯一的 32 位的标识符。

IP 地址现在由因特网名字与号码指派公司ICANN (Internet Corporation for Assigned Names and Numbers)进行分配。

分类的 IP 地址 :这是最基本的编址方法,在 1981 年就通过了相应的标准协议。

子网的划分 :这是对最基本的编址方法的改进,其标准在 1985 年通过。

构成超网 :这是比较新的无分类编址方法。1993 年提出后很快就得到推广应用。

每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。

IP地址::={<网络号>,<主机号>}

IP协议

A 类网络地址的第一个字节的第一位必须为0 ,因此, A 类网络地址第一个字节的取值范围为0~127(注意:但0 和127 不是有效的A 类网络地址号),A类地址总共有128个网络号,其中3个网络号用作特殊用途,因此可以在互联网上使用的还有125个,而每一个网络号后面的3字节主机号表示能用于A类网络地址不同网络号的的主机数量(多达2^24-2 = 16777214个),所以总的来说A类网络支持的主机数量为125*16777214=2097151750个,大约占据了40亿IP地址的半壁江山,这些IP地址通常被分配给世界上超大型的几个室友,但是通常没有任何一个机构能使用那么大量的IP地址,所以A类地址的很多IP地址都会被白白浪费掉。

B 类网络地址的第一个字节的第一位必须为1 ,且第二位必须为0,因此, B 类网络地址第一个字节的取值范围为128~191,前2字节剩余的14bit表示网络号,多达16384个网络号,其中16个网络号被保留使用,因此可以分配给企业使用的网络号有16368个,每一个网络号中可以拥有2^16-2 =65534个主机,总的来说B类网络支持的主机个数为16368*65534=1072660512,大约占据了所有IP地址的四分之一。

**C **类网络地址的第一个字节的第一位必须为1,第二位必须为1,第三位必须为0,因此C类网络第一个字节的取值范围为192~223,C类地址的前三个字节用于表示网络号(剩下的21bit),所以拥有2097152个网络号,但是其中的256个网络号被保留出来,因此C类地址的可用网络号为2096896个,每个网络号下的主机个数为254,因此C类网络支持的主机数量为532611584,大约占据了所有IP地址的八分之一。

**D **类IP地址的第一个字节前四位为1110,那么它第一个字节的取值范围为224~239,约占据了所有IP地址的十六分之一,它是一个专门保留的地址,它并不指向特定的网络,目前这一类地址被用于多播。

**E **类IP地址的第一个字节前四位必须为1111,那么它第一个字节的取值范围为240~255,约占据了所有IP地址的十六分之一,是为将来使用而保留的,其中32bit全为1的IP地址(255.255.255.255)用作广播地址。

类别 第一字节 第一字节取值范围 网络号个数 主机号个数 适用范围
A类 0XXX XXXX 0~127 125 16777214 大型网络
B类 10XX XXXX 128~191 16368 65534 中型网络
C类 110X XXXX 192~223 2097152 254 小型网络
D类 1110 XXXX 224~239 - - 多播
E类 1111 XXXX 240~255 - - 保留

特殊IP地址

1.受限广播地址

广播通信是一对所有的通信方式,受限广播地址用于定义整个互联网,如果设备想使IP数据报被整个网络所接收,就发送这个目的地址全为1的广播包,但这样会给整个互联网带来灾难性的负担,所以在任何情况下,路由器都会禁止转发目的地址为255.255.255.255的广播数据包,因此这样的数据包仅会出现在本地网络中(局域网),255.255.255.255这个地址指本网段内的所有主机, 相当于“房子里面的人都听着”通知所有主机。

注意:此处不要与以太网的广播地址(255-255-255-255-255-255)混淆了。

2.直接广播地址

受限广播地址是网络号与主机号都为1的地址,但是直接广播地址是主机号全为1而得到的地址,广播地址代表本网络内的所有主机,使用该地址可以向网络内的所有主机发送数据,比如一个IP地址是192.168.0.181,这是C类地址,所以它的主机号只有一个字节,那么对主机号全取1得到一个广播地址192.168.0.255,向这个地址发送数据就能让同一网络下的所有主机接收到。

A、B、C三类地址的广播地址结构如下:

A类地址的广播地址为:XXX.255.255.255(XXX为A类地址的第一个字节取值范围)。

A类地址的广播地址为:XXX. XXX.255.255(XXX为B类地址的前两个字节取值范围)。

A类地址的广播地址为:XXX. XXX. XXX.255(XXX为C类地址的前三个字节取值范围)。

注意:这个地址在IP数据报中只能作为目的地址。另外,直接广播地址使一个网段中可分配给设备的地址数减少了1个。

3.多播地址

多播地址用在一对多的通信中,即一个发送者,多个接收者,不论接受者员数量的多少,发送者只发送一次数据包。多播地址属于分类编址中的D类地址, D类地址只能用作目的地址,而不能作为主机中的源地址。

4.环回地址

127网段的所有地址都称为环回地址,主要用来测试网络协议是否工作正常的作用。比如在电脑中使用ping 命令去ping 127.1.1.1就可以测试本地TCP/IP协议是否正常。用通俗的话表示,就是“我自己”,不能以127网段中的IP地址作为主机地址,因此A类地址又少了一个可用网络号。

5.本网络本主机

IP地址32bit全为0的地址(0.0.0.0)表示的是本网络本主机,这个IP地址在IP数据报中只能用作源IP地址,这发生在当设备启动时但又不知道自己的IP地址情况下。在使用DHCP分配IP地址的网络环境中,这样的地址是很常见的,主机为了获得一个可用的IP地址,就给DHCP服务器发送IP数据报,并用这样的地址(0.0.0.0)作为源地址,目的地址为255.255.255.255(因为主机这时还不知道DHCP服务器的IP地址),然后DHCP服务器就会知道这个主机暂时没有IP地址,那么就会分配一个IP给这个主机。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分