一、网际协议IP
与IP协议配套使用的还有三个协议:
地址解析协议ARP:通过IP地址,找到相应的硬件地址。
网际控制报文协议ICMP;
网际组管理协议IGMP
ICMP和IGMP经常使用IP协议,IP协议经常使用ARP协议。
1.虚拟互联网络:
网络互连需要的中间设备:
计算机网络通过路由器连接起来,由于互连的计算机网络都使用相同的IP协议,因此可以把互连以后的计算机网络堪称一个虚拟互联网络。
例如:互联网中的源主机H1要把一个IP数据报发送给目的主机H2,主机H1先查看自己的路由表,看目的主机是否在本网络中,如是,则不需要经过任何路由器而是直接交付。如果不是,把IP数据报发送给某个路由器(R1),R1查看自己的路由表,知道把数据转发给R2进行间接交付,这样一致转下去,最后路由器R5知道自己是和H2连接在同一个网络中,于是把数据直接交付目的主机H2.
源主机和目的主机的协议栈是五层,路由器的协议栈是三层。
2.分类的IP地址
IP地址就是给互联网上的每一个主机(或路由器)的每一个接口分配一个全世界唯一的32位标识符。
IP地址={<网络号>,<主机号>}
网络号:标志主机所连接的网络,一个网络号在整个因特网中必须是唯一的。
当一个单位申请了一个IP地址时,实际上是获得了具有同样网络号的一块地址,其中具体的每个主机号则由单位自行分配,只要无重复的主机号就行。
IP地址表示:(点分十进制记法)二进制表示:每八位一个空格,共四部分。每部分表示成十进制数,用“.”隔开。
常用的三种类别的IP地址:
(1)A类地址:网络号1-126:7位可用,可指派的网络数=2^7-2(去除全0全1)全0表示this(本网络),全1作为本地软件环回测试本主机的进程之间的通信之用。
主机号:3字节 A类网络中的最大主机数:2^24-2(去掉全0全1)全0:该主机连接到的单个网络地址,比如:一个主机的IP地址为5.6.7.8,则它的网络地址是5.0.0.0
全1:该网络上的所有主机。
IP地址空间:2^32个地址,
A类地址 2^31个地址。
(2)B类地址: 网络号128.1-192.255:共16为(10已经固定,14位可用,总数:2^14-1),网络号字段不会出现全0全1的情况,但是128.0.0.0是不指派的,指派的最小网络地址:128.1.0.0。
主机数2^16-2;
(3)C类地址: 网络号192.0.1–223.255.255:共24位(110已固定,21位可分配,总数是
2^21-1)从192.0.1.0开始指派。
2^8-2个主机数。
(4)D类地址:1110+多播地址
(5)E类地址:1111+今后使用
3.IP地址的特点
(1)每个IP地址由网络号和主机号组成,申请时只分配网络号,主机号由单位自行分配。路由器仅根据目的主机所连接的网络号来转发分组,不考虑主机号,这样使路由表中的项目数大幅度减少,从而减少了路由表所占的存储空间以及查询路由表的时间。
(2)实际上IP地址是标志一个主机(或路由器)和一条链路的接口。当一个主机同时连接到两个网络时,该主机必须同时具有两个相应的IP地址,其网络号必须不同,这种主机称为多归属主机。当路由器连接到多于两个网络时,一个路由器也要有多个IP地址。
(3)一个网络:具有相同网络号的主机的集合。具有不同网络号的局域网必须使用路由器互连,所以路由器的每一个接口都有一个不同的网络号的IP地址。
(4)因特网同等对待每一个IP地址。
4.IP地址与硬件地址
物理地址是数据链路层和物理层使用的地址
IP地址是网络层和以上各层使用的地址,是一种逻辑地址。(IP地址是逻辑地址是因为IP地址是用软件实现的)
发送数据时,数据从高层下到低层,然后菜刀通信链路上传输。使用IP地址的IP数据报一旦交给了数据链路层,就被封装成MAC帧了。MAC帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在MAC帧的首部中。
如下图:
三个局域网用两个路由器R1和R2互连起来。现在主机H1要和H2通信。IP地址分别为:IP1,IP2,硬件地址分别为:HA1,HA2。通信的路径是:H1->R1转发->R2转发->H2.路由器R1有两个硬件地址:HA3和HA4.
5.地址解析协议ARP
通过IP地址找到硬件地址,提供给数据链路层使用。
地址解析协议:主机ARP高速缓存中应存放存放IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)
每一个主机都设有ARP高速缓存:里面是本局域网上的各主机和路由器的IP地址到硬件地址的映射表。
应用:
在同一个局域网中,如果主机A向主机B发送IP数据报时,就现在ARP高速缓存中查看有无主机B的IP地址,如果有,就在ARP中查到其硬件地址,再把硬件地址写入MAC帧,然后通过局域网把该MAC帧发往此硬件地址。
如果主机A的映射表中没有主机B的IP地址,则ARP进程会发出一个广播:我的IP地址时209.0.0.5,硬件地址是00-00-C0-15-AD-18.我想知道209.0.0.6主机的硬件地址。
然后会有主机B 会发送ARP响应:”我是209.0.0.6,我的硬件地址是08-00-2B-00-EE-0A“
主机A收到后,就在其ARP高速缓存中写入主机B的IP地址和硬件地址的映射。收到A的ARP请求的主机,都会把A的地址映射写到自己的ARP高速缓存中。
ARP中保存的地址映射是有生存周期的,一到期就自动删除。
如果源主机和目的主机不在一个局域网中
则需要路由器的帮助。需要获得路由器的硬件地址,然后再一步一步转发。
问题:既然在网络链路中传动的帧是按照硬件地址找到目的主机的,为什么我们不直接使用地址进行通信呢?而使用抽象的IP地址并调用ARP来寻找响应的硬件地址呢?
这是因为:全世界各种各样的网络,使用不同的硬件地址,要进行非常负责的硬件地址转换工作,所以使用统一的IP地址就把复杂的问题简单化了。
6.IP数据报的格式
IP数据报:首部+数据。首部固定长度20字节。
首部校验和:只校验数据首部,不包括数据部分。这些数据每经过一个路由器,路由器都要重新计算一下首部校验和
7.IP层转发分组的流程
在路由表中,对每一条路由最重要的信息:
{目的网络地址,下一跳地址}
分组转发算法:
(1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址N
(2)若N就是与此路由器直接连接的某个网络地址,则进行直接交付,直接把数据交付给目的主机(包括把目的主机地址D转换成具体的硬件地址,把数据报封装成MAC帧,再发送此帧)
否则,执行(3)
(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器。否则,执行(4)
(4)若路由表中有到达网络N的路由,则把数据报传送给路由表中指明的下一跳路由器,否则,执行(5)
(5)若路由表中有一个默认路由,则把数据报传送给路由表中指明的默认路由器,否则,执行(6)
(6)报告转发分组出错。
当路由器收到一个待转发的数据报时,从路由表中得出下一跳路由器的IP地址后,不是把这个地址填入IP数据报,而是通过将IP地址转换成硬件地址,并将此硬件地址放在链路层的MAC帧首部,通过这个硬件地址找到下一跳路由器的。
8.划分子网
为什么从两级IP地址到三级IP地址?
(1)IP地址空间的利用率有时很低:比如一个单位申请了一个B类地址,但所连接的主机数并不多,但又不愿意申请你个C类地址,因为考虑到今后的发展。造成IP地址浪费。
(2)给每一个物理网络分配一个网络号会使路由表变的太大因而使网络性能变坏。
(3)两级IP地址不够灵活:三级网络可以满足以下情况:如果一个单位需要新开通一个网络,二级IP地址就需要单位再去因特网管理机构申请新的,但三级IP地址就可以让一个单位随时灵活地增加本单位的网络。
划分子网的基本思路:
(1)划分子网是一个单位内部的事情,这个单位对外依然表现为一个网络。
(2)划分子网的方法:从网络的主机号借用若干位作为子网号,主机号也相应的减少了同样的位数。
IP地址:{<网络号>,<子网号>,<主机号>}
(3)凡是从其他网络发送给本单位某个主机的IP数据报,仍然根据IP数据报的目的网络号找到连接在本单位网络上的路由器。但此路由器在收到IP数据报后,再按目的网络和子网号找到目的子网,把IP数据报交付给目的主机。
子网掩码
同样的IP地址和不同的子网掩码可以得出相同的网络地址。
9.使用子网时分组的转发
使用了子网划分后,路由表的内容:目的网络地址、子网掩码、下一跳地址
路由器转发分组算法:
(1)从数据报的首部提前目的IP地址D
(2)先判断是否为直接交付。对路由器直接连接的网络逐个检查:(每个网络都有一个网络地址+子网掩码)用各网络的子网掩码和D逐位进行”与“操作,看结果是否和相应的网络地址匹配。如果匹配,则把分组进行直接交付(把D转换成物理地址,把数据报封装成帧发出去)。否则就是简介交付,执行(3)
(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表种所指明的下一跳路由器。否则,执行(4)
(4)对路由表中的每一行(目的网络地址,子网掩码,下一跳地址),用其中的子网掩码和D逐位相”与“,其结果是N,若N与改行的目的网络地址匹配,就把数据报传送给该行指明的下一跳路由器。否则,执行(5)
(5)若路由器有一个默认路由,则把数据报传送给路由表中所指明的默认路由器。否则,执行(6)
(6)报告转发分组报错。
源主机H1向目的主机H2发送的分组的目的地址是H2的IP地址128.30.33.138
10.无分类编址CIDR(构成超网)
CIDR的特点:
(1)IP={网络前缀,子网号}。在IP地址后面加上“/”,然后写上网络前缀所占的位数
(2)CIDR把网络前缀相同的连续的IP地址组成一个“CIDR地址块”,已知IP地址:128.14.35.7/20(20是网络前缀,12位是主机号)
例如:ISP已拥有地址块:206.0.64.0/18,现在某大学需要800个IP地址,ISP可以给大学分配一个地址块:206.0.68.0/22,它包含(2^10=1024个IP地址)。这个ISP拥有64个C类网络,如果不采用CIDR技术,则在与该ISP的路由器交换路由信息的每一个路由器的路由表中,就需要64个项目。但采用地址聚合后,就只需用路由聚合后的一个项目206.0.64.0/18就能找到该ISP,同理,这个大学有四个系,在ISP内的路由器的路由表中,也需要使用206.0.68.0/22这一个项目。
把四个系的路由聚合为大学的一个路由(即构成超网),是将网络前缀缩短。网络前缀越短,其地址块所包含的地址数越多。而在三层结构的IP地址中,划分子网是使网络前缀变长。
最长前缀匹配:
11.网际控制报文协议ICMP
ICMP的应用: