二三层转发具体过程

二层转发具体过程


 

根据路由表项的掩码和目的IP相与,判断主机A和主机B处于同一网段,采用二层转发。

1.      主机A向全网段的其他主机发送ARP广播报文,其SMAC为主机A 的MAC地址,SIP为主机A的IP地址192.168.1.1,DMAC为全零的广播地址,DIP为主机B的IP地址192.168.1.2。

2.      当全网段的主机都收到该ARP广播时,只有主机B发现ARP请求报文中的目的IP地址与自己的IP相同,则给予主机A 发送ARP应答报文,SMAC为主机B 的MAC地址,SIP为主机B的IP地址192.168.1.2,DMAC为主机A的MAC地址,DIP为主机A的IP地址192.168.1.1。在此过程中,主机B将主机A的MAC地址和主机A的IP地址写入自己的ARP表项中,以便之后的二三层转发。

3.      主机A收到主机B的ARP应答报文之后,将主机B的MAC地址和对应的IP地址写入自己的ARP表项中,以便后续的二三层转发,同时,将IP数据包封装发送给主机B。

三层转发具体过程

根据路由表项的掩码和目的IP相与,判断主机A和主机B处于不同网段,采用三层转发。

当PC A向PC B发起ICMP请求时:

PCA向网关(有网关时,对网关发送ARP请求,无网关时,需要设置静态路由,route add IP mask nextHop要到达IP,下一跳要选择的是 nextHop;网关的0.0.0.0/0代表能够到达任何一个IP)192.168.1.2/24发送ARP请求(广播,发送的ARP请求只有广播的形式),以获得交换机的MAC地址,网关发现PC A请求的IP地址为自己的三层接口IP,因此网关给予PC A发送ARP应答,并更新自己的ARP表项,告知PC A交换机的MAC地址,主机A也更新自己的ARP表项,PC A将ICMP报文发送给网关192.168.1.2,ICMP的目的MAC为交换机13端口的MAC、源MAC为MAC A、源IP为192.168.1.1、目的IP为192.168.2.1。

1. 交换机根据收到的ICMP报文的目的IP查找硬件三层表项,即FIB(内容包括IP、MAC、出口VLAN、出端口),因为之前未建立任何表项,查找失败,于是将报文送到交换机CPU进行处理。

2.  CPU根据报文的目的IP去查找软件路由表,发现匹配了一个直连网段(PC B 对应的网段),于是继续查找其软件ARP表,仍然查找失败。然后,交换机会在目的网段对应的VLAN 2的所有端口发送请求地址192.168.2.1对应的MAC的ARP请求(请求PC B的MAC地址)。

【根据目的IP与硬件的FIB作最长匹配,如果匹配的是32位的主机路由,则直接转发,如果匹配的是接口网段路由,则送CPU处理,CPU触发下一跳的ARP请求,在收到ARP应答之后根据ARP创建新的主机路由,后续即可匹配此主机路由,所谓“一次路由,多次交换”】fib表是根据路由表生成的,fib表下发到硬件,转发更快,数据转发过程中先查fib表,查不到再去查路由表    display fib

1.  主机B发现被请求的是自己的IP地址时,则向交换机发送ARP应答报文,SMAC为主机B的MAC,SIP为主机B的IP192.168.2.1,DMAC为交换机的MAC,DIP为192.168.2.2,并将交换机的MAC和对应网关的IP写入自己的ARP表项,交换机收到该ARP应答报文时,将主机B的MAC和其IP地址写入自己的ARP表项,以便后续的报文转发,交换机将收到的主机A的ICMP报文发送给主机B,报文的目的MAC修改为PC B的MAC,源MAC修改为自己的交换机14端口的MAC地址,源IP为主机A的IP192.168.1.1,目的IP为主机B的IP192.168.2.1。

2. 在交换机芯片的三层表项中根据刚得到的三层转发信息添加表项(内容包括IP、MAC、出口VLAN、出端口),这样后续的PC A发往PC B的报文就可以通过该硬件三层表项直接转发了。

3.  PC B收到交换机转发过来的ICMP请求报文以后,回应ICMP应答给PCA。ICMP应答报文的转发过程与前面类似,只是由于交换机在之前已经得到PC A的IP和MAC对应关系了,也同时在交换芯片中添加了相关三层表项,因此这个报文直接由交换芯片硬件转发给PC A。

