长连接

HTTP协议

為{幸葍}努か 提交于 2020-02-04 19:18:06
http 长 连接与短连接 HTTP 协议与 TCP/IP 协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。 如何理解 HTTP 协议是无状态的 HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。 什么是长连接、短连接? 在 HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。 但从 HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码:Connection

网络面试:HTTP1.0,HTTP1.1和HTTP2.0的区别

青春壹個敷衍的年華 提交于 2020-02-04 09:57:41
HTTP1.1在HTTP1.0基础上的改进 1. 长连接 HTTP 1.0需要使用keep-alive参数来建立一个长连接,而HTTP1.1默认支持长连接 长连接的好处:一个网页上可能有多个资源对象,长连接可以通过一个连接传输网页上的所有对象,而短连接每次连接只能传输一个对象,也就是一个网页的内容需要传输多次 2. 缓存 HTTP1.0缓存的资源对象到了一定时间之后会失效,不能再次使用;而HTTP1.1缓存的资源对象失效后还能与源服务器进行重新激活。 3. 带宽使用 HTTP/1.0一次只能请求一整个资源对象,而HTTP/1.1可以请求一个资源对象的一部分,因此在不需要得到整个资源对象时,可节约带宽,而且支持断点续传 4. Host域 由于一台物理服务器上可以存在多个虚拟主机,并且它们共享一个IP地址,因此HTTP1.1在HTTP1.0的基础上加了改进,加了一个Host域,用于指定共享同一个IP地址中的某一台主机,而HTTP1.0则默认一个IP地址只能属于一台主机,没有Host域 HTTP2.0在HTTP1.1基础上的改进 1. 多路复用 HTTP2.0同一个连接可以并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级,这意味着减少了建立连接所需要的开销 2. 数据压缩 HTTP的请求和响应包括三个部分,即状态行,头部信息,消息主体。HTTP1

计算机网络高频面试题解析(含书籍推荐)

三世轮回 提交于 2020-02-03 21:14:18
网络原理是工程师的必须了解的计算机基础知识,先推荐下两本好书,《图解HTTP》和《图解TCP/IP》。 《图解TCP/IP》讲解网络基础知识、TCP/IP基础知识、数据链路、IP协议、IP协议相关技术、TCP与UDP、路由协议、应用协议、网络安全等内容,《图解HTTP》对HTTP协议进行了全面系统的介绍,这两本书的特点都是在讲解的同时,配上了大量漫画通信图例,读起来比较轻松。 高频面试题解析 1、OSI七层网络模型的结构与功能 OSI是一个开放性的通信系统互连参考模型,OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。 OSI是一个定义得非常好的协议规范,但是比较复杂所以一般使用TCP/IP 的四层模型来描述。 就目前来说,TCP/IP 的四层模型更受广泛认可,在计算机网络中,大家更多喜欢使用 TCP/IP 模型来进行划分和理解。因为表示层、会话层以及应用层之间的界限在实际应用中并不清晰,让人不好区分。 2、TCP/IP四层协议有哪些结构与功能 TCP/IP 参考模型是一个包含了不同网络层次的一系列网络协议的集合。一般 TCP/IP 参考考模型分为四层,从下到上分别是,数据链路层、网络层、传输层和应用层。 也有将它分为五层的,也就是加上物理层,不过对于大部分的计算机网络应用,软件工程师一般都是不关心物理层。 应用层提供了不同应用数据包的处理协议

HTTP

こ雲淡風輕ζ 提交于 2020-02-02 23:43:40
http web服务,是目前最重要的服务应用 平台 LNMP HTTP服务程序 Linux: Apache Nginx LAMP LNMP Windows: IIS 从Linux平台移植的Apache,Nginx HTTP协议,超文本传输协议,Hyper Text Transfer Protocol 1.什么是超文本? 包含有超链接(Link)和各种多媒体元素标记的文本.这些超文本文件彼此链接,形成网状(Web),因此又被称为网页( Web Page)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。 2.什么是URL,统一资源定位符 一般首页,都会使用index.html index.php index.jsp 3.超文本传输http协议是什么? 是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能 http工作原理 1.用户通过浏览器输入URL,http://www.oldboyedu.com 2.DNS解析将域名解析为IP 3.用户通过IP和web服务器建立TCP连接 4.通过HTTP发送请求 5.服务器解析请求,响应报文 6.浏览器收到响应报文,将代码解析成我们能看懂的页面 7.TCP断开 http的短连接:建立一次tcp的连接,发起一次http的请求,结束,tcp断开。 http的长连接

