iOS面试题:socket 连接和 Http 连接的区别

http 是基于 socket 之上的。socket 是一套完整的 tcp,udp协议的接口。

  • HTTP协议:简单对象访问协议,对应于应用层,HTTP协议是基于TCP连接的。
    • tcp协议:对应于传输层。
    • ip协议:对应于网络层。

TCP/IP是传输层协议,主要解决数据如何在网络中传输,而HTTP协议是应用层协议,主要解决如何包装数据。

Socket是对TCP/IP 协议的封装,它本身不是协议,而是一个调用接口,通过Socket,我们才能使用TCP/IP协议

  • http连接:就是所谓的短连接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉。
  • socket连接:就是所谓的长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉,但是由于各种环境因素可能会使连接断开。

http是客户端用http协议进行请求,发送请求时候需要封装http请求头,并绑定请求的数据,服务器一般有web服务器配合。http请求方式为客户端主动发起请求,服务器才能给响应,一次请求完毕后则断开连接以节省资源。服务器不能主动给客户端响应。iPhone主要使用的类是NSUrlConnectionsocket是客户端跟服务器直接使用socket“套接字”进行拼接,并没有规定连接后断开,所以客户端和服务器可以保持连接,双方都可以主动发送数据。一般在游戏开发或者股票开发这种即时性很强的并且保持发送数据量比较大的场合使用。主要类是CFSocketRef。

  • UDP:是用户数据报协议:主要用在实时性要求高以及对质量相对较弱的地方,但面对现在高质量的线路容易丢包。
  • TCP:是传输控制协议,是面向连接的,,运行环境必然要求其可靠性不可丢失包有良好的拥塞控制机制。

更多:iOS面试题 答案合集

推荐阅读更多精彩内容