HCNA --- IP地址与路由

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/C_huid/article/details/99750280

TCP/IP模型中,每一层都有自己的通信方式,数据链路层依靠MAC地址通信,而网络层则依靠IP地址。在了解TCP/IP协议模型以及各层的功能之后,重点针对网络层介绍IP地址结构、IP地址分类、组网的划分,以及网络层设备如何进行数据包的转发,即数据在网络中如何被路由的。这篇文章将介绍TCP/IP协议栈第三层——网络层。网络层的主要功能是通过IP协议实现的。包括IP编址和IP路由。

图所示,这种沿协议栈向下传递数据,并添加报头和报尾的过程被称为封装。数据被封装并通过网络传输后,接收设备将删除添加的信息,并根据报头中的信息决定如何将数据沿协议栈向上传递给合适的应用程序。

TCP/IP模型中层与层之间彼此交换信息,确保网络设备之间能够通信。这些层之间使用协议数据单元(PDU)来彼此通信。不同层的PDU中包含的信息也不同,根据其包含的信息, PDU被赋予不同的名称。如传输层在上层数据中加入TCP报头后得到的PDU被称为数据段(segment)。数据段被传递给网络层,网络层添加IP报头,得到的PDU被称为分组。分组被封装到第二层报头中,得到的PDU被称为帧。最后,帧被转换为比特,通过网络介质进行传输。
数据封装是一个重要的概念,不同设备的对等层依靠封装来交换重要参数,如地址和控制信息。本课程着重介绍网络层地址和协议信息。

网络层接收来自传输层的数据,将源地址和目的地址加到这些数据中。
前面已经学习到,数据链路层有物理地址——MAC地址。 MAC地址是全球唯一的。当有数据发送时,源网络设备查询对端设备的MAC地址,然后将数据发送过去。MAC地址通常存在于一个平面地址空间,没有清晰的地址层次,只适合于本网段主机的通信,另外, MAC地址固化在硬件中,灵活性较差。对于不同网络之间的互连通信,通常使用基于软件实现的网络层地址----IP地址来通信,提供更大的灵活性。IP地址,又称逻辑地址, IP地址在一个网络中是独一无二的。每一台网络设备用IP地址作为唯一的标识。

IP地址由32个二进制位组成,这些二进制数字被分为四个八位数组(octets),又称为四个字节。 IP地址可以这样表示:
点分十进制形式: 10.110.128.111
二进制形式: 00001010.01101110.10000000.01101111
十六进制形式: 0a.7e.80.7f
通常IP地址用点分十进制形式表示,很少表示成十六进制形式。IP地址的结构化分层方案将IP地址分为网络部分和主机部分。IP地址的分层方案类似于常用的电话号码。电话号码也是全球唯一的。例如对于电话号码021-12345678,前面的字段021代表的区号,后面的字段12345678代表地区的一部电话。IP地址也是一样,前面的网络部分代表一个网段,后面的主机部分代表这个网段的一台设备。IP地址采用分层设计,这样,每一台第三层网络设备就不必储存每一台主机的IP地址,而是储存每一个网段的网络地址(网络地址代表了该网段内所有主机组成的网络),大大减少了路由表条目,增加了路由的灵活性。

IP地址的网络部分称为网络地址,网络地址用于唯一地标识一个网段,或者若干网段的聚合,同一网段中的网络设备有同样的网络地址。 IP地址的主机部分称为主机地址,主机地址用于唯一的标识同一网段内的网络设备。如A类IP地址: 10.110.192.111,网络部分地址为10,主机部分地址为110.192.111。
区分IP地址的网络地址和主机地址最初互联网络设计者根据网络规模大小规定了地址类,把IP地址分为A、 B、 C、 D、 E五类。
A类IP地址的网络地址为第一个八位数组(octet),第一个字节以“0”开始。因此, A类网络地址的有效位数为8-1=7位, A类地址的第一个字节为1~126之间(0和127留作它用)。例如10.1.1.1、126.2.4.78等为A类地址。 A类地址的主机地址位数为后面的三个字节24位。 A类地址的范围为1.0.0.0~126.255.255.255,每一个A类网络共有224个A类IP地址。
B类IP地址的网络地址为前两个八位数组(octet),第一个字节以“10”开始。因此, B类网络地址的有效位数为16-2=14位, B类地址的第一个字节为128~191之间。例如128.1.1.1、 168.2.4.78等为B类地址。 B类地址的主机地址位数为后面的二个字节16位。 B类地址的范围为128.0.0.0~ 191.255.255.255,每一个B类网络共有216个B类IP地址。

