作为一个网络使用者,你也许从来没有思考过源及目的主机之间究竟发生了什么,因为网络对用户来说是一个黑匣子,所有的细节都被屏蔽掉了,你只能知道通还是不通,能不能上网?但是作为一个网络设计者,研究者,你就必须要想想?假如你要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. WorldWind学习系列一:顺利起航篇
  2. 耗时6个月整理的最全Java资源,限时删
  3. HDU 5384 Danganronpa (2015年多校比赛第8场)
  4. ADO.NET中的五个主要对象
  5. saxbuilder用法(转)
  6. C# WinForm中获取当前程序运行目录的方法
  7. epoll边缘触发_4.2.3、epoll:水平触发与边缘触发
  8. redmine更换主题
  9. 【飞秋】ASP.NET 之 常用类、方法的超级总结,并包含动态的EXCEL导入导出功能,奉上类库源码
  10. 手机浏览器网址_用电脑键盘给手机“隔空打字”的新招!帮你省了蓝牙键盘的钱啦...
  11. ASP.NET 实现PDF文件下载[转]
  12. linux ldd命令详解
  13. 安装VMWare Workstation 12的步骤
  14. Spotfire 表达式之转换函数
  15. 破解软件以及奇奇怪怪的网站集合
  16. oracle 数据库不用了,改用SQL,要学SQL了,第一个手工写的存储过程
  17. Microsoft 环回适配器安装
  18. 如何用将top命令的结果写入txt?
  19. 【深度学习】一个用于styleGAN图像处理的编码器
  20. 手机当作电脑无线摄像头

热门文章

  1. EBS R12: 通过FND_PRODUCT_INSTALLATIONS中字段STATUS确认安装使用了哪些产品(或模块)
  2. 汇编移位指令SHR,SAR,SAL/SHL,ROR,ROL,RCR,RCL
  3. 机器学习之重温线性代数
  4. 网络基础2---->网络数据传输(局域网)
  5. CAD学习记录01-快捷键
  6. 如何计算802.11 PHY Data Rate (11ac/11ax)
  7. Java桌面截图程序(带快捷键)
  8. Install Burg Bootloader
  9. 如何给计算机硬盘解除密码忘了,电脑硬盘加密忘记密码是怎么处理?
  10. Asynchronous FIFO with gray code(异步FIFO verilog设计理念)