http与socket的区别。

先回忆一下网络的七层模型:

从上层到底层依次为:应用层 --》表示层 --》会话层 --》传输层--》 网络层--》 数据链路层--》 物理层

HTTP(HTTPS):超文本传输协议,属于应用层,用于如何封装数据。

TCP/UDP:属于传输层鞋业,用于数据在网路上的传输。

IP:属于网路层,主要用于定位,为传输层提供服务。

SOCKET:不属于任何层,也不是协议,只是一个接口,为了方便开发人员对TCP/IP协议栈的使用。

对应关系是,数据传输使用的是TCP/IP,传输的数据需要用到应用层(HTTP,FTP,TELNET等都属于应用层)来识别数据,否则数据的传输将变得没有意义。

HTTP为短连接,客户端发送请求到服务端,都需要服务端响应返回内容,得到返回后客户端主动释放连接,有一来一回的对应关系。为了保持客户端与服务端保持连接的状态,客户端就需要不时的发送请求(请求内容可能为空),实际上并不是一直在线,有点像多线程中的cpu使用。使用的是“请求---响应”的方式,在发起请求的时候建立连接,在客户端发起请求之后,服务端才会有返回。但是还是以传输层为基础,只不过上层实现改变了。

SCOKET:不是协议,是一个接口,是一个传输层的API,可以选择使用TCP还是UDP,再加上IP就可以实现数据传输,也只能负责数据传输。当选择了TCP,这个socket就具有TCP的特征。

总的来说,如果只停留在传输层,而没有上层的应用层,那么传输的数据将变得毫无意义。

网上有一个比较好理解的例子:
HTTP是一辆轿车,提供了封装以及显示的数据表示形式,SOCKET编程就是发动机,提供了网络通讯能力。

计算机之间的通讯,无非就是两个端口之间的交互,具体的数据表示形式是应用层决定的,而提供传输能力的是传输层。



你可能感兴趣的:(基础知识)