天天看点

socket与http的比较

socket与http的区别:

(一)http:

(1)定义:

HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。

2)背景:

在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等。

3)http的特点:

HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,服务器端响应后连接即会断掉;。从建立连接到关闭连接的过程称为“一次连接”。

4)HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”。

若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。

5)若客户端,服务器建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,http的客户端定时向服务器端发送连接请求,不仅可以保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。

------------------------

(二)http与socket的区别:

1.Socket是对TCP/IP协议的封装,通过调用Socket,才能使用TCP/IP协议。而是一个调用接口(API)。

2.socket属于请求-相应形式并且是长连接,http基于请求-响应形式并且是短连接,并且是无状态的应用层协议。针对其无状态特性,在实际应用中又需要有状态的形式,因此一般会通过session/cookie技术来解决此问题。

3.socket中服务端可主动将消息推送给客户端;http中服务器不可以主动将消息推送给客户端,只有在客户端发出请求之后,才可以将消息发送给客户端。

4.由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。

继续阅读