添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《 TCP的那些事儿(上) 》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定。在你阅读下篇之前,你需要做好准备,本篇文章有好些算法和策略,可能会引发你的各种思考,让你的大脑分配很多内存和计算资源,所以,不适合在厕所中阅读。

TCP的RTT算法

从前面的TCP重传机制我们知道Timeout的设置对于重传非常重要。

  • 设长了,重发就慢,丢了老半天才重发,没有效率,性能差;
  • 设短了,会导致可能并没有丢就重发。于是重发的就快,会增加网络拥塞,导致更多的超时,更多的超时导致更多的重发。
  • 而且,这个超时时间在不同的网络的情况下,根本没有办法设置一个死的值。只能动态地设置。 为了动态地设置,TCP引入了RTT——Round Trip Time,也就是一个数据包从发出去到回来的时间。这样发送端就大约知道需要多少的时间,从而可以方便地设置Timeout——RTO(Retransmission TimeOut),以让我们的重传机制更高效。 听起来似乎很简单,好像就是在发送端发包时记下t0,然后接收端再把这个ack回来时再记一个t1,于是RTT = t1 – t0。没那么简单,这只是一个采样,不能代表普遍情况。

    阅读全文 Read More

    好烂啊 有点差 凑合看看 还不错 很精彩 ( 104 人打了分,平均分: 4.70 )
    Loading...
  • 程序员技术练级攻略
  • “火柴棍式”程序员面试题
  • 简明 Vim 练级攻略
  • “作环保的程序员,从不用百度开始”
  • TCP 的那些事儿(上)
  • AWK 简明教程
  • 做个环保主义的程序员
  • 编程能力与编程年龄
  • 二维码的生成细节和原理
  • sed 简明教程
  • 如何学好C语言
  • 如何超过大多数人
  • 技术人员的发展之路
  • 疫苗:Java HashMap的死循环
  • 由12306.cn谈谈网站性能技术
  • 缓存更新的套路
  • 应该知道的Linux技巧
  • 别让自己“墙”了自己
  • TCP 的那些事儿(下)
  • 分布式系统的事务处理
  • 无锁队列的实现
  • “21天教你学会C++”
  • Lua简明教程
  • 如何写出无法维护的代码
  • 性能调优攻略
  • MySQL性能优化的最佳20+条经验
  • 6个变态的C语言Hello World程序
  • Docker基础技术:Linux Namespace(上)
  • 28个Unix/Linux的命令行神器
  • 我做系统架构的一些原则
  • 业界新闻 (33)
  • 企业应用 (2)
  • 技术新闻 (38)
  • 技术管理 (19)
  • 技术读物 (125)
  • 操作系统 (97)
  • Unix/Linux (81)
  • Windows (12)
  • 数据库 (11)
  • 杂项资源 (295)
  • 流程方法 (48)
  • 程序设计 (110)
  • 系统架构 (15)
  • 编程工具 (67)
  • 编程语言 (326)
  • .NET编程 (3)
  • Ajax开发 (9)
  • C/C++语言 (74)
  • Erlang (1)
  • Go 语言 (15)
  • Java语言 (32)
  • PHP脚本 (11)
  • Python (23)
  • Ruby (5)
  • Rust 语言 (1)
  • Web开发 (106)
  • 网络安全 (36)
  • 职场生涯 (40)
  • 趣味问题 (19)
  • 轶事趣闻 (147)
  •