要弄清tcp
udp
socket
http
websocket
之间的关系,首先要知道经典的OSI
七层模型,与之对应的是TCP/IP
的四层模型。
看图说话:程序员
从图中能够看出,tcp
udp
工做在传输层,http
websocket
工做在应用层,而socket
不属于七层模型中的任一层,能够理解为socket
工做在传输层与应用层中间的隐含层中。web
socket
自己不是一种协议,而是对传输层中的TCP/UDP
协议进行了封装,对用户隐藏了内部TCP/UDP
是如何传输的,只提供一套接口(API)给程序员调用,从而完成socket
编程。经过socket
接口,咱们才能使用TCP/UDP
协议。编程
关于socket
与TCP/UDP
的关系,相似操做系统与接口之间的关系:TCP/IP
只是一个协议栈,就像操做系统的运行机制同样,必需要具体实现,同时还要提供对外的操做接口。这个就像操做系统会提供标准的编程接口,好比win32编程接口同样,TCP/IP
也要提供可供程序员作网络开发所用的接口,这就是Socket
编程接口。服务器
而咱们一般浏览网页用到的http
协议,是创建在TCP
协议之上的一种应用层协议。http
协议最显著的特色是它是一种无状态链接,客户端发送的每次请求都须要服务器回送响应,在请求结束后,会主动释放链接,是一种“短链接”。websocket
对于几者之间的关系,能够概况为:网络
http
websocket
等应用层协议经过socket
接口从而调用tcp
udp
等传输层协议,从而达到网络通讯。socket
tcp
udp
=》 socket
=》 http
websocket
tcp
综上所述,咱们编程不会直接去调用tcp
udp
,而是经过他们封装好的接口socket
去通讯。能够说,如今几乎网络上全部的通讯,底层都是经过socket
完成的,一切皆Socket
。spa