Javascript HTTP中的数据传输
我试图了解HTTP服务器和客户端内部如何传输数据的基本知识。我读过很多关于HTTP如何工作的文章,但我没有找到任何能回答我的一些问题的文章。 我想去通过加载一个网页的过程,因为我了解它,如果你让我注意到我错了,我将不胜感激Javascript HTTP中的数据传输,javascript,html,sockets,http,server-side,Javascript,Html,Sockets,Http,Server Side,我试图了解HTTP服务器和客户端内部如何传输数据的基本知识。我读过很多关于HTTP如何工作的文章,但我没有找到任何能回答我的一些问题的文章。 我想去通过加载一个网页的过程,因为我了解它,如果你让我注意到我错了,我将不胜感激 当我访问一个站点时,我的浏览器会向服务器请求一个HTML文件,因为我的浏览器会创建一个套接字,将其绑定到我的ip地址,并将其连接到我访问的站点服务器的侦听套接字。为了将浏览器的套接字连接到服务器,我需要一个端口号和主机名,端口号是80,因为这是HTTP,主机名是通过DNS解析
如果您能在套接字级别就HTTP发表任何意见,我们将不胜感激。谢谢。我下面的所有答案都与HTTP/1.1有关,而不是与HTTP/2有关: 3.-我的浏览器接收ASCII文件并对其进行解析。这里假设它找到一个图像标记。浏览器会发送该图像文件的HTTP请求。有件事我不明白。服务器如何响应?据我所知,服务器必须发回一个ASCII文件,该文件由一组头、一个CRLF和消息体组成。在这种情况下,假设我的浏览器要求使用.jpeg,服务器是否将标题作为ASCII明文写入套接字,然后将图像的原始字节写入套接字 是的,通常是这样。它可能是以不同的格式编码的(gzip、brotli),或者如果未设置
内容长度
,它可能被分块
4.-如果HTML文件有多个图像,我们是否为每个图像(每个请求)打开一个套接字
在HTTP/1中,现代浏览器将为每台主机打开多达6个套接字,但不会更多。如果发送到同一主机的请求超过6个,它将等待,直到收到其他响应
5.-让我们假设我的浏览器现在找到一个javascript标记。当服务器响应我对该脚本的请求时,服务器是否将脚本源的ASCII字节写入套接字?js库会发生什么?服务器是否必须发送每个源代码的所有源代码
通常是的,每个javascript文件需要1个http请求。有些服务器端工具将javascript源及其依赖项组合在一个javascript“文件”中。请注意,javascript源通常是UTF-8,而不是ASCII
6.-关于向套接字写入数据:写入(2)是在套接字之间进行所有写入的正确方法吗
不知道!不是C类的人
7.-关于大文件的传输:如果我点击网站上的一个按钮,让我下载一个大的PDF文件,服务器是如何完成的?我假设服务器试图将其分块传输。就我所知,有一种分块编码的选择。这是路吗?如果是,文件是否划分为块,并将这些块附加到ASCII响应中,然后逐字节写入套接字
否,chunked
用于内容长度事先未知的HTTP响应。您所说的“拆分”是在IP/TCP级别上完成的,而不是在HTTP协议级别。从HTTP的角度来看,它只是一个连续的流
最后,视频是如何传输的?我知道视频编码和传输需要整本书来详细解释,但如果你能谈谈视频传输的一般性(例如在youtube上),我将不胜感激
太宽了,我回答不了。HTTP、套接字、流媒体和包传输是不同的主题 HTTP是请求或发送dat的通信协议