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 算法