socket和http区别

socket和http区别:1、主体不同;2、所处层次不同;3、连接状态不同;4、传输数据量不同;5、数据安全性不同;6、连接方式不同。其中,主体不同指的是socke是一个调用接口(API),而HTTP是基于TCP/IP协议的应用层协议。

1、主体不同

socket:socket不属于协议范畴,而是一个调用接口(API),是对TCP/IP协议的封装。实现服务器与客户端之间的物理连接,并进行数据传输。

http:HTTP是基于TCP/IP协议的应用层协议,定义的是传输数据的内容的规范。

2、所处层次不同

socket:Socket处于网络协议的传输层,主要有TCP/UDP两个协议(当然也有TCP/IP协议族中其他的协议)。

http:HTTP是基于TCP/IP协议的应用层协议。

3、连接状态不同

socket:socket连接是长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉;但是由于各种环境因素可能会使连接断开,比如:服务器端或客户端主机宕机了、网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该连接以释放网络资源。所以当一个socket连接中没有数据的传输,那么为了维持连接需要发送心跳消息。

http:**HTTP是基于请求-响应形式并且是短连接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉。**HTTP是无状态的协议,针对其无状态特性,在实际应用中又需要有状态的形式,因此一般会通过session/cookie技术来解决此问题。

4、传输数据量不同

socket:socket传输的数据可自定义,为字节级,数据量小。

http:HTTP的传输速度慢,数据包大。

5、数据安全性不同
socket:数据可以加密,数据安全性高,适合Client/Server之间信息实时交互。

http:数据传输安全性差,如实现实时交互,服务器性能压力大。

6、连接方式不同

socket:Socket是客户端跟服务器直接使用Socket"套接字"进行连接,并没有规定连接后断开,所以客户端和服务器可保持连接通道,双方都可以主动发送数据。

http:http是客户端用http协议进行请求,发送请求的时候需要封装http请求头,并绑定请求的数据,服务器一般有web服务器配合(当然也非绝对),http的请求方式为客户端主动发起请求,服务器才能给响应,一次请求完毕后则断开连接,以节省资源,服务器不能主动给客户端发起响应,主要使用类是NSURLConnection。

拓展阅读

socket的主要类型

流套接字(SOCK_STREAM):流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP(The Transmission Control Protocol)协议。

数据报套接字(SOCK_DGRAM):数据报套接字提供一种无连接的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。数据报套接字使用UDP( User DatagramProtocol)协议进行数据的传输。由于数据报套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理。

原始套接字(SOCK_RAW):原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据报套接字)的区别在于:原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据报套接字只能读取UDP协议的数据。因此,如果要访问其他协议发送的数据必须使用原始套接。

相关推荐
engchina19 分钟前
WSL2 中配置桥接模式、虚拟交换机及固定 IP
网络协议·tcp/ip·桥接模式
长天一色20 分钟前
【C语言系统编程】【第三部分:网络编程】3.1 套接字编程(TCP/UDP基础)
c语言·网络·tcp/ip
BSV区块链1 小时前
关于BSV区块链覆盖网络的常见问题解答(上篇)
网络·区块链
DC_BLOG4 小时前
VPN简述
运维·服务器·网络·ip
貂蝉空大4 小时前
uni-app 封装websocket 心跳检测,开箱即用
websocket·网络协议·uni-app
网安kk4 小时前
2024年三个月网络安全(黑客技术)入门教程
网络·安全·web安全
hgdlip5 小时前
手机改IP地址怎么弄?全面解析与操作指南
网络协议·tcp/ip·智能手机
KookeeyLena55 小时前
每一个云手机的ip是独立的吗
网络协议·tcp/ip·智能手机
长天一色7 小时前
【C语言系统编程】【第三部分:网络编程】3.2 数据传输和协议
c语言·开发语言·网络