Skip to content

01 开篇词 - 小册食用指南

小册食用指南

这本小册是比较偏底层原理的,有不少的章节是需要抓包实验的,在这里我提供了一份小册食用指南,帮助你更好的阅读这本小册。

需要什么基础

要想阅读这本小册,你需要具备基本的网络知识,比如在学校里上过网络课或者自学过相关的知识。

对于完全缺乏网络基础知识的读者,建议先随便选取一本成系统的计算机网络相关的书籍,先大致了解计算机网络到底是做什么的,才能更好的理解本小册想要表达的内容。

这本小册需要你了解基本的 linux 命令行操作,比如 ssh 登录服务器、vim、基本的文件命令等。

这些知识不是这本小册重点介绍的内容,网上也有很多教程。如果遇到什么问题,可以直接联系我帮助解决。

关于环境

我的实验环境是 Mac 上用 Parallels Desktop 启动的 CentOS 7 Linux 虚拟机。强烈建议你在 Linux 环境下完成这本小册的实验。CentOS 官网:www.centos.org/ ,推荐的版本是当前最新的 CentOS 7 版本。

CentOS 7 默认的防火墙不是 iptables,而是 firewall,但是我更偏好 iptables,你可以用下面的命令关掉它

bash
// 停止 firewall 服务
sudo systemctl stop firewalld.service

// 禁止开机启动
sudo systemctl disable firewalld.service

// 安装 iptables
sudo yum install -y iptables

Parallels Desktop 是付费的工具,你也可以使用免费的 VirtualBox 运行 CentOS 虚拟机。虚拟机简单易用、安全、效率高,而且可以比较方便的做快照、克隆、备份、迁移,可以随时创建多个虚拟机进行测试,不用担心改了什么配置造成系统崩溃、无法复原等问题。

关于文章内容

TCP 的知识浩如烟海,我把自己工作中遇到的最频繁的、觉得最重要的内容抽取了出来,写成了这本小册,大概覆盖了下面这些内容

  • 基本概念:TCP 头部、MTU、MSS 等概念
  • TCP 的面向连接、可靠、流协议说的是什么
  • TCP 的 11 种状态如何模拟以及如何互相转换
  • 如何模拟同时打开、同时关闭
  • 半连接、全连接队列是什么,backlog 参数有什么作用
  • 快速打开的原理是什么
  • TCP SYN Flood 攻击背后的原理
  • TCP 最不好理解的 TIME_WAIT 状态是什么
  • SO_REUSEADDR、SO_LINGER 选项对网络编程有什么影响
  • TCP 有 7 个定时器是哪些,分别在什么条件下起作用
  • 流量控制、滑动窗口、拥塞控制、快重传、慢启动等概念
  • keepalive 机制
  • Nagle 算法、延迟确认的相爱相杀
  • 网络学习相关的工具介绍:telnet、nc、tcpdump、wireshark、lsof、iptables、scapy 等
  • wireshark 那些难以看懂的提示是什么意思
  • 协议栈测试工具 packetdrill 的使用
  • 如何杀掉一条 TCP 连接
  • 常见网络面试题分析

小册的内容会持续更新,如果觉得更好的实验方式,或者有更清晰易懂的讲解方法,我会进行修改。

关于面试题

面试题目前还在大量搜集整理中,小册上更新得还不够多,我的目标是每一节都有两到三个练习题,让大家能巩固本节所学的知识。还需要较多的时间,我会慢慢补充上来。最后有一节内容是关于练习题解答的。

关于阅读顺序

小册部分把工具篇大部分放到了最后几节,需要的时候可以进行针对性的查阅。单独把工具 packetdrill 拎到了最前面,因为这个工具实在是太重要了,很多实验都是用这个工具进行模拟重现。除了工具篇,建议你按小册写的顺序依次阅读,中间会穿插讲解很多的知识。

关于答疑

TCP 的知识体系复杂,在多年的演进过程中也留下了很多坑,大家遇到任何疑惑的地方可以随时加我的微信(zhangya_no1)进行联系或者在群里提问,我会在业余时间尽力解答大家所提的问题。对一些比较典型的问题,我会汇总更新到群里并把它补充到小册的文章中,希望能跟大家一起共建。

欢迎关注我的公众号,虽然现在还没有什么内容。不过我会慢慢写一些偏原理一点的分布式理论、网络协议、编程语言相关的东西,随缘。

img

授人以鱼不若授人以渔

TCP 协议是基础中的基础,也是一门实验性比较强的知识。网络包看不见、摸不着,抓包才是让网络包现出原型的好办法。这本小册更多的想介绍一些工具和方法,让大家都有能力去模拟、去做实验、去抓包,当通过抓包验证到自己的想法的时候,那种喜悦只有自己能体会到了,😁。

参考书籍

在最后一篇文章中,我会把小册推荐的所有书籍都列出来,作为开篇,我建议你拥有下面两本书籍:

  • 经典著作《TCP/IP 详解(卷一)》
  • 林沛满老师的《Wireshark 网络分析就这么简单》

这两本书籍可以作为案头工具书,遇到相关的知识可以去书中找找书上是如何解释的,交叉印证自己的想法。

最后

让我们开启 TCP 协议的学习之旅吧。