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

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博客

相关文章:

  • SpringBoot AI + PgVector向量库 + Openai Embedding模型
  • JAVA安全—手搓内存马
  • JVM--虚拟机
  • 【大模型】什么是蒸馏版大模型
  • 量子计算如何提升机器学习效率:从理论到实践
  • 深度学习的正则化深入探讨
  • Open3D的所有窗口小部件
  • go并发编程
  • STM32定时器超声波测距实验手册
  • 【VxLAN】二、VxLAN-EVPN分布式网关-ensp实验
  • Android Trace埋点beginSection打tag标签,Kotlin
  • 【Linux】命令行参数 | 环境变量(四)
  • Educational Codeforces Round 174 (Rated for Div. 2)
  • 充电枪和充电桩的区别
  • 破解密码防线:渗透测试中的密码攻击手法汇总
  • 敏捷原则与实践(Agile principles and practices)
  • 【RAG系列】当RAG遇到多模态 - 打开新世界的大门
  • Redis版本的EOL策略与升级路径(刷到别划走)
  • 蓝桥杯 6.数学
  • Tomcat基础知识及其配置
  • 唐山网站建设价格/百度笔记排名优化
  • 唐山网站建设拓/网站域名服务器查询
  • 香港vps 网站类型/成都网站建设系统
  • 做宠物网站赚钱吗/公众号软文素材
  • 用卡通人物做网站属于侵权吗/培训机构排名一览表
  • 做动态图表的网站/如何自己搭建一个网站