摘录自《TCP/IP管理及网络互联》中的前两章,希望对学员们有用。
http://www.china-pub.com/computers/common/info.asp?id=20412
http://www.china-pub.com/computers/common/info.asp?id=19332
数据包在网络上传输时,数据包的目的IP地址是始终不变的,路由器的任务就是:根据自己的路由表选择到目标IP地址最佳路径的出口,然后重写数据包第二层的帧头(MAC地址),让数据包发往下一跳。不变的IP地址是将数据包正确发往目的地的基础。
目前广泛应用的IP版本为:IPv4,它使用32位的二进制地址,每个地址由四个八位组构成,每个八位组被转换成十进制并用“.”来分割,即常说的“点分十进制表示法”。如下图所示:
网络地址与主机地址
每一个利用TCP/IP通信的主机都需要一个唯一的IP地址,IP地址都被分成网络地址和主机地址两部分,这种寻址策略有些类似街道(网络地址)和门牌号(主机地址)。如下图:
图中,每个房屋的确切地址都由自己的街道和门牌号来共同决定,对于整个城市来说,这个街道和门牌号都是唯一的,我们可以通过街道和门牌号找到自己的住所。例如:当我们要去往某处(江苏路1号)时,我们应先找到该处所在的街道(江苏路),然后再依靠门牌号寻找确切的地址(1号)。
IP地址和街道地址与门牌号的作用相似。IP地址中的网络地址就好比街道地址,用来标识整个网段;主机地址就好比门牌号,用来标识某个确切的主机。如下图:
对于一个IP地址,外界只看它的网络地址,不关心其内部的网络结构。当外界要向某个主机发送数据包时,它只看主机IP地址中的网络地址,当数据包到达目标主机所在网段之后,再依靠主机地址把数据包发给目标主机。列如:路由器将对所有网络地址为192.168.1.0的数据包作同样处理。当路由器收到一个发往192.168.1.2的数据包时,它查询自己的路由表,发现通过E1口可以到达192.168.1.0的网络,于是路由器会直接将数据包发往E1口,而不关心目标IP地址的主机地址具体是多少;数据包到达E1口以后,路由器发现E1口本地连接着192.168.1.0的网络,于是它查找ARP表得到主机192.168.1.1的MAC地址,最后将IP数据包发送给目标主机。
IPv4是基于32比特的地址方案,理论上可以支持40多亿台主机。为了适应不同的网络需求,IPv4地址被分成五类,其分配由因特网地址授权委员会(IANA)统一管理。
五类IP地址的前三类(A,B,C)被用来作全球唯一的单播地址;D类和E类地址为组播和试验目的保留。
【注意】目前,全球有3个区域因特网注册机构负责为ISP和组织分配成块的IP地址。其中美国因特网地址注册机构(ARIN)为北美洲、中美洲和南美洲提供服务;欧洲网络信息中心(PIPE NCC)为欧洲和非洲提供服务;亚太网络信息中心(APNIC)为亚洲地区提供服务。如果想得到关于这三个注册机构的详细信息,请登陆 www.arin.com、 www.ripe.com、 www.apnic.com。
2.2.1 子网掩码
网络设备如何区分网络地址和主机地址呢?这里就要引出子网掩码这个概念。子网掩码实际上是一个过滤码,将IP地址和子网掩码“按位求与”就可以过滤出IP地址中应该作为网络地址的那一部分。按位求与就是将IP地址中的每一位和相应的子网掩码位进行与运算。与运算的规则如下:
1 & 1=1
1 & 0=0
0 & 0=0
每一类IP地址都有缺省的子网掩码,A类地址的子网掩码为255.0.0.0,B类地址的子网掩码为255.255.0.0,C类地址的子网掩码为255.255.255.0。下面我们用IP地址172.16.1.1 255.255.0.0举例说明子网掩码的作用:
上例中经过与运算后被过滤出来的172.16.0.0就是172.16.1.1的网络地址。
通常情况下,在IP地址后面加“/n”来表示一个具体的IP地址。(n是子网掩码中“1”的个数,如:子网掩码“255.255.255.0”,通常写成 “/24”)
2.2.2 A类地址
A类地址的缺省子网掩码是:255.0.0.0,它使用IP地址中的第一个八位组表示网络地址,其余三个八位组表示主机地址。A类地址的结构使每个网络拥有的主机数非常多,因此A类地址是为巨型网络所设计的。
A类地址的第一个八位组的第一位总是被设置为0,这就限制了A类地址的第一个八位组的值始终小于127,也就是说仅有127个可能的A类网络。如下图:
实际上,A类地址的范围是1~126。虽然从理论上讲,127.x.x.x和0.x.x.x也属于A类地址,但是127.x.x.x已经被保留作回路测试之用,网络0.0.0.0也保留用于广播地址(未知网络),所以它们不能分配给任何网络。
因为有三个八位组用于表示主机地址,所以每个A类网络的主机数的可能值是16777216(224),但是由于全0的主机地址表示网络、全1的主机地址表示到这个网络的定向广播,所以实际的主机数比可能的主机数少2。
【注意】主机地址的运算方法是:2N -2(N是主机部分的位数,例如:A类地址就是24)
2.2.3 B类地址
B类地址的缺省子网掩码是255.255.0.0,B类地址使用前两个八位组表示网络地址,后两个八位组表示主机地址。设计B类地址的目的是支持中到大型网络。
B类地址的第一个八位组的前两位总是被设置为10,所以B类地址的范围是从128.0.0.0到191.255.0.0,如下图所示:
B类地址可能拥有的网络数是16384(214)(实际上要减去两个特例),每个网络可能拥有的主机数是65536(216)。
2.2.4 C类地址
C类地址的子网掩码是:255.255.255.0,C类地址使用前三个八位组表示网络地址,最后一个八位组表示主机地址。设计C类地址的目的是支持大量的小型网络,因为这类地址拥有的网络数目很多,而每个网络所拥有的主机数却很少。
C类地址的第一个八位组的前三位总是被设置为110,所以B类地址的范围是从192.0.0.0到223.255.255.0,如下图所示:
C类地址可能拥有的网络数是2097152(221),每个网络可能拥有的主机数是256(28)。
2.2.5 D类地址
D类地址用于IP网络中的组播(多点广播)。它不像A、B、C类地址有网络号和主机号,一个组播地址标识了一个IP地址组。因此可以同时把一个数据流发送到多个接收端,这比为每个接收端创建一个数据流的流量小得多,它可以有效地节省网络带宽。
D类地址的第一个八位组的前四位总是被设置成1110,所以D类地址的范围是从224.0.0.0到239.255.255.255,如下图所示
D类地址拥有268435456个组(228),任何主机都可以自由的加入或离开任何组。
【注意】多播地址没有所谓的子网掩码。
2.2.6 E类地址
E类地址虽然被定义,但却为IETF保留作研究之用,因此Internet上没有可用的E类地址。
E类地址的第一个八位组的前4位恒为1,因此有效的地址范围从240.0.0.0到255.255.255.255,如下图所示:
2.2 IP寻址基础
刚刚在讲到网络地址和主机地址时,本书已经提到了一些IP寻址的内容,也许读者对其还有一些困惑,现在我们就来对IP寻址进行详细的讨论。
我们知道当某主机发送IP数据包给与其处于同一本地IP子网的另一台主机时,它只要直接把IP数据包送到本地网络上,然后对方就能收到。如下图:
当处于不同IP子网间的主机需要通信时,主机会先把IP数据包发送送给一个称为“缺省网关(default gateway)”的路由器上,然后由这个路由器把IP数据包送到目的地。 “缺省网关”是TCP/IP一个配置参数,它是处于本地网络上的某个路由器接口的IP地址。
路由器转发IP数据包时,它只根据IP数据包目标IP地址的网络部分选择合适的接口送出数据包。路由器还要判断接口所连接的是否是目标子网,如果是,路由器就直接把数据通过接口送到网络上(例如上图中,主机A发往主机B的数据包到达路由器时,路由器发现它的E1口直接连接着目标网络,于是它将数据直接转发给主机B);否则,路由器会选择下一跳路由器来传输数据,这样一跳跳地传输,IP数据包最终将被送到目的地。
路由器给人的感觉是一种复杂的设备,实际上从宏观的角度来看,路由器主要实现两样基本功能:
• 交换和转发功能,将数据从路由器的进入接口穿过路由器再送到外出接口。
• 路由功能,即寻址,学习和维护路由选择表,决定正确的转发路径。
寻址由路由选择算法来实现,为了判定最佳路径,路由选择算法维护着一个包含路由信息的路由选择表,路由选择表可以将目标网络和下一跳(nexthop)的关系告诉路由器。当路由器向目的地转发数据包时,它就是通过这张路由选择表来确定所要使用的输出接口。
为了能够路由数据包,路由器需要知道以下信息:
• 目标地址
• 下一跳地址
下面我们来看一个更复杂一点的网络,我们知道:当一个数据包到达路由器时,路由器查看该数据包的目标IP地址的网络地址,然后从路由表中查询与目标网络地址最匹配的项。
http://www.china-pub.com/computers/common/info.asp?id=20412
http://www.china-pub.com/computers/common/info.asp?id=19332
数据包在网络上传输时,数据包的目的IP地址是始终不变的,路由器的任务就是:根据自己的路由表选择到目标IP地址最佳路径的出口,然后重写数据包第二层的帧头(MAC地址),让数据包发往下一跳。不变的IP地址是将数据包正确发往目的地的基础。
目前广泛应用的IP版本为:IPv4,它使用32位的二进制地址,每个地址由四个八位组构成,每个八位组被转换成十进制并用“.”来分割,即常说的“点分十进制表示法”。如下图所示:
网络地址与主机地址
每一个利用TCP/IP通信的主机都需要一个唯一的IP地址,IP地址都被分成网络地址和主机地址两部分,这种寻址策略有些类似街道(网络地址)和门牌号(主机地址)。如下图:
图中,每个房屋的确切地址都由自己的街道和门牌号来共同决定,对于整个城市来说,这个街道和门牌号都是唯一的,我们可以通过街道和门牌号找到自己的住所。例如:当我们要去往某处(江苏路1号)时,我们应先找到该处所在的街道(江苏路),然后再依靠门牌号寻找确切的地址(1号)。
IP地址和街道地址与门牌号的作用相似。IP地址中的网络地址就好比街道地址,用来标识整个网段;主机地址就好比门牌号,用来标识某个确切的主机。如下图:
对于一个IP地址,外界只看它的网络地址,不关心其内部的网络结构。当外界要向某个主机发送数据包时,它只看主机IP地址中的网络地址,当数据包到达目标主机所在网段之后,再依靠主机地址把数据包发给目标主机。列如:路由器将对所有网络地址为192.168.1.0的数据包作同样处理。当路由器收到一个发往192.168.1.2的数据包时,它查询自己的路由表,发现通过E1口可以到达192.168.1.0的网络,于是路由器会直接将数据包发往E1口,而不关心目标IP地址的主机地址具体是多少;数据包到达E1口以后,路由器发现E1口本地连接着192.168.1.0的网络,于是它查找ARP表得到主机192.168.1.1的MAC地址,最后将IP数据包发送给目标主机。
IPv4是基于32比特的地址方案,理论上可以支持40多亿台主机。为了适应不同的网络需求,IPv4地址被分成五类,其分配由因特网地址授权委员会(IANA)统一管理。
五类IP地址的前三类(A,B,C)被用来作全球唯一的单播地址;D类和E类地址为组播和试验目的保留。
【注意】目前,全球有3个区域因特网注册机构负责为ISP和组织分配成块的IP地址。其中美国因特网地址注册机构(ARIN)为北美洲、中美洲和南美洲提供服务;欧洲网络信息中心(PIPE NCC)为欧洲和非洲提供服务;亚太网络信息中心(APNIC)为亚洲地区提供服务。如果想得到关于这三个注册机构的详细信息,请登陆 www.arin.com、 www.ripe.com、 www.apnic.com。
2.2.1 子网掩码
网络设备如何区分网络地址和主机地址呢?这里就要引出子网掩码这个概念。子网掩码实际上是一个过滤码,将IP地址和子网掩码“按位求与”就可以过滤出IP地址中应该作为网络地址的那一部分。按位求与就是将IP地址中的每一位和相应的子网掩码位进行与运算。与运算的规则如下:
1 & 1=1
1 & 0=0
0 & 0=0
每一类IP地址都有缺省的子网掩码,A类地址的子网掩码为255.0.0.0,B类地址的子网掩码为255.255.0.0,C类地址的子网掩码为255.255.255.0。下面我们用IP地址172.16.1.1 255.255.0.0举例说明子网掩码的作用:
上例中经过与运算后被过滤出来的172.16.0.0就是172.16.1.1的网络地址。
通常情况下,在IP地址后面加“/n”来表示一个具体的IP地址。(n是子网掩码中“1”的个数,如:子网掩码“255.255.255.0”,通常写成 “/24”)
2.2.2 A类地址
A类地址的缺省子网掩码是:255.0.0.0,它使用IP地址中的第一个八位组表示网络地址,其余三个八位组表示主机地址。A类地址的结构使每个网络拥有的主机数非常多,因此A类地址是为巨型网络所设计的。
A类地址的第一个八位组的第一位总是被设置为0,这就限制了A类地址的第一个八位组的值始终小于127,也就是说仅有127个可能的A类网络。如下图:
实际上,A类地址的范围是1~126。虽然从理论上讲,127.x.x.x和0.x.x.x也属于A类地址,但是127.x.x.x已经被保留作回路测试之用,网络0.0.0.0也保留用于广播地址(未知网络),所以它们不能分配给任何网络。
因为有三个八位组用于表示主机地址,所以每个A类网络的主机数的可能值是16777216(224),但是由于全0的主机地址表示网络、全1的主机地址表示到这个网络的定向广播,所以实际的主机数比可能的主机数少2。
【注意】主机地址的运算方法是:2N -2(N是主机部分的位数,例如:A类地址就是24)
2.2.3 B类地址
B类地址的缺省子网掩码是255.255.0.0,B类地址使用前两个八位组表示网络地址,后两个八位组表示主机地址。设计B类地址的目的是支持中到大型网络。
B类地址的第一个八位组的前两位总是被设置为10,所以B类地址的范围是从128.0.0.0到191.255.0.0,如下图所示:
B类地址可能拥有的网络数是16384(214)(实际上要减去两个特例),每个网络可能拥有的主机数是65536(216)。
2.2.4 C类地址
C类地址的子网掩码是:255.255.255.0,C类地址使用前三个八位组表示网络地址,最后一个八位组表示主机地址。设计C类地址的目的是支持大量的小型网络,因为这类地址拥有的网络数目很多,而每个网络所拥有的主机数却很少。
C类地址的第一个八位组的前三位总是被设置为110,所以B类地址的范围是从192.0.0.0到223.255.255.0,如下图所示:
C类地址可能拥有的网络数是2097152(221),每个网络可能拥有的主机数是256(28)。
2.2.5 D类地址
D类地址用于IP网络中的组播(多点广播)。它不像A、B、C类地址有网络号和主机号,一个组播地址标识了一个IP地址组。因此可以同时把一个数据流发送到多个接收端,这比为每个接收端创建一个数据流的流量小得多,它可以有效地节省网络带宽。
D类地址的第一个八位组的前四位总是被设置成1110,所以D类地址的范围是从224.0.0.0到239.255.255.255,如下图所示
D类地址拥有268435456个组(228),任何主机都可以自由的加入或离开任何组。
【注意】多播地址没有所谓的子网掩码。
2.2.6 E类地址
E类地址虽然被定义,但却为IETF保留作研究之用,因此Internet上没有可用的E类地址。
E类地址的第一个八位组的前4位恒为1,因此有效的地址范围从240.0.0.0到255.255.255.255,如下图所示:
2.2 IP寻址基础
刚刚在讲到网络地址和主机地址时,本书已经提到了一些IP寻址的内容,也许读者对其还有一些困惑,现在我们就来对IP寻址进行详细的讨论。
我们知道当某主机发送IP数据包给与其处于同一本地IP子网的另一台主机时,它只要直接把IP数据包送到本地网络上,然后对方就能收到。如下图:
当处于不同IP子网间的主机需要通信时,主机会先把IP数据包发送送给一个称为“缺省网关(default gateway)”的路由器上,然后由这个路由器把IP数据包送到目的地。 “缺省网关”是TCP/IP一个配置参数,它是处于本地网络上的某个路由器接口的IP地址。
路由器转发IP数据包时,它只根据IP数据包目标IP地址的网络部分选择合适的接口送出数据包。路由器还要判断接口所连接的是否是目标子网,如果是,路由器就直接把数据通过接口送到网络上(例如上图中,主机A发往主机B的数据包到达路由器时,路由器发现它的E1口直接连接着目标网络,于是它将数据直接转发给主机B);否则,路由器会选择下一跳路由器来传输数据,这样一跳跳地传输,IP数据包最终将被送到目的地。
路由器给人的感觉是一种复杂的设备,实际上从宏观的角度来看,路由器主要实现两样基本功能:
• 交换和转发功能,将数据从路由器的进入接口穿过路由器再送到外出接口。
• 路由功能,即寻址,学习和维护路由选择表,决定正确的转发路径。
寻址由路由选择算法来实现,为了判定最佳路径,路由选择算法维护着一个包含路由信息的路由选择表,路由选择表可以将目标网络和下一跳(nexthop)的关系告诉路由器。当路由器向目的地转发数据包时,它就是通过这张路由选择表来确定所要使用的输出接口。
为了能够路由数据包,路由器需要知道以下信息:
• 目标地址
• 下一跳地址
下面我们来看一个更复杂一点的网络,我们知道:当一个数据包到达路由器时,路由器查看该数据包的目标IP地址的网络地址,然后从路由表中查询与目标网络地址最匹配的项。