菜单

Socket API 和网络协议

相关源文件

本文档涵盖了 Bun 的 Socket 级网络 API,包括 TCP、TLS 和 UDP Socket 实现。它详细介绍了 Bun 的原生 Socket API 以及提供跨平台网络通信功能的、兼容 Node.js 的 nettls 模块。

有关构建在这些 Socket 之上的 HTTP 服务器和客户端功能,请参阅 服务器 API (Bun.serve)HTTP 客户端和 Fetch API

架构概述

Bun 的 Socket 系统由多个层组成:用 Zig 编写的原生 Socket 实现、JavaScript 类绑定以及 Node.js 兼容性包装器。这种分层方法既提供了高性能的原生 API,又实现了无缝的 Node.js 兼容性。

来源: src/js/node/net.ts1-50 src/js/node/tls.ts1-50 src/bun.js/api/sockets.classes.ts1-50

TCP Socket 实现

原生 Socket 类

Bun 通过自动生成的类绑定提供原生的 TCP Socket 实现。TCPSocket 类通过直接集成到 Bun 的事件循环中,提供高性能的网络通信。

原生实现支持 IPv4 和 IPv6 连接、Unix 域 Socket,并提供全面的错误处理和特定于平台的优化。

来源: src/bun.js/api/sockets.classes.ts94-146

Socket 处理程序

Socket 操作通过处理程序对象进行管理,该对象定义了各种 Socket 事件的回调。这些处理程序在原生 Socket 实现与 JavaScript 事件处理之间架起了桥梁。

来源: src/js/node/net.ts179-313 src/js/node/net.ts329-510

TLS Socket 实现

TLS 架构

TLS 支持通过原生 TLS Socket 和 Node.js 应用程序的兼容层来实现。该实现处理证书验证、会话管理和安全协议协商。

来源: src/js/node/tls.ts291-495 src/bun.js/api/sockets.classes.ts224-240

证书和上下文管理

SecureContext 类管理 TLS 证书、私钥和安全选项。它支持各种证书格式和验证模式。

来源: src/js/node/tls.ts197-275

UDP Socket 支持

UDP Socket 提供无连接的、基于数据报的通信,支持广播、多播和点对点消息。

来源: src/bun.js/api/sockets.classes.ts300-396

Node.js 兼容层

net 模块实现

net 模块为 TCP Socket 操作提供了完整的 Node.js 兼容性,包括服务器创建、客户端连接和基于流的数据处理。

该实现将 Node.js Socket 操作映射到 Bun 的原生 Socket 处理程序,在保持性能的同时提供无缝的兼容性。

来源: src/js/node/net.ts681-1107

连接建立

连接建立支持多种调用签名,以实现与 Node.js 应用程序的向后兼容。

来源: src/js/node/net.ts889-1107

tls 模块实现

tls 模块通过 SSL/TLS 加密功能扩展了 net 模块,提供了带证书管理的 Socket 安全通信。

来源: src/js/node/tls.ts499-674

地址和安全实用工具

IP 地址验证

Bun 提供支持 IPv4 和 IPv6 地址的 IP 地址验证和分类实用工具。

来源: src/js/node/net.ts67-90

SocketAddress 类

SocketAddress 类提供网络地址的结构化表示,支持解析和验证。

来源: src/bun.js/api/sockets.classes.ts397-454

BlockList 安全性

BlockList 类提供 IP 地址过滤功能,用于安全和访问控制。

来源: src/bun.js/api/sockets.classes.ts455-491