3.5.子网划分和子网掩码
3.5.1.子网划分
1.仅对内展现,对外仍然表现为没有划分子网的网络
2.从主机号借用若干别特作为子网号:<网络号><子网号><主机号>(子网号可以没有,但是主机号至少2位)(主机号不能全0,不能全1;子网号可否全0全1看情况)
3.5.2.子网掩码
1.网络号全1,主机号全0
2.子网掩码与Ip地址逐位相与,得到子网网络地址
例如:IP地址为141.14.72.24,子网掩码为255.255.192.0,求网络地址
1.72的二进制为0100 1000
2.192的二进制为1100 0000(剩下6位 + 8位 = 14位主机号)
3.相与得到0100 0000→64
4.网络地址为141.14.64.0
若子网掩码为255.255.224.0
1.72的二进制为0100 1000
2.224的二进制为1110 0000(剩下5位 + 8位 = 13位主机号)
3.相与得到0100 0000→64
4.网络地址为141.14.64.0
3.5.3.使用子网时分组的转发
1.路由表中含有:
①目的网络地址
②目的网络子网掩码
③下一跳地址(接下来应该将数据传到哪)
2.设路由器收到了一个数据
①从IP分组的首部提取数据的目的IP地址
②判断是否能够直接交付,判断方法:将目的地址逐一与该路由器的各个子网地址的子网掩码进行相与操作,若相与结果,与任一子网对应,则转发给该子网
直接交付:该路由器的子网中是否含有该目的地址
间接交付:该路由器的子网中并没有该目的地址,需要交付给下一个路由器
③若所有子网都不符合目的地址,查看是否有和目的地址相同的特定主机路由
④检测路由表中是否有路径:目的地址和路由表中的目的网络子网掩码逐一相与判断是否与其对应,对应则发送给相应路由
⑤若④仍然找不到,则发送给默认路由0.0.0.0,由其转发给下一个路由,直到找到目的地址(并非无限制的转发,被生存时间所限制)
⑥若生存时间用尽仍没找到,则丢弃,并报告出错
3.6.无分类编址CIDR
1.消除了传统类地址和划分子网概念
在IP地址后加上 /网络前缀的位数
2.构成超网:将多个子网聚合成一个较大的子网。
方法:所有网络地址取交集
例如:206.1.0.0/17 和 206.1.128.0/17 聚合后得到206.1.0.0/16
3.最长前缀匹配:查找路由表时,若有多个结果(逐位相与),应选择具有最长网络前缀的路由(前缀越长,地址块越小,路由越具体)
例如:目的地址为206.0.71.130;路由表内有A:206.0.71.128/25,B:206.0.71.0/25,C:206.0.68.0/22
①前两个字节都相同,故只比较后两个字节
②目的地址:0100 0111 1000 0010
A:网络前缀长度为25,故地址掩码为1111 1111 1000 0000,与目的地址相与得到:0100 0111 1000 0000,结果为206.0.7.128/25,匹配成功
B:网络前缀长度为25,故地址掩码为1111 1111 1000 0000,与目的地址相与得到:0100 0111 1000 0000,结果为206.0.7.128/25,匹配失败
C:网络前缀长度为22,故地址掩码为1111 1100 0000 0000,与目的地址相与得到:0100 0100 0000 0000,结果为206.0.68.0/22,匹配成功
因为匹配成功中A的前缀位数最长,因此转发给A
3.7.ARP
数据链路层发送数据需要接收方IP地址和MAC地址,发送方IP地址和目的地址。但是,有时候仅有接收方的IP地址,而没有接收方的MAC地址,ARP就是通过接收方的IP地址查询其MAC地址
1.若目的主机是本网络的主机
(IP1为源主机,IP3为目的主机)
①查询本机的ARP高速缓存(ARP高速缓存中本网络IP地址和MAC地址的映射)中是否有目的主机的IP地址
②若有,则就可以据此查出目的主机的MAC地址,并将其写入MAC目的地址
③若没有,则需要发送广播ARP请求分组目的MAC地址为FF-FF-FF-FF的帧,局域网内所有主机都将会收到这个分组(交换机能隔离冲突域,但不能隔离广播域,虽然本网络内所有主机都会收到该广播ARP请求分组,但有且仅有目的主机会响应),目的主机收到后,就会返回ARP响应分组(单播分组,局域网内其他主机无法收到),该分组含有目的主机的IP地址和MAC地址。本主机收到后,就将这个IP地址和MAC地址的映射写入ARP高速缓存中(方便下次发送)
2.若目的主机不是本网络主机
①本主机通过目的主机的IP地址与子网掩码逐位相与判断是否接收方是本网络内的主机
②若不是本网络内的主机,则寄希望于本主机的默认网关(路由器)找到目的主机的MAC地址
③本主机将会给默认网关发送广播ARP请求分组,而不是其本来想要发送的目的主机(发送方IP地址为本主机,MAC地址为本主机MAC地址,接收方IP地址为默认网关,MAC地址为FF-FF-FF-FF)
④默认网关接收到该广播ARP请求分组后,将会给本主机返回一个单播ARP相应分组(其他主机收不到),含有默认网关的IP地址和MAC地址(而非本主机本来想发送的目的主机的IP和MAC地址)
⑤本主机给目的主机发送数据,数据中的IP源地址为本主机地址,MAC源地址为本主机地址,IP目的地址为目的主机IP地址,MAC地址为默认网关的MAC地址
⑥该数据每次经过中间结点(路由器)的时候(进入新的网络环境)(每次一到下一跳都要使用一次ARP协议),都会进行解封装、封装,因此,其目的MAC地址和源MAC地址都会进行改变,但是目的IP地址和源IP地址不会因此而改变。其中,源MAC地址会变成该中间结点的MAC地址,目的MAC地址将会变成下一跳的结点的MAC地址
⑦到目的地址所属的默认网关后,目的MAC地址将会变为目的主机的MAC地址,源MAC地址为目的主机所属的默认网关的MAC地址(同样通过ARP协议查询目的主机的MAC地址),在发送的过程中源IP地址和目的IP地址从未改变
3.8.DHCP协议
应用层协议,使用客户/服务器方式,通过广播进行交互,基于UDP,动态分配IP地址
①功能:
1.即插即用:主机进入范围内,DHCP就可以为它进行服务
2.地址重用:设IP地址为IP1,本来由A使用,在A不再使用该地址后,B可以使用IP1
3.支持移动用户加入网络
4.在用地址续租:延长主机使用其IP地址的期限(IP地址使用有期限)
②过程:C/S,全程广播,即目的地址为255.255.255.255
1.主机广播DHCP发现报文(寻找本网络内的服务器):源地址0.0.0.0,由主机发送,代表本网络内本主机,此时本主机并没有IP地址,故用0.0.0.0表示本主机;目的地址255.255.255.255,即广播地址
2.DHCP服务器广播DHCP提供报文(拟分配,可能有多个服务器响应):源地址为DHCP服务器地址,由DHCP服务器发送;目的地址255.255.255.255,即广播地址
3.主机广播DHCP请求报文(针对某一个服务器申请,此时仍采用广播可以告诉其他服务器,该主机已经和某服务器进行了通信):源地址0.0.0.0,由主机发送;目的地址2555.255.255.255,即广播地址
4.DHCP服务器广播DHCP确认报文(正式分配):源地址为DHCP服务器地址,由DHCP服务器发送;目的地址为255.255.255.255,即广播地址
3.9.ICMP协议
网络层协议,作用是通过ICMP报文报告差错或者异常情况,ICMP报文作为IP数据报的数据部分加上首部组成IP数据报
1.ICMP差错报文:
①终点不可达:路由器或者主机无法交数据付
②源点抑制:网络内产生拥塞
③时间超过:路由器收到生存时间为0的数据或者目的主机没在预定时间内收到完整的数据报
④参数问题:首部字段出问题
⑤改变路由:更改最佳路由路径
2.ICMP询问报文
①回送请求和回答报文:测试目的站是否可达及了解状况(PING)
②时间戳请求和回答报文:用来进行时间同步和测量时间
3.不应发送的情况:
①ICMP差错报文出错
②仅对分组第一个出错数据发送ICMP差错报文,之后的分组不发送
③对于组播地址(一点对多点)不发送ICMP差错报文
④对于特殊地址(例如127巡回)不发送ICMP差错报文
4.IPv6
1.地址空间从ipv4的32bit提升到128bit,根本上解决地址耗尽问题(CIDR,NAT不能根本解决)
2.彻底移除检验和字段
3.将可选字段移除首部,形成扩展首部
4.即插即用,无需DHCP
5.首部长度为8B的倍数,而ipv4为4B的倍数
6.只能在主机分片,ipv4可以在路由器和主机分片
5.IP组播
5.1.IP组播的基本概念
1.单播:发送数据到单个目的地,点对点
广播:发送数据到某一广播域或子网内所有设备,点对多点
组播:发送数据到某些特定主机,到这些主机的默认网关处开始复制数据和分发(在之前的传输过程中仅发送一份数据),点对多点
2.组播的设备将会被分配到一个组播地址,使用D类地址。只能作为目的地址,不能作为源地址(单播地址作为源地址)
3.基于UDP,尽最大可能交付
4.不产生ICMP报文
5.组播MAC帧的地址和组播IP地址的映射关系:MAC地址开头一定是01-00-5E,取IP地址的后23位作为MAC地址的后23位
5.2.IGMP协议和组播路由选择协议
1.IGMP:让路由器知道是否本局域网内有主机是某个组播组成员,使用IP数据报,网络层协议
2.组播路由选择协议:找出以源主机为根节点的组播转发树,避免在路由器之间兜圈子
6.路由器
1.路由选择:路由选择处理机根据路由选择协议(RIP,OSPF)构造出路由表
2.分组转发:交换结构根据转发表(由路由表得来)对输入端口的数据找到合适的输出端口进行转发(若是RIP/OSPF分组(外部),则送往路由选择处理机;若是数据分组,则送往输出端口转发)
3.输入端口的处理(解封装):物理层接收比特流→数据链路层提取数据帧→网络层提取数据报(排队产生时延)
输出端口(封装):网络层→数据链路层→物理层
输入端口和输出端口队列产生溢出是分组丢失的重要原因(缓存满了,直接丢弃)
4.可以互联两个不同网络层协议的网段