ARP协议、路由器详细工作原理
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协议、路由器详细工作原理的更多相关文章
- HTTP协议1:工作原理
http://blog.csdn.net/huangjin0507/article/details/51678858 1. HTTP简介 HTTP协议(HyperText Transfer Proto ...
- tcp/iP协议族——IP工作原理及实例具体解释(下)
IP协议具体解释 上一篇文章文章主要介绍了IP服务的特点,IPv4头部结构IP分片.并用tcpdump抓取数据包,来观察IP数据报传送过程中IP的格式,以及分片的过程.本文主要介绍IP路由,IP ...
- HTTP协议报文、工作原理及Java中的HTTP通信技术详解
一.web及网络基础 1.HTTP的历史 1.1.HTTP的概念: HTTP(Hyper Text Transfer Protocol ...
- HTTP协议报文、工作原理
一.web及网络基础 1.HTTP的历史 1.1.HTTP的概念: HTTP(Hyper Text Transfer Protocol ...
- TCP/IP协议族——IP工作原理及实例具体解释(上)
IP协议具体解释 本文主要介绍了IP服务特点,头部结构,IP分片知识,并用tcpdump抓取数据包.来观察IP数据报传送过程中IP的格式,以及分片的过程. IP头部信息:IP头部信息出如今每一个 ...
- epoll详细工作原理(转)
原文:没有找到出处 开发高性能网络程序时,windows开发者们言必称iocp,linux开发者们则言必称epoll.大家都明白epoll是一种IO多路复用技术,可以非常高效的处理数以百万计的sock ...
- 交换机工作原理、MAC地址表、路由器工作原理详解
一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的.在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据 ...
- Linux路由器及交换机工作原理
IP包头中TTL字段的含义是什么?它用来做什么? TTL(time to live):该字段用于表示IP数据包的生命周期, 作用:限制一个数据在网络中无限循环的转发下去. 简述arp缓存表的建立过程: ...
- FTP(文件传输协议)工作原理
目前在网络上,如果你想把文件和其他人共享.最方便的办法莫过于将文件放FTP服务器上,然后其他人通过FTP客户端程序来下载所需要的文件. 1.FTP架构 如同其他的很多通讯协议,FTP通讯协议也采用客户 ...
随机推荐
- vue element InfiniteScroll 无限滚动 入坑记录
select_law_by_tag() { this.laws_loading.is_loading = true; this.laws_loading.no_more = false; this.e ...
- PHP中的一些常用函数收集
<?php //===============================时间日期=============================== //y返回年最后两位,Y年四位数,m月份数字 ...
- NSPredicate类,指定过滤器的条件---董鑫
/* 比较和逻辑运算符 就像前面的例子中使用了==操作符,NSPredicate还支持>, >=, <, <=, !=, <>,还支持AND, OR, NOT(或写 ...
- rust 实战 - 实现一个线程工作池 ThreadPool
如何实现一个线程池 线程池:一种线程使用模式.线程过多会带来调度开销,进而影响缓存局部性和整体性能.而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务.这避免了在处理短时间任务时创建与销毁线 ...
- 《PHP程序员面试笔试宝典》——如何应对自己不会回答的问题?
如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> 在面试的过程中,对面试官提出的问题求职者并不是都能回答出来,计算机技术博大精深,很少有人能对计算机技术的各个分支学科了如 ...
- MySQL数据库初识、下载使用(针对库、表、记录的增删改查)
今日内容概要 数据演变史 数据库软件的本质 MySQL简介 下载与安装 基本配置 基本SQL语句 内容详细 1.数据演变史 # 1.单独的文本文件 没有固定的存放位置和格式 文件名:user.txt ...
- Solution -「APIO 2018」「洛谷 P4630」铁人两项
\(\mathcal{Description}\) Link. 给定一个 \(n\) 个点 \(m\) 条边的无向图(不保证联通),求有序三元点对 \((s,c,f)\) 的个数,满足 \(s ...
- .NET 云原生架构师训练营(权限系统 代码实现 Store.EntityFramework)--学习笔记
目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Secu ...
- netty介绍与构成
什么是 Netty Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架.Netty 提供高性能和可扩展性,让你可以自由地专注于你真 ...
- 【外企测试面试、笔试】分享下历时8轮、30k+的外企面试全过程
外企福利 薪酬体系完善(期权.股票等),定期薪酬市场调研,紧跟一线互联网大厂 加班很少很少 年假多,15-20天 国外免费旅游.旅游金 免费培训英语(还可能出国培训) 定期技术交流 免费零食 定期团建 ...