前端需要了解的http知识

谁说我不能喝 提交于 2020-02-02 05:07:13
一、五层协议 1. OSI(Open System Interconnection 开放式系统互联)七层协议 1)应用层 2)表示层 3)会话层 4)传输层 5)网络层 6)数据链接层 7)物理层 2. TCP/IP四层网络协议 (Transmission Control Protocol 传输控制协议) 1)应用层 2)运输层 3)网络层 4)网络接口层 3. 折中后的五层协议 1)应用层(dns,http) DNS解析成IP并发送http请求 2)传输层(tcp,udp) 建立tcp连接(三次握手) 3)网络层(IP,ARP) IP寻址 4)数据链路层(PPP) 封装成帧 5)物理层(利用物理介质传输比特流) 物理传输(然后传输的时候通过双绞线,电磁波等各种介质) 简括: 从应用层的发送http请求,到传输层通过三次握手建立tcp/ip连接,再到网络层的ip寻址,再到数据链路层的封装成帧,最后到物理层的利用物理介质传输。 二、HTTP状态码 1XX 用于指定客户端相应的某些动作 2XX 用于表示成功 3XX 用于已经移动的文件并且被包含在定位头信息中指定心的地址信息(重定向,为了完成请求,必须进一步执行的动作) 4XX 用于指出客户端错误 5XX 用于支持服务器错误 100 继续;101 分组交换协议 200 ok;201 被创建;202 被采纳;203 非授权信息;204

轮询、长轮询、长连接、socket连接、WebSocket

六月ゝ 毕业季﹏ 提交于 2020-01-30 02:37:20
轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。   优点:后端程序编写比较容易。   缺点:请求中有大半是无用,浪费带宽和服务器资源。(而每一次的 HTTP 请求和应答都带有完整的 HTTP 头信息,这就增加了每次传输的数据量)   实例:适于小型应用。 长轮询:客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接(或到了设定的超时时间关闭连接),客户端处理完响应信息后再向服务器发送新的请求。   优点:在无消息的情况下不会频繁的请求,节省了网络流量,解决了服务端一直疲于接受请求的窘境   缺点:服务器hold连接会消耗资源,需要同时维护多个线程,服务器所能承载的TCP连接数是有上限的,这种轮询很容易把连接数顶满。   实例:WebQQ、Hi网页版、Facebook IM。 长连接:在页面里嵌入一个隐蔵iframe,将这个隐蔵iframe的src属性设为对一个长连接的请求,服务器端就能源源不断地往客户端输入数据。   优点:消息即时到达,不发无用请求。   缺点:服务器维护一个长连接会增加开销。   实例:Gmail聊天 Flash Socket:在页面中内嵌入一个使用了Socket类的 Flash

轮询、长轮询、长连接、socket连接、WebSocket

拟墨画扇 提交于 2020-01-30 02:35:08
轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。   优点:后端程序编写比较容易。   缺点:请求中有大半是无用,浪费带宽和服务器资源。(而每一次的 HTTP 请求和应答都带有完整的 HTTP 头信息,这就增加了每次传输的数据量)   实例:适于小型应用。 长轮询:客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接(或到了设定的超时时间关闭连接),客户端处理完响应信息后再向服务器发送新的请求。   优点:在无消息的情况下不会频繁的请求,节省了网络流量,解决了服务端一直疲于接受请求的窘境   缺点:服务器hold连接会消耗资源,需要同时维护多个线程,服务器所能承载的TCP连接数是有上限的,这种轮询很容易把连接数顶满。   实例:WebQQ、Hi网页版、Facebook IM。 长连接:在页面里嵌入一个隐蔵iframe,将这个隐蔵iframe的src属性设为对一个长连接的请求,服务器端就能源源不断地往客户端输入数据。   优点:消息即时到达,不发无用请求。   缺点:服务器维护一个长连接会增加开销。   实例:Gmail聊天 Flash Socket:在页面中内嵌入一个使用了Socket类的 Flash

