穿上仿生外骨骼,科幻也许并不遥远
06-21
历史文章介绍:你以为输入网址就只是等待吗?震惊!原来,网页显示的背后隐藏着这些奇妙的步骤(第1部分)。您认为输入网址后就可以等待吗?震惊!原来,网页显示的背后隐藏着这些奇妙的步骤(中)。
在前面的讨论中,我们详细介绍了计算机网络中物理层、传输层、网络层和应用层的工作原理。这些层构成了完整的网络架构,保证了数据的传输和交换。
在今天的讨论中,我们将进一步探讨数据包从计算机发出后的一系列过程,其中涉及到交换机和路由器在网络设备中所扮演的重要角色。交换机 现在让我们仔细看看网络数据包是如何通过交换机传输的。
交换机旨在将网络数据包以其原始形式直接转发到目标设备。交换机作为二层网络设备,工作在MAC层。
交换机的收包操作首先,当电信号到达交换机的网线接口时,交换机中的模块会执行接收操作,将电信号转换为数字信号。接下来,对数据包末尾的FCS(帧检查序列)检查进行错误检查。
如果检查通过,则将数据包放入缓冲区。这部分操作与电脑的网卡类似,但交换机的工作原理与网卡略有不同。
较长的优化语句:计算机的网卡本身有一个唯一的MAC地址,它通过检查接收到的数据包的目的MAC地址来判断是否是发送给自己的。如果目的MAC地址与自身网卡的MAC地址匹配,则网卡将接收并处理该数据包,否则将其丢弃。
与网卡不同,交换机端口不检查接收者的 MAC 地址。它直接接收所有数据包并将它们存储在缓冲区中。
数据包存入缓冲区后,交换机会查询MAC地址表,查看表中是否已经记录了数据包接收者的MAC地址。交换机的MAC地址表主要包含两个重要信息:设备的MAC地址和设备连接到交换机的哪个端口。
通过这张表,交换机可以快速确定数据包应该转发到哪个端口,从而实现数据的高效传输和网络的正常运行。交换机内部有一张映射表,称为MAC地址表,记录了每台设备的MAC地址与所连接的网线端口的对应关系。
当交换机收到数据包时,会将数据包中的源 MAC 地址和接收数据包的端口号写入 MAC 地址表。通过这些记录,交换机可以根据MAC地址快速判断设备连接到哪个端口。
下面我们通过一个例子来说明一下交换机根据MAC地址表进行转发的过程。假设我们收到一个目标 MAC 地址为 00-02-B3-1C-9C-F9 的数据包。
我们查找 MAC 地址表并在表的第 3 行中找到 MAC 地址的匹配项。根据这一行的端口列信息,我们知道该地址连接到端口3。
现在,交换机可以通过内部交换电路将该数据包发送到连接到端口3的目标设备。路由器 路由器和交换机之间的区别 网络数据包通过交换机后,现在到达路由器,并在其中转发到下一个路由器或目标设备。
本步骤转发的工作原理与交换机类似。它还使用查找表来确定数据包的转发目标。
但路由器和交换机的具体操作流程存在一些差异。首先,路由器是基于IP设计的,被称为三层网络设备。
它的每个端口都有一个 MAC 地址和一个 IP 地址。交换机是基于以太网设计的,称为二层网络设备。
它的端口没有 MAC 地址。因此,在路由器中,数据包的转发是根据IP地址进行的,而在交换机中,数据包的转发是根据MAC地址进行的。
在转发过程中,路由器根据数据包的目的IP地址查询路由表,确定下一跳的目的地址,并将数据包转发到相应的路由器接口。通过这种方式,路由器能够将数据包从一个网络转发到另一个网络。
通过路由器和交换机的协同工作,可以高效地转发和交换网络中的数据,实现网络通信和连接。路由器基础知识 路由器的端口具有 MAC 地址,因此它可以充当以太网的发送方和接收方。
同时,路由器也有一个IP地址,这使得它有点类似于计算机的网卡。转发数据包时,路由器的端口首先接收发给自己的以太网数据包。
路由器查询路由表,确定转发目的地,并作为发送方将以太网报文通过相应的端口发送出去。这个过程与交换机的工作原理类似,但与交换机不同的是,路由器不仅根据MAC地址进行转发,还根据IP地址进行路由决策。
首先是路由器的收包操作,当电信号到达网线接口部分时,路由器内的模块会将电信号转换为数字信号,最后通过帧校验序列(FCS)进行错误检查数据包的完整性和准确性。接下来,路由器检查数据包的 MAC 标头,查看接收者的 MAC 地址是否与自己的 MAC 地址匹配。
如果 MAC 地址匹配,则数据包将被放置在接收缓冲区中以供进一步处理。如果 MAC 地址不匹配,路由器将立即丢弃该数据包,因为它不属于当前路由器的目的地。
一般来说,路由器的每个端口都有一个唯一的MAC地址,它只接收与自己的MAC地址匹配的数据包,并将其路由到适当的目的地。对于不匹配的数据包,路由器会立即丢弃它们,以保证网络中数据传输的高效、安全。
查询路由表确定输出端口已完成接收数据包后,路由器将剥离数据包开头的 MAC 头。 MAC头的主要作用是将数据包传递给路由器,其中接收者的MAC地址对应于路由器端口的MAC地址。
因此,一旦数据包到达路由器,MAC 标头的工作就完成了,随后将被丢弃。接下来,路由器将根据MAC头后面的IP头中的内容转发数据包。
转发操作分为几个阶段。第一步是通过查询路由表来确定转发目标。
基于上图的具体工作流程,我们举个例子来说明一下。假设一台计算机的地址为 10.10.1。
想要将数据包发送到地址为 ..1 的服务器。这个数据包首先会到达图中的路由器。
第一步是确定转发目标,根据数据包的接收者IP地址在路由表中查询目标地址列,找到匹配的记录。路由匹配方法与前面提到的相同。
每个条目的子网掩码与..1.IP地址按位与,结果与相应条目的目标地址匹配。如果匹配成功,则该条目将作为候选转发目标。
如果没有匹配,则路由匹配将继续下一个条目。例如,假设第二个条目的子网掩码为...0,则与IP地址..1进行按位与运算的结果。
是..1.0。该结果与第二条目的目标地址..1.0匹配,因此第二条目记录将被选择作为转发目标。
如果找不到匹配的路由,则选择默认路由。在路由表中,子网掩码为0.0.0.0的记录代表“默认路由”。
路由器发送操作 接下来,我们将进入数据包发送操作。在发送之前,我们需要根据路由表中的网关列确定数据包的目的地址。
如果网关是一个IP地址,那么这个IP地址就是我们要转发到的目的地址。这意味着数据包还没有到达终点,我们需要继续将其转发到下一个路由器。
如果网关为空,那么IP头中的接收者IP地址就是我们要转发的目的地址。这意味着我们终于在IP头中找到了目的地址,说明数据包已经到达目的地了。
确定对方的IP地址后,下一步就是使用ARP协议查询对应的MAC地址,并将查询结果作为接收方的MAC地址。路由器也有自己的ARP缓存,所以它首先在ARP缓存中查询对应的MAC地址。
如果在缓存中没有找到,则发送ARP查询请求。接下来是发送方的MAC地址字段,其中将填写输出端口的MAC地址。
还有一个Ethertype字段,将填写该字段(十六进制)以表示IP协议。网络数据包发出后,会转换为电信号,通过端口发送出去。
该过程与计算机的工作方式非常相似。传出的网络数据包通过交换机传输到达下一个路由器。
由于接收者的MAC地址是下一个路由器的地址,因此交换机会根据这个MAC地址将数据包传输到下一个路由器。接下来,下一个路由器会将数据包转发到下一个路由器。
通过层层转发,网络数据包最终到达目的地。您可能已经注意到,网络数据包在传输过程中,源IP和目的IP始终保持不变,而MAC地址却不断变化。
这是因为当以太网内的设备之间传输数据包时,需要使用MAC地址来识别和定位设备。服务器和客户端 当数据包到达服务器时,服务器会感到非常高兴,就像欢迎远方的朋友一样,充满喜悦。
它迫不及待地开始解析数据包,就像你收到快递时难以抑制的兴奋一样。当数据包到达服务器时,服务器首先会剥离数据包的MAC头,检查是否与服务器自身的MAC地址相匹配。
如果匹配,服务器就会收到数据包。然后,服务器会继续剥离数据包的IP头,发现IP地址与服务器的IP地址匹配,然后根据IP头中的协议字段判断上层协议是TCP。
服务器将继续剥离包含序列号的 TCP 标头。服务器需要确认序列号是否符合预期。
如果是,服务器会将数据包放入缓存中并发送 ACK 确认。如果不符合预期,服务器将丢弃该数据包。
TCP 标头还包含 HTTP 服务器正在侦听的端口号,因此服务器知道 HTTP 进程需要该数据包,并将数据包传递给 HTTP 进程。服务器的HTTP进程收到数据包后,发现该请求是访问网页,则将网页封装在HTTP响应消息中。
HTTP 响应消息需要使用 TCP、IP 和 MAC 标头进行封装。源地址是服务器的IP地址,目的地址是客户端的IP地址。
完成报头的封装后,数据包从服务器的网卡出发,通过交换机转发到出城的路由器。路由器将响应数据包转发到下一个路由器,依此类推,直到到达客户端的门控路由器。
剥开IP头后,路由器发现数据包是要交给城市里的人,于是它把数据包发送到城市里的交换机,然后交换机转发给客户端。客户端收到服务器的响应包后,也很高兴,就像客户端收到快递一样。
于是,客户端开始剥掉数据包的“皮”,剥掉收到的数据包的“皮”留下HTTP响应消息,然后交给浏览器进行页面渲染,最后展示了特殊的Packet Express。最后,客户端准备离开,向服务器发起四次TCP挥手,双方连接断开。
这样,整个过程就完美结束了。小结计算机网络中的交换机和路由器对于保证数据的高效传输和网络的正常运行起着重要的作用。
交换机工作在MAC层,根据目的MAC地址将数据包转发到相应的端口,并利用MAC地址表快速确定数据包的接收者。路由器是基于IP设计的三层网络设备。
它根据 IP 地址做出转发决策,并将数据包从一个网络转发到另一个网络。最后,数据包通过服务器与客户端的交互,实现网页的显示。
我正在参加腾讯科技创造特训营第四期有奖征文比赛。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-21
06-18
06-06
06-18
06-18
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用