http请求中的多个get请求
当查看用于获取图像的客户端->服务器交互时,我看到以下来自客户端的HTTP GET请求,其中数据包包含2个HTTP GET请求,我不确定服务器将如何响应这些请求http请求中的多个get请求,http,tcp,pipelining,Http,Tcp,Pipelining,当查看用于获取图像的客户端->服务器交互时,我看到以下来自客户端的HTTP GET请求,其中数据包包含2个HTTP GET请求,我不确定服务器将如何响应这些请求 服务器会忽略第二个GET请求吗 服务器是否会对每个GET请求逐个发送响应 这似乎不是HTTP管道。如果是,请告知 Transmission Control Protocol, Src Port: 59649 (59649), Dst Port: 8080 (8080), Seq: 1, Ack: 1, Len: 648 Sour
有什么在线工具可以用来测试这些请求吗?如果适合的话,多个HTTP请求放在一个TCP数据包中是完全可以接受的 您所看到的确实是HTTP管道,HTTP 1.1规范和中介绍了这一点。客户端正在发送一个新的
GET
请求,而不必首先等待对以前的GET
请求的响应。这就是管道的定义:
HTTP请求和响应可以在连接上通过管道传输管道化允许客户端在不等待每个响应的情况下发出多个请求,从而使单个TCP连接的使用效率更高,运行时间更短
TCP只是通过为两个HTTP请求使用一个TCP数据包来优化事情。客户端可能已经启用了(也称为“Nagle算法”),以减少网络流量(大多数套接字库默认都会启用)
为了让服务器响应管道化请求,必须使用持久连接,这是管道化的另一个要求,在您的示例中非常明显(连接:保持活动请求头)
TCP是一个字节流,较低级别的TCP帧对较高级别的协议层并不重要。一个正确编写的HTTP接收器将能够分离单独的HTTP消息,而不管使用何种TCP帧,并根据需要单独处理它们。HTTP 1.1规范要求所有请求都按照接收的顺序响应(HTTP 2.0改变了这一点,但这是一个更复杂的处理过程-多路复用-我将不详细介绍)
因此,要回答您的问题:
谢谢你,雷米,这真的很有帮助。但是,如果客户机发送两个连接的http请求,则服务器根本看不到第二个http请求。我正在使用lighttpd进行实验,它支持流水线。“这背后的原因可能是什么?”MuralitharanPerumal我无法回答。你得问问lighttpd的作者。听起来像是那个软件中的一个逻辑错误。我有自己的http服务器实现,它可以很好地处理连接的流水线请求