简介
先介绍一下套接字的使用过程:
面向流的套接字,对于TCP/IP套接字来说,代表TCP协议

面数据包的套接字,对于TCP/IP套接字来说,代表UDP协议

Unix domain socket
Unix domain socket 主要用于同一主机上的进程间通信
UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程
UNIX域套接字与TCP套接字相比较,在同一台主机的传输速度前者是后者的两倍
Internet domain socket
Internet domain socket用于实现不同主机上的进程间通信,大部分情况下我们所说的socket都是指internet domain socket
“IP+端口+协议”的组合就可以唯一标识网络中一台主机上的一个进程
一个完整的Socket的组成应该是由[协议,本地地址,本地端口,远程地址,远程端口] 组成的一个5维数组
- 流式套接字(SOCK_STREAM)
最常见的套接字,使用TCP协议,提供可靠的、面向连接的通信流。保证数据传输是正确的,并且是顺序的。
- 数据报套接字(SOCK_DGRAM)
使用UDP协议,提供无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠性
- 原始套接字
允许对低层协议如IP或ICMP直接访问,主要用于新的网络协议实现的测试等