短连接的意义:
1.节省资源,每一个TCP/UDP的链接都会消耗一定的系统资源, 链接如果一直不断开,最终会消耗掉所有的资源,所以必须释放掉。
2.另外释放掉能保护后端的资源,如果攻击者通过空链接,链接到服务器上,如果服务器没有做合适策略会因为链接数过多而无法提供服务。
长连接
1.TCP 层的三次握手不是请求,而是建立连接的过程,是没有数据传输的,请求是对应应用层而言的,比如说客户机发送一个http请求这样
2.链接建立之后,如果应用程序或者上层协议一直不发送数据,或者隔很长时间才发送一次数据,当链接很久没有数据报文传输时如何去确定对方还在线,到底是掉线了还是确实没有数据传输,链接还需不需要保持,这种情况在TCP协议设计中是需要考虑到的。TCP协议通过一种巧妙的方式去解决这个问题,当超过一段时间之后,TCP自动发送一个数据为空的报文给对方,如果对方回应了这个报文,说明对方还在线,链接可以继续保持,如果对方没有报文返回,并且重试了多次之后则认为链接丢失,没有必要保持链接。
3.具体来说就说一个连接在2小时内没有任何动作,服务器就向客户机发送一个探测报文,对于客户机:
(1)正常运行,并从服务器可达,TCP响应正常,保活定时器复位(再次获得2小时)
(2)客户机崩溃,关闭或者正在重启,TCP无响应,75秒后超时,服务器稍后发送9个探测报文(共计10个),间隔都为75秒。TCP都没有响应,认为客户机已经关闭连接
(3)客户机崩
1.节省资源,每一个TCP/UDP的链接都会消耗一定的系统资源, 链接如果一直不断开,最终会消耗掉所有的资源,所以必须释放掉。
2.另外释放掉能保护后端的资源,如果攻击者通过空链接,链接到服务器上,如果服务器没有做合适策略会因为链接数过多而无法提供服务。
长连接
1.TCP 层的三次握手不是请求,而是建立连接的过程,是没有数据传输的,请求是对应应用层而言的,比如说客户机发送一个http请求这样
2.链接建立之后,如果应用程序或者上层协议一直不发送数据,或者隔很长时间才发送一次数据,当链接很久没有数据报文传输时如何去确定对方还在线,到底是掉线了还是确实没有数据传输,链接还需不需要保持,这种情况在TCP协议设计中是需要考虑到的。TCP协议通过一种巧妙的方式去解决这个问题,当超过一段时间之后,TCP自动发送一个数据为空的报文给对方,如果对方回应了这个报文,说明对方还在线,链接可以继续保持,如果对方没有报文返回,并且重试了多次之后则认为链接丢失,没有必要保持链接。
3.具体来说就说一个连接在2小时内没有任何动作,服务器就向客户机发送一个探测报文,对于客户机:
(1)正常运行,并从服务器可达,TCP响应正常,保活定时器复位(再次获得2小时)
(2)客户机崩溃,关闭或者正在重启,TCP无响应,75秒后超时,服务器稍后发送9个探测报文(共计10个),间隔都为75秒。TCP都没有响应,认为客户机已经关闭连接
(3)客户机崩