网络由下往上分为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
TCP 协议对应于传输层,HTTP 协议对应应用层,Socket 则是对 TCP/IP 协议的封装。
也可以说 TCP/IP 协议是传输层协议,主要解决数据如何在网络中传输,HTTP 是应用层协议,解决如何包装传输的数据。
实际上 Socket 是对 TCP/IP 协议的封装,Socket 本身并不是协议,而是一个调用接口(API),通过 Scoket 我们才能使用 TCP/IP。
所以说 Socket 的出现只是使得程序员方便的使用 TCP/IP 协议栈而已,是对 TCP/IP 的抽象,从而形成一些我们知道的基本函数接口,
如 create、listen、connect、accpet、send、read等。
TCP/IP 只是一个协议栈,就像操作系统运行机制一样,必须要具体实现,同时还要提供对外的操作接口。这个就像操作系统会提供标准编程接口,
比如 Win32 编程接口,TCP/IP 也要提供可供程序员做网络开发所用的接口,就是 Scoket 编程接口。