C类IP地址的网络地址为前三个八位数组(octet),第一个字节以“110”开始。因此, C类网络地址的有效位数为24-3=21位, C类地址的第一个字节为192~223之间。例如192.1.1.1、 220.2.4.78
等为C类地址。 C类地址的主机地址部分为后面的一个字节8位。 C类地址的范围为192.0.0.0~ 223.255.255.255,每一个C类网络共有28=256个C类IP地址。
D类地址第一个8位数组以“1110”开头,因此, D类地址的第一个字节为224~239。 D类地址通常作为组播地址。
E类地址第一个字节为240~255之间,E类地址保留用于科学研究。
我们经常用到的是A、 B、 C三类地址。 IP地址由国际网络信息中心组织(International Network Information Center,InterNIC)根据公司大小进行分配。过去通常把A类地址保留给政府机构, B类地址分配给中等规模的公司, C类地址分配给小单位。然而,随着互联网络飞速发展,再加上IP地址的浪费, IP地址已经非常紧张。

IP地址用于唯一地标识一台网络设备,但并不是每一个IP地址都是可用的,一些特殊的IP地址有特殊的用途,不能用于标识网络设备。
对于主机部分全为“0”的IP地址,称为网络地址,网络地址用来标识一个网段。例如, A类地址1.0.0.0,私有地址10.0.0.0,192.168.1.0等。
对于主机部分全为“1”的IP地址,称为网段广播地址,广播地址用于标识一个网络的所有主机。例如, 10.255.255.255 ,192.168.1.255等。广播地址用于向本网段的所有节点发送数据包。
对于网络部分为127的IP地址,例如127.0.0.1往往用于环路测试。全“0”的IP地址0.0.0.0代表所有的主机,华为VRP系列路由器用0.0.0.0地址指定默认路由。
全“1”的IP地址255.255.255.255,也是广播地址,但255.255.255.255代表所有主机,用于向网络的所有节点发送数据包。这样的广播不能被路由器转发。
如上所述,每一个网段会有一些IP地址不能用作主机IP地址。下面计算一下可用的IP地址。
如B类网段172.16.0.0, 有16个主机位,因此有216个IP地址,去掉一个网络地址172.16.0.0,一个广播地址172.16.255.255不能用作标识主机,那么共有216-2个可用地址。 C类网段192.168.1.0有8个主机位,共有28=256个IP地址,去掉一个网络地址192.168.1.0,一个广播地址192.168.1.255,共有254个可用主机地址。每一个网段可用主机地址可以用这样一个公式表示:假定这个网段的主机部分位数为n,则可用的主机地址个数为2n-2个。
网络层设备(例如路由器等)使用网络地址来代表本网段内的主机,大大减少了路由器的路由表条目。

在进行IP地址规划时,通常会在公司内部网络使用私有IP地址。私有IP地址是由InterNIC预留的由各个企业内部网自由支配的IP地址。使用私有IP地址不能直接访问Internet是因为公网上没有针对私有地址的路由。当访问Internet时,需要利用网络地址转换(NAT, Network Address Translation)技术,把私有IP地址转换为Internet可识别的公有IP地址。 InterNIC预留了以下网段作为私有IP地址:
A类地址10.0.0.0~10.255.255.255;
B类地址172.16.0.0~ 172.31.255.255;
C类地址192.168.0.0~192.168.255.255等。
使用私有IP地址,不仅减少了用于购买公有IP地址的投资,而且节省了IP地址资源。

掩码用于区分网络部分和主机部分。掩码与IP地址的表示法相同。掩码中用1表示该位为网络位, 0表示主机部分。一个255则表示有8个1。
缺省状态下, A类网络的网络掩码为255.0.0.0, B类网络的网络掩码为255.255.0.0, C类网络掩码为255.255.255.0。

如图所示的192.168.1.100是一个标准C类地址,子网掩码255.255.255.0,该地址的网络地址为192.168.1.0

IP地址是一组32位二进制数,通常用4个8位二进制数组来表示。二进制中用0和1表示。每8位二进制数对应着一个十进制数。 8位二进制数组中的每一位都对应着一个十进制数值。通过将每一位相加可以得出转换后的十进制数。
十进制计数系统是基于10的幂级数: 101, 102 等。二进制计数系统是基于2的幂级数: 21, 22等。8位二进制组中依次从低位到高位分别对应着如图所示的2的0次方, 1次, 2次方,一直到7次方。
图第一行所示,一组8位二进制,从左到右每个1表示的数字为27=128, 26=64, 25=32, 24=16, 23=8, 22=4, 21=2, 20=1,每位相加就得到了255。一个8位全为1的二进制组对应的十进制数为255。

