iOS - HTTP、Socket、TCP的区别

作者: 路飞_Luck | 来源:发表于2019-04-09 22:37 被阅读31次
目录
  • TCP连接与HTTP连接的区别
  • TCP连接与Socket连接的区别
  • HTTP连接与Socket连接的区别
  • 什么时候该用HTTP,什么时候该用socket
序言

在回顾之前我们先看一下这三者在TCP/IP协议族中的位置关系:

image.png

HTTP是应用层的协议,更靠近用户端;TCP是传输层的协议;而socket是从传输层上抽象出来的一个抽象层,本质是接口。所以本质上三种还是很好区分的。尽管如此,有时候你可能会懵逼,HTTP连接、TCP连接、socket连接有什么区别?好吧,如果上面的图解释的还是不够清楚的话,我们继续往下看。

一 TCP连接与HTTP连接的区别

HTTP是基于TCP的,客户端往服务端发送一个HTTP请求时第一步就是要建立与服务端的TCP连接,也就是先三次握手,“你好,你好,你好”。从HTTP 1.1开始支持持久连接,也就是一次TCP连接可以发送多次的HTTP请求。

小总结:HTTP基于TCP

二 TCP连接与Socket连接的区别

由上图可知,socket层只是在TCP/UDP传输层上做的一个抽象接口层,因此一个socket连接可以基于连接,也有可能基于UDP。

  • 基于TCP协议的socket连接同样需要通过三次握手建立连接,是可靠的;

  • 基于UDP协议的socket连接不需要建立连接的过程,不过对方能不能收到都会发送过去,是不可靠的,大多数的即时通讯IM都是后者。

小总结:Socket也基于TCP

三 HTTP连接与Socket连接的区别

区分这两个概念是比较有意义的,毕竟TCP看不见摸不着,HTTP与Socket是实实在在能用到的。

HTTP是短连接,Socket(基于TCP协议的)是长连接。尽管HTTP1.1开始支持持久连接,但仍无法保证始终连接。而Socket连接一旦建立TCP三次握手,除非一方主动断开,否则连接状态一直保持。

HTTP连接服务端无法主动发消息,Socket连接双方请求的发送先后限制。这点就比较重要了,因为它将决定二者分别适合应用在什么场景下。HTTP采用“请求-响应”机制,在客户端还没发送消息给服务端前,服务端无法推送消息给客户端。必须满足客户端发送消息在前,服务端回复在后。Socket连接双方类似peer2peer的关系,一方随时可以向另一方喊话。

四 什么时候该用HTTP,什么时候该用socket

这个问题的提出是很自然而然的。当你接到一个与另一方的网络通讯需求,自然会考虑用HTTP还是用Socket。

  • 用HTTP的情况:双方不需要时刻保持连接在线,比如客户端资源的获取、文件上传等。

  • 用Socket的情况:大部分即时通讯应用(QQ、微信)、聊天室、苹果APNs等

在iOS中,发HTTP请求一般用原生的NSURLConnection、NSURLSession或者开源的AFNetWorking(推荐)、ASIHttpRequest(已停止更新)。

连接Socket连接用的比较多是`robbiehanson大神的CocoaAsyncSocket (XMPPFramework也是出自他手)。


本文参考
iOS HTTP、Socket、TCP的区别

相关文章

  • Http、TCP/IP、socket

    1.TCP/IP、Http、Socket的区别 TCP/IP、Http的区别 HTTP与TCP的区别和联系 SOC...

  • iOS - HTTP、Socket、TCP的区别

    目录 TCP连接与HTTP连接的区别TCP连接与Socket连接的区别HTTP连接与Socket连接的区别什么时候...

  • 22.网络socket

    Socket / TCP / HTTP 联系与区别 Socket / TCP socket)是通信的基石,是支持T...

  • iOS TCP、UDP、http、socket等

    关于iOS socket都在这里了 iOS HTTP、Socket、TCP的区 深入浅出--iOS的TCP/IP协...

  • TCP、HTTPS网络协议

    内容包括: TCP协议 HTTPS握手过程 HTTP与Socket的区别 一、TCP网络协议 1.1 Socket...

  • http连接和Scoket连接

    Http和Socket连接区别 1、TCP连接 要想明白Socket连接,先要明白TCP连接。手机能够使用联网功能...

  • iOS面试题:Scoket连接和HTTP连接的区别:

    原文:iOS面试题大全 区别: HTTP协议是基于TCP连接的,是应用层协议,主要解决如何包装数据。Socket是...

  • SOCKET,TCP/UDP,HTTP,FTP

    转。。。。。。。。 SOCKET,TCP/UDP,HTTP,FTP (一)TCP/UDP,SOCKET,HTTP,...

  • HTTP、Socket、TCP的区别

    这三个概念经常被谈到,也是比较容易被混掉的概念。我们先看一下这三者在TCP/IP协议族中的位置关系: HTTP是应...

  • TCP HTTP Socket的区别

    1、OSI网络七层模型 第一层:应用层。定义了用于在网络中进行通信和传输数据的接口;(Http协议位于该层) 第二...

网友评论

    本文标题:iOS - HTTP、Socket、TCP的区别

    本文链接:https://www.haomeiwen.com/subject/ngpwiqtx.html