一·长连接
http长连接是指http的请求头和响应头的均有connection: keep-alive的请求,
也就是客户端和服务端均为keep-alive的请求.
实际上,http是请求/响应式的,无长短之分,长连接实际上是指TCP的连接为长连接。
如此,多个http请求就可以复用一个TCP连接,减少了了TCP连接建立和断开的消耗。
http的长连接是从http1.1开始的,http1.0没有keep-alive这个设置。
长连接相应字段
connection:keep-alive 请求为长连接
timeout:30 TCP连接超时时间,超时后会断开连接
max:5 TCP连接被http请求最大复用次数,每有一个http请求用它,max会减1,直至max为0,强制断开连接
二·短连接
短连接是指三次握手建立连接之后,client向server发送消息,然后server回复client消息,一次读写操作完成之后,发起断开连接请求。一般情况下,close动作是由client发起的。
短连接多用于操作频繁,点对点的通讯,而且连接数不能太多的情况。每个TCP连接的建立都需要三次握手,每个TCP连接的断开要四次握手。
如果每次操作都要建立连接然后再操作的话处理速度会降低,所以每次操作后,下次操作时直接发送数据就可以了,不用再建立TCP连接。例如:数据库的连接用长连接,如果用短连接频繁的通信会造成socket错误,频繁的socket创建也是对资源的浪费。
三·总结
长连接与短连接的不同主要在于client和server采取的关闭策略不同。短连接在建立连接以后只进行一次数据传输就关闭连接,而长连接在建立连接以后会进行多次数据数据传输直至关闭连接(长连接中关闭连接通过Connection:closed头部字段)。
二者关闭策略的不同,就产生了长连接的优点:
- 通过开启、关闭更少的TCP连接,节约CPU时间和内存
- 通过减少TCP开启引起的包的数目,降低网络阻塞。
二者所应用的具体场景不同。短连接多用于操作频繁、点对点的通讯,且连接数不能太多的情况。数据库的连接则采用长连接。