(转自:https://blog.51cto.com/echo1937/1281746)

  1. 源主机在发起通信之前,将Self IP与目的主机的IP进行比较,如果两者位于同一网段(用子网掩码计算后具有相同的网络号),那么源主机直接向目的主机发送ARP请求,在接收到目的主机的ARP应答后获取对方的MAC地址,然后用对方的MAC地址作为目的MAC进行报文发送,位于同一VLAN(网段)的主机互访时属于这种情况,这是互联的交换机做二层交换转发。

  2. 当源主机判断目的主机与自己位于不同网段时,它会通过网关来提交报文,即发送ARP请求来获取网关IP地址对应的MAC,在得到网关的ARP应答后,用网关MAC作为报文目的MAC进行报文发送……也就是路由器的某个端口。注意,报文的源IP是源主机IP,目的IP依然是目的主机IP。

    这里1,2步骤都是先进行IP信息封装处理,再通过ARP进行MAC封装处理(先3层,再2层),解包则相反。

  3. 当网关路由器接收到以太网数据帧时,发现数据帧中的目标MAC地址是自己的某一个端口的物理地址,这时路由器会把以太网数据帧的封装去掉。路由器认为这个IP数据包是要通过自己进行转发,接着它就在匹配路由表(包含目标地址和指向目标地址的指针)。匹配到路由项后,它就将包发往下一条地址。

    路由器转发数据包也是这样,它始终是不会改IP地址的,只会改源/目标MAC。

  4. 万一路由遇到目的MAC是广播地址怎么办?IP的广播有三种:

    255.255.255.255叫本地广播,也叫直播,direct broadcast,不跨路由器。

    172.16.33.255叫子网广播,广播给172.16.33.0这个子网,可以跨路由器。

    172.16.255.255叫全子网广播,广播给172.16.0.0这个主网,可以跨路由器。

    路由器是三层设备,可以隔离广播,但并不是所有广播都隔离。事实上只有本地广播路由器才不转发,对于子网广播和全子网广播,路由器是转发的。为什么呢?我们来看255.255.255.255的广播,在MAC的封装中,对应的目的MAC是广播,而子网广播和全子网广播,对应的目的MAC是单播,所以路由器会转发。所以路由器隔离的广播是目的MAC为全1的广播,对于目的MAC是单播的上层广播,路由器是不能隔离的。

  5. IP数据包经由路由转发的时候 源/目的IP,源/目的MAC是否发生改变,如何改变?

    A—–(B1-B2)—–(C1-C2)——E

    如上拓扑图为例,B1和B2是路由器B上的两个接口,C1和C2是路由器C上的两个接口,A和E是PC,由主机A向主机E发送数据包,那么在主机A形成的数据包的目的IP就是E的IP,源IP就是主机A的IP地址,目标MAC地址就是B1的MAC地址,源MAC地址就是A的MAC地址。

    由A发给路由器B,B经过重封装后,源IP和目标IP是不变的,源MAC地址变成B2的MAC地址,目标MAC地址变成C1的MAC地址,封装完成发送给路由器C,路由器C接收到数据包后和B做的操作是一样的,源IP和目标IP的不变的,源MAC地址变成C2的MAC地址,目标MAC地址变成主机E的MAC地址,然后发送给主机E,这样E就收到了这个数据包,当恢复数据包的时候就是把收到的数据包的源IP地址(主机A的IP地址)和源MAC地址(接口C2的MAC地址)作为他的目标IP和目标MAC地址。

路由器转发规则【转】相关推荐

  1. 路由器转发IP包的过程

    IP数据包到路由器之后,它首先要读去IP包头的目标IP地址,然后查看路由表,根据路由协议算法,确定一条最佳的路径,为什么要这样做呢,那是因为要确定这个数据包应该从路由器上的那个接口上转发出去,很明显路 ...

  2. 关于TP-LINK宽带路由器上的“转发规则”功能用途及设置办法

    关于TP-LINK宽带路由器上的"转发规则"功能用途及设置办法 现在TP-LINK的家用宽带路由器由于价格便宜,性能也还过的去,市场占有率相当高,TP-LINK的家用路由器里有项功 ...

  3. 宽带路由器上的“转发规则”功能用途及设置办法 -- LAN与WAN通信的IP转换

    wo zhuan zai de zuo zhe mei you zhu ming zhuan zai di zhi 现在TP-LINK的家用宽带路由器由于价格便宜,性能也还过的去,市场占有率相当高,T ...

  4. 计算机网络实践之元气骑士公网异地联机(三) 完善转发机的转发规则

    计算机网络实践之元气骑士公网异地联机(三) 完善转发机的转发规则 前言 在上一篇中,我通过表格对转发机的监听端口和转发逻辑进行了简短的描述. 转发机 监听端口 主机A 23333.8888.8888端 ...

  5. java httpclient 为邮箱添加来信转发规则

    2019独角兽企业重金招聘Python工程师标准>>> import java.text.MessageFormat; import java.util.HashMap; impor ...

  6. 教你如何更改xshell中的转发规则

    使用不同的类型转发,与之对应的端口,所以如果想要使用不同类型的转发就要更改端口使其与之一一对应.本集xshell专栏文章将为大家讲解如何更改转发规则. 更改转发规则操作如下: 1.打开会话对话框. 2 ...

  7. SpringCloud--GateWay搭建及路由转发规则介绍

    一. Spring Cloud Gateway Spring Cloud GateWay 是 Spring Cloud 的⼀个全新项⽬,⽬标是取代 Netflix Zuul,它基于 Spring5.0+ ...

  8. nginx proxy_pass转发规则解析

    综述 nginx官方网站讲解proxy_pass时,只给了规则的说明,并没有给出具体的示例辅助理解.对于英语不太好的人,理解起来真的很头痛,只能通过测试来验证对英文意思的猜测. nginx对proxy ...

  9. 论文阅读八:SDN 交换机转发规则 TCAM 存储优化综述

    摘要:SDN将传统网络的控制平面和数据平面解耦,通过控制平面的控制器灵活地对网络进行管理,目前应用最广泛的控制协议是OpenFlow.三态内容寻址存储器(TCAM)查找速度快.支持三态掩码存储,在SD ...

最新文章

  1. Nucleus SE RTOS初始化和启动
  2. cocos2dx 2.2.5 hitWidget-onTouchEnded(pTouch, pEvent); 异常
  3. Qt中标准对话框实例,QObject::tr()的作用
  4. VSCode+Win10安装
  5. BlockChain:区块链入门课程 -- 区块链之类型 、应用程序、技术挑战和潜力
  6. 异常处理汇总-服务器系列
  7. ASP.NET事件顺序如下所示
  8. 嵌入式商业智能BI有什么功能
  9. 解析Disruptor的依赖关系
  10. Android10源码下载和编译(解锁/刷机)
  11. 数据预处理01_脏数据产生的原因
  12. 动态规划算法(DP)
  13. 步进电机的转矩与功率的换算公式
  14. DocSearcher:文档搜索引擎
  15. C# 索引器(Indexer) this关键字的作用
  16. 使用 PyTorch 检测眼部疾病
  17. 3036: 绿豆蛙的归宿
  18. #error和#warning使用分析
  19. 数据集成工具 —— datax与flinkx的使用
  20. 根据城市查找编号,根据编号查找城市

热门文章

  1. LegoNet: A Fast and Exact Unlearning Architecture
  2. 在keil工程中删除编译文件的方法
  3. AtCoder Beginner Contest 217 D - Cutting Woods(set + 二分查找)
  4. String转成JSON格式
  5. 洛谷 2680 运输计划 题解
  6. 学习OpenStack原理一篇就够了!!!
  7. 山西高中计算机会考成绩查询入口,2018年山西会考成绩查询时间及入口
  8. 使用Process Explorer和Dependency Walker定位dll库动态启动失败的问题(常用分析工具)
  9. 李沐——动手学深度学习课后练习calculus
  10. 《吊打面试官》从根上剖析ReentrantLock的来龙去脉