如上图第一行所示二进制数“11101001”,分别将每一位对应成十进制。如果二进制的某位为0,则此位对应的十进制为0。根据前一页列出的每位对应数值计算得出该二进制数的十进制表示为233。

如上图所示每个IP地址是由32个二进制数组成,分为四个字节,每个字节八位二进制数

对于没有子网的IP地址组织,外部将该组织看作单一网络,不需要知道内部结构。例如,所有到地址172.16 .X.X的路由被认为同一方向,不考虑地址的第三和第四个8位分组,这种方案的好处是减少路由表的项目。但这种方案没法区分一个大的网络内不同的子网网段,这使网络内所有主机都能收到在该大的网络内的广播,会降低网络的性能,另外也不利于管理。比如,一个B类网可容纳65000个主机在网络内。假设申请B类地址的用户仅仅只需要100个IP地址,那么剩余的地址无法被别人的用户使用,这就造成了极大的浪费。于是需要一种方法将这种网络分为不同的网段。按照各个子网段进行管理。

从地址分配的角度来看,子网是网段地址的扩充。网络管理员根据组织增长的需要决定子网的大小。
网络设备使用子网掩码(Subnet Masking)决定IP地址中哪部分为网络部分,哪部分为主机部分。
子网掩码使用与IP地址一样的格式。子网掩码的网络部分和子网部分全都是1,主机部分全都是0。缺省状态下,如果没有进行子网划分, A类网络的子网掩码为255.0.0.0, B类网络的子网掩码为
255.255.0.0, C类网络子网掩码为255.255.255.0。利用子网,网络地址的使用会更有效。对外 仍为一个网络,对内部而言,则分为不同的子网。
所示:网络172.16.0.0 分为两个网段: 172.16.4.0、 172.16.8.0。PC1使用172.16.4.0 子网段;PC2使用 172.16.8.0子网段。这样可使路由器根据目的子网地址进行路由,从而限制一个子网的广播报文发送到其它网段,不对网络的效率产生影响。

掌握二进制同十进制之间的转换后, IP地址和子网掩码的二进制和十进制的对应关系很容易明白。图中子网掩码比特数是8+8+8+4=28,指的是子网掩码是连续的28个1,表示网络位有28位。
子网掩码的另外一种表示方法是 /28=255.255.255.240 称为反斜扛表示法。

网络地址就是IP地址的二进制和子网掩码的二进制进行“与”的结果。
“与”的计算方法是1&1=1,1&0=0,0&0=0。上图中IP地址和子网掩码的与计算为:
11000000, 10101000, 00000001, 00000111
& 11111111, 11111111, 11111111, 11110000
11000000, 10101000, 00000001, 00000000
最后得到的就是网络地址。

主机数的计算是通过子网掩码来计算的,首先要看子网掩码中最后有多少位是0。如上图,假设最后有N位为0,那么总的主机数为2n个,可用主机的个数要减去全0的网络地址和全1的广播地址,即2n-2个。

A类地址标准的子网掩码255.0.0.0,即24bits的主机位; B类地址的标准子网掩码为255.255.0.0,即16bits主机位; C类地址的标准子网掩码255.255.255.0,即8bits的主机位。
上图给出一个C类地址,标准子网掩码有8bits的主机位,这8bits中的前4bits也用作子网掩码,则所能容纳的主机总数为2的8-4次方, 8指的是标准子网掩码的主机位个数, 4为用于子网掩码的bits个数,相减后,就得到了实际的主机位数,即可表示为28-4,由此得到可以容纳的主机总数。

在这个例子中,网段地址是一个C类地址: 201.222.5.0。假设需要20个子网,其中每个子网5个主机,就要把主机地址的最后一个八位组分成子网部分和主机部分。子网部分的位数决定了子网的数目。在这个例子中,因为是C类地址,所以子网部分和主机部分总共是8位,因为24<20<25,所以子网部分占有5位,最大可提供32(25)个子网。剩余3位为主机部分23=8。主机部分全是0的IP地址,是子网网络地址;主机部分全是1的IP地址是本子网的广播地址。这样就剩余6个主机地址。可以满足需要。每个网段分别为:
201.222.5.0~201.222.5.7
201.222.5.8~201.222.5.15
201.222.5.16~201.222.5.23
………
201.222.5.232~201.222.5.239
201.222.5.240~201.222.5.247
201.222.5.248~201.222.5.255

