ARP原理分析

第一次通信时,有对方IP地址但是没有目标MAC地址,该PC就会在网络层启动ARP协议生成一个ARP报文"我叫1.1,我的MAC是AA;谁是1.3,你的MAC是多少?",该PC把报文广播出去,到交换机加上帧头帧尾.帧头的目标MAC是12个F进行广播,报文变为广播请求报文.交换机看到12个F就进行广播,所有人都收到.被广播接收方拿下帧头帧尾再查看3级ARP报文,看问的是谁,其他PC和网关发现找的不是自己就丢弃不给回应.

正确接收方接收到发现问的就是自己,就会给个回应,把自己的MAC地址写进去.因为知道是谁问的,所以此时回应不需要广播,这叫ARP单播应答.PC收到单播应答后,就获取到对方MAC地址.并在自己电脑上生成ARP缓存表,该缓存表内就是别人的IP和别人的MAC地址.

如果路由器发现找的不是自己,不会再继续转发广播.交换机控制不了广播,路由器是天然控制二层广播的设备.广播到路由器永远出不去。

ARP分析(同网段与不同网段):

  当PC与其他主机通信时,首先判断与自己是否在同一网段

  若在同一网段,则发送ARP广播寻求目标IP地址的MAC地址

  若不在同一网段,则发送ARP广播寻求网关的MAC地址(前提是给PC配了网关).(想要上网,直接找网关的目标MAC地址)

路由器详细工作原理

  ①一个帧到达路由器后,首先检查帧中目标MAC地址是否是本接口的MAC,如不是则丢弃,如是则解封装并将IP包移动到路由器内部。

  ②将IP包中目标IP与路由表进行匹配,如匹配路由表不成功,则丢弃,返回ICMP错误消息;若成功,则将数据路由到相应的出口,再封装帧头帧尾

  ③检查ARP缓存中是否有下一跳的MAC,如有则重新封装出去;如没有,则发送ARP请求广播报文获取下一跳的MAC,并记录到ARP缓存表中,再重新封装数据帧发送出去。

路由器处理ARP包过程

PC0------SW---------ROUTER---------PC1

假设是第一次通信,有路由器存在,跨网段的通信哦。

1.PC0开始Ping PC1,因为是跨网段的通信,所以要先发ARP包请求网关的MAC地址,要拿到网关的MAC地址才能正确封装数据。这时ARP包(注意这里是ARP包,不是你的Ping包)里源ip地址为PC0的IP地址,源MAC地址为PC0的MAC地址,目标IP地址网关的地址,目标MAC地址为全F(也就是二层的广播地址)

2.当Sw收到PC0的ARP包,先学习,将PC1的MAC地址记录下来并和对应的接口绑定,形成CAM表,因为SW没有学习到关于PC0 的网关的任何表项,所以将此ARP包进行泛洪,包的内容并没有修改。

3.当ARP包到达了路由器,路由器先记录PC0的IP地址和对应的MAC地址,然后会响应这个ARP包,并作出回应,回应的这个ARP,源IP为路由器接口IP,源MAC为路由器接口MAC,目标IP为PC0的IP,目标MAC为PC0 的MAC。。这个ARP回应发回给SW,Sw学习这个MAC地址,并记录到CAM表,然后转发给PC0。

4.这时 PC0已经有了网关的MAC地址,Ping包就可以正常发送 ,Ping包格式源IP是PC0的IP,源MAC为PC0的MAC,目标IP为PC1的IP,目标MAC为PC0的网关的MAC。

5.当PC0的Ping包到达路由器,路由器这时就要查看自己的路由表,发现有连接有PC1的这个网段,但是路由器没有PC1的MAC地址,无法将此包进行封装转发,封装失败,就将这个包丢弃

6.路由器这时就从连接PC1网段的这个接口发送ARP包,源IP地址,连接PC1的接口IP地址,源MAC地址,连接PC1的接口MAC地址,目标IP地址,PC1的ip地址,目标MAC地址全F。

7.当PC1收到这个路由器发送的ARP包,进行相应,将自己的MAC地址返回给路由器。

8.路由器这个时候就获取了PC1的IP地址和对应的MAC地址。

