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

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

时间:2023-11-01 09:33:25浏览次数:35  
标签:网页 键入 MAC 交换机 转发 地址 终章 数据包 路由器

引言

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

交换机

现在我们来详细了解一下网络包是如何通过交换机进行传输的。交换机的设计理念是将网络包以原始的形式直接转发到目标设备。作为一个二层网络设备,交换机在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页面的展示。

标签:网页,键入,MAC,交换机,转发,地址,终章,数据包,路由器
From: https://www.cnblogs.com/guoxiaoyu/p/17781241.html

相关文章

  • trafilatura 网页解析原理分析
    trafilatura介绍Trafilatura是一个Python包和命令行工具,用于收集网络上的文本。其主要应用场景包括网络爬虫下载和网页解析等。今天我们不讨论爬虫和抓取,主要看他的数据解析是如何做的。extract初体验fromtrafilaturaimportfetch_url,extracturl='https://haokan.baid......
  • 网页加法计算机的弹框显示结果
    今天给大家带来的是网页简单的加法计算器,这个会将结果以弹框的方式显示出来,欢迎大家参考。<html><head> <metacharset="utf-8"></head><body> <inputtype="text"id="input2"/>+<inputtype="text"id="input3"......
  • 网页CAD(web cad sdk)前端直接获取修改转换后的图纸数据
    前言有用户集成网页CAD之后,需要提取图纸的各种信息和数据,下面我们讲一下Web版CAD如何在前端直接提取修改和转换后的图纸信息,没有集成过在线CAD的小伙伴可以先看一下快速入门在mxcad中转换后的图纸(.mxweb格式的文件)可以通过mxcadnpm包得到图纸的各种数据,如图层、文字样式、图......
  • C# .aspx网页获取RFID读卡器HTTP协议提交的访问文件Request获得卡号、机号,Response回
     本示例使用的设备:服务端代码:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Collections;usingSystem.IO;usingSystem.Net;usingSystem.Net.Sockets;using......
  • 你以为键入网址后只是等待吗?惊!原来网页显示背后隐藏着这些奇妙步骤(中)
    引言在之前的讨论中,我们已经对HTTP和DNS协议进行了详细的探讨,这些协议主要用于应用层的通信。然而,今天我们将把重点转移到网络层和传输层的协议上,也就是TCP/IP协议。所以,我们将深入研究这些协议的工作原理和作用。可靠传输-TCPHTTP是一种基于TCP协议传输的协议。在TCP传输数据......
  • 练习:ip保存网页内容
    有一个存放ip的txt文本,通过读取文本内的所有ip,然后判断该ip的80端口上面有没有部署网站,如果有,就把这个网站首页的内容写入文本首次理解1、读取文本内所有ip2、读取出来的ip拼接下80端口,再通过200状态码判断,存在就写入内容到txt中importrequests#从文本中获取ip地址with......
  • 电影推荐与管理系统Python+Django网页界面+协同过滤推荐算法【计算机毕设项目】
    一、介绍电影推荐管理系统。本系统使用Python作为主要开发语言,前端采用HTML、CSS、BootStrap等技术语言框架搭建展示界面,后端采用Django作为功能逻辑处理,并使用Ajax实现前端与和后端的通信。其主要实现功能如下:系统平台分为管理员和用户两个角色用户可以登录、注册、查看电影、发表......
  • 电影推荐与管理系统Python+Django网页界面+协同过滤推荐算法【计算机毕设项目】
    一、介绍电影推荐管理系统。本系统使用Python作为主要开发语言,前端采用HTML、CSS、BootStrap等技术语言框架搭建展示界面,后端采用Django作为功能逻辑处理,并使用Ajax实现前端与和后端的通信。其主要实现功能如下:系统平台分为管理员和用户两个角色用户可以登录、注册、查看电影......
  • 你以为键入网址后只是等待吗?惊!原来网页显示背后隐藏着这些奇妙步骤(上)
    当键入网址后,到网页显示,其间发生了什么在面试过程中,很可能会遇到一个常见的问题,即"当输入一个网址后,到网页显示之间发生了什么"。这个问题的确非常常见,我也喜欢问这个问题,因为它可以帮助我了解面试者对网络部分的应用知识的掌握情况,同时也能够基本囊括网络通信的整个过程。接下......
  • 解决使用mitmprox抓包可以访问网页,但是使用python request 调用该网站接口报错问题
    可能有几种原因导致这种情况。以下是一些常见的问题和可能的解决方法:证书验证问题:当你使用mitmproxy抓包时,它通常会生成自签名的SSL证书,以便进行中间人攻击检查。但在Python中使用requests库时,默认情况下,它会验证SSL证书的有效性。你需要禁用SSL验证,以便使用mitmproxy生成的证书......