把一个网络划分成多个子网,要求每一个子网使用不同的网络标识ID。但是每个子网的主机数不一定相同,而且相差很大,如果我们每个子网都采用固定长度子网掩码,而每个子网上分配的地址数相同,这就造成地址的大量浪费。这时候可以采用变长子网掩码(VLSM, Variable Length Subnet Mask)技术,对节点数比较多的子网采用较短的子网掩码,子网掩码较短的地址可表示的网络/子网数较少,而子网可分配的地址较多;节点数比较少的子网采用较长的子网掩码,可表示的逻辑网络/子网数较多,而子网上可分配地址较少。这种方案能节省大量的地址,节省的这些地址可以用于其它子网上。
如上图所示,某公司准备用C类网络地址192.168.1.0进行IP地址的子网规划。这个公司共购置了5台路由器,一台路由器作为企业网的网关路由器接入当地ISP,其它4台路由器连接四个办公点,每个办公点20台PC。从上图可以看出,需要划分8个子网, 4个办公点各网段需要21个IP地址(包括一个路由器接口),与网关路由器相连的四个网段各需要2个IP地址,每个网段IP地址数目差异较大,可以采用VLSM技术。四个办公点网段采用子网掩码255.255.255.224,划出3个子网位,共有5个主机位,可以容纳最多25-2=30台主机。对于四个办公点路由器和网关路由器相连网段,划出6个子网位, 2个主机位,最多有2个合法IP地址。

CIDR(Classless Inter Domain Routing,无类域间路由)由RFC1817定义。 CIDR突破了传统IP地址分类边界,将路由表中的若干条路由汇聚为一条路由,减少了路由表的规模,提高了路由器的可扩展性。
如上图所示,一个ISP被分配了一些C类网络,198.168.0.0~198.168.255.0。该ISP准备把这些C类网络分配给各个用户群,目前已经分配了三个C类网段给用户。如果没有实施CIDR技术, ISP的路由器的路由表中会有三条下连网段的路由条目,并且会把它通告给Internet上的路由器。通过实施CIDR技术,我们可以在ISP的路由器上把这三条网段198.168.1.0,198.168.2.0, 198.168.3.0汇聚成一条路由198.168.0.0/16。这样ISP路由器只向Internet通告198.168.0.0/16这一条路由,大大减少了路由表的数目。如果使用CIDR技术汇聚的网络地址的比特位必须是一致的,如上例所示。如果上图所示的ISP连接了一个172.178.1.0网段,这个网段路由将无法被汇聚。

地址解析协议ARP是一种广播协议,主机通过它可以动态地发现对应于一个IP地址的MAC地址。
每一个主机都有一个ARP高速缓存(ARP cache),有IP地址到物理地址的映射表,这些都是该主机目前知道的一些地址。当主机A欲向本局域网上的主机B发送一个IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,就可查出其对应的物理地址,然后将该数据报文发往此物理地址。也有可能查不到主机B的IP地址的条目。可能是主机B才入网,也可能是主机A刚刚加电,其高速缓存还是空的。在这种情况下,假定主机A需要知道主机B的MAC地址,主机A以广播方式发送ARP请求给网段上的每一台主机。发送的ARP请求报文中,带有自己的IP地址到MAC地址的映射,同时还带有需要解析的目的主机的IP地址。目的主机B收到请求报文后,将其中的主机A的IP地址与MAC地址的映射存到自己的ARP高速缓存中,并把自己的IP地址到MAC地址的映射作为响应发回主机A。主机A收到ARP应答,就得到了主机B的MAC地址,同时,主A缓存主机B的IP地址到MAC地址映射

代理ARP的功能就是使那些不在同一网络上的计算机或路由器能够相互通信。
通常情况下,当一台路由器R收到一条ARP请求报文时,路由器R将进行检查,看该ARP请求的目的地址是否是自己,如果是,发出ARP应答报文;如果不是,丢弃该报文。如果路由器R开启代理ARP功能,当路由器R收到一条ARP请求报文时,发现该报文的目的地址不是自己,路由器R并不立即丢弃该报文,而是查找路由表,如果路由器R有到达该目的地址的路由,则路由器R将自己的MAC地址发送给ARP请求方。 ARP请求方就将到该目的地址的报文发送给路由器R,路由器R再将其转发出去。

