http与socket的联系和区别

如题疑问也是我初学时纠结的问题。

严格意义上说,http和socket是两个不同的概念,谈不上什么对比区别。

网络从上往下,可以分为五层:应用层、传输层、网络层、数据链路层、物理层。

(不同的识别法,也可以是七层或者四层,可以参考OSI七层模型与TCP/IP五层模型,我比较倾向于五层的分法,更容易理解)


http:超文本传输协议,作用于应用层,解决如何包装数据。

socket:通常称作套接字,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket,通常的形式是:IP地址+TCPorUDP协议+Port端口号。socket并非一个协议,他作用于传输层和应用层之间,封装了TCP/IP协议,使开发人员可以通过调用这个接口API,从而实现对TCP/IP协议的使用。

web应用使用http协议做应用层协议,以封装http文本信息,然后通过建立socket通信,使用TCP/IP协议将数据发到网上。

应用层协议,有http、FTP、telnet等,也可以自己定义应用层协议。也就是说你基于socket通信,可以使用其他的应用层协议;但是如果使用http,则必定用到socket。可以理解为http连接是建立在socket通信之上的,socket通信是http连接的一部分。

以上个人拙见总结,欢迎拍砖指正。共同进步!