Http 与 Socket

之前对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 编程接口。

 
 
 
参考:

 

 

共同学习,共同进步,若有补充,欢迎指出,谢谢!

posted @ 2020-01-14 15:05  逆水行舟,平原走马  阅读(420)  评论(0编辑  收藏  举报