作为一个网络使用者,你也许从来没有思考过源及目的主机之间究竟发生了什么,因为网络对用户来说是一个黑匣子,所有的细节都被屏蔽掉了,你只能知道通还是不通,能不能上网?但是作为一个网络设计者,研究者,你就必须要想想?假如你要ping一台位于美国硅谷的服务器,那么ICMP请求报文从源主机发出之后会发生那些事呢?其实报文的所有的路径都是由各种各样的类似与现实生活中的法律一样的网络协议约束下设计的,报文在离开老巢之后会经过二层接入层交换机,在三层交换机汇聚,从边缘路由器上发送出去,流入了茫茫的internet洪流之中。而在这个过程之中,报文会做的就是在网络设备上从转发处理。提到转发就不得不提到二三层转发的概念。其实关于二三层转发的概念在前几篇中都已经有一点涉及,只是并没有很明确的提出来。

下面就举例来讨论一下二三层转发的详细过程:

port1        port2

首先来说说二层转发的处理流程:

1. 假如交换机的port1和port2处于同一个vlan内,PC1想PING主机PC2,那么PC1首先会根据目的PC2的IP地址查询路由表,查询下一跳地址的(ARP -a)的ARP缓存。如果存在对应的表项则直接转发出去,如果不存在,就会进行步骤2处理。

2. PC1向PC2广播发送ARP REQUEST请求报文

3. 交换机port1接口收到ARP请求报文之后会在port1接口学习PC1的mac地址建立ARP及FIB表(port<---->mac),从广播ARP REQUEST

4. PC2会接收到从交换机port2广播出来的ARP请求报文,学习PC1的MAC,构建自己的ARP表项(IP<---->MAC),并向PC1返回ARP REPLAY单播报文

5. 交换机从port2接受到ARP应答报文后,学习PC2的MAC地址构建ARP及FIB表项,根据目的PC1的MAC地址查询FIB表项,然后从port1接口发送出去。

6. PC1接收到了ARP REPLAY后会学习PC2的MAC地址,生成ARP缓存表。然后将学习到的PC2的MAC地址填充在ICMP请求报文之中单播发送

7. 交换机从port1收到ICMP请求报文后会查报文的目的MAC地址是否是本机的地址,查询结果非本机MAC地址,则可以判断为二层转发,然后根据Dest MAC查询FIB表,从交换机port2端口发送出去。

8. PC2接收到ICMP请求报文,返回ICMP应答报文,报文格式不变,将源及目的IP及MAC地址对调发送

9. 交换机接受到ICMP应答报文之后依然会比较目的MAC是否为本机MAC,比较结果为非本机MAC,判断为二层转发,然后从port1接口直接发送。

10.PC1接收到ICMP 应答报文后判断PC1跟PC2双向互通。

对于三层转发其实流程跟二层转发流程类似:

1. 假如交换机的port1和port2处于不同vlan内,PC1想PING主机PC2,那么PC1首先会查路由表(根据PC2的IP),根据相关路由表项的下一跳IP地址查询(ARP -a)自己的ARP缓存。如果存在对应的表项则直接转发出去,如果不存在,就会进行步骤2处理。

2. PC1向PC2广播发送ARP REQUEST请求报文(目的IP为PC2的地址,目的MAC为下一跳的MAC)

3. 交换机port1接口收到ARP请求报文之后比较目的MAC是自己的入接口的MAC地址,而IP并非port1对应vlan接口的IP,则判断为三层转发。

4. 交换机将报文上送CPU处理,根据目的IP(PC2)查路由表,查询结果为下一跳出接口应该从port2所在的VLAN,所以将arp请求在该vlan内广播发送

5. PC2收到ARP请求报文后会学习mac地址构建ARP表返回ARP应答报文。

6. 交换机接受到ARP应答报文后会学习MAC构建ARP及FIB表项,比较目的MAC是否为本机MAC,结果非本机MAC,则判断为三层转发,将报文上送CPU,软件查询路由表,查询结果显示下一跳出接口为port1所在的vlan接口,查询FIB表,从port1接口发送出去。

7. PC1接受到PC2发送的ARP应答报文后学习mac构建ARP表项。

8. PC1根据新建的arp表向PC2发送ICMP请求报文,交换机接收到后根据已经构建的FIB表及ARP表及路由表转发报文。

9. PC2收到后返回ICMP应答报文,PC1收到后判断主机可达。

小结:

判断二层转发和三层转发的最根本的区别在于PC1查路由表,如果SIP和DIP在同一网段则PC1的下一跳即为PC2的地址,所以发出的报文的DMAC就是PC2的MAC地址,设备计较报文的DMAC为非设备MAC,则判断为二层转发,否则如果DMAC跟设备接收报文的端口MAC一致,这也表明SIP和DIP不在同一网段,需要走三层转发,上送CPU处理。

