性能测试分析之TCP初探

本文介绍了互联网核心协议IP和TCP的作用,重点讲解了TCP的三次握手机制,阐述了TCP如何在不可靠的网络环境中提供可靠的传输。TCP的三次握手包括客户端发送SYN分组开始,服务器端回应SYNACK分组,最后客户端发送ACK分组确认连接建立。这一过程确保了数据通信的可靠性,但也可能导致性能影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因特网核心协议-IP和TCP
其中IP协议是网络层协议,它是负责联网主机之间的路由选择和寻址。而TCP是“传输控制协议”属于传输层协议。所以他们俩之间是配合,是搭档,合称为“因特网协议套件“。
TCP存在的价值
TCP大家对它并不陌生,但是我们知道一个新生事物出现的时候,必定是为了解决一些问题的。那么TCP的出现主要是解决在不可靠的传输信道上提供可靠的传输。主要是通过以下细节实现:
在这里插入图片描述

TCP三次握手机制
如下图所示:
在这里插入图片描述

其中包括了两端:数据发送端和数据接收端。

  1. 首先数据发送端(客户端)选择一个随机序列号x,并发送一个SYN分组,其中包括一下TCP需要的标志和选项。其中的SYN,全称是synchronous建立联机的意思。
  2. 数据接收端(服务器端)会给x+1,并选择自己的随机序列号y,并追加自己的标志和选项,然后返回给客户端。其中SYN ACK分组是指建立联机确认的意思。
  3. 客户端会给x和y 加1 ,并且发送ACK分组给服务器端
    至此三次握手已经完成,然后客户端和服务器端就可以通信了。其实这个时候在客户端发送完ACK分组后就可以立即发送数据了,但是服务器端必须等到收到ACK分组后才能发送数据。所以使用TCP的应用在性能上会有很大的影响,因为每次传输数据之前都必须经历一次完整的往返。后续会介绍TCP性能相关话题。
为什么要开发Tcpdive        在过去的几年里,随着移动互联网的飞速发展,整个基础网络已经发生了翻天覆地的变化。  用户接入网络的方式,除了宽带和光纤之外,还有2G/3G/4G/WiFi,5G也已经在路上了。  作为使用范围最广的传输层协议,TCP诞生于固网时代,在设计之初并没有考虑到上述种种情况,  这导致了它在某些场景下,性能并不是最优的。因此大多数的CDN厂商和一些规模较大的互联网公司都会  进行TCP协议的优化,以提供更好的用户体验,如更快的访问速度,更低的访问失败率,更流畅的视频播放等。 而当我们尝试优化TCP协议时,却面临着不少难点: 可用的工具少。  和TCP相关的工具,比如tcpdump,netstat和ss,虽然很好用,但是使用场景并不是TCP协议的性能评测,  能够提供的性能信息实在有限。 依靠个人感觉,进行盲试。  不知道瓶颈在哪,盲目修改,或者直接套用已有的优化方法。  盲目修改常导致徒劳无功,直接套用现成的方法,由于大家的应用场景不尽相同,也不一定有效。 测试成本高。  对TCP协议的性能评测主要采用两种方法。  一种是通过对上层应用的测试,来评估TCP协议的性能。这种方法的评价指标有限,而且是上层应用相关的。  另一种是依靠第三方测试服务。这种方式的样本量有限,且成本较高。 无法准确地评价优化效果。  上述的两种测试方法,都涉及到应用层面,因此测量的不仅仅是TCP协议本身,还参杂了干扰因素。   Tcpdive的设计目标        针对上述问题,我们决定设计一个专门的TCP协议性能评测工具,也就是Tcpdive。  之所以起这个名字,是因为dive有深入研究的意思:) Tcpdive具有一些特性,实际上也是我们的设计目标: 对TCP协议的性能进行较为全面的刻画,有助于发现瓶颈。  如此一来,就能找到痛点,不用再盲目地进行优化。 易于部署和使用,无需改动生产环境,使用成本低。  这一点非常重要,因为不需要修改内核或者应用程序,比较容易推广。 独立于上层应用,能够准确地评价优化效果。  直接对TCP协议的性能进行刻画,而不依赖于具体的应用。  因此能够排除上层应用的干扰,量化地评价优化效果。   Tcpdive的基本原理        Tcpdive是基于linux内核的探测点机制,使用systemtap脚本语言和内嵌C代码来实现的。  通过定义几类相互关联的探测点和库函数,来收集和处理运行中内核的数据,以及修改内核的处理逻辑。         为什么要基于systemtap呢?systemtap的神奇之处在于,不修改内核的情况下就能获取内核中的任何信息, 还可以修改内核的处理逻辑。所以虽然被它虐了千百遍,但还是觉得这套探测点机制非常有用。当然它也不是 十全十美的,比如作为一种调试语言,它是够用的,但是把它用作一种开发语言,则会遇到不少问题。通过不 断的尝试,大多数问题最终都获得比较好的解决。         目前Tcpdive已经部署到作为流量入口的负载均衡服务器上,在新浪的线上环境7*24h运行,可以说是比较稳定的。 Tcpdive的主要功能 作为一个TCP协议的性能评测工具,Tcpdive提供了大量的性能指标,从以下维度来对每条TCP连接进行刻画: 传输情况 丢包和重传 拥塞控制 HTTP处理   传输:   损失和重传: 拥塞控制: HTTP 处理:     标签:tcpdive
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试论道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值