首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你以为键入网址后只是等待吗?惊!原来网页显示背后隐藏着这些奇妙步骤(终章)

你以为键入网址后只是等待吗?惊!原来网页显示背后隐藏着这些奇妙步骤(终章)

原创
作者头像
努力的小雨
修改2023-12-07 17:44:49
3030
修改2023-12-07 17:44:49
举报
文章被收录于专栏:灵墨AI探索室灵墨AI探索室

引言

历史文章:你以为键入网址后只是等待吗?惊!原来网页显示背后隐藏着这些奇妙步骤(上)

你以为键入网址后只是等待吗?惊!原来网页显示背后隐藏着这些奇妙步骤(中)

在前面的讨论中,我们已经详细介绍了计算机网络中的物理层、传输层和网络层以及应用层的工作原理。这些层次组成了一个完整的网络架构,确保了数据的传输和交流。在今天的讨论中,我们将进一步深入探讨数据包从计算机发出后的一系列流程,这涉及到网络设备中的交换机和路由器在其中扮演的重要角色。

交换机

现在我们来详细了解一下网络包是如何通过交换机进行传输的。交换机的设计理念是将网络包以原始的形式直接转发到目标设备。作为一个二层网络设备,交换机在MAC层进行工作。

交换机的包接收操作

首先,当电信号到达交换机的网线接口时,交换机内的模块会进行接收操作,将电信号转换为数字信号。

接下来,通过对包末尾的FCS(Frame Check Sequence)校验进行错误检查,如果校验通过,则将该包放入缓冲区。这一部分操作与计算机的网卡类似,但是交换机的工作方式与网卡有一些不同之处。

加长优化语句:计算机的网卡本身具有唯一的MAC地址,并通过核对收到的数据包的目的MAC地址来判断是否是发给自己的。如果目的MAC地址与自身网卡的MAC地址匹配,那么网卡就会接收并处理这个数据包,否则就会丢弃。而与网卡不同的是,交换机的端口并不会核对接收方的MAC地址,它直接接收所有的数据包,并将它们存放到缓冲区中。

在数据包存入缓冲区后,交换机会查询MAC地址表,以查找该数据包的接收方MAC地址是否已经在表中有记录。交换机的MAC地址表主要包含两个重要信息:设备的MAC地址和该设备所连接在交换机的哪个端口上。通过这个表,交换机能够快速地确定数据包应该转发到哪个端口,从而实现数据的高效传输和网络的正常运行。

交换机内部拥有一张称为MAC地址表的映射表,它记录着各个设备的MAC地址与连接的网线端口之间的对应关系。当交换机接收到一个数据包时,它会将该数据包中的源MAC地址和接收到该数据包的端口号写入MAC地址表中。通过这样的记录,交换机就能够根据MAC地址迅速判断出该设备连接在哪个端口上。

image
image

让我们举一个例子来说明交换机根据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头部后方的IP头部中的内容执行数据包的转发操作。转发操作分为几个阶段,首先是通过查询路由表来判断转发的目标。

image
image

根据上图的具体工作流程,举个例子来说明。假设一个地址为10.10.1.101的计算机想要向一个地址为192.168.1.100的服务器发送一个包,这个包首先会到达图中的路由器。

第一步是判断转发目标,根据包的接收方IP地址查询路由表中的目标地址栏,以找到相匹配的记录。

路由匹配的方式与之前讲过的相同,每个条目的子网掩码与192.168.1.100 IP地址进行按位与运算,得到的结果与对应条目的目标地址进行匹配。如果匹配成功,该条目就会作为候选转发目标,如果不匹配,则继续与下一个条目进行路由匹配。

举个例子,假设第二条目的子网掩码是255.255.255.0,与192.168.1.100 IP地址进行按位与运算后得到的结果是192.168.1.0。这个结果与第二条目的目标地址192.168.1.0匹配,因此第二条目记录将被选作转发目标。

如果无法找到匹配的路由,就会选择默认路由。在路由表中,子网掩码为0.0.0.0的记录表示"默认路由"。

路由器的发送操作

接下来,我们将进入包的发送操作。在发送之前,我们需要根据路由表中的网关列来确定包的目标地址。

