当前位置: 首页 > article >正文

Http、tcp、https、socket、tomcat、长短连接等总结回顾

(1)关于http、tcp的长短连接问题

tcp是没有所谓长连接的概念的。tcp经过三次握手就已经建立了一个连接,这个所谓建立了一个连接就是两边操作系统层面都已经建立了socket,都准备好了相应的缓冲区等。socket是啥呢?socket其实就是操作系统提供tcp连接的接口。比如tcp的可能有第一次握手的方法,是C语言写的,比如就叫syn方法,对应第一次握手,也就是客户端发一个syn位置1的tcp消息嘛;然后有第二次握手的方法,比如叫syn_ack,对应服务端回一个syn和ack(当然这里面,包括之前客户端都有序列号什么的,这里先忽略);再有一个第三次握手的方法,对应服务端的ack消息,当然我们知道最后一次握手一般在tcp消息体中可能已经有负载内容了。那么这个三次握手的过程,需要暴露给上次应用吗?当然不需要,一方面不安全,一方面也不友好,那我就准备一个操作系统的api方法嘛!这个api就是所谓的套接字/socket。通过这个socket,上层应用可以直接建立一个tcp连接,而不用关心所谓三次握手的细节,建立好连接就可以进一步传递消息什么的。

这个tcp连接建立好,如果客户端和服务端没有主动断开连接,默认会保留72小时。

Linux系统默认保活参数为:2小时无活动触发探测(tcp_keepalive_time=7200),之后每75秒重试(tcp_keepalive_intvl=75),最多探测9次(tcp_keepalive_probes=9)。若全部失败,约2小时11分15秒后断开连接‌。

所以tcp天然是长连接,短连接的话就是上层主动断开。tcp天然就是长连接,这是http长连接的基础,你想啊,如果tcp都是短连接,用一次断开一次,你http作为应用层协议,本来就是建立在tcp连接的基础上的,又何谈长连接?而http的长连接,其实就是只对tcp连接的复用,或者也可以说是对socket的复用,也就是用同一个tcp连接传递多个http请求、响应。

http协议1.0版本默认是短连接,也就是请求头和响应头包含Connection:close

而http1.1默认是长连接,即响应头和响应头包含Connection:keep-alive

tomcat等web容器拿到请求报文,解析得到这个字段,就不会关闭当前socket,而是复用。当然,也有其他一些情况还是会关闭socket,比如maxKeepAliveRequests到了,或者keepAliveTimeout等参数的限制。

(2)关于浏览器发请求浏览器多 Socket 连接与 HTTP 流水线(Pipelining)的关系解析

1. 核心概念定义
  • 多 Socket 连接‌:
    浏览器针对‌同一域名‌并行建立多个 TCP 连接(HTTP/1.1 默认每个域名允许 6-8 个并发连接),通过多个通道同时发送请求,‌避免单个连接阻塞整体性能‌。
    典型场景‌:同时加载页面中的图片、CSS、JS 等多类资源。

  • HTTP 流水线(Pipelining)‌:
    在‌单个 TCP 连接‌上按顺序连续发送多个 HTTP 请求(无需等待前一个响应返回),‌减少连接建立开销‌。
    局限性‌:服务器必须按请求顺序返回响应,若某个请求处理延迟会导致‌队头阻塞(Head-of-Line Blocking)‌。

2. 两者的核心差异
维度多 Socket 连接HTTP 流水线
连接方式多个独立 TCP 连接单个 TCP 连接复用
请求顺序性请求与响应可乱序处理请求必须顺序发送,响应必须顺序返回
性能瓶颈受限于浏览器并发连接数上限受队头阻塞影响
适用协议HTTP/1.1 的默认优化手段HTTP/1.1 理论优化(实际少用)

(3)关于https及非对称加密、对称加密

通俗易懂的TCP,SSL以及HTTPS的连接建立过程详解_tcp ssl-CSDN博客


http://www.kler.cn/a/572050.html

相关文章:

  • 【深度学习】循环神经网络案例讲解-基于 PyTorch 的中文歌词生成——RNN,LSTM,GRU 从数据预处理到预测全流程详解
  • JAVA最新版本详细安装教程(附安装包)
  • Vue前端开发- Vant之Card组件
  • 批量清空 Word 标题、主题、标记、作者、总编辑时间等元数据
  • 从零手撸工业级Qt文件传输系统:TCP粘包/断点续传/SSL加密全解
  • js环境/electron环境,使用typeorm+sqlite数据库
  • 解决 windows 11任务栏自动隐藏,窗口最大化后鼠标放到最下方任务栏不弹出了
  • 《机器学习数学基础》补充资料:矩阵运算技巧和矩阵指数
  • 如果STM32板子上晶振不是8MHz而是其他(如12MHz)怎么办?
  • 【音视频】视频基本概念
  • idea实现热部署
  • 计算机网络基础:文件共享服务器(注册表更改)
  • 【AI大模型】DeepSeek + Kimi 高效制作PPT实战详解
  • GAN、Diffusion与美颜SDK:AI如何驱动人脸美型API进化?
  • 【菜笔cf刷题日常-1600】C. Binary String(二分求min/max)
  • 力扣977.有序数组的平方(双指针)
  • 软考中级-数据库-3.2 数据结构-数组和矩阵
  • 安当全栈式PostgreSQL数据库安全解决方案:透明加密、动态凭据与勒索防护一体化实践
  • 制造业中的“大数据”:如何实现精准决策?
  • 重生之我在异世界学编程之C语言:深入预处理篇(上)