TCP/IP 特征

TCP/IP 具有使协议能够按照其标准化实现要求运行的特征。 这些特征可以与导致性能不佳的开发选项相结合。 这些 TCP/IP 特征对应用程序的影响取决于应用程序是事务性的还是流式处理。

事务应用程序受建立和终止连接所需的开销的影响。 例如,每次在以太网网络上建立连接时,都必须发送三个数据包,每个数据包大约 60 字节,并且交换大约需要一个 RTT。 当连接终止时,将交换四个数据包。 这适用于每个连接;打开和关闭连接的应用程序通常会在每次出现时产生此开销。

TCP/IP 的另一个方面是 慢启动,只要建立连接,它就会出现。 慢启动是一种人为限制,限制在收到这些段的确认之前可以发送的数据段数。 慢启动旨在限制网络拥塞。 通过以太网建立连接时,无论接收方的窗口大小如何,由于启动速度缓慢,4 KB 传输最多可能需要 3-4 RTT。

名为 Nagle 算法的 TCP/IP 优化还可以限制连接上的数据传输速度。 Nagle 算法旨在减少发送少量数据的应用程序的协议开销,例如一次发送单个字符的 Telnet。 堆栈会等待应用程序提供的更多数据或确认,而不是立即发送包含大量标头和少量数据的数据包,然后再继续操作。

延迟确认(通常称为 延迟 ACK)也设计到 TCP/IP 中,以便在从接收方应用程序返回数据时更高效地回送确认。 遗憾的是,如果此数据未传入,并且发送方正在等待确认,则每次发送可能会发生大约 200 毫秒的延迟。

关闭 TCP 连接时,启动关闭的节点的连接资源将进入等待状态(称为 TIME-WAIT),以防止在网络中存在重复数据包时发生数据损坏。 这可确保两端都完成连接。 当应用程序频繁打开和关闭连接时,这可能会导致每个连接所需的资源(例如 RAM 和端口)耗尽。

除了受延迟 ACK 和其他拥塞避免方案的影响外,流式处理应用程序还可能受接收端上太小的默认接收窗口大小的影响。

应用程序行为

高性能 Windows 套接字应用程序

Nagle 算法