【2-地址解析协议ARP】

【2.1-基本概念】

  地址解析协议ARP的作用是根据主机的IP地址,找出该主机的硬件地址。

【2.2-为什么要使用ARP】

  在数据传输过程中,网络层使用的IP地址,但是在实际传输的时候,数据是从网络的数据链路上传送数据帧的(就是数据链路层所做的工作,七层网络结构中,数据从上往下移动),所以最终还是需要使用网络的硬件地址。因为七层网络结构中每一层都是黑盒的,所以在讨论数据在网络层传输的时候,就忽略了对数据链路层的讨论。

【2.3-ARP的简要工作原理】

  每一台主机都有一个ARP高速缓存表,用来存储主机所在局域网上所有主机和路由器的IP地址到硬件地址的映射表。当网络层传输数据时,指明数据的目的IP地址,然后通过目的IP地址在ARP高速缓存表中找到该主机的硬件地址,即目的主机的硬件地址,然后把网络层的IP数据报加上源硬件地址和目的硬件地址,封装成MAC帧(数据链路层的数据传输单位)在数据链路上进行数据传输。

【2.4-ARP怎么获取本网络其他主机的IP地址硬件地址的映射关系】

  假设主机A要向本网络中的主机B发送IP数据报,首先主机A在自己的ARP高速缓存表中根据主机B的IP地址找对应的硬件地址,如果找到了,就这个硬件地址写到MAC帧,然后通过局域网把这个MAC帧发送到这个硬件地址。如果没有找到,主机A就向自己所在的局域网广播ARP请求分组,这个请求分组中的信息是这样的,“主机A的IP的地址,主机A的硬件地址,目的主机B的IP地址”;接着这个网络上的所有主机都收到这个请求,都各自检查请求中目的主机的IP地址是不是自己,如果不是,就不做任何响应,如果是,就先把主机A的IP地址和硬件地址的映射关系在自己的ARP高速缓存表中保存一下,然后向主机A发送单播响应信息,信息内容是这样的,“主机B(自己)的IP地址,主机B(自己)的硬件地址”;主机A收到主机B的单播响应信息之后,就把映射关系缓存在自己的ARP高速缓存表中,最后把主机B的硬件地址写到MAC帧中,通过局域网把MAC帧发送到主机B的硬件地址。

  假设主机B的硬件地址换了,主机A中保存的映射关系不就变成错误的了吗? 解决办法就是,本机的ARP高速缓存表有个过期时间,一定时间内容会清空,重新更新这个高速缓存表。

  当目的主机B和主机A不在同一个网络中怎么办?如果是这样,那么主机A的ARP高速缓存表中保存的就是两个网络之间的路由器的硬件地址,主机A根据路由器地址解析出路由器的硬件地址,然后把MAC帧发送给路由器,然后就不管了,由路由器再做ARP的解析去把数据最终发送到目的主机B的硬件地址去。个人理解也可以把这个路由器当成一个主机。

