当我浏览网页时会上传什么?

当我浏览网页时会上传什么?

我正在使用调制解调器,它显示下载速度为nkbps,上传速度为kbps。当我检查它的日志时,它显示了下载和上传的数据量。我想知道为什么它显示我在一小时内上传了 3 MB 的数据,这似乎太多了,因为我从来没有上传过任何东西或使用过种子。

那么当我浏览网页时我上传了什么?

答案1

有关 TCP 连接和确认工作原理的更多详细信息,请参阅Diogo 的回答

当你访问某个网站时,会发生以下情况:

  1. 与您的 DNS 服务器建立连接(如果尚未建立),您的计算机已经知道该服务器的 IP 地址(或通过某种自动机制向您的 ISP 请求此信息),发送数据包以进行连接并确认已建立连接。建立连接后,您的站点会询问您访问的站点的 IP 地址,以便知道要联系哪台计算机才能访问该站点。这意味着它会发送一个包含域名的数据包来获取该响应。稍后它还会发送一个数据包来关闭连接。

  2. 与托管您要访问的站点的 Web 服务器建立连接,该服务器再次发送数据包以进行连接并确认连接。之后,它会对您要访问的页面发出请求,再次发送数据包。然后它会做出响应,您将获得网页的 HTML,该 HTML 指示页面的结构(而不​​是布局)。

  3. 由于您只拥有结构,因此您仍需要获取其余内容。因此,需要发出额外请求(一个 SU 问题相当于 40 个请求)来获取脚本、样式和媒体(如图像等)。由于其中一些内容可能不在您访问的同一 Web 服务器上,因此可能需要进行额外的 DNS 解析,从而将您带回到步骤 1。

  4. 最重要的是,请注意,您收到的每个数据包都会被确认,这又增加了一个上传的数据源,为了节省数据包,通常会一次确认多个数据包。因此,当您收到某些东西时,您会将其发送给服务器,这样它就知道它发送的内容没有丢失。这样,服务器就不必再次尝试发送它。

最重要的是,如果不先连接并上传一些请求到您要下载的服务器,您就无法下载任何东西。这就是上传的一点内容……

而且您不仅要单击,您还要做更多的事情,让我们以您的问题为例:您输入了大约 500 个字符,一个字符算作 1 个字节(如果是 ASCII 字符,则在这种情况下所有字符都是 1 个字节),并且可以是 1 到 4 个字节(如果是 Unicode 字符)。因此,您的问题实际上占用了 0.5 KB 或 0.00005 MB!但不仅仅是发送给我们的问题,它还被 POST 或 AJAX 请求包围,这些请求要求服务器存储您的问题和数据包标头本身。

如果将所有内容加起来,几个小时左右达到几兆字节是合理的。

答案2

您的上传主要基于您在输入地址(例如 www.google.com)时向网络服务器发出的请求,以请求HTTP连接到该站点。在这些请求之后,下一个上传点是确认s(致谢TCP连接HTTP 协议) 在它的握手过程

在数据网络中,确认(或确认)是通信进程或计算机之间传递的信号,用于表示确认或收到响应,是通信协议的一部分。例如,ACK 数据包用于传输控制协议,在建立连接时确认收到 SYN 数据包,在使用连接时确认收到数据包,在终止连接时确认收到 FIN 数据包。

为了举例说明,我们看一下 TCP 图(您在互联网上使用 TCP):

图表

答案3

当您在线时,很简单,来自远程目标的所有内容都是下载,而您发送的所有内容都是上传。

因此,即使只是请求一个网页,也将包括您的机器(最有可能)发出 DNS 请求、连接到 Web 服务器、发送页面请求,然后发送该页面上每个元素/图片/css/javascript 的请求。

一小时的使用量为 3MB,其实并不多!

答案4

更简单的分解:

  • TCP 数据包用于打开与服务器的连接
  • 网页各个组件的 HTTP 请求数据包

相关内容