首页 > 其他分享 >HTTP 长连接、短链接

HTTP 长连接、短链接

时间:2024-06-02 20:10:22浏览次数:13  
标签:协议 HTTP TCP 连接 server 链接 客户端

https://www.cnblogs.com/RebeccaG/p/12091939.html

1、HTTP协议和TCP/IP协议的关系

  HTTP的长连接、短连接本质上是TCP长连接和短连接。

  HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。

   IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠地传递数据包,使得网络上接收端收到发送端所发出的所有包,并且顺序与发送顺序一致。

 

2、HTTP协议是无状态的

  协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和上一次打开这个服务器上的网页之间没有任何联系。

  HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。

 

3、长连接、短连接

  在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。

  当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。

  而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:

Connection:keep-alive

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

  Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。

 

4、长连接、短连接的优缺点

  长连接优缺点:

  长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户来说,较适用长连接。

  不过这里存在一个问题,存活功能的探测周期太长,还有就是它只是探测TCP连接的存活,属于比较斯文的做法,遇到恶意的连接时,保活功能就不够使了。

  在长连接的应用场景下,client端一般不会主动关闭它们之间的连接,Client与server之间的连接如果一直不关闭的话,会存在一个问题,随着客户端连接越来越多,server早晚有扛不住的时候。

  这时候server端需要采取一些策略,如关闭一些长时间没有读写事件发生的连接,这样可以避免一些恶意连接导致server端服务受损;如果条件再允许就可以以客户端机器为颗粒度,限制每个客户端的最大长连接数,这样可以完全避免某个蛋疼的客户端连累后端服务。

  短连接优缺点:

  短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。但如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽

标签:协议,HTTP,TCP,连接,server,链接,客户端
From: https://www.cnblogs.com/maidongdong/p/18227544

相关文章

  • fastapi 实现HTTP访问
    1.概述在使用python时,我如何发布一个接口给外部访问,python有FASTAPI和uvicorn实现,fastapi是定义api接口,uvicorn运行服务器。2.安装依赖pipinstallfastapipipinstallpydanticpipinstalluvicorn3.定义接口3.1快速上手fromfastapiimportFastAPI,Body,......
  • 如何在Spring Boot中配置MySQL数据库连接数
    1.如何在SpringBoot中配置MySQL数据库的连接数1.1主要配置在SpringBoot中配置MySQL数据库连接数通常涉及到两个主要的配置:(1)数据源配置:这通常是在application.properties或application.yml文件中完成的,用于设置数据源的基本参数,如URL、用户名、密码等。(2)连接池配置:SpringBoo......
  • 内网渗透-在HTTP协议层面绕过WAF
    进入正题,随着安全意思增强,各企业对自己的网站也更加注重安全性。但很多web应用因为老旧,或贪图方便想以最小代价保证应用安全,就只仅仅给服务器安装waf。本次从协议层面绕过waf实验用sql注入演示,但不限于实际应用时测试sql注入(命令执行,代码执行,文件上传等测试都通用)。原理先给......
  • SSH远程连接Linux服务器
    1.1SSH(SecureShell)是一种网络协议,用于加密方式远程登录到服务器。以下是通过SSH连接Linux服务器的基本步骤:安装SSH客户端:Windows10及以上版本自带了OpenSSH客户端安装SSH服务端:在服务器端安装OpenSSH,需要在服务器终端进行。#安装sshsudoaptinstallopenssh-server......
  • 编译和链接
    目录1.翻译环境和运行环境2.翻译环境:预编译+编译+汇编+链接2.1翻译环境2.2预处理(预编译)2.3编译2.3.1词法分析2.3.2语法分析2.3.3语义分析2.4汇编2.5链接3.运行环境1.翻译环境和运行环境在ANSIC的任何⼀种实现中,存在两个不同的环境。第1种是翻译环......
  • 前端使用 Konva 实现可视化设计器(12)- 连接线 - 直线
    这一章实现的连接线,目前仅支持直线连接,为了能够不影响原有的其它功能,尝试了2、3个实现思路,最终实测这个实现方式目前来说最为合适了。请大家动动小手,给我一个免费的Star吧~大家如果发现了Bug,欢迎来提Issue哟~github源码gitee源码示例地址相关定义连接点记录了......
  • 使用Python连接到SQLite3数据库进行数据更新和删除
    SQLite3是一种轻量级的嵌入式关系型数据库管理系统,广泛应用于移动应用、嵌入式设备以及小型Web应用等场景。Python内置了对SQLite3数据库的支持,通过sqlite3模块,可以方便地连接、操作SQLite3数据库。在本文中,我们将学习如何使用Python连接到SQLite3数据库,并进行数据更新和删......
  • SSH批量连接改密码
    改ip范围#-*-coding:gbk-*-importparamikoimportsysname=sys.argv[1]passwd=sys.argv[2]new_passwd=sys.argv[3]ip_list=[]foriinrange(1,255):#[1,254]ip_list.append(f"192.168.1.{i}")foripinip_list:try:......
  • arturia minilab mk2 midi键盘 连接 flstudio (其他型号也是适用)
    小白学编曲,买了一个二手midi键盘作为入门,刚到的时候一头雾水,摸索了一阵子之后明白如何使用了。这个方法可以根据自己的喜好来随意配置midi键盘与水果的交互软件准备flstudio21(其他版本也类似)midicontrolcenterarturia的官网就可以下到https://www.arturia.com/support/......
  • [转帖]在Linux上查看活跃线程数与连接数
     https://www.cnblogs.com/xibuhaohao/p/11413669.html 原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明。简介现如今,有两种常见的软件资源几乎成了Java后端程序的标配,即线程池与连接池,但这些池化资源非常的重要,一旦不够用了,就会导致程序阻塞、性能......