【第二章】IP协议

野火官网:1. 网络编程 — [野火]嵌入式Linux基础与应用开发实战指南——基于i.MX6ULL开发板 文档 (embedfire.com)

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

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

一、IP地址简述

        在TCP/IP设计之初,为了标识互联网中的每台主机的身份,设计人员为每个接入网络中的主机都分配一个IP地址(Internet Protocol Address),是一个32位的整数地址,只有合法的IP地址才能接入互联网中并且与其他主机进行通信,IP地址是软件地址,不是硬件地址,硬件MAC地址是存储在网卡中的,应用于本地网络中寻找目标主机。而IP地址能让一个网络中的主机能够与另一个网络中的主机进行通信,无需理会这些主机之间的MAC地址。

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

一台主机
网卡1网卡2网卡3网卡...网卡n
MAC地址_1 与 IP地址_1MAC地址_2 与 IP地址_2MAC地址_3 与 IP地址_3MAC地址_. 与 IP地址_.MAC地址_n 与 IP地址_n

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

二、IP地址编址

        在全球的互联网中,每个主机都要唯一的一个IP地址作为身份识别,那么这么多IP地址是怎么样分配的呢?这不可能是随意自由选择IP地址的,实际上每个主机的IP地址的一部分都由其所在的子网决定的,所以又出现了IP地址分类编址的概念,网络的类型决定了IP 地址将如何划分成网络部分和节点部分,在分类编址中,设计者把所有的IP地址划分为5大类,分别为A、B、C、D、E五类,每一类地址都觉定了其中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)用作广播地址。

三、特殊IP地址

         除了上述的网络地址外,还有一些特殊用途的地址,这些地址是不允许分配给任何一个网络的主机使用的,下面简单介绍几个常见的特殊地址。

3.1 受限广播地址

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

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

3.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.3 多播地址

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

3.4 环回地址

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

3.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给这个主机。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值