nginx 一个 tcp 连接可以有包含多少个 http 请求? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
yuedingwangji
V2EX    NGINX

nginx 一个 tcp 连接可以有包含多少个 http 请求?

  •  
  •   yuedingwangji Oct 14, 2017 7561 views
    This topic created in 3124 days ago, the information mentioned may be changed or developed.

    今天突然想到这个问题,有没有 v 友帮忙解答下

    17 replies    2020-01-17 10:37:45 +08:00
    Mitt
        1
    Mitt  
       Oct 14, 2017
    http/1.1
    http/2
    wcsjtu
        2
    wcsjtu  
       Oct 14, 2017
    取决你连接什么时候断开。。。。。。
    还有 http 管道化~ 一个 tcp 包发送多个 request
    shellus
        3
    shellus  
       Oct 15, 2017
    你好,http1.1 的 tcp 连接复用,不能并行。所以,也没有数量限制,你可以在一个 tcp 连接上进行无数次 http 请求。
    http2 的 tcp 多路复用,并行多少个 http 请求是客户端决定的。基本上,不管多少个请求,都会只使用一个 tcp 连接。
    crayygy
        4
    crayygy  
       Oct 15, 2017 via iPhone
    keep-alive
    yuedingwangji
        5
    yuedingwangji  
    OP
       Oct 15, 2017
    @Mitt 2 个有什么区别呢?
    yuedingwangji
        6
    yuedingwangji  
    OP
       Oct 15, 2017
    @shellus 意思是 http 1.1 和 2 一个 TCP 链接都能包含无数个请求?
    wcsjtu
        7
    wcsjtu  
       Oct 15, 2017
    。。。。。。。你这题目问得就不科学啊~
    自己用 wireshark 抓包看看,follow 一个 tcpstream, 看看在四次挥手前,发了多少 http 包
    ryd994
        8
    ryd994  
       Oct 15, 2017
    @shellus nginx 可以设置 keepalive_requests 限制一次连接走多少个请求

    @yuedingwangji http2 可以并行请求,http1.1 只能串行
    yuedingwangji
        9
    yuedingwangji  
    OP
       Oct 15, 2017
    @wcsjtu 发送多少包跟发送多少请求有关系么, 一个请求万一比较大,分好几个包发送呢
    iceheart
        10
    iceheart  
       Oct 15, 2017 via Android   1
    http1.1 支持 pipelining,就是上行是 request 队列,下行是 response 队列,第一个应答对应第一个请求,第二个应答对应第二个请求...依此类推。所以,理论上支持的请求数是没有限制的。
    http2 的协议与 rtmp 类似,通过在数据包里添加流 id 字段,在一条连接里可以并发提供多条流。由于数据包是流的载体,所以不同的流互不相干,也就不存在 pipelining 里的响应顺序依赖的问题,后请求的可以先返回。
    当然也不会有请求数限制了
    yuedingwangji
        11
    yuedingwangji  
    OP
       Oct 16, 2017
    @iceheart 如何理解一个 tcp 流? 一次完整的 tcp 请求就是一个流 是么
    iceheart
        12
    iceheart  
       Oct 16, 2017 via Android
    流的理解,举个不恰当的例子,一条水管,水从这边进从那边出。这边进多少那边就出多少。水对应的是数据,进出顺序不变;tcp 对应的是管子。tcp 是双向收发数据,对应应该是两条管子,一条出去的流,一条进来的流。
    这是 tcp 的数据流。
    http2 在这个流上再从新定义数据包,为每个包分配流 id,相当于在上层又做了一层抽象,所以 http2 的流就是一条连接有多个了
    wcsjtu
        13
    wcsjtu  
       Oct 16, 2017
    @yuedingwangji 所以你问的是一个 tcp 包,还是一个 tcp 连接? tcp 包的话, 看你 http payloads 了; tcp 连接的话,看你连接啥时候断开啊~

    而且 http pipe 限制条件很多, 要求正确的 content-length, 还必须是幂等请求~
    x8
        14
    x8  
       Oct 16, 2017
    我建议你先搞清楚网络的传输层和应用层
    yuedingwangji
        15
    yuedingwangji  
    OP
       Oct 16, 2017
    @lizon 我怎么搞不清楚网络传输层和应用层了,请指点
    yuedingwangji
        16
    yuedingwangji  
    OP
       Oct 16, 2017
    @wcsjtu 一个 tcp 链接就是指 链接建立到链接断开的时间 是么?
    shellus
        17
    shellus  
       Jan 17, 2020
    @ryd994 不设置的话默认是无限吧
    About     Help     Advertise     Blog     API     FAQ     Solana     788 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 51ms UTC 20:09 PVG 04:09 LAX 13:09 JFK 16:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86