Gratuitous ARP(免费ARP):主机发送ARP查找自已IP地址对应的MAC地址。如果网络上没有另一台主机设置了相同的IP地址,则主机不会收到回答。而当主机收到该请求的回答时,则表示有另一台主机设置了与本机相同的IP地址。于是主机会在终端日志上生成一个错误消息,表示以太网上存在一个重复的IP地址。免费ARP的作用:
1、通过发送免费ARP可以确认IP地址是否有冲突。当发送方收到一条免费ARP请求的回答时,表示存在着一个与该IP地址相冲突的设备。
2、更新旧的硬件地址信息。当发送免费ARP的主机正好改变了硬件地址,如更换网卡。免费ARP就可以起到更新硬件地址信息的功能。当接收方收到一条ARP请求时,并且该ARP信息在ARP表中已经存在,则接收方必须用新的ARP请求中的地址信息更新旧的ARP信息表。

在进行地址转换时,有时还要用到逆向地址解析协议RARP。
RARP常用于无盘工作站,这些设备知道自己MAC地址,需要获得IP地址。为了使RARP能工作,在局域网上至少有一个主机要充当RARP服务器。
以上图为例,无盘工作站需要获得自己的IP地址,向网络中广播RARP请求, RARP服务器接收广播请求,发送应答报文,无盘工作站获得IP地址。对应于ARP、 RARP请求以广播方式发送, ARP、 RARP应答一般以单播方式发送,以节省网络资源。

路由器的主要作用是将不同的网络互连为一个整体。互联网络可以实现数据在网络中转发。
数据转发:路由器必须具有根据数据分组的目的网络地址转发分组的功能。
路由(寻径):为了实现数据转发,路由器必须有能力建立、刷新路由表,并根据路由表转发数据包。备份、流控:为了保证网络可靠运行,路由器一般都具备主备线路的切换及流量控制功能。
速率适配:不同接口具有不同的速率,路由器可以利用自己的缓存及流控协议进行适配。
隔离网络:路由器可以隔离广播网络,防止广播风暴,同时也可以对数据包配置灵活多样的过滤策略以保证网络安全(防火墙)
异种网络互连:互连网的初衷就是为了实现异种网络互连,现代路由器一般都会实现两种以上的网络协议以实现异种网络互连。

如上图所示,路由器工作流程为:物理层从路由器的一个端口收到一个报文,上送到数据链路层。数据链路层去掉链路层封装,根据报文的协议域上送到网络层。网络层首先看报文是否是送给本机的,若是,去掉网络层封装,送给上层。若不是,则根据报文的目的地址查找路由表,若找到路由,将报文送给相应端口的数据链路层,数据链路层封装后,发送报文。若找不到路由,将报文丢弃,并按需要发送相关错误信息。

路由器转发数据包的关键是路由表。每个路由器中都保存着一张路由表,表中每条路由项都指明数据包到某子网或某主机应通过路由器的哪个物理端口发送,然后就可到达该路径的下一个路由器,或者不再经过别的路由器而传送到直接相连的网络中的目的主机。
路由表中包含了下列关键项:
目的地址(Destination):用来标识IP包的目的地址或目的网络。
网络掩码(Mask):与目的地址一起来标识目的主机或路由器所在的网段的地址。将目的地址和网络掩码“逻辑与”后可得到目的主机或路由器所在网段的地址。
输出接口(Interface):说明IP包将从该路由器哪个接口转发。
下一跳IP地址(Nexthop):说明IP包所经由的下一个路由器的接口地址。

1、IP地址分类?
IP地址分为A、 B、 C、 D、 E类地址。其中D类地址是组播地址; E类地址是保留地址。在A、 B、 C类地址中又各自有一段是私有地址。
2、ARP/RARP协议的作用?
ARP协议是地址解析协议。用于IP地址到MAC地址的解析;RARP是反向地址解析协议, MAC地址到IP地址的解析。
3、路由器的工作原理?
物理层从路由器的一个端口收到一个报文,上送到数据链路层。数据链路层去掉链路层封装,根据报文的协议域上送到网络层。网络层首先看报文是否是送给本机的,若是,去掉网络层封装,送给上层。若不是,则根据报文的目的地址查找路由表,若找到路由,将报文送给相应端口的数据链路层,数据链路层封装后,发送报文。若找不到路由,将报文丢弃,并按需要发送相关错误信息。

猜你喜欢

转载自blog.csdn.net/C_huid/article/details/99750280