如果网关是一个IP地址,那么这个IP地址就是我们要转发到的目标地址。这意味着包还没有到达终点,我们需要继续将其转发到下一个路由器。

如果网关为空,那么IP头部中的接收方IP地址就是我们要转发到的目标地址。这意味着我们终于找到了IP包头中的目标地址,说明包已经到达了终点。

在确定了对方的IP地址之后,下一步是使用ARP协议来查询对应的MAC地址,并将查询结果作为接收方的MAC地址。路由器也有自己的ARP缓存,因此首先会在ARP缓存中查询对应的MAC地址。如果在缓存中找不到,则会发送ARP查询请求。接下来是发送方的MAC地址字段,这里会填写输出端口的MAC地址。还有一个以太类型字段,会填写0080(十六进制)来表示IP协议。

网络包发送完成后,将被转换成电信号,并通过端口发送出去。这个过程与计算机的工作方式非常相似。

发送出去的网络包会经过交换机传输,以达到下一个路由器。由于接收方的MAC地址就是下一个路由器的地址,因此交换机会根据这个MAC地址将包传输到下一个路由器。

接下来,下一个路由器会将包转发给再下一个路由器,通过层层转发,网络包最终到达目的地。

你可能已经注意到,在网络包传输的过程中,源IP和目标IP始终保持不变,而MAC地址是不断变化的。这是因为在以太网内进行设备之间的包传输时,需要使用MAC地址来识别和定位设备。

服务器和客户端

当数据包到达服务器时,服务器会感到非常高兴,就像迎接远方朋友一样,充满了喜悦的心情。它迫不及待地开始解析数据包,就像你收到快递一样,难以抑制内心的兴奋。

image
image

当数据包抵达服务器后,服务器首先会扒开数据包的MAC头部,检查是否与服务器自身的MAC地址匹配,如果匹配,服务器会接收该数据包。接着,服务器会继续扒开数据包的IP头部,发现IP地址与服务器的IP地址匹配,然后根据IP头部中的协议字段,确定上层协议是TCP。

服务器会继续扒开TCP头部,其中包含了序列号,服务器需要确认这个序列号是否符合预期,如果是,服务器会将该数据包放入缓存,并发送一个ACK确认。如果不符合预期,则服务器会丢弃该数据包。TCP头部还包含端口号,HTTP服务器正在监听该端口号,因此服务器知道该数据包是由HTTP进程需要的,于是将数据包传递给HTTP进程。

服务器的HTTP进程接收到数据包后,发现这个请求是用于访问一个网页,于是将该网页封装在HTTP响应报文中。HTTP响应报文需要经过TCP、IP和MAC头部的封装,源地址为服务器的IP地址,目的地址为客户端的IP地址。完成头部的封装后,数据包从服务器的网卡出发,通过交换机转发到离开城市的路由器。路由器将响应数据包转发给下一个路由器,如此往复进行直到到达客户端的城门把手的路由器。该路由器扒开IP头部后发现要将数据包交给城内的人,于是将数据包发送到城内的交换机,再由交换机转发到客户端。

客户端收到服务器的响应数据包后,同样感到非常高兴,就像客户收到快递一样。于是,客户端开始扒开数据包的"皮",将接收到的数据包的"皮"扒剩下HTTP响应报文,然后将其交给浏览器进行页面渲染,最终展示出一份特别的数据包快递。

最后,客户端准备离开,向服务器发起TCP四次挥手,双方的连接随之断开。这样,整个过程就完美地结束了。

总结

计算机网络中的交换机和路由器扮演了重要的角色,确保了数据的高效传输和网络的正常运行。交换机在MAC层进行工作,将数据包根据目的MAC地址转发到相应的端口,利用MAC地址表快速确定数据包的接收方。而路由器是基于IP设计的三层网络设备,根据IP地址进行转发决策,将数据包从一个网络转发到另一个网络。最后,数据包经过服务器和客户端的交互,实现了Web页面的展示。

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 交换机
    • 交换机的包接收操作
    • 路由器
      • 路由器与交换机的区别
        • 路由器基本原理
          • 路由器的包接收操作
            • 查询路由表确定输出端口
              • 路由器的发送操作
              • 服务器和客户端
              • 总结
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档