
TCP协议无疑是408计算机网络考试的重点内容之一,故做此梳理。
总论
一个网络协议,说到底是为了有助于信息传输的。针对不同的信息传输要求,人们开发出了不同的网络协议。而TCP满足的传输要求是:可靠、有序、无丢失、不重复。TCP的协议数据单元是报文段,包括首部和数据两部分。
TCP是面向连接的、端到端的、面向字节流的、可靠的传输层协议。
连接的建立
既然TCP是面向连接的,那连接如何建立呢?答案是“三次握手”。

(如果看不懂插图中的符号,请先移步这篇文章了解TCP首部:GentleGamer:【心得篇】计算机网络里的帧和首部)
连接建立完成就正式开始传输数据啦。
可靠传输
第二个问题,TCP如何实现可靠传输呢?通过标号确认和重传机制实现。TCP面向字节,数据部分每个字节都对应一个编号(编号不在数据部分出现,只有TCP首部有数据部分第一个字节的编号),若有分组,则不同分组的标号相互衔接。而重传机制是说如果没有在预计时间内收到接收方的确认,就会重传报文。
连接的释放
数据传输完成之后需要释放连接,因为如果不释放的话,这个端口(套接字)资源就被浪费了。释放连接的过程叫“四次挥手”。

流量控制
为了让双方的缓存区大小能相互适应,TCP有一个流量控制的机制,其实就是在协调传输速率(发送方速率太高会使接收方缓存区溢出)。
这块内容主要就是滑动窗口的原理,有机会再更新细节吧。
拥塞控制
因为网络环境相当复杂,仅通过流量控制无法保证网络整体的效率,还得考虑为网络环境着想,使得整个网络(包括其他通信设备)的效率尽可能高。于是TCP引入了拥塞控制机制,再该机制下,发送窗口由拥塞窗口大小和接收窗口大小这两个变量维护。机制的主要内容是以下四点。
慢开始{每收到一个确认帧拥塞窗口就加一,若以RTT为单位则拥塞窗口指数增加,相对于瞬间增加是慢的}、拥塞避免{达到拥塞窗口阈值后拥塞窗口线性增加}、快重传{若收到某个帧的确认帧三次以上就直接重传而不用等计时器超时}、快恢复{发生拥塞时拥塞窗口阈值减半但是拥塞窗口不直接减为一而是也减半}。[1]

TCP的核心原理就是以上内容!
参考
- ^插图来自《计算机网络(第7版)》谢希仁,P234