长连接和短连接
网络模型分为了TCP/IP四层模型及ISO七层模型,当前大家用的都是基于TCP/IP来划分的。
长连接和短连接是描述传输层协议的,依据是否进行会话保持分为了长连接和短连接。
网络模型
TCP/IP的四层模型
应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
传输层:TCP,UDP
网络层:IP,ICMP,OSPF,EIGRP,IGMP
数据链路层:SLIP,CSLIP,PPP,MTU
ISO的七层模型
应用层:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
表示层:JPEG、ASCll、EBCDIC、加密格式等
会话层:对应主机进程,指本地主机与远程主机正在进行的会话
传输层:TCP UDP,数据包一旦离开网卡即进入网络传输层
网络层:ICMP IGMP IP(IPV4 IPV6)
数据链路层:建立逻辑连接、进行硬件地址寻址、差错校验
物理层:建立、维护、断开物理连接
传输层常用的协议为TCP和UDP,TCP协议用于一般的请求响应,UDP用于即时通讯,如:视频、音频、通话信号的传输。
TCP协议
TCP 3次握手
TCP 4次挥手
长连接和短连接都是基于TCP协议,在具体的应用层协议中再进行具体的实现。
长连接
指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。
优点
- 减少网络的堵塞,一次连接多次发送
- 减少CPU及内存的使用,建立及关闭连接资源开销少
- 减少请求响应时间,不需要每次都建立连接
缺点
- 一直保持连接,如果空闲也需要发送探测来保持会话,可能会损害服务器的整体性能
- 随着客户端的增多,服务器资源将被吃满
适用场景:
- 长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况
如:数据库,银联业务,QQ等即时通讯
短连接
是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。
优点:
- 不需要长期占用通道,对于业务频率不高的场合,能节省通道的使用。
缺点:
- 需要在每次发送业务时,都要建立一次连接,连接建立的过程开销大。
适用场景:
- 普通的http服务及socket服务一般都用短链接,数据刷新频度较低的场景
如:web网站,单次业务请求
socket实现长连接和短连接
HTTP实现长连接和短连接
在HTTP/1.0中默认使用短连接
客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话
从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:
Connection:keep-alive
使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接
Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。