聊一聊ARP/RARP/IP/DNS协议 您所在的位置:网站首页 ip和主机名之间的转换协议 聊一聊ARP/RARP/IP/DNS协议

聊一聊ARP/RARP/IP/DNS协议

2024-07-09 14:05| 来源: 网络整理| 查看: 265

一.ARP协议 1.概述

地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议,主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址,收到消息后将该IP地址和物理地址存入ARP缓存表中保留一定的时间,下次请求时查询ARP缓存以节约资源

ARP即地址解析协议,用于实现从IP地址到MAC地址的映射,即询问目标对应的MAC地址在网络通信中,主机和主机通信的数据包需要依据OSI模型从上到下进行数据封装,当数据封装完整后,再向外发出,所以在局域网的通信中,不仅需要源目IP地址的封装,也需要源目MAC的封装一般情况下,上层应用成熟更多关心IP地址而不是关心MAC地址,所以需要通过ARP协议来获知目的主机的MAC地址,完成数据封装 2.ARP原理之请求应答

这里假设局域网中只有两台主机 当主机1需要跟主机2进行通信时,根据OSI数据封装顺序,发送方会自顶向下(从应用层到物理层)封装数据,然后发送出去,我们给主机1指令"ping ip2",这就告知了目的IP,此时主机1便有了通信需要的源目IP地址,但是主机1仍然没有通信需要的目的MAC地址,通过以上步骤,主机1和主机2进行了一次ARP请求和回复过程,通过这个交互过程,主机1便具备了主机2的MAC地址信息,在真正进行通信之前,主机1还会将主机2的MAC信息放入本地的ARP缓存表,表里面放置了IP和MAC地址的映射信息,接下来,主机1再次进行数据封装… 小结: 经过以上步骤,主机1终于把数据包发送出去了,之后便可以进行正常通信了,ARP的功能和实现过程是:它在发送方需要目的MAC地址的时候及时出手,通过"一问一答"的方式获取到特定IP对应的MAC地址,然后存储到本地ARP缓存表,后续需要的话,就到这里查找

3.ARP缓存表

每台主机或柳侑绮在维护着一个ARP缓存表,这个表包含了IP地址到MAC地址的映射关系,表中记录了对—ARP表项,当需要发送数据的时候,主机就会根据数据报中的目标IP地址信息,然后再ARP缓存表中进行查找对应的MAC地址,最后通过网卡将数据发送出去,ARP缓存表包含一个寿命值,它将记录每个ARP表项的生存时间,生存时间到了就会从缓存表中删除,这些生存时间是可以任意设置的,默认为10分钟.具有时效性,如果电脑或者通信设备重启的话,这张表就会清空,也就是说,如果下次需要通信,又需要进行ARP请求

4.请求单播回应

实际网络中,一个LAN可能有几十上百的主机,那么,在多主机环境下,主机1现在发送的ARP请求包,怎么交到主机2手里? 这时,ARP协议就需要采用以太网的"广播"功能:将请求包以广播的形式发送,交换机或wifi设备(无线路由器)收到广播包时,会将此数据发给同一局域网的其他所有主机,主机1发送的请求广播包同时被其他主机收到,然后主机3和主机4收到之后(发现不是自己)则丢弃,而主机2收到之后,根据请求包里面的信息(有自己的IP地址),判断是给自己的,所以不会做丢弃动作,而是返回ARP回应包,ARP请求时通过广播方式来实现的,而主机2返回ARP回应包,不需要通过广播来实现,大部分网络协议在设计的时候,都需要保持极度克制,不需要的交互就砍掉,能合并的信息就合并,能不用广播就用单播,以此让带宽变得更多,让网络变得更快 那么,ARP回应包是如何处理的?ARP请求包的完整信息是:我的IP地址是IP1,MAC地址是MAC2.请问谁是主机2,你的IP2对应的MAC地址是多少,简单来说,ARP请求首先有"自我介绍",然后才是询问,这样的恶化,主机2在收到请求之后,就可以将主机1的IP和MAC映射信息存储在本地的ARP缓存表,既然知道主机1在哪里,就可以返回ARP单播回应包 小结:ARP协议通过"一问一答"实现交互,"问"是通过广播形式实现,"答"是通过单播形式实现

5.什么是广播?

大部分的广播包,他们有一个共同特征:二层封装时目的MAC全是f(ffff.ffff.ffff)或三层封装时目的IP全是1(255.255.255.255)可以这样更方便的记住:目的地址最大的,就是广播

6.ARP到底是数据链路层还是网络层

它的功能最终是获取到MAC信息,服务于数据链路层,从这点考虑,ARP是数据链路层协议,但是从层次来看,ARP基于Ethernet协议,IP协议基于Ethernet协议,他们在Ethernet协议里面有独立的Type类型 小结:基于功能来考虑,ARP是数据链路层协议,基于分层/封装来考虑,ARP是网络层协议

7.ARP缓存表的超时处理

ARP表项的生存时间一般为5-10分钟,而ARP请求的等待时间是秒,当这些时间到达后,就会更新ARP表项,如果在数据链路层无法连通则会删除表项.因此每个协议栈的实现都必须维护着一个定时器(超时机制)来管理ARP缓存表

8.ARP报文

