之前对HTTP和Socket的区分认知有点偏差,刚好有空就补一下
HTTP与Socket
- Http是基于TCP的应用层协议,是一种短连接,使用80端口
- Socket是操作系统提供的Api(可以进行各种通信方式,可以使用UDP,TCP等多种协议) ,详见其Api定义。
- 可以用Socket实现HTTP
HTTP 协议对应于应用层,Socket 则是对 TCP/IP 协议的封装和应用(程序开发层面上)
HTTP 是应用层协议,主要解决如何包装数据。
而我们平时说的最多的 Socket 是什么呢?实际上 Socket 是对 TCP/IP 协议的封装,Socket 本身并不是协议,而是一个调用接口(API)。
通过Tcp/Ip,我们才能使用socket。实际上,Socket 跟 TCP/IP 协议没有必然的联系。Socket编程接口在设计的时候,就希望也能适应其他的网络协议。
也就是,Socket 的出现只是使得程序员更方便地使用 TCP/IP 协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道 的一些最基本的函数接口,比如 create、listen、connect、accept、send、read和 write 等。
有一段关于 Socket 和 TCP/IP 协议关系的说法,可能比较容易理解:
TCP/IP 只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外 的操作接口。
这个就像操作系统会提供标准的编程接口,比如 win32 编程接口一样,TCP/IP 也要提供可供程序员做网络开发所用的接口,这就是 Socket 编程接口。
参考:
共同学习,共同进步,若有补充,欢迎指出,谢谢!