http里面支持一个tcp连接内连续发送多次请求,请问下,是不是有多少个请求,就会收到多少个http响应消息?还是说可能是i个请求,服务器只响应j个。 这些请求和响应之间有对应关系吗?即某个请求一定对应某一个响应?如何查看消息里面这个对应关系?

解决方案 »

  1.   

    “http里面支持一个tcp连接内连续发送多次请求”
    这个主要是指复用TCP连接,以节省TCP连接所需的“三次握手”时间开销。跟Servlet所处理的请求无直接关系,每个请求仍然会触发一次 doGet 或者 doPost 等。且每次请求必然会有一次响应。
    总的来说,你混淆了HTTP协议和TCP协议的关系。HTTP是应用层协议,TCP是传输层协议;他们直接不会直接发生影响。不太恰当的比喻:HTTP请求相当于包裹,TCP相当于运输车。低效的方式是一车只发送一个包裹,现在复用了。
      

  2.   

    在http1.1版本的协议中,如果在一个tcp连接中可以发送多次http请求。
    但是在http1.0版本中每发一次http请求就会触发一个tcp连接
    当你在网页中发送一个http请求,就servlet而言,他会每次都调用service方法,都会生成新的request和response。所以你就可以通过每次生成的新的request和response来访问你需要访问的变量了
      

  3.   

    多谢答复,从代码层面有点了解。 
    如果我是在交换机上抓包,能看出我某次请求对应该请求的reponse吗?
    如下形式的3个请求,第一个200ok应该不一定就是第一个get的响应。从交换机上能看出对应关系吗?
    get
    get
    get
    200ok
    200ok
    200ok
      

  4.   

    能,但是比较复杂,要分析包中关于源和目标的地址及端口信息。因为信息都是在同一个TCP连接中完成的。