gpt4 book ai didi

networking - 关于网络浏览器和文件下载/上传的问题?

转载 作者:行者123 更新时间:2023-12-04 14:42:50 24 4
gpt4 key购买 nike

我想知道网络浏览器是如何工作的。我刚刚复习完我的网络教科书。以下是我的天马行空的想象和问题。

Web 浏览器通常使用 HTTP 协议(protocol)。所以第一个问题是:

  • 谁负责支持 HTTP 协议(protocol)?

我认为HTTP协议(protocol)应该在Web浏览器中实现,而TCP、UDP、IP等协议(protocol)应该在OS中实现。这就是 HTTP 协议(protocol)被称为应用程序级协议(protocol)的原因。 (如果我错了请纠正我。)

回到HTTP通信场景。

在客户端:

当在网络浏览器中键入一个地址时,网络浏览器将选择合适的 HTTP 方法并构造一个完整的 HTTP 请求。这个 HTTP 请求只是纯 ASCII 文本。然后浏览器选择一个私有(private)端口号并使用 TCP 协议(protocol)将文本位流发送到服务器。在此过程中,如果 URL 不是 IP 地址,则进行 DNS 查询。

在服务器端:

当一些 TCP 数据包到达服务器时,它会检查它是否针对 80 端口。如果是这样,它就被传递给服务器进程,现在 TCP 协议(protocol)已经完成了它的工作,是时候让服务器程序开始行动了。服务器程序需要实现HTTP协议(protocol),才能解析从TCP数据包中提取的客户端浏览器的HTTP请求。然后将必要的 HTML 文件返回给客户端。这些 HTML 文件可以是静态的,也可以使用 ASP.NET 等技术动态生成。

上传和下载文件的情况下,我认为可以有两种不同的方法。

  • 无论是什么格式的文件,我们都可以将它们编码为Base64字符串,这样我们就可以将它们作为网页的一部分嵌入。我想知道是否可以将 jpeg 文件编码为 Base64 字符串并将其嵌入到网页中。(如果我错了请纠正我。)

  • 另一种方式是不将文件内容嵌入到网页中,而是直接使用TCP连接进行传输。这种方法不需要 Base64 编码,应该有更好的性能。 (如果我错了请纠正我。)

我可能为上述问题和陈述选择了一个错误的标题。

希望版主不要把这个问题当成题外话

非常感谢。

最佳答案

我看到一些我认为不是 100% 正确的事情......

Then the browser choose a private port number and use the TCP protocol to send the text bit stream to the server.

您似乎是在说浏览器选择一个本地端口并将其分配给正在打开的 TCP 流,这是不正确的,因为操作系统跟踪已使用/未使用的端口,并将端口分配给流建立新连接时。

When some TCP packet arrives at the server, it is examined to see if it is targeted at 80 port. If so, it is delivered to the server process, and now the TCP protocol has finished its job and it's time for the server program to come into action.

这里我看到两个细节:首先,从文字上看似乎单个 TCP 数据包包含所有 HTTP 消息,这可能不是真的(由于多种原因,它可能被分成许多 TCP 数据包,但主要是因为数据包具有固定的最大长度,并且消息可能比该长度更长)。其次,假定 Web 服务器在端口 80 上运行,这通常是这种情况,但并非总是如此,例如我认为 Apache Tomcat Web 服务器的默认端口是 8080,而在大多数情况下,该端口是 Web 服务器可以配置监听(我不知道有哪个网络服务器是 100% 固定到一个特殊端口的)。

最后,当你说

When an address is typed into the web browser, the web browser will choose proper HTTP method and fabricate a complete HTTP request.

我认为在这种特殊情况下(用户键入地址并按下回车键)浏览器将始终选择 GET 方法,因为在向服务器提交信息时使用 POST。

HTTP 起初非常简单,但有许多细节增加了它的复杂性。我远不是这方面的专家,但也许这可以进一步帮助 :) http://www.faqs.org/rfcs/rfc2616.html

关于networking - 关于网络浏览器和文件下载/上传的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4539721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com