广州万户网站公司企业网站建设方案有那些

当前位置: 首页 > news >正文

广州万户网站公司,企业网站建设方案有那些,wordpress主题_,敬请期待和敬请期待 作者#xff1a;დ旧言~ 座右铭#xff1a;松树千年终是朽#xff0c;槿花一日自为荣。 目标#xff1a;了解什么是以太网协议和ARP协议。 毒鸡汤#xff1a;有些事情#xff0c;总是不明白#xff0c;所以我不会坚持。早安! 专栏选自#xf… 作者დ旧言~ 座右铭松树千年终是朽槿花一日自为荣。 目标了解什么是以太网协议和ARP协议。 毒鸡汤有些事情总是不明白所以我不会坚持。早安! 专栏选自网络 望小伙伴们点赞收藏✨加关注哟 ​​ 一、前言 前面我们已经学习了网络的基础知识对网络的基本框架已有认识算是初步认识到网络了如果上期我们的学习网络是步入基础知识那么这次学习的板块就是基础知识的实践我们今天的板块是学习网络重要之一学习完这个板块对虚幻的网络就不再迷茫 二、主体 学习【网络】数据链路层协议——以太网ARP协议咱们按照下面的图解 2.1 数据链路层解决的问题 解决步骤 IP拥有将数据跨网络从一台主机送到另一台主机的能力但IP并不能保证每次都能够将数据可靠的送到对端主机因此IP需要上层TCP为其提供可靠性保证比如数据丢包后TCP可以让IP重新发送数据最终在TCP提供的可靠性机制下IP就能够保证将数据可靠的发送到对端主机。TCP除了对下层IP提供可靠性机制之外TCP对上还提供进程到进程的服务我们在进行socket编程时本质就是在使用TCP或UDP为我们提供的进程到进程的服务。但数据在网络传输时需要一跳一跳的从一台主机跳到另一台主机最终才能将数据转发到目标主机因此要将数据发送到目标主机的前提是需要先将数据转发给与当前主机直接相连的下一跳主机而两台主机直接相连也就意味着这两台主机属于同一网段因此将数据转发到下一跳主机实际是属于局域网通信范畴的而这实际就是链路层需要解决的问题。也就是说网络层IP提供的是跨网络发送数据的能力传输层TCP是为数据发送提供可靠性保证的而链路层解决的则是两台相连主机之间的通信问题。 2.2 MAC地址 2.2.1 什么是MAC地址 Mac地址Media Access Control Address局域网地址 Mac地址也称物理地址硬件地址由网络设备制造商生产时烧录在网卡上。Mac是制造商为网络硬件如无线网卡或以太网卡分配的唯一地址。Mac代表媒体访问控制每个代码对应一个唯一的设备。Mac地址为六组两位字符组成由冒号分隔比如00:1B:44:11:3A:B7 Mac地址用于确认一个网络设备位置的位址。在ISO模型中第三层网络层负责IP地址第二层链路层负责Mac位址。Mac地址用于在网络中标识一个唯一的网卡一台设备如果由一个或者多个网卡则每隔网卡都需要并会有一个唯一的MAC地址。 MAC地址就像是计算机网络中每台计算机的身份证号码用于唯一标识网络设备。 2.2.2 Mac地址的作用 概念 大多数接入internet的方式是把主机通过局域网连接在一起然后再通过交换机或者路由器等设备和internet相连接由于IP地址是基于逻辑上的标识是任意人都可以修改的所以可信度并不是很高因此不能用来标识用户但Mac地址对于一台设备来说是出厂设置好的固定的理论上来说除非把硬件设施网卡盗过来否则是无法冒名顶替Mac地址标识的设备。基于Mac地址是唯一的且不可修改的因此局域网采用了Mac地址来标识具体用户的方法。 2.2.3 mac地址和ip地址区别 区别 IP地址是指Internet协议使用的地址而MAC地址是Ethernet协议使用的地址。IP地址与MAC地址之间并没有什么必然的联系MAC地址是Ethernet网卡上带的地址长度为48位。每个Ethernet网卡生产厂家必须向IEEE组织申请一组MAC地址在生产网卡时在网卡的串行EEPROM中写入一个唯一的MAC地址。任何两个Ethernet网卡的MAC地址不管是哪一个厂家生产的都不应相同。Ethernet芯片厂家不必负责MAC地址的申请MAC地址存在于每一个Ethernet包中是Ethernet包头的组成部分Ethernet交换机根据Ethernet包头中的MAC源地址和MAC目的地址实现包的交换和传递。IP地址是Internet协议地址每个Internet包必须带有IP地址每个Internet服务提供商ISP必须向有关组织申请一组IP地址然后一般是动态分配给其用户。IP地址现是32位长正在扩充到128位。IP地址与MAC地址无关因为Ethernet的用户仍然可通过Modem连接Internet取得一个动态的IP地址这个地址每次可以不一致。IP地址通常工作于广域网路由器处理的就是IP地址。 MAC地址工作于局域网局域网之间的互连一般通过现有的公用网或专用线路需要进行网间协议转换。可以在Ethernet上传送IP信息此时IP地址只是Ethernet信息包数据域的一部分Ethernet交换机或处理器看不见IP地址只是将其作为普通数据处理。 2.3 以太网协议 不同局域网所采用的通信技术可能是不同的常见的局域网技术有以下三种 以太网以太网是一种计算机局域网技术一种应用最普遍的局域网技术。令牌环网令牌环网常用于IBM系统中在这种网络中有一种专门的帧称为“令牌”在环路上持续地传输来确定一个节点何时可以发送包。无线LAN/WAN无线局域网是有线网络的补充和扩展现在已经是计算机网络的一个重要组织部分。 网络中的路由器会不断去掉数据旧的局域网报头并添加上新的局域网报头因此数据在进行跨网络传输时就算所需跨越的网络采用的是不同的局域网技术最终也能够正确实现跨越 数据在发送之前会先进行数据封装此时链路层会给数据封装上对应的局域网的报头。如果数据要进行跨网络传输那么就需要经过路由器转发。当数据在路由器进行向上交付时会将该数据对应的局域网报头去掉。而当路由器该数据转发给下一跳之前又会给该数据封装上下一跳网络所对应的局域网报头。 以太网通信原理 概念 “以太网” 不是一种具体的网络而是一种技术标准他既包含了数据链路层的内容也包含了一些物理层的内容。例如以太网规定了网络拓扑结构访问控制方式传输效率等。以太网中的网线必须使用双绞线传输效率有10M100M1000M等。 以太网中所有主机共享一个通信信道当局域网中的一台主机发出数据后该局域网中的所有主机都能够收到该数据 比如当局域网中的主机A想要发送数据给主机B时其实局域网当中的每一台主机都能够收到主机A发出去的数据只不过最终只有主机B会将主机A发来的数据向上进行交付。局域网当中的其他主机虽然也收到了主机A发送的数据但经过识别后发现这个数据不是发送给自己的于是就会直接将该数据丢弃而不会向上进行交付。 扩展 网络抓包不仅能够抓到发送给自己的报文数据也能抓取到发给别人的报文数据实际就是因为在进行网络抓包时主机将从局域网中收到的所有报文数据都向上交付了而已。网卡有一种模式叫做混杂模式被设置为混杂模式的网卡能够接受所有经过它的数据流而不论其目的地址是否是它。 2.3.1 以太网帧格式 以太网帧格式如下 源地址和目的地址是指网卡的硬件地址也叫MAC地址长度是48位是在网卡出厂时固化的。帧协议类型字段有三种值分别对应IP协议、ARP协议和RARP协议。帧末尾是CRC校验码。 MAC帧如果将报头与有效载荷进行分离 以太网MAC帧的帧头和帧尾都是固定长度的因此当底层收到一个MAC帧后直接提取出MAC帧当中固定长度的帧头和帧尾此时剩下的就是有效载荷了。 MAC帧如何决定将有效载荷交付给上层的哪一个协议 以太网MAC帧对应的上层协议不止一种因此在将MAC帧的报头和有效载荷分离后还需要确定应该将分离出来的有效载荷交付给上层哪一个协议。在MAC帧的帧头当中有2个字节的类型字段因此在分离出报头和有效载荷后根据该字段将有效载荷交付给对应的上层协议即可。 举个例子 假设局域网当中的主机A想要将IP数据报发送给同一局域网当中的主机B那么主机A封装MAC帧当中的目的地址就是主机B的MAC地址源地址就是主机A的MAC地址而帧协议的类型对应就是0800紧接着就是要发送的IP数据报帧尾部分对应就是CRC校验。 主机A收到该MAC帧后可以对收到的MAC帧进行CRC校验如果校验失败则说明数据发送过程中产生了碰撞此时主机A就会执行碰撞避免算法后续进行MAC帧重发。主机B收到该MAC帧后提取出MAC帧当中的目的地址发现该目的地址与自己的MAC地址相同于是在CRC校验成功后就会将有效载荷交付给上层IP层进行进一步处理。局域网中的其他主机收到该MAC帧后也会提取出MAC帧当中的目的地址但发现该目的地址与自己的MAC地址不匹配于是就会直接将这个MAC帧丢弃掉。 2.3.2 认识MAC地址 MAC地址 用来标识数据链路层中相连的节点。长度为48位即6个字节一般用十六进制数字加上冒号的形式来表示例如08:00:27:03:fb:19。 在网卡出厂时就确定了不能修改MAC地址通常是唯一的虚拟机中的MAC地址不是真实的MAC地址可能会冲突也有些网卡支持用户配置MAC地址。 2.3.3 对比MAC地址和IP地址 实际在数据路由的过程中会存在两套地址一套是源IP地址和目的IP地址还有一套是源MAC地址和目的MAC地址 IP地址描述的是路途总体的起点和终点。MAC地址描述的是路途上的每一个区间的起点和终点。 因此数据在路由过程中源IP地址和目的IP地址可以理解成是不会变化的而数据每进行一跳后其源MAC地址和目的MAC地址都会变化。 注意 实际数据在路由过程中源IP地址和目的IP地址也可能会发生变化。NAT技术 2.3.4 认识MTU 概念 MTUMaximum Transmission Unit最大传输单元 描述的是底层数据帧一次最多可以发送的数据量这个限制是不同的数据链路层对应的物理层产生的。 以太网对应的MTU的值一般是1500字节不同的网络类型有不同的MTU如果一次要发送的数据超过了MTU则需要在IP层对数据进行分片。此外以太网规定MAC帧中数据的最小长度为46字节如果发送数据量小于46字节则需要在数据后面补填充位比如ARP数据包的长度就是不够46字节的。 2.3.5 MTU对IP协议的影响 因为数据链路层规定了最大传输单元MTU所以如果IP层一次要发送的数据量超过了MTU此时IP层就需要先对数据进行分片然后才能将分片后的数据向下交付 IP层会将较大的数据进行分片并给每个分片的数据包进行标记具体就是通过设置IP报头当中的16位标识、3位标志和13位偏移来完成的。由同一个数据分片得到的各个分片报文所对应的IP报头当中的16位标识id都是相同的。每一个分片报头的IP报头当中的3位标志字段中第2位设置为0表示允许分片第3位用作结束标记最后一个分片报文设置为0其余分片报文设置为1。当对端IP层收到这些分片报文后需要先将这些分片报文按照顺序进行组装拼装到一起后再向上交付给传输层。如果分片后的某个报文在网络传输过程中丢包了那么对端在进行数据组装时就会失败此时就需要上层传输层进行数据重传。 数据的分片和组装发生在IP层不仅源端主机可能会对数据进行分片数据在路由过程中路由器也可能会对数据进行分片。因为不同网络的MTU是不一样的如果传输路径上的某个网络的MTU比源端网络的MTU小那么路由器就可能对IP数据报再次进行分片。 2.3.6 MTU对UDP协议的影响 分析 IP报头当中如果不携带选项字段那么IP报头的长度就是20字节而UDP一次携带的数据超过了 1500 - 20 - 8 1427字节此时数据就需要在IP层进行分片。 分片后得到的多个IP数据报中有任意一个在传输过程中丢失都会引起接收端IP层重组失败。假设在网络传输时丢包的概率时万分之一如果将数据拆分为一百份进行发送那么此时丢包的概率就上升到了百分之一。因为只要有一个分片报文丢包了也就等同于这个报文整体丢失了因此分片会增加UDP报文丢包的概要。 2.3.7 MTU对TCP协议的影响 分析 对于TCP来说分片也会增加TCP报文丢包的概率但与UDP不同的是TCP丢包后还需要进行重创因此TCP应该尽量减少分片导致的数据重传。 TCP发送的数据报不能无限大还是应该受制于MTU我们将TCP的单个数据报的最大报文长度称为 MSSMax Segment Size。TCP通信双方在建立连接的过程中就会进行MSS协商最终选取双方支持的MSS值当中的较小值作为最终MSS。MSS的值实际就是在TCP首部的40字节的选项字段当中的kind2。最理想的情况下MSS的值正好就是在数据不会在IP层分片的最大长度。 MSS和MTU的关系如下   2.3.8 数据跨网络传输的过程 以主机A将数据跨网络传输给主机D为例数据路由的过程如下 主机A要想将数据跨网络传输给主机B需要先将数据交给同局域网当中的路由器A因此主机A需要将封装好的MAC帧发送到当前局域网当中此时MAC帧当中的源MAC地址和目的MAC地址对应就是主机A的MAC地址和路由器A的MAC地址。此时主机A所在的局域网当中所有主机都能够收到这个MAC帧但最终只有路由器A发现该MAC帧当中的目的MAC地址与自己的MAC地址相同于是才会对该MAC帧进行解包并将解包后剩下的IP数据报交付给IP层。路由器A的IP层拿到解包后的IP数据报后会提取出IP报头当中的目的IP地址然后通过查询路由表后确定需要将该数据转发给路由器B于是路由器A再将数据向下进行交付重新封装MAC帧的帧头和帧尾但此时封装后的MAC帧当中的源MAC地址和目的MAC地址就变成了路由器A的MAC地址和路由器B的MAC地址。与路由器A直接相连的主机虽然也可能有很多但最终只有路由器B发现该MAC帧当中的目的MAC地址与自己的MAC地址相同于是才会对该MAC帧进行解包并将解包后剩下的IP数据报交付给IP层。路由器B的IP层拿到解包后的IP数据报后同样会提取出IP报头当中的目的IP地址并通过查询路由表后确定需要将该数据转发给路由器C于是路由器B再将数据向下进行交付重新封装MAC帧和帧头和帧尾但此时封装后的MAC帧当中的源MAC地址和目的MAC地址又变成了路由器B的MAC地址和路由器C的MAC地址。…不断的重复上述过程直到最终数据转发至主机B。 因此数据在进行跨网络传输时其对应的源IP地址和目的IP地址一般是不会变化的而该数据的源MAC地址和目的MAC地址却是一直在变化的根本原因就是一因为该数据对应的上一跳主机和下一跳主机在不断变化。 IP网络数据跨网络传输的过程就像现实生活中运输包裹的过程一样 数据每到一个新的局域网就需要封装上对应局域网标准的报头就像包裹在运输的不同阶段可能会使用不同的交通工具比如火车、汽车、自行车。但站在IP层看到的数据内容始终是一样的就像我们最终看到的始终是同一个包裹一样。包裹运输时使用的不同的交通工具对应就是数据经过不同局域网时所添加的MAC帧报头而包裹对应就是MAC帧的有效载荷即IP数据报。 也就是说数据在跨网络传输过程中其对应的MAC帧的报头是不断变化的而MAC帧当中的IP数据报当中的内容是不变的所以站在IP层看到的数据内容是一样的这就是为什么现在主流的网络叫做IP网络的原因。 2.4 局域网的数据碰撞 2.4.1 局域网内通信过程 数据帧发送到网络中所有该局域网的主机都会收到该数据帧但其数据链路层解包发现目的地址不是自己的时候会直接在数据链路层丢弃该报文。如此就只有主机D会解包提取有效载荷向上交付ip数据包。 2.4.2 数据碰撞问题 什么是数据碰撞 局域网中一定是多台主机同时在发送数据的而只要所有主机都在发送着数据就会形成数据之间的干扰在计算里面我们称为数据碰撞。 如何判断主机发送的数据发生了碰撞 m1发送的数据m1自己也会收到如果m1接收到的数据和自己发送的数据不一致的话则接收的数据帧在进行CRC校验时一定会出错此时就说明m1发送的数据帧发生了碰撞。所以局域网还有另一种称呼叫做碰撞域。 解决这个数据碰撞问题使用交换机 交换机从其某个端口收到一个数据包时先读取包头中的源MAC地址即发送该数据包的设备网卡的MAC地址将该MAC地址和端口对应起来添加到交换机内存里的地址表中然后再读取包头中的目的MAC地址对照内存里的地址表看该MAC地址与哪个端口对应如果地址表中有该MAC地址的对应端口则将该数据包直接复制到对应的端口上如果没有找到则将该数据帧作为一个广播帧发送到所有的端口对应的MAC地址设备会自动接受该帧数据同时交换机将接受该帧数据的端口与这个目的MAC地址对应起来放入内存中的地址表中。 2.4.3 令牌环网和以太网解决数据碰撞的策略 令牌环网 令牌环网采取的方式是向局域网中流放一份令牌环数据只有持有该令牌环数据的主机才能发送消息发完消息之后再将令牌环数据丢到局域网中这样就可以保证任意时刻都只会有一个主机在发数据不会产生多个主机同时发数据而造成碰撞的问题。 以太网 当数据发生碰撞后以太网执行的策略我们称之为碰撞检测和碰撞避免算法其实这个策略很简单说白了就是等一等再发但你不要高估了局域网中各个主机发送数据的量也不要低估了光电信号二进制数据在局域网中传播的速度局域网并没有那么的大容纳的主机数并不是非常多所以对于飞快的光电信号来讲发生碰撞的概率本身就低所以等一等再发这样听起来很不靠谱的策略在实际中却是很有效的。 2.4.4 如何看待局域网 们上面说任何时刻在局域网中只能有一个主机在向局域网中发送数据那我们不就可以把局域网看作临界资源吗而像碰撞检测和避免算法能够保护临界资源保证只能有一个主机在访问临界资源那这不就相当于互斥锁或条件变量吗而所谓的令牌环数据不也就相当于互斥锁吗谁拿着锁谁才能访问临界资源 所以系统和网络是不分家的可能在代码层面上两者是划分开的但在设计理念和某些策略的设计思想上两者一定是有重叠的 2.5 ARP协议 概念 ARP协议也叫做地址解析协议Address Resolution ProtocolARP协议是根据IP地址获取MAC地址的一个TCP/IP协议。 2.5.1 ARP协议的作用 为什么回纯在ARP这样的协议 以刚才的例子为例当数据从主机A经过各种路由器转发到路由器J此时路由器J就需要将数据转发给主机D完成数据的路由。 由于路由器J和主机D是属于同一个局域网的因此路由器J能够直接将数据交给主机D但要给同局域网中的一台主机发送数据前提是得先知道对方的MAC地址。但路由器J此时只知道主机D的IP地址因此路由器J必须通过某种方式得到主机D的MAC地址。 也就是说在同一个局域网中要给对方发消息就必须得知道对方的MAC地址而实际大部分情况下我们只知道对方的IP地址因此需要通过ARP协议来根据IP地址来获取目标主机的MAC地址。 ARP协议的定位 在TCP/IP四层模型中网络协议栈自顶向下分为应用层、传输层、网络层和数据链路层。其中应用层最典型的协议有HTTP、HTTPS和DNS等传输层最典型的协议有TCP和UDP、网络层最典型的协议就是IP、数据链路层最典型的协议就是MAC帧协议但实际数据链路层还有两种协议叫做ARP和RARP。 ARP、RARP和MAC帧协议虽然都属于数据链路层的协议但ARP协议和RARP协议属于MAC帧的上层协议 也就是说MAC帧的上层协议不一定就直接是网络层协议MAC帧的上层协议有可能也属于数据链路层的协议但就是位于MAC帧的上层。与之类似的网络层当中的ICMP协议和IGMP协议这两个协议虽然与IP协议都属于网络层但这两个协议属于IP层的上层协议。 2.5.2 ARP数据的格式 ARP数据的格式如下 硬件类型指链路层的网络类型1为以太网。协议类型指要转换的地址类型0x0800为IP地址。硬件地址长度对于以太网地址为6字节因为MAC地址是48位的。协议地址长度对于IP地址为4字节因为IP地址是32位的。op字段为1表示ARP请求op字段为2表示ARP应答。 从ARP的数据格式也可以看出ARP是MAC帧协议的上层协议ARP数据格式中的前3个字段和最后一个字段对应的就是以太网首部但由于ARP数据包的长度不足46字节因此ARP数据包在封装成为MAC帧时还需要补上18字节的填充字段。 2.5.3 ARP协议的工作流程 ARP请求的过程 首先因为路由器J构建的是ARP请求因此ARP请求当中的op字段设置为1。ARP请求当中的硬件类型字段设置为1因为当前使用的是以太网通信。ARP请求当中的协议类型设置为0800因为路由器是要根据主机D的IP地址来获取主机D的MAC地址。ARP请求当中的硬件地址长度和协议地址长度分别设置为6和4因为MAC地址的长度是48位IP地址的长度是32位。ARP请求当中的发送端以太网地址和发送端IP地址对应的就是路由器J的MAC地址和IP地址。ARP请求当中的目的以太网地址和目的IP地址对应就是主机D的MAC地址和IP地址但由于路由器J不知道主机D的MAC地址因此将目的以太网地址的二进制序列设置为全表示在局域网中进行广播。 此时ARP请求构建完成如下 ARP请求构建完成后为了能够将ARP请求发送到以太网当中还需要将ARP数据包向下交付给MAC帧协议封装成MAC帧 封装MAC帧报头时以太网目的地址和以太网源地址分别对应的是主机D和路由器J的MAC地址但由于路由器J不知道主机D的MAC地址因此MAC帧报头当中的以太网目的地址的二进制序列也只能设置为全1表示在局域网中进行广播。因为这里封装的是一个ARP请求数据包因此MAC帧当中的帧类型字段设置为0806。由于ARP请求数据包的长度只有28字节不足46字节因此还需要再MAC帧的有效载荷当中补上18字节的填充字段最后再对MAC帧进行CRC校验即可。 此时ARP请求就被封装成MAC帧了如下 MAC帧封装完毕后路由器J就可以将封装好的MAC帧以广播的方式发送到局域网当中了 因为这个MAC帧是以广播的方式发出来的因此局域网当中的每台主机收到这个MAC帧后都会对该MAC帧进行解包。当这些主机识别到MAC帧当中的帧类型字段为0806后便知道这是一个ARP的请求或应答的数据包于是会将MAC帧的有效载荷向上交付给ARP层。当ARP层收到这个数据包后发现ARP数据包当中的op字段为1于是判定这是一个ARP请求然后再提取出ARP数据包当中的目的IP地址字段虽然局域网当中的所有主机都会将该数据包交给自己的ARP层但最终只有主机D发现ARP数据包当中的目的IP地址与自己相同因此只有主机D会对该ARP请求进行应答而局域网当中的其他主机在识别到ARP数据包当中的目的IP地址与自己不匹配后就会直接将这个ARP请求报文丢弃。 总结 发起方构建ARP请求以广播的方式发送给每一个主机。每台主机都能识别接收然后根据MAC帧的帧类型字段将有效载荷交付给每个主机的ARP层。其他不相关主机立马根据目的IP在自己的ARP协议内部丢弃ARP请求只有目标主机会处理请求。 ARP应答的过程 首先因为主机D构建的是ARP应答因此ARP应答当中的op字段设置为2。ARP应答当中的硬件类型、协议类型、硬件地址长度、协议地址长度的值与ARP请求当中设置的值相同。ARP应答当中的发送端以太网地址和发送端IP地址对应的就是主机D的MAC地址和IP地址。ARP应答当中的目的以太网地址和目的IP地址对应就是路由器J的MAC地址和IP地址因为路由器J发来的ARP请求当中告知了主机D它的MAC地址和IP地址因此主机D是知道的。 ARP应答构建完成后为了能将ARP应答发送到以太网当中也需要将ARP数据包向下交付给MAC帧封装成MAC帧 封装MAC帧报头时以太网目的地址和以太网源地址对应分别是路由器J和主机D的MAC地址。因为这里封装的是一个ARP应答数据包因此MAC帧当中的帧类型字段设置为0806.由于ARP应答数据包的长度也只有28字节不足46字节因此也需要在MAC帧的有效载当中补上18字节的填充字段最后再对MAC帧进行CRC校验。 MAC帧封装完毕后主机D就可以将封装好的MAC帧发送到局域网当中了 此时局域网当中的每台主机在底层都能够接收到这个MAC帧但局域网当中的不相干的主机在发现该MAC帧对应的以太网目的地址与自己不同后就会将该MAC帧丢弃而不会交付给上层ARP层最终只有路由器J会将解包后MAC帧的有效载荷向上交付给自己的ARP层。当路由器J的ARP层收到这个数据包后发现ARP数据包当中的op字段为2于是判定这是一个ARP应答然后就会提取出ARP数据包当中的发送端以太网地址和发送端IP地址此时路由器J就拿到了主机D的MAC地址。 MAC帧的报头当中已经涵盖了源和目的MAC地址为什么ARP的报头当中还要有这两个字段 需要注意的是MAC帧和ARP虽然都在数据链路层但毕竟是上下层关系因此它们不会互相关心彼此报头当中的数据。此外如果底层网络采用的不是以太网而是其他类型的网络此时ARP层的MAC地址就是必要的了。 进行局域网通信时为什么不直接以广播的方式发送数据 在进行局域网通信时就算只知道对方的IP地址而不知道对方的MAC地址也可以以广播的方式将数据发送到局域网当中此时局域网当中的主机也能够在IP层比对目的IP地址与自己是否相符来判断收到的这个数据是否是发送给自己的。 对于局域网当中的大多数主机来说收到的这个报文其实早就应该被丢弃而现在这个报文却交付到了IP层我们都知道IP层是属于操作系统管控的因此这对网络资源和系统资源来说都是一种浪费。因此在底层MAC帧层就应该判定这个报文是不是发送给当前主机的而不是当数据向上交付到了IP层再来判断。 什么时候要发起ARP请求 我们刚才说的只是路由器J要将数据发送给主机D的时候需要通过ARP获得主机D的MAC地址但实际数据在路由的过程中的每一跳可能都要发起ARP请求询问下一跳主机对应的MAC地址因为在每一跳时我们一般都是只知道下一跳的IP地址而并不知道其对应的MAC地址的。 注意 ARP属于局域网通信的协议标准因此一台主机不能跨网络向另一台主机发起ARP请求。 RARP协议 RARPReverse Address Resolution Protocol反向地址转换协议是根据MAC地址获取IP地址的一个TCP/IP协议。 三、结束语  今天内容就到这里啦时间过得很快大家沉下心来好好学习会有一定的收获的大家多多坚持嘻嘻成功路上注定孤独因为坚持的人不多。那请大家举起自己的小手给博主一键三连有你们的支持是我最大的动力回见。