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

简介: 这篇文章简要介绍了计算机网络中交换机和路由器的工作原理,以及它们在网络通信和连接中的重要作用。交换机利用MAC地址表实现数据包的转发,而路由器则根据IP地址进行转发决策,将数据包从一个网络转发到另一个网络。通过交换机和路由器的协同工作,网络实现了高效的数据传输和通信。

引言

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

交换机

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

交换机的包接收操作

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

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

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

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

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

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

根据上图的具体工作流程,举个例子来说明。假设一个地址为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

当数据包抵达服务器后,服务器首先会扒开数据包的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页面的展示。

相关文章
|
7月前
|
网络协议 网络架构
你以为键入网址后只是等待吗?惊!原来网页显示背后隐藏着这些奇妙步骤(上)
当我们键入一个网址后,从键入网址到网页显示之间会发生许多复杂的步骤。这篇文章旨在详细解释这一过程,帮助读者深入了解HTTP、DNS和协议栈等相关知识。通过这篇文章,读者可以消除疑惑,也可巩固对网络通信的理解,从而更好地应用和利用互联网。
105 6
你以为键入网址后只是等待吗?惊!原来网页显示背后隐藏着这些奇妙步骤(上)
|
7月前
|
域名解析 缓存 网络协议
你以为键入网址后只是等待吗?惊!原来网页显示背后隐藏着这些奇妙步骤(中)
通过对TCP/IP协议的深入研究,我们可以更好地理解网络通信的整个过程,以及各个协议在其中的作用。这对于我们理解和解决网络通信中的问题非常重要。希望通过本文的学习,能够对TCP/IP协议有更深入的了解,并能够应用到实际的网络通信中。
你以为键入网址后只是等待吗?惊!原来网页显示背后隐藏着这些奇妙步骤(中)
|
7月前
|
移动开发 JavaScript HTML5
分享24个网页游戏源代码,总有一个是你想要的
分享24个网页游戏源代码,总有一个是你想要的
193 0
|
7月前
|
前端开发
前端知识笔记(十三)———单全选框控制方法,炒鸡无敌方便!!!
前端知识笔记(十三)———单全选框控制方法,炒鸡无敌方便!!!
39 0
|
前端开发
清明节,如何用代码让网页变灰
清明节,如何用代码让网页变灰
|
人工智能 移动开发 测试技术
你的交互文档写的好不好?一看便知!
你的交互文档写的好不好?一看便知!
125 0
|
前端开发 JavaScript 小程序
印象最深的一个bug——使用uinapp做混合开发静态图片在安卓端不显示
这几天一直在做混合开发,使用的是uni-app开发的,一套代码,多端使用,适用于各个平台。听起来很完美,使用过程不可多说,不知道是因为我们的需求变态还是我们团队两端技术水平太差。总之,开发联调过程十分痛苦,加上uniapp的调试十分困难,一度让我们两端互怼。这其中我印象最深的一个bug就是在对接联调总出现的
1665181 33
印象最深的一个bug——使用uinapp做混合开发静态图片在安卓端不显示
|
Web App开发 前端开发 JavaScript
这个油猴脚本也许对你微信排版有帮助
这是一个看脸的时代,颜值很重要,运营公众号做内容也是如此。除了要让内容本身有料、有用、有趣之外,我们还要给用户提供一个高颜值的排版。那么,如何排版出一个好看微信文章呢?
286 0
|
IDE 测试技术 开发工具
AirtestIDE这个隐藏的小助手,还没用过你就亏啦!
AirtestIDE这个隐藏的小助手,还没用过你就亏啦!
266 0
下一篇
DataWorks