HTTP的长链接和短链接说明

简介: HTTP的长链接和短链接说明

HTTP的长链接和短链接实际上是TCP的长连接和短链接。首先我们先介绍一下TCP/IP协议组四层模型。其中包括以下:


应用层:HTTP、FTP、DNS、TELNET等协议

传输层:TCP、UDP

网络层:IP、ARP、RARP、ICMP协议等

网络接口层:是TCP/IP协议的基层,负责数据帧的发送和接收。


接下来我们说下常见的几个协议的作用:


HTTP:HTTP协议无状态指的是对事物处理没有记忆能力。也就是说打开一个服务器的网页和上次打开这个网页之间没有任何联系。


IP协议:负责解决网路路由和寻址问题


TCP:解决如何在IP层之上可靠的传递数据包。并且顺序和发送顺序一致,不丢包。TCP协议是可靠的、面相连接的。


UDP:与TCP是对应,是面相非连接的协议,只负责把数据包传过去。数据量小、可靠性不高,可能会掉包。我们经常使用的ping命令就是发送UDP数据包。


好了好了,进入正题,开始说长链接和短链接。


短连接


在HTTP/1.0中默认是使用短连接,客户端每进行一次http请求就建立一次连接,任务结束连接就中断(双方都可以发起close,一般是客户端发起),比如访问一个网页或者其他web资源(img、css、js等),每遇到一个web资源就要建立一次连接。


优缺点:


因为每次通信都需要建立TCP连接,连接的建立都需要三次握手,而释放需要四次握手。所以会浪费时间和带宽。但是优点就是对于服务端来讲,不要进行额外的控制,每条连接都是有用的。


长连接


从HTTP/1.1开始默认使用长连接。使用长连接的HTTP协议会在响应头加入Connection: keep-alive。当打开一个网页客户端和服务端建立的TCP连接不会关闭。当再次访问服务器时还会使用这个连接。但是这个状态不会永久保持连接,可以在不同的服务器软件(Apache)上设置。


优缺点:


减少了TCP的建立和关闭,减少浪费、节约时间。对于频繁请求适合使用长连接,但是缺点就是随着用户的增多,服务器会扛不住的。所以需要采取一些策略:如关闭长时间没有读写操作的连接。


应用


web网站的http服务一般都是短连接。


保活功能扩展:


如果客户端已经消失但是连接没有断开,服务器会保留一个半开放的连接,而服务器又在等待客户端的数据,此时服务端将会永远等待。保活功能会试图检测半开放状态。如果一个连接2个小时没有任何动作,服务端会发送一个试探报文,根据客户端响应的4个客户端状态进行判断。


客户端机正常运行,且服务器可达,此时TCP响应正常,服务器将保活定时器复位。


客户机已经奔溃,并且关闭或者重新启动。服务端无法收到响应。服务端每隔75秒发一次,一共发10次,若没有收到一个响应,则认为客户端已经关闭并且终止连接。


客户端奔溃并已经重新启动,服务端将收到一个对其保活探测的响应,这个响应是一个复位,使得服务器终止这个连接。


客户机正常运行,但是服务器不可达。这种情况与第二种类似。

相关文章
|
3月前
|
SQL 分布式计算 算法
【python】python指南(三):使用正则表达式re提取文本中的http链接
【python】python指南(三):使用正则表达式re提取文本中的http链接
32 0
|
5月前
|
资源调度 分布式计算 Hadoop
实时计算 Flink版产品使用问题之yarn session模式中启动的任务链接是http IP,想把IP映射为主机hadoop,该怎么操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
Windows
iis配置http重定向302转发get请求并去掉最后的斜杠/ iis重定向 iis去除url最后的斜杠 iis重定向链接斜杠(已解决)
iis配置http重定向302转发get请求并去掉最后的斜杠/ iis重定向 iis去除url最后的斜杠 iis重定向链接斜杠(已解决)
158 0
|
Web App开发 网络协议
Web协议详解与抓包实战-HTTP协议之长链接和短连接
Web协议详解与抓包实战-HTTP协议之长链接和短连接
303 4
|
前端开发
常见的 HTTP 状态码 + 猫图链接
常见的 HTTP 状态码 + 猫图链接
193 0
常见的 HTTP 状态码 + 猫图链接
|
SQL 关系型数据库 MySQL
Navicat使用HTTP通道连接MySQL(远程mysql3306端口关闭或者只允许localhost链接状态)...
Navicat使用HTTP通道连接MySQL(远程mysql3306端口关闭或者只允许localhost链接状态)...
4006 0
Navicat使用HTTP通道连接MySQL(远程mysql3306端口关闭或者只允许localhost链接状态)...
|
JSON PHP 数据格式
PHP中json传递请求字符串网址函数http_build_query()与parse_str(),将POST参数组转换拼接成GET请求链接
PHP中json传递请求字符串网址函数http_build_query()与parse_str(),将POST参数组转换拼接成GET请求链接
137 0
|
Web App开发 安全
Google Chrom版本升级后站内下载http链接的资源弹窗一闪不下载的问题
Google Chrom版本升级后站内下载http链接的资源弹窗一闪不下载的问题
259 0
《http访问链接获取信息下载音频》
《http访问链接获取信息下载音频》
《http访问链接获取信息下载音频》
|
网络协议 安全 Cloud Native
深入 HTTP/3(一)|从 QUIC 链接的建立与关闭看协议的演进
一个协议的性能优秀与否,除了本身的设计之外,也离不开大量的软硬件优化,架构落地,专项设计等工程实践经验,所以本系列除了会针对 HTTP/3 本身特性进行分享之外,也会针对 HTTP/3 在蚂蚁落地的方案进行分享。
深入 HTTP/3(一)|从 QUIC 链接的建立与关闭看协议的演进

热门文章

最新文章