《深入浅出TCP之5不要低估TCP的性能》

5 不要低估TCP的性能

任何协议的性能都与网络、应用程序、负载和包括实现质量在内的其他一些因素有关。

5.1 TCP性能

TCP在基本的IP数据报服务的基础上增加了可靠性和流量控制功能,而UDP只添加了一个检验和,但是这并不表示UDP的性能比TCP好。

  1. TCP为了提供可靠性,接收端TCP必须向发送端TCP发送ACK,但是这个工作量没有想象的那么多。
  • 首先,接收端可以通过它要发回给对等实体的数据来捎带ACK,实际上,很多TCP实现都会将ACK延迟几个毫秒发送,以防止本端应用程序有对输入分段的应答发送。
  • TCP没有必要为每个段产生一个ACK。正常情况下,大部分TCP实现都是隔一段发送一次ACK的。
    注意:RFC建议延迟发送ACK,但最大不超过0.5秒,并且每两个全尺寸段至少进行一次ACK。

5.2 建立连接 (3次握手)

3次握手
注意:RTT表示一个往返时间,即分组从一台主机发送到其对等实体再发送回来所需的时间。

5.3 TCP与UDP性能对比

以太网桢最多可以装载1500B,IP和TCP首部各需20B,TCP选项保留20B,因此实际的最大段发送长度为1440B。

  1. 服务器是本地主机,使用回路127.0.0.1地址时,TCP的性能要比不适用回路地址好(估计快3倍)。而UDP的性能没有显著的差异。
    使用netstat -i命令可以看到,eth1的MTU为1500B,而lo的MTU为65536。

  2. 本地主机使用回路地址,TCP的速度大约是UDP的两倍。
    因为TCP可以将几个1440B组合起来,写入一个段中,而UDP会将每个1440B的数据报单独发出去。

  3. 在LAN中,UDP大约比TCP快20%,但UDP丢报严重,即使在同一台机器上运行客户端和服务器也会丢包,主要是运维缓冲区空间耗尽导致。

  4. TCP和UDP的性能还会受到发送数据包大小的影响,如果发送的包大小为300B,可能在LAN上TCP的性能比UPD还好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值