【计算机网络】Socket 到底是什么

Socket

Socket 被中文翻译成“套接字”,但都说这个翻译是不怎么好的……所以这里就使用Socket进行表述。

Socket其实是一种软件接口,用于进程向计算机网络发送报文或者从计算机网络接收报文。

学习过操作系统的概念以后我们了解了进程的概念,所以这里就不必强调了。
而如果说进程是一个一个房子的话,Socket就相当于房子的门。

Socket与HTTP协议

比如说对于计算机网络应用层的HTTP协议来说,HTTP 使用 TCP 作为它的支撑运输协议。

下面描述一下网络通信的过程(应用层视角):
HTTP 客户首先发起一个与服务器的 TCP 连接。一旦连接建立,该浏览器和服务器进程就可以通过Socket接口访问 TCP。
如上比方,客户端的Socket接口是客户进程与 TCP 连接之间的门,在服务器端的 Socket 接口则是服务器进程与 TCP 连接之间的门。
客户向它的 Socket 接口发送 HTTP 请求报文并从它的 Socket 接口 接收 HTTP 响应报文。类似地,服务器从它的 Socket 接口接收 HTTP 请求报文和向它的 Socket 接口发送 HTTP 响应报文。
一旦客户向它的 Socket 接口发送了一个请求报文,该报文就脱离了客户控制并进人 TCP 的控制。TCP 为 HTTP 提供可靠数据传输服务。
这意味着,一个客户进程发出的每个 HTTP 请求报文最终能完整地到达服务器;类似地, 服务器进程发出的每个 HTTP 响应报文最终能完整地到达客户。
……

总结

所谓的 Socket,不要把它想得太复杂,它无非是在网络编程中为了方便网络应用层编程而设置的一个通信接口。
比如说Java,比如说Python,现成的 Socket 极大地方便了我们进行简单的网络编程。
你要是还不理解的话,就可以这么想:就是一个神奇的门,我们向外可以传递一些东西,也可以在被敲门的时候从门外取近来一些东西 (好吧这说法好肥宅)
懂了么?
【计算机网络】Socket 到底是什么