本文主要内容:
- TCP连接的建立与终止
- TCP参数选项
- TCP的路径最大传输单元发现
- TCP状态转换
- 重置报文段
- TCP服务器选项
- 与TCP连接管理相关的攻击
1.TCP的状态机
其实网络上的传输,是没有具体的连接的。而TCP的连接其实是在两端维护的一种连接连接,使两端看起来好像连接着一样。所以TCP的状态转变是非常重要的。
下图是TCP连接的状态机的变化图。包括TCP的连接、断开、传输数据的对照图,另外,下面这两个图非常非常的重要,你一定要记牢。
经常被问到的是,TCP的连接为什么需要三次握手,断开需要四次挥手:
对于建链接的3次握手:
主要是要初始化Sequence Number 的初始值。通信的双方要互相通知对方自己的初始化的Sequence Number(缩写为ISN:Inital Sequence Number)——所以叫SYN,全称Synchronize Sequence Numbers。也就上图中的 x 和 y。这个号要作为以后的数据通信的序号,以保证应用层接收到的数据不会因为网络上的传输的问题而乱序(TCP会用这个序号来拼接数据)。
对于4次挥手:
其实你仔细看是2次,因为TCP是全双工的,所以,发送方和接收方都需要Fin和Ack。只不过,有一方是被动的,所以看上去就成了所谓的4次挥手。如果两边同时断连接,那就会就进入到CLOSING状态,然后到达TIME_WAIT状态。下图是双方同时断连接的示意图(你同样可以