socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。
socket现在已经演化为一种通信规范。计算之间的通信,甚至进程间的通信都可以使用这种编程规范。不同的地方实现该规范的方式不同:
1. Unix中实现进程间通信socket
使用文件系统传输介质,按照socket的方式读写文件,完成进程间的数据通信
2. 通信协议的抽象层socket
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。
在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
Socket已经成为一种通信接口,通信模型,通信规范,所有涉及到通信的场合,都可以采用该模型。后来出现的webSocket同样是使用了Socket模型。
Socket的基本要素
三元组:地址,端口,协议
地址通常是IP地址,协议通常TCP、UDP、IP等协议