Socket 套接字
一、什么是 Socket
Socket 套接字是计算机之间进行通信的一种约定或一种方式。
通过 Socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。
Socket 是应用层与 TCP/IP 协议族通信的中间软件抽象层,它是一组接口。
在设计模式中,Socket 其实就是一个门面模式,它把复杂的 TCP/IP 协议族隐藏在 Socket 接口后面,对用户来说,一组简单的接口就是全部,让 Socket 去组织数据,以符合指定的协议。
另外,Socket 一般用于比较即时的通信和实时性较高的情况,比如推送,聊天,保持心跳长连接等。
总的来说,Socket 是应用层与传输层的一个抽象,将复杂的 TCP/IP 协议隐藏在 Socket 接口之后,只对应用层暴露简单的接口,也就是说 Socket 是对 TCP/IP 协议的封装,是一个调用接口 API。
二、Socket 如何唯一标识一个进程
Socket 基于 TCP 协议实现,网络层的 IP 地址唯一标识一台主机,而传输层的协议 + 端口号可以唯一标识绑定到这个端口的进程。
二、通信双方如何进行端口绑定
通常服务端启动时会绑定一个端口提供服务,而客户端在发起连接请求时会被随机分配一个端口号。
三、Socket 属于网络的哪一层
Socket 不算是一个协议,它是应用层与传输层间的一个抽象层。它把 TCP/IP 层复杂的操作抽象为几个简单的接口供应用层调用,以实现进程在网络中通信。
四、Socket 是全双工的吗
Socket 是全双工的基于 TCP 的协议。