ARP的请求与应答都是依赖ARP报文结构进行的,ARP报文是放在以太网数据帧中进行发送的 当它封装在以太网帧中的格式: 在这里插入图片描述 在ARP表建立前,主机并不知道目标MAC地址,所以在一开始的时候只能通过广播的方式将ARP请求包发送出去,处于同一局域网的主机都能接收到广播的数据包。所以一开始目标MAC地址是FF-FF-FF-FF-FF-FF,而以太网首部的帧类型是有多种,对于ARP数据包来说,其值为0x0806,对于IP数据报来说,其值为0x0800。 在ARP首部一开始的2个字节存储的是硬件类型,表示要知道目标网卡的硬件类型,其中,值为1表示以太网地址;接下来还有2字节的协议类型,其中,0x0800表示IP协议,其他还可能是ICMP/IGMP协议等;接下来有1个字节表示硬件地址长度,指出该报文中硬件地址的长度,对于以太网硬件类型,它的值为6;还有1字节的协议地址长度,如果是ARP协议、IP协议等,该值为4;ARP首部最后的op字段用于记录ARP操作的类型,分别是:

ARP请求,其值为1。ARP应答,其值为2。RARP请求,其值为3。RARP应答,其值为4。

我们只关心ARP的请求与应答即可,RARP是逆地址解析协议,在这里我们就不用去了解,它在网络中基本已经被淘汰,用于主机在启动的时候获得自己的IP地址。 对于ARP首部后面的四个字段分别是源MAC地址、源IP地址、目标MAC地址、目标IP地址,这些就是比较简单的了。

9.ARP映射方式

(1)静态映射 手动创建一张ARP表,把IP地址和MAC地址关联起来,这个ARP表存储在网络中的每一台主机上,这样有一定的局限性,因为物理地址可能发生变化:

机器可能更换NIC(网络适配器),这时MAC地址就发生了变化在某些局域网中,每当计算机加电时,它的物理地址都要改变一次移动电脑可以从一个物理网络转移到另一个物理网络,这时MAC地址就会变化

要避免这些问题出现,必须定期更新ARP表,比较麻烦而且会影响网络性能 (2)动态映射 每次只要机器知道另一台机器的IP地址,就可以使用协议找出相对应的MAC地址,ARP和RARP都实现了动态映射

ARP:把IP地址映射为MAC地址RARP:把MAC地址映射为IP地址 10.如何查看ARP缓存表

在命令提示符下输入"arp-a"

二.RARP协议 1.概述:

RARP即反向地址转换协议,允许局域网的主机 从网关服务器的ARP表或缓存上请求IP地址

2.工作流程 主机发送一个本地RARP广播,在广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址本地网段的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址如果存在,RARP服务器就给源主机发送一个相应数据包,并将IP地址提供给对方主机使用如果不存在,RARP服务器对此不作任何响应源主机收到从RARP服务的响应信息,就利用的得到的IP地址进行通信,如果一直没收到RARP服务器的响应信息,表示初始化失败 三.IP协议 1.概述

IP(Internet Protocol,互联网协议)主要用于互联网通信,IP协议用于将多个包交换网络连接起来,他在原地址和目的地址之间传输数据报,还提供对数据大小的重新组装功能,以适应不同网络的要求,IP协议是TCP/IP协议族的核心协议,最常用的IP协议版本号是4,即IPV4,它的下一个版本就是IPV6

2.IP协议报文格式

在这里插入图片描述 (1)版本 占4位,指IP协议的版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。关于IPv6,目前还处于草案阶段。

(2)首部长度 占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。

(3)区分服务 占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。

(4)总长度 总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为216-1=65535字节。 在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。

(5)标识(identification) 占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。

(6)标志(flag) 占3位,但目前只有2位有意义。 ● 标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个 ● 标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”。只有当DF=0时才允许分片。

(7)片偏移 占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。

(8)生存时间 占8位,生存时间字段常用的的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为TTL的单位。每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值为0时,就丢弃这个数据报。

(9)协议 占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。

(10)首部检验和 占16位。当收到一份IP数据包后,同样对首部的每个16位进行反码求和。由于接收方在计算过程中包含了发送发在首部中的校验和,如果传输过程中没有差错,计算结果应全为1,不是全1,即检验和错误,那么就丢弃收到的数据报,但不生成差错报文,由上层发现丢失的数据报并进行重传。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。

四.DNS协议 1.概述

DNS协议是用来将域名转换为IP地址(也可以将IP地址转换为对应的域名地址),IP地址是面向主机的,域名则是面向用户的

2.DNS系统 一个组织的系统管理机构,维护系统内的每个主机的IP和主机名的对应关系如果新计算机接入网络,将这个信息注册到数据库中用户输入域名的时候,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址 3.域名的层次结构 每一个域名都是一个标号序列,用字母(A-Z,a-z,大小写等价),数字(0-9),和连接符(-)组成标号序列总长度不能超过255个字符,它由点号分割成一个个的标号每个标号应该在63个字符之内,每个标号都可以看成一个层次的域名级别最低的域名写在左边,级别最高的域名写在右边域名服务主要是基于UDP实现的,服务器的端口是53 在这里插入图片描述 2.域名的分级

在这里插入图片描述

3.域名解析过程 输入域名后,先查找自己主机对应的域名服务器,域名服务器先查找自己的数据库中的数据如果没有,就向上级域名服务器进行查找,以此类推最多回溯到根域名服务器,肯定能找到这个域名的IP地址域名服务器自身也会进行一些缓存,把曾经访问过的域名和对应的IP地址缓存起来,可以加速查找过程

具体可描述如下:

主机先向本地域名服务器进行递归查询本地域名服务器采用迭代查询,向一个根域名服务器进行查询根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器的IP地址本地域名服务器向顶级域名服务器进行查询顶级域名服务器告诉本地域名服务器,下一步查询权限服务器的IP地址本地域名服务器向权限服务器进行查询权限服务器告诉本地域名服务器所查询的主机的IP地址本地域名服务器最后把结果告诉主机


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有