Http长连接 和 短连接 原理

  1. 在请求头中有一个connection的键,它对应的值有keep-alive 和 close 两个值。
  2. keep-alive就是用于告诉服务器需要保持长连接。
  3. close就是用于告诉服务器这是个短链接。
  4. 底层原理
    1. 数据的传输使用的是传输层的TCP协议和UDP协议。而HTTP使用传输层的TCP协议进行实现。
    2. TCP协议只是一种协议,规定了一些东西,但具体实现是谁来实现的了?
      • 具体实现是操作系统来实现这个这个协议的,一般都是使用C语言编写的。
    3. 实现了TCP协议后我们就能直接使用操作系统上实现TCP的一些方法和属性吗?
      • 肯定是不可能的,直接让你调用操作系统的方法和属性,可能会有一些安全性问题。
    4. 不让直接调用,那该怎么调用系统实现的TCP的属性和方法了?
      • 会有专门的开发人员对这些方法进行封装,就是在这些方法之上在套一个方法,而这个套的方法里面就会有一些列的校验和规则
      • 就一定不能直接调用系统的方法吗?
        • 也是可以的,但是容易出现各种各样问题。
    5. 这个套的方法是用什么实现的?
      • socket 就是实现TCP功能的类,每种程序设计语言应该都有自己实现的socket。
    6. 我们现在就可以使用编程语言 的Socket 去实现TCP规则了。
    7. 但我不是要实现HTTP协议吗?
      • 所以我们在实现HTTP的有连接的规则后,还需要在这基础之上再加上HTTP协议的一些特殊规则。
    8. 那什么是HTTP协议的特殊规则?
      • HTTP协议的特殊规则表现再 请求响应 的数据格式中。我们需要去解析这些数据格式里面的内容,这些内容又代表了什么。
        • 内容的意义,在HTTP协议文档中已经说明的非常清楚,这时就需要我们自己去实现这些规则。
      • 让我去完成特殊规则的编写比较麻烦,所以就出现了一些开发人员编写好以后发出来给我们使用代码,这些代码我们可以叫它web应用服务器。为什么这样叫了?
        • 因为web应用都是使用HTTP协议发送接收数据,而将HTTP协议实现的框架(代码) 就可以解析HTTP协议。这个框架给这些web应用提供HTTP协议解析的服务,所以这个框架就可以叫web应用服务器
    9. 如果使用Tomcat(框架)当web应用服务器。
      1. tomcat在接受到客户端发送的HTTP协议格式的数据,首先会对其内容解析,然后判断connection的值为keep-aliveclose
      2. tomcat里面会有一个while(one)循环,connection的值为keep-alive就会将one值设置为true,从而保证一直循环获取客户端发送的请求。
        1. 这里有个疑问服务端会一直获取客户端发送的数据吗?就是一直保持这个socket连接不断开。
          • 答案是:不会的服务端可以设置最大解释请求次数,例如:接受10次请求这个socket就会断开。
          • 还可以设置最大响应时间,就是客户端多长时间之内没有给服务端发送请求,服务器也会默认断开。
          • 默认断开就是将 one设置成false,给客户端发送connection:close响应头
      3. connection的值为keep-alive就会将one值设置为false,就会跳出循环,不在获取客户端请求。会关闭socket,然后再给客户端发送connection:close响应头,这个被浏览器解析后就知道了服务器关闭了连接。说明这个socket连接不能再次使用,下次发送请求需要从新创建个socket连接。

其中的tomcat我并没有去看过源代码,不清楚是怎么实现的我猜想是这样是这样实现的。欢迎大家指出其中错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/572659.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

钡铼IOy系列模块在无人值守智能仓库中的成功运用,提升仓储物流效率

随着科技的不断发展,无人值守智能仓库正成为现代物流行业的一个重要趋势。在这个快节奏的时代,提升仓储物流效率是企业追求的目标之一。钡铼IOy系列模块为无人值守智能仓库的成功运作提供了关键支持。本文将探讨钡铼IOy系列模块在无人值守智能仓库中的应…

子域名如何启用HTTPS,有免费泛域名SSL证书吗

如今HTTPS已经成为了网站标配,然而,对于一些刚刚起步的网站或是个人博客而言,如何自动跳转到HTTPS,以及免费SSL证书的获取,可能还是一个需要解决的问题。下面就来详细解答这两个问题。 我们需要明确HTTPS与SSL之间的关…

OpenAI 和 Moderna 合作,推进 mRNA 医学

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、关于 Moderna Moderna 是 mRNA 医学领域的佼佼者,其通过不断推动 mRNA 技术的发展,正在重塑药物的制造方式,并深刻地改变我们治疗和预防疾病的方法。凭借在科学、…

包装类简单认识泛型

文章目录 包装类基本数据类型和对应的包装类装箱和拆箱自动装箱和自动拆箱 什么是泛型引出泛型语法 泛型类的使用 包装类 在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基本类型,Java给每个基本类型都对应了一个包装类型…

骑砍2霸主MOD开发(6)-使用C#-Harmony修改本体游戏逻辑

一.C#-Harmony反射及动态注入 利用C#运行时环境的反射原理,实现对已加载DLL,未加载DLL中代码替换和前置后置插桩. C#依赖库下载地址:霸王•吕布 / CSharpHarmonyLib GitCodehttps://gitcode.net/qq_35829452/csharpharmonylib 根据实际运行.Net环境选择对应版本的0Harmony.dll…

为什么没有办法画圆角?

