Nginx对长连接的处理及HTTP协议中body长度的确定

本文探讨了HTTP协议中的长连接及其在Nginx中的处理方式。长连接可以减少TCP三次握手和四次挥手带来的延迟,提高效率。Nginx根据请求头和协议判断body长度,支持HTTP 1.1的pipeline特性,允许在一个连接上连续发送多个请求。Nginx的keepalive策略依赖于客户端的connection头,通过keepalive_timeout配置最大等待时间。pipeline虽然能减少响应时间,但Nginx并不并行处理多个请求,而是依次处理。
摘要由CSDN通过智能技术生成

长连接

  背景: http请求是基于TCP协议之上的,那么,当客户端在发起请求前,需要先与服务端建立TCP连接,而每一次的TCP连接是需要三次握手来确定的,如果客户端与服务端之间网络差一点,这三次交互消费的时间会比较多,而且三次交互也会带来网络流量。当然,当连接断开后,也会有四次的交互,当然对用户体验来说就不友好了。
  定义: 而http请求是请求应答式的,如果我们能知道每个请求头与响应体的长度,那么我们是可以在一个连接上面执行多个请求的,这就是所谓的长连接
  前提: 先确定请求头与响应体的长度。

  ①对于请求头:
  a、如果当前请求需要有body,如POST请求,那么nginx就需要客户端在请求头中指定content-length来表明body的长度。
  b、如果请求头不需要body,遇到两个连续回车时,即可确定请求头结束。
  ②对于应答体:
  a、对于http1.0协议来说,如果响应头中有content-length头,则以content-length的长度就可以知道body的长度了,客户端在接收body时,就可以依照这个长度来接收数据,接收完后,就表示这个请求完成了。而如果没有content-length头,则客户端会一直接收数据,直到服务端主动断开连接,才表示body接收完了。
  b、而对于http1.1协议来说,如果响应头中的Transfer-encoding为chunked传输,则表示body

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值