TCP的长连接与短连接

最后都变了- 提交于 2020-01-30 02:30:57
1. TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server(服务器)与client(客户端)之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的 2. TCP短连接 我们模拟一下TCP短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起close操作。为什么呢,一般的server不会回复完client后立即关闭连接的,当然不排除有特殊的情况。从上面的描述看,短连接一般只会在client/server间传递一次读写操作 短连接的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段 连接->传输数据->关闭连接 HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。 也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。 3.TCP长连接 接下来我们再模拟一下长连接的情况,client向server发起连接,server接受client连接,双方建立连接

phpredis 长连接实现原理

对着背影说爱祢 提交于 2020-01-29 01:14:13
1.长连接的概念理解 长连接其实就是建立了一次连接 然后中间redis的命令都能一直使用,每次使用都不需要重新建立一个连接,这样可以减少建redis连接时间。redis的长连接的生命周期是一个php-fpm进程的时间。再php-fpm这个进程没有关闭之前,这个长连接都是有效的。直观的查看方式就是连续调用两次$redis->connect();和 $redis->pconnect(); 第一个返回的两次的资源id是不一样的,第二个长连接的方式是一样的。 2.长连接的使用 长连接使用其实很简单,直接用pconnect的函数就表示长连接的了。 在传统的网络通信中,普通的交互流程中,客户端发起连接请求,三次握手与服务端建立连接,等客户端做完对应的工作后,会主动关闭连接。 还有一种是客户端建立起连接,做完对应的工作后,不会主动关闭连接,这样就形成了长连接。 这种长连接应用于phpredis与redis服务端,但是由于一般都是在FPM-CGI模式下,每次请求的过程后,如果不保存已建立的连接资源的话,就不能让下次请求复用这个长连接,否则还是每个请求都需要重新建立连接。 下面是一张PHP FPM模式下生命周期图,在FPM模式下,每个CGI进程,PHP的各个模块(包括第三方扩展模块)模块初始化都只会加载一次,并且常驻内存,而请求初始化,是每次请求都会执行一次。 所以在FPM

Http 长连接 队头阻塞 性能优化

♀尐吖头ヾ 提交于 2020-01-28 23:55:32
1.短连接及长连接 早期的 HTTP 协议也被称为是“无连接”的协议。不会与服务器保持长期的连接状态,所以也称为短连接。 到Http1.1就出现了长连接的通信方式,也叫“持久连接”(persistent connections)、“连接保活”(keep alive)、“连接复用”(connection reuse)。 短连接以及长连接都可以用下图很好的解释 其实蛮好理解,短连接就是http每一次 请求-应答 前 都要建立连接,然后断开连接,想要再次 连接-应答 就要再次建立连接 长连接就是客户端不让你断开连接,你就一直连着不断开。 不管客户端是否显式要求长连接,如果服务器支持长连接,它总会在响应报文里放一个“ Connection: keep-alive ”字段,告诉客户端支持长连接。 因为 TCP 连接长时间不关闭,服务器必须在内存里保存它的状态,这就占用了服务器的资源。如果有大量的空闲长连接只连不发,就会很快耗尽服务器的资源,导致服务器无法为真正有需要的用户提供服务。所以,长连接也需要在恰当的时间关闭,不能永远保持与服务器的连接,这在客户端或者服务器都可以做到。 客户端在请求头里加上“Connection: close”字段,告诉服务器:“这次通信后就关闭连接”。服务器看到这个字段,就知道客户端要主动关闭连接,于是在响应报文里也加上这个字段,发送之后就调用 Socket API