- TCP連接的建立。
服務器通過執行LISTEN 和 ACCEPT 被動接收一個進來的連接請求,客戶端執行一個CONNECT原語,同時指定IP地址、端口、願意接受的最大TCP分段長度,以及一些用戶數據(例如用戶口令)。
- TCP連接的釋放
TCP是一個全雙工協議。通過四次揮手釋放連接。兩端需要發送一個FIN、ACK(確認對方的FIN)。
- TCP的傳輸策略
Nagla算法:當數據以每次一個字節方式進去發送方時,發送方第一次只發送一個字節,然後將其餘的字節緩衝起來,直到第一個字節被確認時。再將緩衝區裏的數據發送出去。
Clark算法:禁止接收方發送只有一個字節的口更新數據段。它必須等待一段時間,直到有了一定數量的可用空間之後再告知對方。
- TCP的擁塞控制
擁塞控制取決於三個值。有效窗口值、擁塞窗口、閥值。
有效窗口:【接收方認爲沒有問題的最大窗口值】【發送方認爲沒有問題的最大窗口值】這兩者之間的最小值。
擁塞窗口:在建立連接後,發送方將窗口初始化爲該連接上使用最大的數據段長度,之後呈指數增加窗口大小。直到數據包出現超時,超時的窗口值就是擁塞窗口值。
閥值:初始化爲64kb,當出現超時,就將閥值設爲當前超時窗口的一半。
- 快重傳
當發送方連續收到三個重複的ACK報文時,直接重傳對方尚未收到的報文段,而不必等待那個報文段設置重傳定時器超時。
- 快恢復
當發送方收到連續三個冗餘的ACK時,執行“乘法減少”算法,把慢開始門限ssthresh設置爲出現爲發送方cwnd的一半。
- 慢開始
當出現擁塞時,將cwnd值設置1,之後x2的倍數遞增。當達到上一個擁塞值的一半時,開始加1遞增。