TCP/IP (六) 网络层
1. 网络层简介
2. 网络层的基础知识
2.1 IP地址
概念:
连在某个网络上的两台计算机在相互通信时,在它们所传送的数据包里含有某些附加信息,这些附加信息就是发送数据的计算机的地址和接受数据的计算机的地址。当网络中存在以IP协议为基础的通信时,这些发送和接受数据的地址就是IP地址。
基本地址格式:
现在的IP网络使用32位地址,以十进制表示,如172.16.0.0。
地址格式为:IP地址=网络地址+主机地址或IP地址=主机地址+子网地址+主机地址。
IP地址类型:
最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。
同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。
Internet委员会定义了5种IP地址类型以适合不同容量的网络,即A类地址、B类地址、C类地址、D类地址和E类地址。
类别 |
最大网络数 |
IP地址范围 |
最大主机数 |
私有IP地址范围 |
A |
126(27-2) |
0.0.0.0-127.255.255.255 |
16777214 |
10.0.0.0-10.255.255.255 |
B |
16384(214) |
128.0.0.0-191.255.255.255 |
65534 |
172.16.0.0-172.31.255.255 |
C |
2097152(221) |
192.0.0.0-223.255.255.255 |
254 |
192.168.0.0-192.168.255.255 |
A类地址:
第一组数字为1~126。注意,数字0和127不作为A类地址,数字127保留给内部回送函数,而数字0则表示该地址是本地宿主机,不能传送。
范围:1.0.0.1到126.255.255.254;
一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,地址范围从1.0.0.0到126.0.0.0。可用的A类网络有126个,每个网络能容纳1677万个主机。
B类地址:
第一组数字为128~191。
范围:128.0.0.1到191.255.255.254;
注意169.254.x.x被微软买断,用作用户获取不到IP时自动分配的IP地址。
一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万个主机。
C类地址:
第一组数字为192~223。
范围:192.0.0.1到223.255.255.254;
一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。
D类地址:
224.0.0.1~239.255.255.254;
D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。
E类地址:
240.0.0.1~255.255.255.254;
以“11110”开始,为将来使用保留。
全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。所谓广播,指同时向同一子网所有主机发送报文。
2.2 子网掩码
子网掩码的作用就是和IP地址与运算后得出网络地址,子网掩码为32bit,并且是一串1后跟随一串0组成,其中1表示在IP地址中的网络地址或子网地址对应的位数,而0表示在IP地址中主机对应的位数。
子网掩码:要让子网划分方案管用,网路中每台机器必须知道主机地址的那部分为子网地址,通过给每台机器分配子网掩码实现。
(1)标准子网掩码
类别 |
格式 |
默认子网掩码 |
支持主机数 |
A |
network,node,node,node |
255.0.0.0 |
224-2 |
B |
network,network,node,node |
255.255.0.0 |
216-2 |
C |
network,network,network,node |
255.255.255.0 |
28-2 |
A类网络(1-126):缺省子网掩码:255.0.0.0
255.0.0.0换算成二进制为11111111·00000000·00000000·00000000
可以清楚地看出前8位是网络地址,后24位是主机地址,也就是说,如果用的是标准子网掩码,看第一段地址即可看出是不是同一网络的。
如21.0.0.0.1和21.240.230.1,第一段为21属于A类,如果用的是默认的子网掩码,那这两个地址就是一个网段的。
B类网络(128-191)缺省子网掩码:255.255.0.0
C类网络(192-223)缺省子网掩码:255.255.255.0
B类、C类分析同上。
(2)特殊的子网掩码
标准子网掩码出现的都是255和0的组合,在实际的应用中还有下面的子网掩码:
255.128.0.0
255.192.0.0
。。。。。。
255.255.192.0
255.255.240.0
。。。。。。
255.255.255.248
255.255.255.252
2.3 无分类编址(CIDR)
无分类域间路由选择(CIDR)是在变长子网掩码的基础上提出的一个消除A,B,C类网络划分,并且可以在软件的支持下实现构造超网的一种IP地址的划分方法;
网段表示法:CIDR:(ClasslessInter-DomainRouting,无类域间路由选择)。
形式如:192.168.10.32/28。前面的数字是我们的网络地址,后面的28表示用28位来表示网络位,用32-28=4位来表示主机位。
通过这种记法,我们能明确两个信息:
网络地址:192.168.10.32
子网掩码:255.255.255.240
/8-/15只能用于A类网络;/16-/23可用于A类或B类网络,而/24-/30可用于A类、B类和C类网络。
A类网络可使用所有的子网掩码,进行网络设计时的灵活性最大。
CIDR的主要特点:
1)消除了传统的A,B,C类地址以及子网划分的概念,因而可以更加有效的分配IPv4的地址空间.CIDR使用”网络前缀”的概念代替网络号的概念,这样IP地址的无分类两级编址就变为:
IP::={<网络前缀>,<主机地址>}
CIDR还使用”斜线记法”,即:<IP地址>/<网络前缀所占位数>.其中,网络前缀所占位数对应于网络号部分,等效于子网掩码中连续1的部分,因此通过逐位相”与”的方法依然可以得到该地址的网络前缀;
注:CIDR并不使用子网,CIDR并没有在32位地址中指明若干位作为子网字段,但分配到一个CIDR地址块的组织仍可以在本组织内根据需要划分出一些子网;
2)将网络前缀都相同的连续的IP地址组成”CIDR地址块”,一个CIDR地址块可以表示很多地址,这种地址的聚合成为路由聚合,或称构成超网;路由聚合使得路由表中的一个项目可以表示很多个原来传统分类地址的路由,有利于减少路由器之间的路由选择信息的交换,从而提高网络性能.
最长前缀匹配
使用CIDR时,路由表中的每个项目由”网络前缀”和”下一跳地址”组成.在查找路由表时可能会得到不止一个匹配结果,应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,因而路由就越具体;
CIDR查找路由表的方法:为了进行更加有效地查找最长前缀匹配,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找,这就是最常用的二叉线索;
2.4 网络地址(IP与子网掩码)
要想在同一网段,只要网络标识相同就可以。
首先要做的是把每段的IP转换为二进制。
把子网掩码切换至二进制,我们会发现,所有的子网掩码是由一串连续的1和一串连续的0组成的(一共4段,每段8位,一共32位数)。
255.0.0.011111111.00000000.00000000.00000000
255.255.0.011111111.11111111.00000000.00000000
255.255.255.011111111.11111111.11111111.00000000
这是A/B/C三类默认子网掩码的二进制形式。
子网掩码:主要是用来区分IP地址中的网络ID和主机ID。其中为"1"的位分离出网络ID,为"0"的位分离出主机ID。
子网掩码决定的是一个子网的计算机数目,计算机公式是2的m次方,其中,m为子网掩码的二进制形式中0的个数。
(1)判断是否在一个网段
要想在同一网段,必需做到网络标识相同。
各类IP的网络标识算法都是不一样的。
A类的,只算第一段。
B类,只算第一、二段。
C类,算第一、二、三段。
网路标识=IP地址&子网掩码;即通过将IP地址与子网掩码进行"与(&)"逻辑操作,得出网络号。
主机标识=IP地址&(!子网掩码)
如:192.168.0.1,255.255.255.0,先转换为二进制,然后AND每一位;
IP:11000000.10101000.00000000.00000001
子网掩码:11111111.11111111.11111111.00000000
得出AND结果11000000.10101000.00000000.00000000
转换为十进制192.168.0.0,这就是网络标识。
而将子网掩码反取,00000000.00000000.00000000.11111111,与IPAND得出结果00000000.00000000.00000000.00000001,转换为10进制,即0.0.0.1,
这0.0.0.1就是主机标识。
(2)子网的划分
子网的划分,实际上就是设计子网掩码的过程。
例如,假设IP地址为192.160.4.1,子网掩码为255.255.255.0,则网络ID为192.160.4.0,主机ID为0.0.0.1。计算机网络ID的不同,则说明他们不在同一个物理子网内,需通过路由器转发才能进行数据交换。
如果希望在一个网络中建立子网,就要在这个默认的子网掩码中加入一些位,它减少了用于主机地址的位数。加入到掩码中的位数决定了可以配置的子网。
因而,在一个划分子网的网络中,每个地址包含一个网络地址、一个子网位数和一个主机地址。
1)选定的子网掩码将创建多少个子网?
2^x个,其中x是子网掩码借用的主机位数。
如:192.168.10.32/28,我们知道C类IP的默认子网掩码为:255.255.255.0。该IP的实际子网掩码是:255.255.255.240。原本最后一个字节应该是0(00000000),现在却是240(11110000)。故其借用了主机位4位来充当网络位。
2)每个子网可包含多少台主机?
2^y-2台,其中y是没被借用的主机位的位数。
-2是因为,主机位全为0的部分是这个子网的网段号(Net_id),全为1的部分是这个网段的广播地址。
3)有哪些合法的子网?
算出子网的步长(增量)。一个例子是256-192=64,即子网掩码为192时,步长为64。从0开始不断增加,直到到达子网掩码值,中间的结果就是子网,即0、64、128和192。
4)每个子网的广播地址是什么?
主机位全为1就是该子网的广播地址。
一般我们这样计算:广播地址总是下一个子网前面的数。前面确定了子网为0、64、128和192,例如,子网0的广播地址为63,因为下一个子网为64;子网64的广播地址为127,因为下一个子网为128,以此类推。请记住,最后一个子网的广播地址总是255。
5)每个子网可包含哪些主机地址?
合法的主机地址位于两个子网之间,但全为0和全为1的地址除外。例如,如果子网号(网段号)为64,而广播地址为127,则合法的主机地址范围为65-126,即子网地址和广播地址之间的数字。
(3)划分实例
1)已知网络地址和子网掩码,求子网划分(C类IP)
例1:网络地址=192.168.10.0;子网掩码=255.255.255.128
1.子网数=2*1=2
2.每个子网的主机数=2的7次方-2=126
3.合法子网:blocksize=256-128=128;第一个子网为192.168.10.0,第二个为192.168.10.128
4.每个子网的广播地址:下个子网-1。所以2个子网的广播地址分别是192.168.10.127和192.168.10.255.
5.每个子网包含的合法主机范围:第一个子网的主机范围为192.168.10.1-192.168.10.126;第二个的主机范围为192.168.10.129-192.168.10.254。
子网 |
192.168.10.0 |
192.168.10.128 |
第一主机地址 |
192.168.10.1 |
192.168.10.129 |
最后一个主机地址 |
192.168.10.126 |
192.168.10.254 |
广播地址 |
192.168.10.127 |
192.168.10.255 |
例2:网络地址192.168.10.0;子网掩码255.255.255.192(/26)
1.子网数=2*2=4
2.每个子网的主机数=2的6次方-2=62
3.合法子网:blocksize=256-192=64;第一个子网的主机范围为192.168.10.0,第二个为192.168.10.64,第三个为192.168.10.128,第四个为192.168.10.192;
4.每个子网的广播地址:下个子网-1。所以4个子网的广播地址分别是192.168.10.63,192.168.10.127,192.168.10.191和192.168.10.255
5.每个子网的合法主机范围是:第一个子网的主机范围为192.168.10.0,第二个为192.168.10.64,第三个为192.168.10.128,第四个为192.168.10.192;
子网 |
192.168.10.0 |
192.168.10.64 |
192.168.10.128 |
192.168.10.192 |
第一个主机地址 |
192.168.10.1 |
192.168.10.65 |
192.168.10.129 |
192.168.10.193 |
第二个主机地址 |
192.168.10.62 |
192.168.10.126 |
192.168.10.190 |
192.168.10.254 |
广播地址 |
192.198.10.63 |
192.168.10.127 |
192.168.10.191 |
192.168.10.255 |
2)已知网络地址和子网掩码,求所处子网?(C类IP)
例1:IP地址=192.168.10.33,子网掩码=255.255.255.224,求该网络的子网划分。
1.子网增量
子网掩码为224,则子网步长为256-224=32;
2.合法子网
子网的步长为32,则子网为192.168.10.0,192.168.10.32,192.168.10.64等;
3.该IP地址对应的子网号:
因为主机地址为33,处于子网32和64之间,因此属于子网192.168.10.32.
4.该子网对应的广播地址:
下一个子网为64,则子网32的广播地址为63.
5.合法的主机地址范围:
198.168.10.33-198.168.10.62.
3)已知网络地址和子网掩码,求子网划分(B类IP)
注意:在B类地址中,有16位可用于主机地址。这意昧着最多可将其中的14位用于子网划分,因为至少需要保留2位用于主机编址。使用/16意味着不对B类网络进行子网划分,但它是一个可使用的子网掩码。
例1:网络地址:172.16.0.0;子网掩码255.255.128.0(/17)
1.子网数=2*1=2
2.每个子网的主机数=2的15次方-2=32766
3.合法子网:blocksize=256-128=128;第一个子网为172.16.0.0,第2个为172.16.128.0
4.每个子网的广播地址:下个子网-1。所以2个子网的广播地址分别是172.16.127.255和172.16.255.255
5.每个子网的合法主机范围是:第一个子网的主机地址是172.16.0.1到172.16.127.254;第二个是172.16.128.1到172.16.191.254
子网 |
172.16.0.0 |
172.16.128.0 |
第一个主机地址 |
172.16.0.1 |
172.16.128.1 |
最后一个主机地址 |
172.16.127.254 |
127.16.255.254 |
广播地址 |
172.16.127.255 |
172.16.255.255 |
例2:网络地址:172.16.0.0;子网掩码255.255.255.128(/25)
1.子网数=2的9次方=512(因为B类地址默认掩码是255.255.0.0,所以网络位为8+1=9)
2.每个子网的主机数=2的7次方-2=126。还有16-9=7位主机位。
3.合法子网:这个地方的子网增量应该是256-255=1,因此第三个字节的可能取值为0、1、2、3…255;但别忘了,第四个字节还有一个子网位。也就是说第三个字节的每个取值都有0和128这两种情况。例如,如果第三个字节的取值为3,则对应的两个子网为3.0和3.128。因此总共有512个子网。
4.每个子网的广播地址:见下表;
5.每个子网的合法主机范围是:见下表。
子网 |
0.0 |
0.128 |
1.0 |
1.128 |
2.0 |
2.128 |
。。。 |
255.0 |
255.128 |
第一个主机地址 |
0.1 |
0.129 |
1.1 |
1.129 |
2.1 |
2.129 |
。。。 |
255.1 |
255.129 |
最后一个主机地址 |
0.126 |
0.254 |
1.126 |
1.254 |
2.126 |
2.254 |
。。。 |
255.126 |
255.254 |
广播地址 |
0.127 |
0.255 |
1.127 |
1.255 |
2.127 |
2.255 |
。。。 |
255.127 |
255.255 |
4)已知网络地址和子网掩码,求所处子网?(B类IP)
当使用cidr表示子网划分,网络位的位数>24时,比如/25,/27.我们只需要考虑第四个字节。<=24时,我们只需要考虑第三个字节,因为第四个字节的主机位并没有被借用,并没有参与到子网划分。
5)已知网络地址和子网掩码,求子网划分(A类IP)
例1:网络地址=10.0.0.0;子网掩码=255.255.240.0(/20)时,12位用于子网划分,余下12位用于主机编址。
1.子网数=2的12次方=4096;
2.每个子网的主机数=2的12次方-2=4094。
3.合法子网:借用的主机号来自于第二和第三个字节,因此要考虑第二个和第三个字节,在第二个字节中,子网号的间隔为1;在第三个字节中,子网号为0、16、32等,因为256-240=16;
4.每个子网的广播地址:见下表;
5.每个子网的合法主机范围是:见下表。
子网 |
10.0.0.0 |
10.0.16.0 |
10.0.32.0 |
。。。 |
10.255.240.0 |
第一个主机地址 |
10.0.0.1 |
10.0.16.1 |
10.0.32.1 |
。。。 |
10.255.240.1 |
最后一个主机地址 |
10.0.15.254 |
10.0.31.254 |
10.0.47.254 |
。。。 |
10.255.255.254 |
广播地址 |
10.0.15.255 |
10.0.31.255 |
10.0.47.255 |
。。。 |
10.255.255.255 |
例2:网络地址=10.0.0.0;子网掩码=255.255.240.192(/26)。
1.子网数=2的18次方=262144;
2.每个子网的主机数=2的6次方-2=62。
3.合法子网:在第二个和第三个字节中,子网号间隔为1,而在第四个字节中,子网号间隔为64
4.每个子网的广播地址:见下表;
5.每个子网的合法主机范围是:见下表。
子网 |
10.0.0.0 |
。。。 |
10.255.255.0 |
10.255.255.64 |
10.255.255.128 |
10.255.255.192 |
第一个主机地址 |
10.0.0.1 |
。。。 |
10.255.255.1 |
10.255.255.65 |
10.255.255.129 |
10.255.255.193 |
最后一个主机地址 |
10.0.0.62 |
。。。 |
10.255.255.62 |
10.255.255.126 |
10.255.255.190 |
10.255.255.254 |
广播地址 |
10.0.0.63 |
。。。 |
10.255.255.63 |
10.255.255.127 |
10.255.255.191 |
10.255.255.255 |
2.5 公网和私网
IP分为publicIP(公有地址)和privateIP(私有地址),出现这种规划,原因在于IPv4所能表示的IP太少,而电脑太多。
PublicIP:由INTERNIC(因特网信息中心)所统一规划的IP,有这种IP才可以连上Internet。公有地址是全球唯一的,公网中不可能存在两个相同的IP地址。
PrivateIP:内网(局域网),不能直接连上Internet的IP,用于组织机构内部使用。
私有ip有的几个限制:
- 1.私有IP的路由信息不能对外散播(只能存在内部网络);
- 2.使用私有IP作为来源或目的地址的封包,不能透过Internet来转送(不然网络会混乱);
- 3.关于私有IP的参考纪录(如DNS),只能限于内部网络使用。
只有公网ip是能够连接互联网的,私网IP一般只用作局域网
类别 |
IP范围 |
私有地址范围 |
保留地址 |
A |
1.0.0.0-126.255.255.255 |
10.0.0.0-10.255.255.255 |
127.0.0.0-127.255.255.255 |
B |
128.0.0.0-191.255.255.255 |
172.16.0.0-172.31.255.255 |
169.254.0.0-169.254.255.255 |
C |
192.0.0.0-223.255.255.255 |
192.168.0.0-192.168.255.255 |
无 |
我们能够上网靠的是ISP组织分给我们的Ip地址,但是这个ip地址一般不是给个人的,一般都是给一个单位,一个区域的,也就是说我们实际上能接触到的一般都是私有地址,即我们用ipconig查到的都是私有地址,也就相当于局域网内的ip地址,当我们真正联网时,会先把数据发送到路由,然后再由路由进行处理实现真正的联网操作,路由的地址才是真正联网的Ip地址,也就是pubilcip,而我们在自己电脑上查到的都是私有ip。
上网流程:
先通过私网IP,将个人的需求和要发送的数据发送给路由器,通过路由器对接网络,把数据发送给Internet,然后Internet发送数据到路由器,最后路由器通过个人的私网IP发送给个人。
(1)私有IP与共有IP之间的转换
nat转换技术(路由器中NAT(网路地址转换)软件)。
特例:169开头的是一个保留地址,是本地连接受限时系统自动分配的IP,无任何意义,原因可能是服务器还没搭建好。
2.6 回送地址
A类网络地址127是一个保留地址,用于网络软件测试以及本地机进程间通信,叫做回送地址(loopbackaddress),其所在的回环接口一般被理解为虚拟网卡,并不是真正的路由器接口。
回环地址:通俗的讲,就是我们在主机上发送给127开头的IP地址的数据包,会被发送的主机自己接收,根本传不出去,外部设备也无法通过回环地址访问到本机。
含网络号127的分组不能出现在任何网络上。
PS:正常的数据包会从IP层进入链路层,然后发送到网络上;而给回环地址发送数据包,数据包会直接被发送主机的IP层获取。
而127.0.0.1作为{127}集合中的一员,当然也是个回环地址。只不过127.0.0.1经常被默认配置为localhost的IP地址。
一般会通过ping127.0.0.1来测试某台机器上的网络设备是否工作正常。
小技巧:
Ping127.0.0.1,如果反馈信息失败,说明IP协议栈有错,必须重新安装TCP/IP协议。如果成功,ping本机IP地址,如果反馈信息失败,说明你的网卡不能和IP协议栈进行通信。
如果网卡没接网线,用本机的一些服务如SqlServer、IIS等就可以用127.0.0.1这个地址。
(1)localhost和0.0.0.0和本机IP之间的关系。
1)localhost
localhost其实是域名,一般windows系统默认将localhost指向127.0.0.1,但是localhost并不等于127.0.0.1,localhost指向的IP地址是可以配置的。
2)0.0.0.0
首先,0.0.0.0是不能被ping通的。在服务器中,0.0.0.0并不是一个真实的的IP地址,它表示本机中所有的IPV4地址。监听0.0.0.0的端口,就是监听本机中所有IP的端口。
3)本机IP
本机IP通常仅指在同一个局域网内,能同时被外部设备访问和本机访问的那些IP地址(可能不止一个)。像127.0.0.1这种一般是不被当作本机IP的。
本机IP是与具体的网络接口绑定的,比如以太网卡、无线网卡或者PPP/PPPoE拨号网络的虚拟网卡,想要正常工作都要绑定一个地址,否则其他设备就不知道如何访问它。
(2)localhost与127.0.0.1的关系
有时候我们在调试程序的时候,会出现一些莫名其妙匪夷所思的奇怪问题,localhost不能访问但127.0.0.1可以访问的问题就是其中之一。
1)概念:
localhost:也叫local,正确的解释是:本地服务器
127.0.0.1:在windows等系统的正确解释是:本机地址(本机服务器)
2)工作原理:
localhot:是不经网卡传输的,它不受网络防火墙和网卡相关的的限制。
127.0.0.1:是通过网卡传输的,它依赖网卡,并受到网络防火墙和网卡相关的限制。
localhost不能访问但127.0.0.1可以访问的问题,究其原因,很可能是localhost访问时,系统带的本机当前用户的权限去访问,而用ip的时候,等于本机是通过网络再去访问本机,可能涉及到网络用户的权限。
另外,我们现在也应该明白了一个道理,那就是一般设置程序时本地服务用localhost是最好的,localhost不会解析成IP,也不会占用网卡、网络资源。
localhost不能访问127.0.0.1可以访问的解决方案
一般情况下pinglocalhost应该为127.0.0.1,但是有时会出来下面这个东西:
>pinglocalhost
replyfrom::1:times<1ms
replyfrom::1:times<1ms
replyfrom::1:times<1ms
地址根本不是“127.0.0.1”,而是“::1:”
>ping127.0.0.1正常
replyfrom127.0.0.1:bytes=32times<1ms
replyfrom127.0.0.1:bytes=32times<1ms
replyfrom127.0.0.1:bytes=32times<1ms
♦原因分析:
IPV6协议将127.0.0.1解析为::1(127.0.0.1ipv6的形式)
Vista开始菜单中输入cmd回车后打开命令提示符,输入pinglocalhost默认的就会出现返回的数据包并不是127.0.0.1而是::1。这就是Ipv6格式的本地地址,
♦解决方案1:
修改host文件用记事本打开C:/WINDOWS/system32/drivers/etc/hosts文件,看里面是否有包含:
127.0.0.1localhost
如果没有则将其添加进去,再查看能否访问localhost。
host文件部分内容
#127.0.0.1localhost
#::1localhost
127.0.0.1localhost
localhost127.0.0.1
♦解决方案2:
1、打开Internert信息管理查看IIS是否启动,且默认网站时候已经开启;
2、打开http://127.0.0.1/看是否能访问IIS的默认网页,能访问则说明IIS已经成功安装到电脑上,可能是无法解析localhost;
3、开始--命令(cmd)--pinglocalhost,看是否能ping通,从127.0.0.1上返回信息,如果成功则说明可以解析localhost;
4、如果上一步不成功,则用记事本打开C:/WINDOWS/system32/drivers/etc/hosts文件,看里面是否有包含:127.0.0.1localhost,如果没有则将其添加进去,再查看能否访问localhost。
5、尝试将网站的主目录指向另一个目录或新建一个虚拟目录,并在该新目录创建一个新的网页文件,如index.html,然后将其加到默认网站的"文档"项中作为默认访问的网页,重新输入网址:http://localhost/,看否能访问。
6、还是不行的话将IIS卸载掉,重新再安装一次。
♦解决问题的思路:
1、ping一下localhost,这个是关键,看看是否能ping通,然后看解析到那个ip地址下去了;
2、然后查看本机的hosts文件,看看是否有被修改,如果被修改,就改回正常的模式;
3、解决问题本质,ipconfig看看网络是否正常,如果不正常就进行修复;
4、用杀毒软件或者360等修复软件进行扫描,看看是否存在恶意插件或者病毒,然后清除,一劳永逸!;
5、多动脑,想办法解决问题,善于用搜索引擎。
2.7 mac地址和ip地址的区别与联系
(1)mac地址概述
(2)mac地址的作用
IP地址工作在OSI参考模型的第三层网络层。两者之间分工明确,默契合作,完成通信过程。IP地址专注于网络层,将数据包从一个网络转发到另外一个网络;而MAC地址专注于数据链路层,将一个数据帧从一个节点传送到相同链路的另一个节点。
在一个稳定的网络中,IP地址和MAC地址是成对出现的。一台计算机和网络中另一外计算机在数据通信时,IP地址负责表示计算机的网络层地址,网络层设备(如路由器)根据IP地址来进行操作;MAC地址负责表示计算机的数据链路层地址,数据链路层设备(如交换机)根据MAC地址来进行操作。IP和MAC地址映射关系是由ARP(AddressResolutionProtocol,地址解析协议)协议完成。
IP地址就如同一个职位,而MAC地址则好像是去应聘这个职位的人才,职位既可以让甲坐,也可以让乙坐。同样的道理,一个结点的IP地址对于网卡是不做要求,也就是说IP地址与MAC地址并不存在着绑定关系。
比如,如果一个网卡坏了,可以被更换,而无须取得一个新的IP地址。如果一个IP主机从一个网络移到另一个网络,可以给它一个新的IP地址,而无须换一个新的网卡。当然MAC地址除了仅仅只有这个功能还是不够的,无论是局域网,还是广域网中的计算机之间的通信,最终都表现为将数据包从某种形式的链路上的初始结点出发,从一个结点传递到另一个结点,最终传送到目的结点。数据包在这些节点之间的移动都是由ARP负责将IP地址映射到MAC地址上来完成的。
(3)mac地址和ip地址的区别
IP地址和MAC地址相同点是它们都唯一,不同的特点主要有:
一是:对于网络上的某一设备,如一台计算机或一台路由器,其IP地址是基于网络拓扑设计出的,同一台设备或计算机上,改动IP地址是很容易的(但必须唯一),而MAC则是生产厂商烧录好的,一般不能改动。我们可以根据需要给一台主机指定任意的IP地址,如我们可以给局域网上的某台计算机分配IP地址为192.168.0.112,也可以将它改成192.168.0.200。
而任一网络设备(如网卡,路由器)一旦生产出来以后,其MAC地址不可由本地连接内的配置进行修改。如果一个计算机的网卡坏了,在更换网卡之后,该计算机的MAC地址就变了。
二是:长度不同。IP地址为32位,MAC地址为48位。
三是:分配依据不同。IP地址的分配是基于网络拓扑,MAC地址的分配是基于制造商。
四是:寻址协议层不同。IP地址应用于OSI第三层,即网络层,而MAC地址应用在OSI第二层,即数据链路层。数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点上(通过MAC地址),
而网络层协议使数据可以从一个网络传递到另一个网络上(ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的网络)。
(4)两者关系
在网络中我们通过主机的ip地址,先找到他的网络地址,到达了网络地址后,然后通过该网络中的老大(路由器)来分析一下这个ip地址是你网路中的哪个主机;老大(路由器)就通过该目标ip地址改到对应主机的mac地址;知道了mac地址,就能找到该计算机。路由器是每次分配给你的ip地址不一样,但是你的mac地址肯定不会变,即通过网络层中的ARP(地址解析协议)协议,根据ip地址找到你的mac地址。
2.8 网络地址转换NAT
网络地址转换(NAT,NetworkAddressTranslation)属接入广域网(WAN)的技术,是一种将私有(保留)地址转化为合法IP地址的转换技术.NAT不仅完美地解决了IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
NAT工作流程:
①如图这个client(终端)的gateway(网关)设定为NAT主机,所以当要连上Internet的时候,该封包就会被送到NAT主机,这个时候的封包Header之sourceIP为192.168.1.100;
②而透过这个NAT主机,它会将client的对外联机封包的sourceIP(192.168.1.100)伪装成ppp0(假设为拨接情况)这个接口所具有的公共IP,因为是公共IP了,所以这个封包就可以连上Internet了!同时NAT主机并且会记忆这个联机的封包是由哪一个(192.168.1.100)client端传送来的;
③由Internet传送回来的封包,当然由NAT主机来接收了,这个时候,NAT主机会去查询原本记录的路由信息,并将目标IP由ppp0上面的公共IP改回原来的192.168.1.100;
④最后则由NAT主机将该封包传送给原先发送封包的Client.
3. ARP协议
ARP数据包格式:
地址解析协议(ARP):通过IP地址来获取MAC地址的一种协议,解决同一个局域网内主机或路由器的IP地址和MAC地址的映射问题。
ARP(地址解析)协议是一种解析协议,本来主机是完全不知道这个IP对应的是哪个主机的哪个接口,当主机要发送一个IP包的时候,会首先查一下自己的ARP高速缓存(就是一个IP-MAC地址对应表缓存)。
如果查询的IP-MAC值对不存在,那么主机就向网络发送一个ARP协议广播包,这个广播包里面就有待查询的IP地址,而直接收到这份广播的包的所有主机都会查询自己的IP地址,如果收到广播包的某一个主机发现自己符合条件,那么就准备好一个包含自己的MAC地址的ARP包传送给发送ARP广播的主机。
而广播主机拿到ARP包后会更新自己的ARP缓存(就是存放IP-MAC对应表的地方)。发送广播的主机就会用新的ARP缓存数据准备好数据链路层的的数据包发送工作。
注意:
(1)ARP表的内容是定期更新的,如果一条ARP表项很久没有使用了,则它将被从ARP表中删除。
(2)如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络,剩下的工作就由下一个网络来做.
4.IP协议
4.1 IP协议概述
IP协议的两个特性:
(一)不可靠性(unreliable)
不可靠性的意思是它不能保证IP数据报能成功地到达目的地,IP所能做的只是提供最好的传输服务,IP有一个简单的错误处理算法:丢弃该数据,然后发送ICMP消息报给信源端,任何的可靠性就必须由上一层的协议来提供。
(二)无连接性(connectionless)
无连接性的意思是IP并不维护任何关于后续的数据报(datagram)的状态信息,数据报之间是平行的互不干涉,IP不维护后续的状态信息。
4.2 IP数据包
(1)IP数据包(报)的格式:
(1)固定部分:20个字节,一行是4个字节,有5行;
1)第一行
版本:占4位,IP协议的版本,通信双方的IP协议版本要一致;IPv4此字段值为4,IPv6此字段值为6。
首部长度:取值范围5(0101)~15(1111),单位为4字节,包括固定部分和可选部分,因此首部最长为60字节,最短为20字节(不包括选项和填充部分);
区分服务:占8位,1个字节。有些要传输的数据要立马传达到对面,比如视频,语音这样的,不能跟邮件慢慢吞吞的达到对方一样,需要立马送达,这就是为什么需要这个区分服务;
总长度:占16位,2个字节。总长度包含IP的头部和数据部分,IP数据报最大长度为65535字节,但是注意最大不要超过MTU的长度,若超过就需要分片处理。
2)第二行
标识:16位长度,唯一标识一个数据报,可以将之当成一个计数器,每发送一个数据包,则该值加1,如果数据报分片,则每个分片的标识都一样,各个分片共享一个标识号。这样相同的标识的数据包片就能够重新组合到一起;
标志:占3位,第一位暂时没意义;第二位为DF(Don`tFragment不分片),如果该位为1,并且传输的数据报超过最大传输单元(MTU),则该数据报会被丢弃,并发送一个ICMP差错报文;第三位MF(MoreFragment更多分片),表示是否有更多的分片,如果该位为1,则说明后续还有分片,最后一片MF为0。
片偏移:占13位,在较长的分组在分片后,某片在原分组中的相对位置。用以指出该分段的第一个数据字节在原始数据报中的偏移位置(以8字节为单位),IP分片后每一个分组都具有自己的首部,而且标志位相同,但是片偏移值不同,通过片偏移值接收端可以重新组装IP包。
3)第三行
生存时间:表示数据报最多可经过的路由器的数量.取值0~255,每经过一个路由器,TTL值减1,为0时被丢弃,并发送ICMP报文通知源主机,TTL可以避免数据报在路由器之间不断循环(Tranceroute程序的实现原理)。即ping命令中显示的TTL字段,跳数限制,每经过一个路由器,就减1,当跳到0后,就丢弃该数据包。window系统的起始TTL为32、Linux为64、xp为128;
协议类型:指明IP层上承载的是哪个高级协议,在分用的过程中,协议栈知道该交给上层的哪个协议处理,如1为ICMP,2为IGMP,6为TCP,17为UDP等.
首部检验和:占16位。这个字段只检验数据报的首部,但不包括数据部分。
目的:一是所有将数据封装在IP数据包中的高层协议均含有覆盖整个数据的校验和,因此IP数据报没有必要再对其所承载的数据部分进行校验。二是每经过一个路由器,IP数据报的头部要发生改变(如TTL),而数据部分不变,这样只对发生改变的头部进行校验,显然不会浪费太多的时间。为了减少计算时间,一般不用CRC校验码,而是采用更简单的网际校验和(InternetChecksum)。
4)第四行
源地址:占32为,也就是源IP地址
5)第五行
目标地址:占32位,也是IP地址
(2)可选部分(选项/填充):
为了使整个数据包为整数个字节而设置的。增加首部的可变部分是为了增加IP数据报的功能,如支持排错,测量以及安全等,选项长度从1到40字节不等,取决于所选择的项目(选项为4字节整数倍,否则用0填充);但这样就增加了每一个路由器处理数据的开销,实际上这些选项很少被使用,很多路由器都并不考虑IP首部的选项字段;
(3)说明
IP数据报的传输使用的是大尾方式,大尾方式即人们写数据的正常方式,但是在计算机看来这是不正常的,如果你接触过一些机器语言或者一些二进制码的改写就会知道计算机中一般储存数据的方式都是小尾方式(通俗地讲即从右向左按字节读/写,高字节存放在高地址的就是小尾)。
TOS字段分为两个部分3bit的优先权子字段和4bit的服务类型字段和一个1bit的未用位,但必须得置0,4bit的TOS分别代表:1.最小时延2.最大吞吐量3.最高可靠性和最小费用。4bit中只能置其中的1bit。如果所有的4bit都为0那么就意味着是一般的服务。
总长度字段是指的整个IP数据报的长度,以字节为单位,利用首部长度字段和总长度字段,就可以知道整个IP数据报中包裹的内容的具体的位置和长度。由于该字段的总位数为16,所以IP数据报的长度可达65535字节,IP数据报在链路层因MTU的影响而分片时,该字段的值也就随之变化。标识符字段和分片有关,以后再作详细论述。
总长度字段的必要性:尽管以太网的最小帧的长度为46字节,但是IP数据可能会更短需要填充一些数据来达到最小的长度,如果没有总长度字段,IP层就不会知道46字节中有多少的字节是IP数据报的内容。
TTL是数据报可以经过的路由器的最多数目,他指定了数据报的生存时间,TTL的初始值一般由主机设置,一旦经过一个路由它的数目就将要减去1,当该字段等于0时,数据报就会被丢弃,并发送ICMP报文通知源主机,这也就是IP协议错误检查的简单算法。
首部检验和字段是根据IP首部计算的检验和码,并不对后面的数据进行计算。
4.3 IP路由选择
如果目的主机和源主机直接相连或者都在一个共享网络上(以太网或者令牌环网)那么IP数据报就直接送到目的主机上,否则主机把数据报发往默认路由器上,由该路由器来进行转发,大多数的主机都是采用的这种简单的机制。当今大多数的用户系统包括几乎所有的unix系统,都以配置成一个路由器,我们可以为它指定主机或者简单的路由算法。
本质上的区别在于主机从不把数据报从一个接口转发到另一个接口,而路由器则要转发数据报。内含的路由器功能的主机应该从不转发数据报,除非它被设置成那样。
在一般的体制中,IP可以从TCP,UDP,ICMP和IGMP接受数据报(即在本地生成的数据报)并进行发送,或者从一个网络接口接受数据报并进行发送,IP层在内存中有一个路由表。当接受到一份数据报并继续发送的时候,它都要对该表搜索一次,当数据来自某一个网络接口的时候,IP首先检查目的地址是否为本机的IP地址之一或者IP广播地址。如果确实是这样,数据报就被送到由IP首部协议字段所指定的协议模块进行处理。如果数据报的目的地址不是这些地址,则:(1)当IP层被设置为路由器的功能,那么就对数据报进行转发(2)否则数据包就直接被丢弃。
(1)路由表中的每一项都包含下面的这些信息:
(1)目的IP地址,它既可以是一个网络地址,也可以是一个完整的主机地址。
(2)下一站路由器的IP地址
(3)标志,其中一个标志指明IP地址是网络地址还是主机地址,另一个标志指明下一站路由器是否为真正的下一站路由器。
IP路由的选择是逐跳地完成地,从这个路由表信息可以看出。IP并不知道到达任何目的的完整路径。所有的IP路由选择只为数据报传输提供下一站路由器的IP地址,它假定下一站的路由器比发送数据报的主机更接近目的,而且下一站路由器于该主机是直接相连的。
(2)IP路由选择主要完成以下这些功能:
(1)搜索路由表,寻找能与目的IP地址完全匹配的表目,如找到,则把报文送给该表目指定的下一站或直接连接的网络接口。
(2)搜索路由表,寻找能与目的网络号完全匹配的表目,如果找到,就把报文发送给该表目指定的下一站路由器或直接相连的网络接口。目的网络上的所有的主机都可以通过这个表目来进行寻径。
(3)搜索路由,寻找标为“default”的表目,如果找到,则把报文发送给该表目指定的下一个路由器。
(4)如果以上的步骤都没有成功,那么该数据报就不能被传送,会向生成该数据报的应用程序返回一个主机不可达或者网络不可达的错误。
5. ICMP协议
5.1 ICMP协议简述
(1)ICMP概述
IP提供的是尽最大努力交付的无连接服务,因此并不能解决网络层中的数据报丢失、重复、延迟或乱序等问题,为了提高IP数据报成功交付的机会,在网络层使用ICMP(InternetControlMessageProtocol:Internet控制报文协议)协议来允许主机或者路由器报告差错和异常情况.
ICMP协议是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。
ICMP是TCP/IP模型中网络层的重要成员,与IP协议、ARP协议、RARP协议及IGMP协议共同构成TCP/IP模型中的网络层。ping和tracert是两个常用网络管理命令,ping用来测试网络可达性,tracert用来显示到达目的主机的路径。ping和tracert都利用ICMP协议来实现网络功能,它们是把网络协议应用到日常网络管理的典型实例。
(2)ICMP的特征:
a.ICMP就像一个更高层的协议那样使用IP协议(ICMP消息被封装在IP数据报中);然而,ICMP是IP的一个组成部分,并且所有IP模块都必须实现它。
b.ICMP用来报告错误,是一个差错报告机制。它为遇到差错的路由器提供了向最初源站报告差错的办法,源站必须把差错交给一个应用程序或采取其它措施来纠正问题。
c.ICMP报文的种类有两种:ICMP差错报告报文和ICMP询问报文;
(3)不应发送ICMP差错报告报文的几种情况:
1)对ICMP差错报告报文不再发送ICMP差错报告报文。
2)对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文。
3)对具有多播地址的数据报都不发送ICMP差错报告报文。
4)对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。
(4)ICMP的报文封装:
5.2 ICMP差错报文
目的站不可达:当路由器不能给数据报找到合适的路由路径,或者主机不能将数据报递交给上层协议时,相应的IP数据报就会被丢弃,然后一个目的站不可达差错控制报文将会被返回给源主机。目的站不可达差错可以由很多因素引起,例如网络不可达、主机不可达、协议不可达、端口不可达等15种不同情况,可以在报文首部中的代码字段指出具体原因。
在ICMP目的不可达报文的数据区域,装载了引起目的站不可达的IP数据报首部及数据报数据区的前8个字节,当源主机收到这样一份ICMP报文后,它能根据报文数据区中的数据判断是哪个数据报出现了问题。装载引起差错的数据报数据区的前8个字节是因为这8个字节恰好覆盖了TCP报文或UDP报文中的端口号字段,IP层能够根据这个端口号把ICMP报文传递给具体的上层协议进行处理。常用目的站不可达报文格式及代码字段常用取值如下:
数据报超时:数据报超时可以用来防止数据报在网络中被循环的路由,在IP首部中都有一个生存时间(TTL)字段,数据报每被转发一次,TTL的值便会减1,当TTL的值被减为0时,数据报会被网络丢弃,同时一个ICMP数据报超时报文会被返回给源主机。此外在分片重装时,也用到了ICMP超时报文,若某个数据报在重装过程中其重装时间超时,而数据分片还没有全部到达,此时与该数据报所有相关的分片将被删除,同时,一个ICMP超时报文将被返回给源主机。常用数据报超时报文格式及代码字段常用取值如下:
源站抑制:ICMP源站抑制报文就是为了给IP协议增加一种流量控制而设计的,当路由器或主机因拥塞而丢弃数据报时,它可以向源站发送ICMP源站抑制报文,这个报文将告诉源站两个信息:第一,你的数据报发得太快,我已经丢弃;第二,路径中出现了拥塞,请放慢你的数据报发送频率。
重定向(路由):当路由器要将数据报转发到另一个网络时,它必须知道下一个路由器的IP地址;
源主机也是这样,当一台主机刚开始运行时,它会将所有数据报发送给网络中的一个默认路由器,因为它只知道默认路由器这一个IP地址。在这样的情况下,主机始终把所有数据报都发送到默认路由器,这样的处理也意味着所有数据报的目的地址都在默认路由器所处的网络内,但实际上,有些数据报可能是要发送到其他网络上的,若默认路由器接收到这样的数据报,它就可以发送一个ICMP重定向报文告诉源主机改变它的路由表,让主机下次直接经过改变后的路由器。
数据报参数错误:数据报在网络中传输时,其首部中出现的任何二义性都可能会产生严重的问题,如果路由器或主机发现了这种二义性,或者数据报中的某个字段丢失,路由器会直接丢弃数据报,并向源主机返回一个数据报参数错误报文;
5.3 ICMP询问报文
常见的ICMP查询报文有以下几种:回送请求或回答、时间戳请求或回答、路由器询问和通告、信息请求或回答、地址掩码请求或回答。其中用得较多的是回送请求或回答、时间戳请求或回答,其他的三种查询报文目前几乎很少被用到,以前它们主要在主机启动时使用,通过使用这三种查询报文,主机能确定自身在网络环境中IP地址、地址掩码、路由器状况等信息。现在,DHCP协议已经能够完全实现这些功能。此外,在互联网中的两台主机能够使用时间戳请求或回答报文来确定数据报在彼此之间往返所需要的时间。
回送请求或回答:回送请求和回送回答报文是为诊断网络而设计的,我们使用这对报文来发现网络的问题,回送请求和回送回答报文组合起来就可以确定两个网络设备之间彼此是否能够通信。
回收请求和回送回答报文可以直接确定两台主机的IP协议是否能够正常通信,因为ICMP报文是被封装在IP数据报中发送的,发送请求的主机能收到回答报文,证明两台主机之间能够使用IP协议进行通信,同时也能证明源主机与目的主机之间的所有路由器的接收、处理、转发功能正常。回送请求或回答报文格式如下:
类型字段指出是请求报文(8)还是回答报文(0);代码段无特殊取值,始终为0;首部中的标识符和序号两个字段在ICMP协议中没有定义其取值规范,因此发送方可以自由使用这两个字段,例如可以用序号来记录源主机发送出去的回送请求报文编号。可选数据区域表示回送请求报文中可包含的数据,其长度是可选的,发送方应该选择合适的长度并填充相应的数据。在接收方,它将根据这个回送请求产生一个回送回答,回送回答中的数据与回送请求中的数据应该完全相同。
时间戳请求和回答:ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。时间戳请求与回答可用来进行时钟同步和测量时间。
5.4 Ping如何实现?
Ping(PacketInternetGroper)分组网间探测是ICMP的一个重要应用,用来测试两个主机之间的连通性。Ping使用了ICMP回送请求与回答报文。Ping是应用层直接使用网络层ICMP的一个例子。它没有通过运输层的TCP或UDP。
实现原理为:ping向目的主机发送4个32字节长的ICMP回送请求报文,若目的主机正常工作并且响应了该ICMP回送请求报文,就将发回ICMP回送回答报文。最后可得出的统计结果为目的IP地址,发送的,收到的和丢失的分组数,及往返时间的最小值、最大值和平均值。
ping命令格式为ping<host-name>#host-name为要测试连通性的主机名/IP地址。
5.5 TraceRoute原理
Traceroute(Linux)/tracert(Windows)是用来侦测主机到目的主机之间所经路由情况的重要工具。它的原理如下:
源主机首先给目的主机发送一个TTL=1的UDP数据包,而经过的第一个路由器收到这个数据包以后,就自动把TTL减1,而TTL变为0以后,路由器就把这个包给丢弃了,并同时产生”目的主机不可达”的ICMP差错报告报文给源主机。源主机收到这个数据报以后再发一个TTL=2的UDP数据报给目的主机,然后刺激第二个路由器给源主机发送差错报文。如此往复直到到达目的主机。这样,traceroute就拿到了所有的路由器IP。
5.6 总结
差错报告报文主要用来向IP数据报源主机返回一个差错报告信息,这个错误报告信息产生的原因是路由器或主机不能对当前数据报进行正常的处理,例如无法将数据报递交给有效的协议上层,数据报因为生存时间TTL为0而被删除等。
查询报文用于一台主机向另一台主机查询特定的信息,通常查询报文都是成对出现的,即源主机发起一个查询报文,在目的主机收到该报文后,会按照查询报文约定的格式为源主机返回一个应答报文。
注意,ICMP差错报文并不能纠正差错,它只是简单地报告差错,差错报告报文总是被返回给数据报的原始发出者,因为数据报中关于路由的唯一可用信息就是源IP地址和目的IP地址,路由器在不能正常处理数据报时,会产生相应的差错报文并返回给数据报源端。
差错的纠正需要留给高层协议,当源主机网络层收到差错报告报文后,或者直接根据报文做出相应的处理,或者向更高层的协议通知这个差错信息,由上层协议选择处理。查询报文能用于对某些网络问题的诊断,也可用于网络设备信息的交互,查询报文都是成对出现的。
6. RIP协议
路由信息协议RIP是一种分布式的基于距离向量的路由选择协议,属于内部网关协议(IGP)。RIP协议中的“距离”也称为“跳数”,每经过一个路由器,跳数就加1。协议规定:同一自治系统(A.S.)中的路由器每30秒会与相邻的路由器交换路由信息,以动态的建立路由表。当传输数据时,RIP将选择一条具有最少路由器的路由。
(1)RIP协议规定:
1)网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录(因此,这是一组距离,称”距离向量”);
2)距离也称为跳数(HopCount),规定从一路由器到直接连接的网络跳数为1,而每经过一个路由器,则跳数加1;
3)RIP认为好的路由就是它通过的路由器的数目少,即优先选择跳数少的路径;
4)RIP允许一条路径最多只能包含15个路由器(即最多允许15跳),因此距离等于16时表示网络不可达.可见RIP只适用于小型互联网.
5)RIP默认在任意两个使用RIP协议的路由器之间每30秒广播一次RIP路由更新信息.以便于自动建立并维护路由表(动态维护).
6)在RIP中不支持子网掩码的RIP广播,所以RIP中每个网络的子网掩码必须相同.但在新的RIP2中,支持变长子网掩码和CIDR.
(2)RIP协议特点:
1)仅和相邻路由器交换信息。
【注】如果两个路由器之间的通信不需要经过另一个路由器,那么这两个路由器就是相邻的。RIP协议规定,不相邻的路由器不交换信息。
2)路由器交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
【注】交换的信息是:“我到本自制系统中所有网路的(最短)距离,以及到每个网络应该经过的下一跳路由器。”
(3)按固定的时间间隔交换路由信息。
【注】每隔30秒,路由器根据收到的路由信息更新路由表。当网路拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
(3)距离向量算法
对每一个相邻路由器发送过来的RIP报文,进行以下步骤:
1)对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把“下一跳”字段中的地址都改为X,并把所有的"距离"字段的值加1.每个项目都有三个关键数据,即:目的网络N,距离是d,下一跳路由器是X。
2)对修改后的RIP报文中的每一个项目,进行如下步骤:
*若原来的路由表中没有目的网络N,则把该项目添加到路由表中;
*否则,若下一跳路由器地址是X,则把收到的项目替换原路由表中的项(使用最新的路由信息);
*否则,若收到的项目中距离d小于路由表中的距离,则进行更新;
3)若3分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可到达的路由器,即把距离设置为16。
4)返回
(4)RIP路由协议优缺点
优点是配置简单,非常适用于小规模网络。
(5)RIP协议的缺点包括:
1)大量广播。RIP向所有邻居每隔30秒广播一次完整的路由表,将占用宝贵的带宽资源,在较慢的广域网链路上问题更加明显。
2)没有成本概念。RIP没有网络延迟和链路成本的概念。当采用RIP时,路由/转发的决定只是基于跳数,这样很容易导致无法选择最佳路由。例如,一条链路拥有较高的带宽,但是跳数较多,从而不能被选择。
3)支持的网络规模有限。由于RIP路由协议最多只支持16个步跳,当超过该跳数时,网络将认为无法到达。因此,RIP只能适用于规模较少的网络。
4)当网络出现故障时,会出现慢收敛现象(需要较长时间才能将此信息传送到所有路由器),俗称”坏消息传的慢”,使更新过程的收敛时间长;
小结:RIP是应用层协议,它使用UDP传送数据(端口520).RIP协议选择的路径不一定是最短的,但一定是具有最少路由器的路径.
7. IGMP协议
7.1 概述
IGMP(InternetGroupManagementProtocol)Internet组管理协议是TCP/IP协议族中负责IP组播成员管理的协议,用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
TCP/IP协议族的一个子协议,用于IP主机向任一个直接相邻的路由器报告他们的组成员情况。允许Internet主机参加多播,也是IP主机用作向相邻多目路由器报告多目组成员的协议。多目路由器是支持组播的路由器,向本地网络发送IGMP查询。主机通过发送IGMP报告来应答查询。组播路由器负责将组播包转发到所有网络中组播成员。
到目前为止,IGMP有三个版本:
IGMPv1(由RFC1112定义);
IGMPv2(由RFC2236定义);
IGMPv3(由RFC3376定义);
所有版本的IGMP都支持ASM(Any-SourceMulticast,任意信源组播)模型;IGMPv3可以直接应用于SSM(Source-SpecificMulticast,指定信源组播)模型,而IGMPv1和IGMPv2则需要在IGMPSSMMapping技术的支持下才能应用于SSM模型。