ARP协议、路由器详细工作原理的更多相关文章

  1. HTTP协议1:工作原理

    http://blog.csdn.net/huangjin0507/article/details/51678858 1. HTTP简介 HTTP协议(HyperText Transfer Proto ...

  2. tcp/iP协议族——IP工作原理及实例具体解释(下)

     IP协议具体解释 上一篇文章文章主要介绍了IP服务的特点,IPv4头部结构IP分片.并用tcpdump抓取数据包,来观察IP数据报传送过程中IP的格式,以及分片的过程.本文主要介绍IP路由,IP ...

  3. HTTP协议报文、工作原理及Java中的HTTP通信技术详解

    一.web及网络基础       1.HTTP的历史            1.1.HTTP的概念:                 HTTP(Hyper Text Transfer Protocol ...

  4. HTTP协议报文、工作原理

    一.web及网络基础       1.HTTP的历史            1.1.HTTP的概念:                 HTTP(Hyper Text Transfer Protocol ...

  5. TCP/IP协议族——IP工作原理及实例具体解释(上)

     IP协议具体解释 本文主要介绍了IP服务特点,头部结构,IP分片知识,并用tcpdump抓取数据包.来观察IP数据报传送过程中IP的格式,以及分片的过程. IP头部信息:IP头部信息出如今每一个 ...

  6. epoll详细工作原理(转)

    原文:没有找到出处 开发高性能网络程序时,windows开发者们言必称iocp,linux开发者们则言必称epoll.大家都明白epoll是一种IO多路复用技术,可以非常高效的处理数以百万计的sock ...

  7. 交换机工作原理、MAC地址表、路由器工作原理详解

    一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的.在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据 ...

  8. Linux路由器及交换机工作原理

    IP包头中TTL字段的含义是什么?它用来做什么? TTL(time to live):该字段用于表示IP数据包的生命周期, 作用:限制一个数据在网络中无限循环的转发下去. 简述arp缓存表的建立过程: ...

  9. FTP(文件传输协议)工作原理

    目前在网络上,如果你想把文件和其他人共享.最方便的办法莫过于将文件放FTP服务器上,然后其他人通过FTP客户端程序来下载所需要的文件. 1.FTP架构 如同其他的很多通讯协议,FTP通讯协议也采用客户 ...

随机推荐

  1. java实现HTTPS单向认证&TLS指定加密套件

    1.HTTPS介绍 由于HTTP是明文传输,会造成安全隐患,所以在一些特定场景中,必须使用HTTPS协议,简单来说HTTPS=HTTP+SSL/TLS.服务端和客户端的信息传输都是通过TLS进行加密. ...

  2. C++中三种正则表达式比较(C regex,C ++regex,boost regex)

    工作需要用到C++中的正则表达式,以下三种正则可供参考 1,C regex #include <regex.h> #include <iostream> #include &l ...

  3. storyboard文件的认识

    - 作用:描述软件界面 - 程序启动的简单过程     - 程序一启动,就会加载`Main.storyboard`文件     - 会创建箭头所指的控制器,并且显示控制器所管理的软件界面 - 配置程序 ...

  4. cross-env 作用

    是什么 运行跨平台设置和使用环境变量的脚本 出现原因 当您使用NODE_ENV =production, 来设置环境变量时,大多数Windows命令提示将会阻塞(报错). (异常是Windows上的B ...

  5. JS实现继承,封装一个extends方法

    父类 function Person(name,age){ this.name = name; this.age = age; } Person.prototype = { eat:function( ...

  6. Java向mysql中插入时间的方法

    ava向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源  java向MySQL插入当前时间的四种方式 第一种:将java.util.Date类型的 ...

  7. 云端iclound使用-陈棚

    使用NSmetadataQuery查询文档,增加,删除,编辑 界面设计完成后效果如图: 程序清单:FKDiary.h @interface FKDiary : UIDocument @property ...

  8. mocha_JavaScript单元测试框架

    mocha mocha是JavaScript的一种单元测试框架,既可以在浏览器环境下运行,也可以在Node.js环境下运行. 使用mocha,我们就只需要专注于编写单元测试本身,然后,让mocha去自 ...

  9. python官网导航翻译

  10. 硬件安全学习–RFID / Hardware security learning – RFID

    RFID基础知识 RFID是什么? RFID代表近距离通讯(Radio Frequency Identification). ------------------------------------- ...