您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

HTTP长连接是啥?底层是如何工作的?Tomcat是如何实现长连接的?

时间:2020-08-20 15:17:57  来源:  作者:

要明白HTTP长连接,得先明白Socket连接什么是Socket?百度一下,根本看不懂要理解Socket,得先理解TCP

 

TCP是传输层协议,有linuxwindows等操作系统实现

Socket是对TCP协议抽象出来的上层接口,供操作系统上层的应用程序使用上层应用程序来使用socket,比如Tomcat、比如浏览器

浏览器在发送一个请求时,先得建立一个Socket,比如:

Socket socket = new Socket("localhost", 8081);

建立完Socket连接之后,浏览器开始构造数据,通过OutputStream发送出去。

这里涉及到Socket服务端的几个问题。

如果服务端Socket没有使用InputSteam来接收数据,那么数据存在哪了。

对于服务端Socket,有一个recvbuf来存储数据

所以JAVA中,在利用InputSteam去read数据时,是从recvbuf来读取数据的,演示一下read方法:

  1. 如果没有使用read会怎么样
  2. 如果使用了read,那么read方法的返回值表示什么意思?

当从recvbuf得到的数据是字节,所以需要去解析数据。

 

比如Tomcat从Socket得到数据之后,就需要解析数据,那么怎么解析呢?

解析数据,解析请求行,请求头解析完数据之后,接下来该如何?

这里就是所谓的长连接和短连接。

比如Tomcat解析完某个HTTP请求,并调用了Servlet之后,就会判断是否需要关闭Socket。

那该如何判断呢?

  1. 判断请求头Connnection,如果是close则关闭socket,如果是keep-alive,则不关闭
  2. 判断keepAliveTimeout、maxConnections、maxKeepAliveRequests

maxKeepAliveRequests:一个socket连接所能处理的request个数,达到了上限则关闭,默认为100keepAliveTimeout:Tomcat会不停的从socket中读取数据,如果在指定的keepAliveTimeout时间内没有读到数据,则关闭该socket,默认为20smaxConnections:Tomcat的并发控制,同时只支持maxConnections个socket,bio默认为200.



Tags:HTTP长连接   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
要明白HTTP长连接,得先明白Socket连接什么是Socket?百度一下,根本看不懂要理解Socket,得先理解TCP TCP是传输层协议,有Linux、Windows等操作系统实现Socket是对TCP协议抽象出来的...【详细内容】
2020-08-20  Tags: HTTP长连接  点击:(127)  评论:(0)  加入收藏
▌简易百科推荐
HTTP 报文是在应用程序之间发送的数据块,这些数据块将通过以文本形式的元信息开头,用于 HTTP 协议交互。请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应...【详细内容】
2021-12-27  程序员蛋蛋    Tags:HTTP 报文   点击:(1)  评论:(0)  加入收藏
一 网络概念:1.带宽: 标识网卡的最大传输速率,单位为 b/s,比如 1Gbps,10Gbps,相当于马路多宽2.吞吐量: 单位时间内传输数据量大小单位为 b/s 或 B/s ,吞吐量/带宽,就是网络的使用率...【详细内容】
2021-12-27  码农世界    Tags:网络   点击:(2)  评论:(0)  加入收藏
1.TCP/IP 网络模型有几层?分别有什么用? TCP/IP网络模型总共有五层 1.应用层:我们能接触到的就是应用层了,手机,电脑这些这些设备都属于应用层。 2.传输层:就是为应用层提供网络...【详细内容】
2021-12-22  憨猪哥08    Tags:TCP/IP   点击:(29)  评论:(0)  加入收藏
TCP握手的时候维护的队列 半连接队列(SYN队列) 全连接队列(accepted队列)半连接队列是什么?服务器收到客户端SYN数据包后,Linux内核会把该连接存储到半连接队列中,并响应SYN+ACK报...【详细内容】
2021-12-21  DifferentJava    Tags:TCP   点击:(9)  评论:(0)  加入收藏
你好,这里是科技前哨。 随着“元宇宙”概念的爆火,下一代互联网即将到来,也成了互联网前沿热议的话题,12月9日美国众议院的听证会上,共和党议员Patrick McHenry甚至宣称,要调整现...【详细内容】
2021-12-17  王煜全    Tags:Web3   点击:(14)  评论:(0)  加入收藏
一、demopublic static void main(String[] args) throws Exception { RetryPolicy retryPolicy = new ExponentialBackoffRetry( 1000, 3);...【详细内容】
2021-12-15  程序员阿龙    Tags:Curator   点击:(20)  评论:(0)  加入收藏
一、计算机网络概述 1.1 计算机网络的分类按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);按照网络使用者:公用网络、专用网络。1.2 计算机网络的层次结构 TCP/IP四层模...【详细内容】
2021-12-14  一口Linux    Tags:网络知识   点击:(30)  评论:(0)  加入收藏
无论是在外面还是在家里,许多人都习惯了用手机连接 WiFi 进行上网。不知道大家有没有遇到过这样一种情况, 明明已经显示成功连接 WiFi,却仍然提示“网络不可用”或“不可上网”...【详细内容】
2021-12-14  UGREEN绿联    Tags:WiFi   点击:(25)  评论:(0)  加入收藏
拉了千兆宽带,买了标称 1300Mbps 的无线路由器,为什么 WiFi 还是跑不满千兆?要回答这个问题,我们先得知道这个 1300Mbps 是怎么来的。开始回答之前先说明一下,这期只讲 802.11ac,...【详细内容】
2021-12-14  Ubiquiti优倍快    Tags:WiFi   点击:(90)  评论:(0)  加入收藏
问题背景IPv6环境下,在浏览器中通过http://[vip:port]访问web业务,提示无法访问此网站,[vip]的响应时间过长。分析过程之前碰到过多次在PC浏览器上无法访问vip的情况,排查方法也...【详细内容】
2021-12-13  云原生知识星球    Tags:网络问题   点击:(27)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条