-
HTTP: 超文本传输协议,首先它是一个协议,并且是基于TCP/IP协议基础之上的应用层协议。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,HTTP是应用层协议,主要解决如何包装数据。HTTP协议详细规定了浏览器与服务器之间相互通信的规则,是万维网交换信息的基础。HTTP是基于请求-响应形式并且是短连接,并且是无状态的协议。针对其无状态特性,在实际应用中又需要有状态的形式,因此一般会通过session/cookie技术来解决此问题。
-
Socket: Socket不属于协议范畴,而是一个调用接口(API),Socket是对TCP/IP协议的封装,通过调用Socket,才能使用TCP/IP协议。Socket连接是长连接,理论上客户端和服务器端一旦建立连接将不会主动断开此连接。Socket连接属于请求-响应形式,服务端可主动将消息推送给客户端。
-
为什么在tcp基础上的http反而无状态?
一个很好的比喻是: 就是假设每个人的通话声音都相同,电话又没有来电显示。那么电话之间当然是相互认识的(知道对方的电话号码),主动拨电话的人也知道那头是谁,但是接电话的不知道电话那头的人是谁。所以要有暗号。为了保证资源不被占用所以每个电话只能一问一答。