肯定是TCP协议,应用层的协议也都以此为基础。Http也支持长连接,但是Http只是应用层协议,传输层依然是TCP,优点是节省建立连接和关闭连接的开销,缺点是要一直维护这个连接,我们常说的长连接,通常是指传输层的使用TCP协议经过三次握手建立的连接。
1、长连接的实质是什么?用什么协议比较好?如何优化?
谢邀~常年做Java开发,对网络编程也有一定的了解,下面我分享一下自己的看法;如果认识有不对的地方,请大家留言指正。长连接、短连接的定义长连接:建立好连接后,不关闭连接,一直保持通讯状态,当后续再有数据需要传输的时候,就已经建立好的连接即可,优点是节省建立连接和关闭连接的开销,缺点是要一直维护这个连接。
短连接:每次数据传输的时候,都需要建立一个新的连接,数据传输完就关闭连接,长连接的实质/实现长连接的实质,我也在考虑怎么说比较合适,题主问题中的描述,我觉得叫做长连接的实现比较合适(Socket本质是编程接口API,对TCP/IP的封装,它本身不是协议)。理解这个问题,首要要了解下TCP/IP模型,我们主要看传输层和应用层,
传输层包含我们最常见的:TCP、UDP。应用层常见的:Http、Https、SMTP、FTP等等,很多,Socket和TCP/IP没啥实质关系,它就是对TCP/IP进行了抽象和封装,形成了函数接口,程序员使用起来很方便。我们常说的长连接,通常是指传输层的使用TCP协议经过三次握手建立的连接,心跳是保持长连接的手段,在TCP中,就是KeepAlive机制。
长连接使用什么协议?肯定是TCP协议,应用层的协议也都以此为基础,Http也支持长连接,但是Http只是应用层协议,传输层依然是TCP。长连接的优化长连接最大的缺点,就是建立好连接之后,就要不断地维护这个连接,并且长连接会加重服务器的负担,优化心跳机制,每次业务数据请求也看做一次心跳,减少无效的数据传输。
2、三方协议是什么?签三方或不签各有什么优缺点?
三方协议,就是三个参与者甲、乙、丙共同就某一件事情或标的物签署一份协议,来明确地约定各自对此的权利和义务,举个例子来说,甲要买一个机器,乙负责供应机器,丙负责在现场安装机器,就可以签一份三方协议来约定各自的任务、权利、义务、付款、责任等。我个人不喜欢签三方协议,所以一般我会建议项目组尽可能两方签,原因一是三方的权利义务混在一起,不容易写清楚;二是除非写得很直白,绝不为第三方担责,否则有连带责任之嫌,这样如果合同执行的过程中出了问题,三方搅在一起,不容易说清楚各自的责任承担;三是谈判过程可能拖得时间比较长,因为三方的观点不尽相同,一份合同条款要让三方都能接受更不容易。