层理解:
socket就是所谓的长连接,理论上,连接一但创立,就不会主动断开。但是由于各种环境因素可能会是连接断开,比如说:服务器端或客户端主机down了,网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该连接以释放网络资源。
http就是所谓的短连接,即客户端向服务器发出一次请求,服务器给出响应后,服务器跟客户端的连接就会断开。
2、区别
http是简单的对象访问协议,对应于应用层,是基于TCP协议之上的。
tcp 对应于传输层
ip对应于网络层
TCP/IP是传输过程的协议,主要解决数据如何在网络中传输,而http是对应于应用层,主要解决的是对传输数据的包装
socket是对TCP/IP的封装,本身并不是协议,而是一个调用接口api,是一组可以调用的接口,通过这些接口,才可以调用TCP/IP协议。除了TCP还可以使用UDP协议。
创建Socket的时候,可以指定使用传输层的协议:TCP或者UDP。
socket原理:
至少需要一对套接字,分别是clientSocket,severSocket连接分为3部分
服务器监听:服务器并不定位具体的客户端的套接字,而是时刻处于监听状态
客户端发送请求:客户端要描述它要连接的服务器的套接字,提供地址和端口号,然后向服务器套接字提出连接请求。
连接确认:当服务器套接字街道客户端套接字发来的请求后,就响应客户端套接字的请求,并建立一个新的线程,把服务器端的套接字的描述发给客户端。一旦客户端确定了此描述,就真正的建立连接。而服务器套接字继续监听,继续接收其他客户端的套接字请求。
很多情况下,都需要服务器向客户端主动发送数据,实现数据的实时同步。
若双方是socket连接,可以由服务器想客户端发送数据
若双方是http连接,则服务器需要等客户端发送请求后,才能将数据回传给客户端。这时候就要用到轮训了。