一身转战三千里,一剑曾当百万师。这篇文章主要讲述IP基本原理3-H3C认证网络工程师(H3CNE)相关的知识,希望能为你提供帮助。
?一、ARP协议?
?ARP?(Address Resolution Protocol,地址解析协议)就是用于动态地?将IP 地址解析为MAC 地址的协议?。
IP 地址将物理地址对上层隐藏起来,使Internet 表现出统一的地址格式。但在实际通讯时,IP 地址不能被物理网络所识别,物理网络所使用的依然是物理地址。因此,必须实现IP 地址对物理地址的映射。对于以太网而言,当IP 数据包通过以太网发送时,以太网链路并不识别32 位的IP 地址,它们是以48 位的MAC 地址标识以太网节点的。因此,必须在IP 地址与MAC 地址之间建立映射(map)关系,建立这种映射的过程称为地址解析(Resolution)。?ARP(Address Resolution Protocol,地址解析协议)就是用于动态地将IP地址解析为MAC地址的协议。主机通过ARP解析到目的MAC地址后,将在自己的ARP缓存表中增加相应的IP地址到MAC 地址的映射表项,用于后续到同一目的地报文的转发。?
假设 HostA 和HostB 在同一个网段,HostA要向HostB发送IP包,其地址解析过程如下:1)HostA首先查看自己的ARP表,确定其中是否包含有HostB的IP地址对应的ARP表项。如果找到了对应的表项,则HostA直接利用ARP表项中的 MAC地址对IP数据包封装成帧,并将帧发送给HostB。2)如果HostA在ARP表中找不到对应的表项,则暂时缓存该数据包,然后以广播方式发送一个ARP请求。ARP请求报文中的发送端IP地址和发送端 MAC地址为HostA的IP地址和MAC地址,目标IP地址为HostB的 IP 地址 ,目标MAC地址为全0的MAC地址。3)由于ARP请求报文以广播方式发送,该网段上的所有主机都可接收到该请求。HostB比较自己的IP地址和ARP请求报文中的目标IP地址,两者相同 ,HostB将ARP请求报文中的发送端(即HostA)IP地址和MAC地址存入自己的ARP表中,并以单播方式向HostA发送 ARP响应,其中包含了自己的 MAC地址。其他主机发现请求的IP地址并非自己,于是都不做应答。
4)HostA收到ARP响应报文后,将HostB的MAC地址加入到自己的ARP表中,同时将IP数据包用此 MAC地址为目的地址封装成帧并发送给HostB。
说明:这个过程IE面试经常问,需要理解掌握。
ARP表项分为动态ARP表项和静态ARP表项 :
?动态ARP表项?由ARP协议动态解析获得,如果超过一个老化时间( aging time)未被使用,则会自动删除。
?静态 ARP表项?通过管理员手工配置,不会被老化。静态 ARP表项的优先级高于动态ARP表项,可以将相应的动态ARP表项覆盖。
此外,还有一种特殊的ARP应用 —— 免费 ARP(Gratuitous ARP)。?免费 ARP?协议包中携带的发送者IP地址和目标IP地址都是本机地址,发送者 MAC地址是本机MAC地址,目标MAC地址是广播地址。对外发送免费ARP协议包可以实现以下功能:
确定其它设备的IP地址是否与本机地址冲突。
设备改变了硬件地址,通过发送免费ARP报文通知其他设备更新ARP表项。
?二、RARP协议?
?主机只知道自己的硬件地址时,可以通过RARP(Reverse Address Resolution Protocol,反向地址解析协议)解析自己的IP 地址?。RARP 常用于无盘工作站启动前获取自身IP 地址。
在刚刚启动时,无盘工作站只知道自己网卡的MAC 地址,需要获得自己的IP 地址,于是向网络中广播RARP 请求。RARP 服务器接收广播请求后发送应答报文,无盘工作站随即获得IP 地址。
RARP 服务器要响应请求,首先必须知道物理地址与IP 地址的对应关系。为此,在RARP服务器中维持着一个本网段的“物理地址-IP 地址”映射表。当某无盘工作站发出RARP 请求后,网上所有主机均收到该请求,但只有RARP 服务器处理请求并根据请求者物理地址响应请求。无盘工作站发出的RARP 请求中携带其物理地址,服务器根据此硬件地址查找其IP 地址。
由于服务器此时已经知道无盘工作站的物理地址,因此不再采用广播方式,而是直接向无盘工作站发送单播应答。
?对应于ARP、RARP 请求以广播方式发送,ARP、RARP 应答一般以单播方式发送,以节省网络资源?。
?三、代理RARP协议?
当主机不了解网关的信息,或主机无法判断目的是否处于本网段时,某些主机会对处于其他网段的目的主机IP 地址直接进行ARP 解析。此时,路由器可以运行代理ARP(Proxy ARP)协助主机实现通信。
如图所示,HostA 希望与HostC 通信,但由于某种原因,HostA 直接发送了ARP 请求,解析HostC 的MAC 地址。运行了代理ARP 的路由器收到ARP 请求后,代理HostA 在1.1.2.0网段发出ARP 请求,解析HostC 的MAC 地址。
HostC 认为路由器向其发出了ARP 请求,遂回应以ARP 响应,通告自己的MAC 地址00E0.FC03.3333。路由器收到ARP 响应后,也向HostA 发送ARP 响应,但通告的MAC 地址是其连接到1.1.1.0 网络的以太口E0/0 的MAC地址00E0.FC02.2222。这样在HostA 的ARP表中会形成IP 地址1.1.2.1 与MAC 地址00E0.FC02.2222 的映射项,因此HostA 实际上会将所有要发给HostC 的数据包发送到路由器上,再由路由器转发给HostC。
说明:ARP协议华三IE面试经常问的,需要掌握。简单说:
(1)ARP:通过目的主机的IP地址,请求目的主机的MAC地址;
【IP基本原理3-H3C认证网络工程师(H3CNE)】(2)RARP:已知本机的MAC地址,请求本机的IP地址;
(3)免费ARP:目的IP是其自身,目标mac地址是广播地址,确定此地址是否被其它设备占用。如:DHCP分配地址时会发送免费ARP来确定下发的地址是否被占用;
(4)代理ARP:主机之间通信通过一台代理设备做中介
?四、IP包转发?
?(1)主机单播IP 包发送?
?主机在发送IP 包之前,首先需判断目的主机所处的位置。主机对比自身IP 地址的网络地址与目的IP 地址的网络地址,如果二者相等,则可知目的主机与自己处于同一网段;如果二者不相等,则目的主机与自己处于不同网段。?
如果目的与本机处于同一网段,主机可以与其直接通信。此时主机首先解析目的主机IP 地址对应的硬件地址,随即将IP 包以此硬件地址为目的地址封装成帧,由直接连接此网段的接口发送给目的主机。
?如果目的与本机处于不同网段,则主机需将IP
包交给一台称为默认网关(default gateway)的路由器,由此路由器设法将IP 包转发给目的主机。此时主机根据默认网关的IP
地址解析出默认网关的硬件地址,随即将IP 包以此硬件地址为目的地址封装成帧,由直接连接此网段的接口发送给默认网关。?
?(2)路由器单播IP 包转发?
?路由器收到一个IP 包后,首先检测其目的地址。如果目的地址为本机,则接收此包并将其解封装,所得数据提交上层协议处理?。
如果此IP 包目的地址并非本机,而处于某个接口直连的网段,路由器可以与其直接通信。此时路由器首先解析目的主机IP 地址对应的硬件地址,随即将IP 包以此硬件地址为目的地址封装成帧,由直接连接此网段的接口发送给目的主机。
?如果目的与路由器处于不同网段,则路由器需将IP
包交给下一跳(next hop)路由器,由下一跳设法将IP 包转发给目的主机。此时主机根据路由表中的路由信息查出下一跳的IP
地址,解析出下一跳的硬件地址,随即将IP 包以此硬件地址为目的地址封装成帧,由直接连接此网段的接口发送给下一跳路由器?。
?(3)主机接收IP 包?
在收到网络接口层提交的IP 数据包时,主机首先检查这个包的目的地址是否等于自身IP地址。如果其目的地址符合下列情况之一,则主机接收此包,并将其数据提交相应的上层协议处理:
这个包的目的IP 地址等于自身IP 地址;
这个包的目的IP 地址是一个广播地址;
这个包的目的IP 地址是一个组播地址,而本机的某个服务正好属于此组播组。
如果此IP 包的目的地址不符合上述任何一种情况,则主机的网络层丢弃此IP 包。
?五、广播风暴?
路由器转发广播将导致全网充斥广播。很多协议需要通过广播包完成公告、发现等任务。
以ARP
为例,每台主机对网段内其他任何主机通讯时都需要广播ARP
请求。如果路由器转发广播包,每个广播包将传遍整个互联网,大大浪费了网络资源。并且由于广播包将会被提交到每一台主机的网络层进行处理,每一台主机的资源都会遭到无谓的浪费。这种情况发展到一定程度,整个网络会由于广播而瘫痪,这种情况称为广播风暴(Broadcast
Storm)。
?为了避免广播风暴的发生,路由器在默认情况下不转发广播包。?
?六、ICMP协议?
ICMP(Internet
Control Message Protocol,互联网控制消息协议)是一个网络层协议,基于IP 运行。ICMP
定义了错误报告和其它回送给源点的关于IP 数据包处理情况的消息,可以用于报告IP
数据包传递过程中发生的错误、失败等信息,提供网络诊断等功能。
ICMP
通常为IP 层或者更高层协议使用。其中ping 是一个最常见的应用,主机可通过它来测试网络的可达性。用户运行ping
命令时,主机向目的主机发送ICMP Echo Request 消息。Echo Request 消息封装在IP 包内,其目的地址为目的主机的IP
地址。目的主机收到Echo Request 消息后,向源主机回送一个ICMP Echo Reply 消息。源主机如果收到Echo Reply
消息,即可获知该目的主机是可达的。假定某个中间路由器没有到达目的网络的路由,便会向源主机端返回一条ICMP Destination
Unreachable 消息,告知源主机目的不可达。
ICMP
消息可分为两种类型,即ICMP 差错消息和ICMP 查询消息。对于ICMP 差错消息要作特殊处理,例如,在对ICMP
差错消息进行响应时,永远不会生成另一份ICMP
差错消息。(如果没有这个限制规则,可能会遇到一个差错产生另一个差错的情况,而差错再产生差错,这样会无休止地循环下去)。
推荐阅读
- 私有化部署的企业级在线文档产品说明书,请查收!
- 网络架构设计实现中的复杂性探讨01
- 第十五节:SpringBoot使用JPA访问数据库
- 如何判断 .NET Core 应用程序是以管理员身份运行 #yyds干货盘点#
- 为什么短信链接总是被拦截(应该如何避免拦截?)
- Shell之多线程
- 我笑了!面试加薪题竟然是有关RabbitMQ的
- Python字典查找字符串中的镜像字符
- 20行Python代码(桌面新闻通知程序)