套接字(Socket)是计算机网络中实现不同主机间进程间通信(IPC,Inter-Process Communication)的一种机制,它在网络编程中扮演着核心角色。套接字支持多种网络协议,其中最为常见的是:
传输控制协议(TCP, Transmission Control Protocol):
- TCP 提供面向连接、可靠的字节流服务,确保数据包按序无误地到达接收方。在套接字层面上,通过创建一个TCP套接字并使用
bind()、listen()、accept()、connect()和send()/recv()等函数来建立连接和交换数据。
- TCP 提供面向连接、可靠的字节流服务,确保数据包按序无误地到达接收方。在套接字层面上,通过创建一个TCP套接字并使用
用户数据报协议(UDP, User Datagram Protocol):
- UDP 是一种无连接的、不可靠的数据报服务,提供最小开销的数据传输,不保证消息的顺序或可靠性。在套接字接口中,UDP套接字使用
sendto()和recvfrom()函数发送和接收数据报文。
- UDP 是一种无连接的、不可靠的数据报服务,提供最小开销的数据传输,不保证消息的顺序或可靠性。在套接字接口中,UDP套接字使用
其他协议:
- Internet协议簇(IP):尽管IP是网络层协议,但套接字通常基于IP之上运作,为上层应用提供服务。
- ICMP(Internet Control Message Protocol):虽然不是直接用于数据传输,但在某些情况下,可以通过原始套接字使用ICMP。
- SCTP(Stream Control Transmission Protocol):提供比TCP更高级别的多宿主和多流支持,保证可靠、有序的数据传输。
- UNIX域套接字(Unix Domain Socket):在同一个操作系统内核的不同进程之间提供IPC,而不经过网络层。
Netty框架等现代网络编程库对这些协议提供了便捷的支持,使得开发者可以方便地构建基于TCP和UDP的应用程序,并且在需要时可以扩展到其他协议。