什么是网络套接字?(计算机网络)
网络套接字是计算机网络节点内的一个软件组件,充当交付和接收数据的端点。网络架构的应用程序编程接口 (API) 定义了套接字的结构和属性。套接字仅在基于节点的应用程序中进程的生命周期内生成。
由于 TCP/IP 协议在互联网创建期间已标准化,“网络套接字”一词最常用于互联网协议套件的上下文中,因此被称为“互联网套接字”。在这种情况下,套接字的地址(传输协议、IP 地址和端口号的三元组)用于将其外部标识给其他主机。
节点内部进程间通信 (IPC) 的软件端点通常被称为套接字,它经常使用与网络套接字相同的 API。
管道是使用“Pipe”系统调用形成的,套接字是使用“socket”系统调用生成的。在网络上,套接字允许双向 FIFO 通信。在连接的两端,都会形成连接到网络的套接字。每个套接字都有其唯一的地址。该地址由 IP 地址和端口号组成。
在大多数客户端-服务器应用程序中,都使用套接字。服务器构建一个套接字,将其连接到网络端口,并等待客户端连接到它。创建套接字后,客户端尝试连接到服务器套接字。连接建立后,数据就开始传输。
套接字类型
**数据报套接字** − 数据报套接字是一种网络套接字,其中数据包的发送和接收无需建立连接。它类似于邮箱。信件(数据)被收集并投递(传输)到邮箱(接收套接字)。它是一种无连接的套接字。
**流套接字** − 流套接字是计算机操作系统中的一种网络套接字,它提供面向连接的、有序的、独特的无记录边界的数据流,以及创建和销毁连接以及检测错误的明确机制。它类似于电话。在电话之间(两端)建立连接。
下图显示了完整的客户端和服务器交互:
函数调用 | 描述 |
---|---|
create() | 创建套接字 |
bind() | 这是套接字标识符,类似于联系某人的电话号码。 |
connect() | 准备建立连接? |
listen() | 准备发送消息 |
accept() | 确认类似于接听发送者的电话。 |
write() | 发送数据 |
read() | 接收数据 |
close() | 结束连接 |
广告