我正在使用调制解调器,它显示下载速度为nkbps,上传速度为米kbps。当我检查它的日志时,它显示了下载和上传的数据量。我想知道为什么它显示我在一小时内上传了 3 MB 的数据,这似乎太多了,因为我从来没有上传过任何东西或使用过种子。
那么当我浏览网页时我上传了什么?
答案1
有关 TCP 连接和确认工作原理的更多详细信息,请参阅Diogo 的回答
当你访问某个网站时,会发生以下情况:
与您的 DNS 服务器建立连接(如果尚未建立),您的计算机已经知道该服务器的 IP 地址(或通过某种自动机制向您的 ISP 请求此信息),发送数据包以进行连接并确认已建立连接。建立连接后,您的站点会询问您访问的站点的 IP 地址,以便知道要联系哪台计算机才能访问该站点。这意味着它会发送一个包含域名的数据包来获取该响应。稍后它还会发送一个数据包来关闭连接。
与托管您要访问的站点的 Web 服务器建立连接,该服务器再次发送数据包以进行连接并确认连接。之后,它会对您要访问的页面发出请求,再次发送数据包。然后它会做出响应,您将获得网页的 HTML,该 HTML 指示页面的结构(而不是布局)。
由于您只拥有结构,因此您仍需要获取其余内容。因此,需要发出额外请求(一个 SU 问题相当于 40 个请求)来获取脚本、样式和媒体(如图像等)。由于其中一些内容可能不在您访问的同一 Web 服务器上,因此可能需要进行额外的 DNS 解析,从而将您带回到步骤 1。
最重要的是,请注意,您收到的每个数据包都会被确认,这又增加了一个上传的数据源,为了节省数据包,通常会一次确认多个数据包。因此,当您收到某些东西时,您会将其发送给服务器,这样它就知道它发送的内容没有丢失。这样,服务器就不必再次尝试发送它。
最重要的是,如果不先连接并上传一些请求到您要下载的服务器,您就无法下载任何东西。这就是上传的一点内容……
而且您不仅要单击,您还要做更多的事情,让我们以您的问题为例:您输入了大约 500 个字符,一个字符算作 1 个字节(如果是 ASCII 字符,则在这种情况下所有字符都是 1 个字节),并且可以是 1 到 4 个字节(如果是 Unicode 字符)。因此,您的问题实际上占用了 0.5 KB 或 0.00005 MB!但不仅仅是发送给我们的问题,它还被 POST 或 AJAX 请求包围,这些请求要求服务器存储您的问题和数据包标头本身。
如果将所有内容加起来,几个小时左右达到几兆字节是合理的。
答案2
答案3
当您在线时,很简单,来自远程目标的所有内容都是下载,而您发送的所有内容都是上传。
因此,即使只是请求一个网页,也将包括您的机器(最有可能)发出 DNS 请求、连接到 Web 服务器、发送页面请求,然后发送该页面上每个元素/图片/css/javascript 的请求。
一小时的使用量为 3MB,其实并不多!
答案4
更简单的分解:
- TCP 数据包用于打开与服务器的连接
- 网页各个组件的 HTTP 请求数据包