网络协议笔记-网络层-ARP协议的更多相关文章

  1. [TCP/IP] 网络层-ARP协议

    ARP协议可以将网络层地址到任意物理地址转换,从IP地址到MAC地址转换 MAC地址:物理地址,网卡厂家要确保MAC地址全球唯一,48位2进制,显示是12位16进制 1.查看我自己的ip,我自己的的i ...

  2. Windows网络编程笔记4 -- Winsock 协议相关知识

     Win32平台上的Winsock编程,Winsock是一个与协议无关的接口.以下协议是我们需要了解的: 网络协议的特征包括: 1.  面向消息 2.  面向连接和无线接 3.  可靠性和次序性 4. ...

  3. 网络爬虫笔记之http协议

    http协议和https协议: HTTP协议:HyperText Transfer Protocol,超文本传输协议,是一种发布和接收HTML页面的方法.服务器端口号是80. HTTPS协议:是HTT ...

  4. 网络协议笔记-网络层-路由器的作用、IP地址

    1-[路由器在网际互连中的作用] 1.1-[直接交付和间接交付] 直接交付:当主机A要向另一个主机B发送数据报时,要先检查目的主机B是否与源主机连接在同一个网络上.如果是,就将数据报直接交付给目的主机 ...

  5. 网络基础知识-TCP/IP协议各层详解

    TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...

  6. arp协议分析&python编程实现arp欺骗抓图片

    arp协议分析&python编程实现arp欺骗抓图片 序 学校tcp/ip协议分析课程老师布置的任务,要求分析一种网络协议并且研究安全问题并编程实现,于是我选择了研究arp协议,并且利用pyt ...

  7. 关于ARP协议

    什么是arp协议: arp协议是地址解析协议,英文是address resolution protocol 通过IP地址可以获得mac地址 两个主机的通信归根到底是MAC地址之间的通信 在TCP/IP ...

  8. 什么是ARP协议?

    ARP协议,全称“Address Resolution Protocol”,中文名是地址解析协议, 使用ARP协议可实现通过IP地址获得对应主机的物理地址(MAC地址). 在TCP/IP的网络环境下, ...

  9. 网络架构,七层协议,三次握手四次挥手,socket套接字简单编程

    一.单机架构 应用领域: 植物大战僵尸 office 二.CS架构 应用领域: QQ 大型网络游戏 计算机发展初期用户去取数据,直接就去主机拿,从这里开始就分出了客户端和服务端. 客户端:用户安装的软 ...

随机推荐

  1. ASM字节码框架学习之动态代理

    ASM字节码操纵框架,可以直接以二进制的形式来来修改已经存在的类或者创建新的类.ASM封装了操作字节码的大部分细节,并提供了非常方便的接口来对字节码进行操作.ASM框架是全功能的,使用ASM字节码框架 ...

  2. PHP 5.6 微信上传临时素材的坑

    /** * 上传素材 */ function add_material($url){ $access_token = wx_access_token(); $wx_url = "https: ...

  3. Properties工具类

    /** * 加载Properties文件 * @param path Properties文件路径 * @return */ private static Properties getClasspat ...

  4. 试着把.net的GC讲清楚(2)

    试着把.net的GC讲清楚(1) 上篇文章说了一些基本概念的东西,然后还有很多东西概念没有头绪,这篇文章我试着解释 GC的回收算法详细步骤? 上篇]文章讲了.net GC的算法是Mark and Co ...

  5. datatables行编辑中,某个字段用户显示和用于行编辑名称不同时的处理。

    比如tag这个字段,对应服务端bean的tag,但是在页面显示时需要为String类型的tagName,那么在行编辑时可以用以下的方式处理.

  6. Linux常用命令详解(二) -- 查找常用命令

    locate:    作用:在后台数据库中按文件名搜索,搜索速度更快    命令格式:locate 文件名    选项或参数:            -l    num(要显示的行数)         ...

  7. [翻译] 编写高性能 .NET 代码--第二章 GC -- 减少分配率, 最重要的规则,缩短对象的生命周期,减少对象层次的深度,减少对象之间的引用,避免钉住对象(Pinning)

    减少分配率 这个几乎不用解释,减少了内存的使用量,自然就减少GC回收时的压力,同时降低了内存碎片与CPU的使用量.你可以用一些方法来达到这一目的,但它可能会与其它设计相冲突. 你需要在设计对象时仔细检 ...

  8. Redis限制在规定时间范围内登陆错误次数限制

    在博客里之前有过一篇文章是 <PHP结合Redis来限制用户或者IP某个时间段内访问的次数>,这篇文章的思路也是一样的.看下代码吧 //登录错误次数校验 $key = "logi ...

  9. Entity Framework——配置文件设置

    可以使用配置文件或代码(EF6起)配置EF框架. 一.使用配置文件 安装Entity Framework自动生成的配置 当使用VS的NuGet自动安装Entity Framework(本文使用6.2. ...

  10. UVA - 11292 Dragon of Loowater 贪心

    贪心策略:一个直径为X的头颅,应该让雇佣费用满足大于等于X且最小的骑士来砍掉,这样才能使得花费最少. AC代码 #include <cstdio> #include <cmath&g ...