一个优秀的、能够准确无误传输数据的应用程序,需要具备什么样的协议?
对数据丢失零容忍;
不允许数据顺序出错;
杜绝网络频繁拥堵的乱象;
……
如此列举下去,似乎有位“嘉宾”符合以上所有的功能需求。
噔噔噔!接下来就有请通信协议的优等生 TCP 出列!
TCP 是一种提供面向连接的通信协议,会确认通信设备间连接的开始和结束。在传输数据的过程中,发送方发送数据,而接收方在收到数据后返回对应的 ACK。通过这种方式,双方设备便可以确认数据是否发送成功,进而确保数据传输准确无误。它还能在预测网络拥堵情况的同时控制发送 TCP 报文的数量、重传丢失的 TCP 报文段数据等。
以上这段话读起来可能有点抽象,但 TCP 的确在各个生活场景中支撑、改善着我们的体验。比如使用网盘传输文件、观看短视频和直播,它都像流水一样,负责收发数据双方的沟通,最终实现每一次可靠的连接。也正是依靠重传控制、顺序控制、拥塞控制等一系列的强大措施,使得 TCP 自 1974 年问世以来经历发展、普及与进化仍然经久不衰,作为互联网信息传输的基石而屹立不倒,更是成为每个计算机学习、从业者修炼升级之路上绕不过的重要NPC。伴随着近年来应用程序日新月异的发展,TCP 自然也在不断变化发展,而这又进一步提高了 它的学习门槛:要系统掌握 TCP 协议,不仅需要啃下复杂的构成逻辑,还必须瞭望前沿动向。许多初学者因此望而却步,只求略知一二。
但好在,“鱼与熊掌”并非不可得兼。《TCP 是怎样工作的》这本书,便用通俗易懂、以图配文的方式,从基础知识到前沿研究动向,尽可能全面地为读者讲解 TCP。尤其是对于更新较为频繁的拥塞控制算法,本书特意采用了大量篇幅来详细说明。此外,本书也提供了可供下载的模拟环境,以帮助读者进一步理解 TCP 的技术理论。
本书内容
除前言外,本书共有 7 章。
第 1 章到第 3 章全局性地总览 TCP 的基础知识。第 1 章概述计算机网络的基础知识,以及 UDP 与 TCP 之间的差异。第2章介绍 TCP 诞生的背景。第3章讲解 TCP 协议的设计方法。
第 4 章到第 6 章深入挖掘 TCP 的核心技术——拥塞控制。第4章概述拥塞控制的基本思想,以及迄今为止所提出的各种拥塞控制算法。第5章和第6章重点介绍近几年来最重要的拥塞控制算法 CUBIC 和 BBR。
最后,第 7 章介绍 TCP 前沿的研究动向和今后的技术发展,涉及5G、物联网、数据中心、自动驾驶等内容。
此外,每章末尾列有部分参考资料,如需了解更详细的知识,请查阅相应的参考资料。

本书特色
图解×模拟
直击 TCP 技术核心算法
“TCP 技术入门”通俗图解版
蹲马桶就能看懂的网络协议基础
如果你是计算机网络初学者, 总是搞不清、记不住 TCP 的运行机制, 那么就应该读一读这本书, 系统地掌握实现高可靠性传输的 TCP 技术!
146 张示意图帮助理解,详略得当,为读懂大部头开路
详细梳理 TCP 发展历程,从变迁中窥见设计思路与本质
深入 TCP 核心技术,重点讲解拥塞控制算法(CUBIC、BBR 等)
使用 Wireshark 和 ns-3 等搭建模拟环境,切实体验算法流程
本书适合人群
菜鸟程序员入门进阶
中级程序员查漏补缺
高手程序员/相关专业教师讲解网络通信关键技术
作译者简介
“怎样”系列其他图书推荐
以通俗易懂、配合图解的方式讲解计算机基础知识,既消除了初学者面对大部头巨著之时的恐惧,又能将知识更为直观地呈现,加深记忆。如果你对本书内容以及其背后更为宽广的计算机宇宙感兴趣,还可以选购以下“怎样”系列图书:
程序是怎样跑起来的(第3版)
作者:[日]矢泽久雄 译者:周自恒
本书从计算机的内部结构开始讲起,以图配文的形式详细讲解了二进制、内存、数据压缩、源文件和可执行文件、操作系统和应用程序的关系、汇编语言、硬件控制方法等内容。
计算机是怎样跑起来的
作者:[日]矢泽久雄 译者:胡屹
本书以图配文,以计算机的三大原则为开端、相继介绍了计算机的结构、手工汇编、程序流程、算法、数据结构、面向对象编程、数据库、TCP/IP 网络、数据加密、XML、计算机系统开发以及SE 的相关知识。
网络是怎样连接的
作者:[日]户根勤 译者:周自恒
本书以探索之旅的形式,从在浏览器中输入网址开始,一路追踪了到显示出网页内容为止的整个过程,以图配文,讲解了网络的全貌,并重点介绍了实际的网络设备和软件是如何工作的。
面向对象是怎样工作的(第3版)
作者:[日]平泽章 译者:侯振龙
本书以图配文的形式,直观易懂地介绍了面向对象的全貌及其包含的各项技术,包括面向对象编程、框架、设计模式、UML、建模、面向对象设计和敏捷开发方法等。
Linux是怎样工作的
作者:[日]武内觉 译者:曹栩
本书结合大量实验程序和图表,通俗易懂地介绍了Linux操作系统的运行原理和硬件的基础知识,涉及进程管理、进程调度器、内存管理、存储层次、文件系统和外部存储器等。