HTTP、Socket、TCP的区別
http协议,http 分类:使用妙招 作者:太阳HTTP运营管理团队

HTTP、Socket、TCP这三种基本概念通常被提到,更是相对而言比较容易被混淆的概念。

在重温前,我们先了解一下这三者在TCP/IP协议中的位置关系:

HTTP是应用层的协议,更接近用户端;

TCP是传输层的协议;

而socket最先传输层上抽象出来的一个抽象层,本质上是接口。

故此本质上上这三种还是很好区别的。

即便如此,有时你可能会一脸懵逼,HTTP联接、TCP联接、socket联接有什么不同?

1、TCP联接与HTTP联接的区別

之前提过,HTTP是基于TCP的,客户端往服务端上传一个HTTP请求时首步便是要构建与服务端的TCP联接,也便是先三次握手,“你好,你好,你好”。从HTTP 1.1进行兼容持久联接,也便是一次TCP联接可以上传多次的HTTP请求。

2、TCP联接与Socket联接的区別

socket层只是在TCP/UDP传输层上做的一个抽象接口层,因而一个socket联接可以基于联接,也有可能基于UDP。基于TCP协议的socket联接一样要进行三次握手构建联接,是安全可靠的;基于UDP协议的socket联接不需要构建联接的过程,不过对方能不能收到都会上传过去,是不安全可靠的,大多数的即时通讯IM都是后者。

3.HTTP联接与Socket联接的区別

区别这两个基本概念是较为有意义的,毕竟TCP看不见摸不着,HTTPSocket是切切实实能运用的。

·HTTP是短连接,Socket(基于TCP协议的)是长连接。即使HTTP1.1进行兼容持久联接,但仍不能保证始终联接。而Socket联接一旦构建TCP三次握手,除非一方主动断开,否则联接状态一直保持。

·HTTP联接服务端不能主动发消息,Socket联接双方请求的上传相继受限。这一点就较为关键了,归因于它将取决于二者分别适于运用在什么情景下。HTTP运用“请求-响应”机制,在客户端还未上传讯息给服务端前,服务端不能推送讯息给客户端。须要能够满足客户端上传讯息在前,服务端回应之后。Socket联接双方近似于peer2peer的关联,一方时刻可以向另一方喊话。

问题来了:什么时候用HTTP,什么时候该用socket?

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

·用HTTP的现象:两者无需一直持续连接在线,如客端资源量的读取、文件传送等。

·用Socket的现象:绝大部分及时通讯应用软件(微信qq)、聊天网站、iponeAPNs等。


客户经理
237132123 18020573667
在线咨询

售后客服

在线售后,实时响应

太阳大客户经理

15305445551
微信客服
免费套餐
客户定制
专属客户经理
1740088888
13236000030

微信二维码

大客户
专属客户经理
1740088888
13236000030

微信二维码

公众号

关注公众号

免费领试用

意见反馈
置顶
放假通知