socket和Http的区别

socket和Http的区别

  • http:

    • http是简单对象访问协议,是基于socket上的;对应于应用层,主要解决如何包装数据
  • socket:

    • socket本身不是协议,而是一个调用接口(API),是对TCP、UDP的封装
  • TCP协议:

    • 对应传输层
  • ip协议

    • 对应网络层,主要解决数据如何在网络中传输
区别
  • http连接是短连接,即客户端向服务器发送一次请求,服务器端响应后会断掉连接。
  • socket连接是长连接,理论上客户端和服务器建立连接将不会主动断掉。特殊情况如服务器端或者客户端down掉,网络故障,或者两者长时间没有数据传输,网络防火墙可能断开该连接以释放网络资源。所以当一个socket连接中没有数据的传输,那么为了维持连接需要发送心跳消息[此心跳消息格式由开发者自己定义]。
  • 我们在传输数据时,可以只使用传输层TCP/UDP协议,但那样的话没有应用层便无法识别数据内容,如果想使传输的数据有意义,则必须使用到应用层,我们最常用的应用层协议就是http。web就是使用了Http协议作为应用层协议,封装了Http文本信息,然后使用TCP/UDP做传输层协议将它发到网络上。
  • socket是一个接口,封装了TCP和UDP,可以借助socket建立TCP连接。TCP/UDP是传输层,Http是应用层协议,而Http实际上也建立在TCP协议之上。socket是对TCP/UDP协议的封装,本身不是协议,只是调用接口。通过socket我们可以使用TCP/UDP协议,socket只是让程序员更方便的使用TCP/UDP协议,从而形成了我们知道的一些最基本的函数接口。
利用socket建立网络连接步骤

建立socket连接至少需要一对套接字,一个运行于客户端,称为ClientSocket,另一个运行服务器端,称为ServerSocket。

套接字连接需要三个步骤:服务器监听、客户端请求、连接确认。

  1. 服务器监听:服务器的套接字并不定位于具体的客户端套接字,而是处于等待连接的状态,实时控制网络状态,等待客户端的连接请求。

  2. 客户端请求:客户端套接字提出连接请求,请求连接到服务端套接字。具体如下:

    • 客户端的套接字描述它要连接的服务器的套接字
    • 支出服务器套接字的地址和端口
    • 向服务器套接字提出连接请求
  3. 连接确认

    • 服务器套接字听到/接收到客户端套接字的连接请求
    • 相应客户端套接字请求,建立一个新的线程,把服务器套接字描述发给客户端
    • 客户端确认了服务器套接字发过来的描述,正式建立连接。
    • 注意:连接确认后,服务器的套接字继续处于监听状态,等待其他客户端的请求。

你可能感兴趣的:(socket和Http的区别)