目录

  • 顺子
  • 长连接的作用
  • 长连接的体现
  • TCP长连接流程
  • TCP短连接流程
  • 长连接的使用场景
  • 短连接的使用场景
  • 如何判断长连接和短连接
  • Transfer-Encoding

顺子

项目中,发现一个问题,有的文字显示不全,显示一半就结束了,然后,我看响应头,发现状态码为200的响应头有Transfer-Encoding:chunked。
显示不全的请求中,没有这个Header,所以我怀疑是不是这个问题导致的。

下边这个参考链接,写的非常好:

参考链接:
https://imququ.com/post/transfer-encoding-header-in-http.html

因为浏览器可以通过 Content-Length 的长度信息,判断出响应实体已结束。那如果 Content-Length 和实体实际长度不一致会怎样?通常如果 Content-Length 比实际长度短,会造成内容被截断;如果比实体内容长,会造成 pending。

针对HTTP长连接和短连接,还是要回归到它们的本质TCP连接上,因为HTTP运行在TCP连接之上。

长连接的作用

浏览器重用已经打开的空闲持久连接,可以避开缓慢的三次握手,还可以避免遇上TCP慢启动的拥塞适应阶段。

长连接的体现

当一个网页完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问服务器时,会继续使用这一条已经建立好的连接。

TCP长连接流程

client向server发起连接,server接受client连接,双方建立连接,client与server完成一次请求后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。

TCP短连接流程

client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后一次请求就完成了,客户端自己会断开连接。短连接一般只会在 client/server间传递一次请求操作。

长连接的使用场景

对于频繁请求资源的客户端适合使用长连接。撸啊撸
例如数据库使用的就是长连接。如果使用短连接,频繁的通信有可能导致socket错误,并且频繁的创建socket对资源极大的浪费。
再者,数据库本身就追求速度,使用短连接再慢慢的握握手,效率可想而知。

短连接的使用场景

web网站的http服务使用短连接,因为可能存在上亿的客户端,如果全部保持长连接,服务器可能吃不消。
每个客户端不会频繁操作,就使用短连接,但是也不一定,如果老板有钱,全部长连接也ojk。

我就去看看了CSDN是什么连接,发现有的是长连接,有的是短连接。然后我看到了CSDN中图片存放在阿里云上。

如何判断长连接和短连接

HTTP/1.0通过Connection:Keep-alive来实现长连接。
HTTP/1.1为了尽可能的提高HTTP性能,1.1规定所有连接必须是持久的,已经不需要在头部加上Connection:Keep-alive了。想要短连接可以,Connection:close但一般没人会主动去使用。仔细观察一下你的请求,有时候你可以在响应头上看到这个参数。

Transfer-Encoding

Content-Encoding(内容编码)对实体内容进行压缩编码,优化传输。例如用zip压缩文件,减小内容体积。内容编码通常是选择性的,例如jpg/png这类文件一般不开启,因为图片格式已经是高度压缩过的,再压一遍没什么效果,还吃资源。Transfer-Encoding(传输编码)改变报文格式,不但不会减少实体内容传输大小,甚至还会使传输变大。更深处说,就很细了,身为开发,就不深究了。注意:Content-Encoding和Transfer-Encoding二者是相辅相成的,对于一个HTTP报文,有可能同时进行了内容编码和传输编码。

HTTP请求头中的长连接和短连接详解相关推荐

  1. HTTP长连接、短连接使用及测试

    https://www.cnblogs.com/shoren/p/http-connection.html   漫夭   博客园   首页   新随笔   新文章   联系   订阅   管理 pos ...

  2. java长连接心跳包_socket中的短连接与长连接,心跳包示例详解

    TCP连接简介 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接, 当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接, 连接的建立是需要三 ...

  3. java socket 心跳包_socket中的短连接与长连接,心跳包示例详解

    TCP连接简介 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接, 当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接, 连接的建立是需要三 ...

  4. HTTP协议中的长连接和短连接(keep-alive状态)

    什么是长连接 长连接还是短连接 相比于短连接,长连接更节省资源.如果每发送一条消息就要创建链路.发起握手认证.关闭链路释放资源,会损耗大量的系统资源.长连接只在首次创建时或者链路断连重连才创建链路,链 ...

  5. Http 请求头中的 Proxy-Connection

    平时用 Chrome 开发者工具抓包时,经常会见到 Proxy-Connection 这个请求头.之前一直没去了解什么情况下会产生它,也没去了解它有什么含义.最近看完<HTTP 权威指南> ...

  6. HTTP 请求头中的 Remote_Addr,X-Forwarded-For,X-Real-IP

    REMOTE_ADDR 表示发出请求的远程主机的 IP 地址,remote_addr代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的,当你的浏览器访问某个网站时,假设中间 ...

  7. 转---谈谈HTTP协议中的短轮询、长轮询、长连接和短连接

    作者:伯乐在线专栏作者 - 左潇龙 http://web.jobbole.com/85541/ 如有好文章投稿,请点击 → 这里了解详情 引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此 ...

  8. mysqls压力测试怎么用_用 Swagger 测试接口,怎么在请求头中携带 Token?

    松哥周末抽空给 Spring Security 系列也录制了一套视频,目录如下: 感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程 今天的话题来自一个小伙伴在微信上的提问 ...

  9. 谈谈HTTP协议中的短轮询、长轮询、长连接和短连接

    来源:伯乐在线专栏作者 - 左潇龙 链接:http://web.jobbole.com/85541/ 引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此最近经常会看一些源码.在研究一个项目 ...

最新文章

  1. 例题6-4 破损的键盘(又名:悲剧文本)(Broken Keyboard(a.k.a. Beiju Text), UVa 11988)
  2. 在预测心脏病和中风这件事上,AI又超过了人类医生(附论文)
  3. 产品网络推广方案之有哪些方法可以更好地优化404页面?
  4. syslog(),closelog()与openlog()--日志操作函数
  5. 【DIY】(开发板不吃灰运动)CC3200LaunchPad改装红外温度计
  6. 马明哲新年内部讲话透露新战略:全面开启3.0时代
  7. 2010信息科工作总结
  8. 2017计算机软件,2017年计算机防病毒软件排名全面保护PC安全!
  9. PHP设计模式——享元模式
  10. 在linux下使用360随身wifi 2 | 李凡希的blog,在Linux下使用“360随身WiFi 2”
  11. linux恢复rm删除文件ssd,科学网—linux恢复rm -rf删除的文件 - 罗晓光的博文
  12. mfc 对话框应用程序 如何利用按钮弹出另一对话框
  13. JavaScript之this,new,delete,call,apply
  14. NGN学习笔记2——软交换技术
  15. GPIO的8种工作模式
  16. Alluxio的Raft HA实现
  17. 物理机无法ping通虚拟机,虚拟机能ping通物理机
  18. 图神经网络(贪心学院)
  19. relation-graph实现企业架构图,关系图等(天眼查,企查查等企业架构图等实现)
  20. iOS 使用oc 版本的Lottie 库

热门文章

  1. 程序员都需要懂的10种常见安全漏洞
  2. S7-1200与S7-200SMART S7通信
  3. 第九周 计算存款利息和本息合计
  4. SeetaFace2 Android 平台编译
  5. PortSwigger 点击劫持(Clickjacking)
  6. silent love open my heart
  7. 做一个很难的小程序是怎样的体验(一)
  8. 用皮肤“听”音乐,网友戴上这款装备听音乐会:仿佛住在钢琴里
  9. 读书笔记:《了不起的盖茨比》
  10. spring boot mail 发送 设置代理服务器