有以上分析可以看出判断二三层转发表面是比较SIP和DIP是否是同一网段。其实质则是转发设备通过比较转发报文的DMAC是否为本机MAC来作出最终判断的。

转载于:https://blog.51cto.com/simonsec/189318

PING用一生诠释了TCP/IP(4)------二三层转发为PING劈荆斩棘相关推荐

  1. PING用一生诠释了TCP/IP------二三层转发为PING劈荆斩棘(转载)

    作为一个网络使用者,你也许从来没有思考过源及目的主机之间究竟发生了什么,因为网络对用户来说是一个黑匣子,所有的细节都被屏蔽掉了,你只能知道通还是不通,能不能上网?但是作为一个网络设计者,研究者,你就必 ...

  2. 71张图详解IP地址、IP 路由、三层转发、ARP、ICMP

    71张图详解IP地址.IP 路由.三层转发.ARP.ICMP 架构师之道2021-04-07 13:51:24 https://www.toutiao.com/i6948285918986027531 ...

  3. TCP/IP illustated: 第七、八章 Ping program Traceroute program

    Ping program 与 Traceroute program 均是以 iCMP 为基础的两个程序. 其功能主要用于探测是否能够连接.观察记录 IP datagram 的路程. Ping Prog ...

  4. 网络编程--TCP/IP协议(二)

    目录 前言 一丶TCP协议格式 端口号 序列号 确认号 首部长度 保留字段 标志位字段 窗口大小 检验位 紧急指针 可选项字段 二丶TCP协议的特性 <1>TCP协议的特点 <2&g ...

  5. TCP/IP(二):IP协议

    IP协议处于OSI参考模型的第三层--网络层,网络层的主要作用是实现终端节点间的通信.IP协议是网络层的一个重要协议,网络层中还有ARP(获取MAC地址)和ICMP协议(数据发送异常通知) 数据链路层 ...

  6. 【转】:TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute

    TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute 分类:            TCP/IP详解学习笔记计算机网络2006-04-20 18:147970人阅读评论(1)收 ...

  7. TCP/IP协议学习( 三 ) ---- ping原理 和 ICMP

    TCP/IP协议学习( 三 ) ---- ping原理 和 ICMP 1. 命令ping的用法和解析 1.1 ping 的用法 1.2 TTL 是什么? 1.3 SEQ是什么? 2.ICMP协议 2. ...

  8. 使用 Ping 命令测试 TCP/IP 配置

    [list] [*] 要快速获取计算机的 TCP/IP 配置,请打开 命令提示符,然后键入 ipconfig.在"ipconfig"命令的显示中,要确保您正在测试的 TCP/IP ...

  9. 如何重新安装TCP/IP协议

    来源于网络, 以作备查! ######################################################### 问:WINXP操作系统下如何重新安装TCP/IP协议 答: ...

最新文章

  1. C# 网络编程之豆瓣OAuth2.0认证具体解释和遇到的各种问题及解决
  2. 基因组组装的那些困扰,用单倍体基因组一一破解!
  3. matlab生成vhdl程序,使用HDL Workflow Advisor将matlab代码转换为vhdl
  4. TP-LINK821N无线网卡拆解分析
  5. 笔记react router 4(三)
  6. 利用Asp.net中的AJAX制作网页上自动选取开始日期及结束日期的用户自定义控件...
  7. hdu1686:KMP板子
  8. Java 8中的默认方法(Defender方法)简介
  9. 朴素贝叶斯算法注意事项(有待完善)
  10. shell脚本练习实例
  11. 所有进程的信息 linux,LINUX下获取所有进程信息
  12. SQL连接表(内连接、左连接、右连接、交叉连接、全外连接)
  13. java函数命名规范_java命名规范
  14. sap服务器安装双系统教程,安装双系统教程,新手入门必看教程
  15. sql添加字段和字段说明
  16. Excel / WPS 下拉选择数据
  17. 学计算机的怎样提升打字速度,如何提高打字速度:电脑键盘指法练习
  18. SQL基础知识归纳总结
  19. android地图定位到海洋,如何利用卫星导航技术进行高精度海洋测绘定位
  20. 写作活动第三期!让我们再挣200元稿费吧!

热门文章

  1. 进行最大公约数和最小公倍数的求解
  2. Android禁用系统更新
  3. 微信公众号 php sdk,GitHub - yuanchenglu/wechat-php-sdk: 微信公众平台 PHP SDK
  4. 淘宝/天猫API接口,item_sku - 淘宝商品SKU详细信息查询,淘宝/天猫获取sku详细信息 API 返回值说明
  5. Bailian2713 肿瘤面积
  6. Linux centOS系统备份还原(dd+rsync方式)
  7. 网页中无法复制的文字如何复制
  8. 2021-06-02-IPFS私有网络搭建
  9. 开发板的lcd 显示
  10. 问题 B: Little Sub and Triples