在AutoCAD里面画圆角不是单纯的在两条线之间点一下就好了, 主要要输入这个半径。

“浙大学报英文版”订阅号这篇文章,丢名校脸面

今天翻到“浙大学报英文版”订阅号分享的一篇文章,介绍了一篇奇文,该论文的摘要(Abstract)非常任性,仅有一个单词— “Yes”。 原文链接:https://mp.weixin.qq.com/s/riw_YU3caBf7E6rdCbLE-Q 该论文是由J. …

如何为Postgres数据库设置安全的访问控制和权限管理

文章目录 解决方案1. 使用角色和权限管理2. 配置认证方法3. 使用网络访问控制4. 定期审查和更新权限 示例代码1. 创建角色并分配权限2. 配置密码认证3. 配置网络访问控制 总结 PostgreSQL是一个功能强大的开源关系型数据库系统,提供了丰富的权限和访问控制机制&…

bit、进制、位、时钟(窗口)、OSI七层网络模型、协议、各种码

1.bit与进制 (个人理解,具体电路是非常复杂的) 物理层数据流,bit表示物理层数据传输单位, 一个电路当中,通过通断来表示数字1和0 两个电路要通讯,至少要两根线,一根作为电势参照…

C语言入门课程学习笔记2

C语言入门课程学习笔记2 第8课 - 四则运算与关系运算第9课 - 逻辑运算与位运算第10课 - 深度剖析位运算第11课 - 程序中的选择结构 本文学习自狄泰软件学院 唐佐林老师的 C语言入门课程,图片全部来源于课程PPT,仅用于个人学习记录 第8课 - 四则运算与关系…

Java | Leetcode Java题解之第48题旋转图像

题目&#xff1a; 题解&#xff1a; class Solution {public void rotate(int[][] matrix) {int n matrix.length;// 水平翻转for (int i 0; i < n / 2; i) {for (int j 0; j < n; j) {int temp matrix[i][j];matrix[i][j] matrix[n - i - 1][j];matrix[n - i - 1]…

【Camera KMD ISP SubSystem笔记】CAM SYNC与DRQ②

DRQ的作用&#xff1a; DRQ负责调度管理pipeline里的node处理逻辑(通过node之间的dependency依赖机制) 利用多线程并行处理Pipeline中并行的node&#xff0c;加快处理速度 DRQ运转流程&#xff1a; DRQ先告诉node fill dependency&#xff0c; 此时seq id 为0…

15.接口自动化学习-Mock(挡板/测试桩)

场景&#xff1a; 新需求还未开发时&#xff0c;使用mock提早介入测试&#xff0c;等后边开发后&#xff0c;进行调试 三方接口返回效率低&#xff0c;使用mock技术走通流程 1.mock方式 &#xff08;1&#xff09;如果会写django或flask,可以写简单对应的代码 &#xff08;…

小红书的影视剧泥土刷剧5天涨千粉7天接商单轻轻松松月入了万没脑子运送游戏玩法,新手也可以快速上手

大家好&#xff0c;今天我将为大家介绍一个项目&#xff1a;在小红书上通过观看和分享影视剧内容&#xff0c;五天涨千粉&#xff0c;七天接商业订单&#xff0c;轻松月入过万。这个项目的玩法简单易学&#xff0c;即使是新手也能快速上手。 下载 地 址 &#xff1a; laoa1.c…

【网络安全】系统0day分析

前言 起因看见通告&#xff0c;描述是通过/lfw/core/rpc接口访问到PortalSpecServiceImpl类中的createSkinFile方法。 补丁名称&#xff1a;patch_portal65_lfw任意文件上传漏洞 补丁编码&#xff1a;NCM_NC6.5_000_109902_20240301_GP_281362040 【386G《黑客&网络安全入…

基于STM32的蓝牙小车(虚拟串口模拟)的Proteus仿真

文章目录 一、前言二、仿真图1.要求2.思路3.画图3.1 电源部分3.2 超声波测距部分3.3 电机驱动部分3.4 按键部分3.5 蓝牙部分3.6 显示屏部分3.7 整体 4.仿真5.软件 三、总结 一、前言 proteus本身并不支持蓝牙仿真&#xff0c;这里我采用虚拟串口的方式来模拟蓝牙控制。 这里给…

医院敏感文件交互 如何保障安全和效率?

医院会产生大量的敏感文件&#xff0c;这些敏感文件交互时&#xff0c;都需要使用特殊的手段&#xff0c;来保障数据的安全性。 医院的敏感数据主要包括以下几类&#xff1a; 1、患者基本信息&#xff1a;包括患者的姓名、身份证号码、户籍地或现住址、联系方式、文化程度、既…

jar包做成Windows Service 服务,不能访问网络映射磁盘

在Windows操作系统中&#xff0c;系统服务&#xff08;Services&#xff09;、计划任务&#xff08;Scheduled Tasks&#xff09;以及很多系统调用都是以SYSTEM系统账号进行操作的。用 net use 挂载&#xff0c;或者在文件管理器上直接挂载&#xff0c;挂载卷是以 Administrato…

504网关超时可能是哪些原因导致

当前随时互联网的发展普及&#xff0c;我们经常会使用到网站服务&#xff0c;许多网站为了提高打开速度&#xff0c;都会接入使用CDN。当我们在浏览网页或使用网络服务时&#xff0c;有时候可能有遇到网站打不开的情况&#xff0c;出现各式各样的错误代码&#xff0c;其中504网…
最新文章