4.  这样,后续的往返报文都经过查MAC表==>查三层转发表的过程由交换芯片直接进行硬件转发了。

注:交换机每个端口都有自己的MAC地址,display interface g1/0/?可以查看具体的交换机端口的信息,包含该端口的MAC可以查看到。交换机可以清楚的知道自己的每个端口的MAC地址,因此在交换机内部无需发送ARP请求查看自己端口的MAC地址。

 

【PC上设置静态路由:routeadd   IP mask  nextHop】

【交换机上设置静态路由:iproute-static   IP  mask  nextHop】



TCP/IP7层工作模式:

A向B发送一个QQ信息 “你好” A主机在应用层上将这条信息准备好(你从键盘上打字),然后表示层将这2个字的具体信息准备好(大小,粗细,颜色等),会话层就与B建立会话连接(喂,你在吗,我要发东西给你),传输层就让AB两台主机建立逻辑上的连接(QQ是UDP无连接的,MSN是TCP有连接的),传输层将数据分段 并在所有数据段之前打上端口号4000(QQ的端口号)的标签,网络层进行路由寻址,就是找到去往B的路,然后在数据段前面加上目的IP变成数据包送到数据链路层,数据链路层在数据包前面加上下一个路由的MAC地址(每经过一个路由变一次,直到B的MAC地址),然后将数据包转换为,最后到物理层,物理层将数据帧变成010101的比特流,发送出去,以上就是封装的过程,然后经过N个路由,最后送到主机B物理层上,开始解封装,将01010比特流转化为数据链路层可以识别的数据帧,并拆下最前面一段MAC地址,拿出来一看,哦,这是给我的数据包,然后将数据帧转化为数据包送给网络层继续拆,拆下IP地址,也符合,再转化为数据段送给传输层,传输层也拆开端口信息,然后将数据段重组成数据发给4000端口(否则计算机不知道到底应该将数据交给谁处理,端口就是电脑知道这到底是谁的数据,总不能发给音乐或者视频什么的吧),再到会话层完成终止这次会话,到表示层和应用层就在主机B上将“你好“两个字显示出来,整个过程就基本完成了。

协议数据单元PDU(Protocol Data Unit)是指对等 层次之间传递的数据单位。 协议数据单元(Protocol Data Unit )物理层的 PDU是 数据位(bit), 数据链路层的 PDU是 数据帧(frame),网络层的PDU是 数据包(packet), 传输层的 PDU是 数据段(segment),其他更高层次的PDU是报文(message)。

  • 18
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,关于使用Node.js搭建中间层,实现协议转发,我可以为您提供以下思路和步骤。 1. 创建一个Node.js应用程序 首先,您需要创建一个Node.js应用程序,可以使用Express等框架来简化开发过程具体步骤如下: - 安装Node.js和npm。 - 创建一个新的Node.js项目,并初始化npm。 - 安装Express框架。 以下是一个简单的命令行示例: ```bash mkdir myapp cd myapp npm init -y npm install express ``` 2. 配置中间件 接下来,您需要配置一些中间件来实现协议转发功能。这里我们可以使用http-proxy-middleware等模块来实现。具体步骤如下: - 安装http-proxy-middleware模块。 - 在Express应用程序中使用http-proxy-middleware中间件,并配置代理请求的目标服务器。 以下是一个简单的代码示例: ```javascript const express = require('express'); const { createProxyMiddleware } = require('http-proxy-middleware'); const app = express(); app.use('/', createProxyMiddleware({ target: '目标服务器地址', changeOrigin: true })); app.listen(3000); ``` 这里的createProxyMiddleware函数会自动将客户端发送的请求转发到目标服务器,并将目标服务器返回的响应转发给客户端。 3. 运行Node.js应用程序 最后,您需要运行Node.js应用程序,可以使用以下命令来启动应用程序: ```bash node app.js ``` 这样,您就可以在本地的3000端口访问您的Node.js应用程序,并实现协议转发功能了。 以上是一个简单的使用Node.js搭建中间层,实现协议转发的方式。您可以根据自己的需求和具体情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值