TCP
TCP特点
TCP (Transmission Control Protocol,传输控制协议) 是一种面向连接的协议,即数据传输之前要经过三次握手建立一条全双工连接,然后才能进行真正的数据传输。
TCP除了是一种面向连接的协议外,还提供可靠的、按需到达的字节流数据传输、流控和拥塞控制。无头无尾,连续不断。
面向字节流。(TCP不采用停等式的传输,而用流水线的方式,且序列号是根据数据段的第一个字节填写的)
TCP报文格式
源端口和目的端口字段——各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。
序号字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
窗口字段 —— 占 2 字节,用来让对方设置发送窗口的依据,单位为字节。
TCP的三次握手
TCP的连接建立过程是:首先由Client进程发起、服务器确认、客户再确认,其中前两次segment中没有数据,而第三次中可以携带数据。TCP的连接建立过程也叫三次握手。
TCP的四次挥手
TCP的连接拆除过程是:首先由Client进程发FIN给服务器、服务器确认、服务器再发FIN给Client,Client确认。四次握手。
在发送完最后的ACK后,发起连接拆除方需要等待一段时间,以便在ACK丢失时,拆除方可以重新发送ACK。一般等待30s。
TCP的可靠数据传输
TCP数据传输特点:累积确认、选择重传(只重传最早未确认的数据包)、快速重传(收到三个重复的ACK)
流控制
接收方通过发送消息给发送方控制其速度。避免发送速度太快导致其接收缓冲区溢出。
receiver “advertises” free buffer space by including rwnd value in TCP header of receiver-to-sender.
sender limits amount ofunacked (“in-flight”) data toreceiver’s rwnd value
拥塞控制 几个阶段 数值变化
网络拥塞导致延时增加、丢包。
MSS(最大报文长度)
AIMD(加法增,乘法减)
慢启动:
初始窗口大小为1,每收到一个ACK,窗口大小*2
初始速率低,但以指数增长快。
TCP 对丢包的反应和措施:
超时引起的事件:
cwnd set to 1 MSS;
window then grows exponentially (as in slow start) to threshold, then grows linearly
三个重复ACK引发的事件
TCP RENO
cwnd is cut in half window then grows linearly
TCP Tahoe always sets cwnd to 1 (timeout or 3
duplicate acks)
扩展
TCP的RTT评估
TCP只进行两次握手会产生什么问题
考题预测
可靠数据传输至少会考一道大题
TCP三次握手与四次挥手、TCP和UDP的特点、拥塞控制的几个阶段都很重要,可能会出现在简答题填空题等各种题型中。