1.socket是什么
sokcet,中文被称为套接字。最早出现再UNIX系统中,在WINDOWS系统中被称为WINSOCK。套接字的表示方法是IP地址:端口号。它是用来完成网络中两个进程之间的数据传输。在本地我们可以使用PID唯一标识一个进程,而在网络中我们可以使用IP地址+协议+端口唯一标识一个进程。
socket通信原理是一种“打开-读/写-关闭”模式的实现,服务端和客户端各自维护一个“文件”,在建立连接打开后,可以用文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。
socket是应用层和TCP/IP协议族通信的中间软件层,是一组接口。
套接字分为流套接字(SOCK_STREAM)、数据报套接字(SOCK_DGRAM)、原始套接字(SOCK_RAW)。
流套接字使用的是TCP协议,只能读取TCP数据;数据报套接字使用的是UDP协议,只能读取UDP协议;原始套接字使用的是IP协议,可以读写IP数据报。
如下图,表示socket在网络层中的位置。
2.socket原理
socket是应用层和TCP/IP协议族抽象出来的一组接口,TCP socket和UDP socket编程模型如下: