1. 程式人生 > >後臺開發閱讀筆記——TCP/IP網路模型

後臺開發閱讀筆記——TCP/IP網路模型

TCP/IP網路模型分為應用層,傳輸層,網間層,網路介面層。
TCP提供面向有連線的,可靠的服務。IP提供面向無連線的,不可靠的服務。
TCP通過3次握手建立連線,4次揮手取消連線,通過超市重傳,滑動視窗,擁塞控制維護連線,保證服務可靠。
擁塞控制有4個核心演算法:慢開始,擁塞避免,快速重傳,快速恢復。

超時重傳:TCP每傳送一個報文段,就對這個報文段設定一個計時器,只要計時器設定的重傳時間到了,但還沒有收到確認,就要重傳這個報文段。
影響超時重傳機制協議效率的一個關鍵引數是RTO,即傳送端傳送資料後,重傳資料前等待接收方收到該資料報文的ack時間。
TCP使用自適應演算法以適應網際網路分組傳輸延時的變化。這種演算法的基本要點是TCP監視每個TCP連線的效能,由每個TCP的連線情況推算出合適RTO值,當連線時延效能變化時,TCP也能夠自動修改RTO值。

擁塞控制:擁塞控制是一個全域性性的過程,和流量控制不同,流量控制是指點對點通訊量的控制。
慢開始:當主機開始傳送資料時,如果立即將較大的發生視窗的全部資料位元組都注入到網路中,那麼由於不清楚網路的情況,有可能引起網路擁塞。比較好的辦法是試探一下,即從小到大逐漸增大發生端的擁塞控制視窗數值。在剛剛開始傳送報文段時可先將擁塞視窗cwnd設定為一個最大報文段的MSS值,在每收到一個隊新報文段的確認後,將擁塞視窗增加至多一個MSS的數值,當rwind足夠大時,為了防止擁塞視窗cwnd的增長引起網路擁塞,還需要另外一個變數,即慢開始門限ssthresh。
擁塞避免演算法讓擁塞視窗緩慢增長,即每經過一個往返時間RTT就把傳送方的擁塞視窗cwnd加1,而不是加倍。具體過程如下:(1)TCP連線初始化,將擁塞視窗設定為1。(2)執行慢開始演算法,cwnd按指數規律增長,直到cwind=ssthresh時,開始執行擁塞避免演算法,cwnd按線性規律增長。(3)當網路發生擁塞,把ssthresh的值更新為擁塞前ssthresh值得一半,cwnd重新設定為1,按照步驟(2)執行。
快重傳:要求接收方在收到一個失序的報文段後就立即發出重複確認,而不是要等到自己傳送資料時捎帶確認。演算法規定,傳送方只要一連收到3個重複確認就應當立即重傳對方尚未收到的報文段,而不必等待設定的重傳計時器時間到期。
快恢復:當傳送方連續收到三個重複確認時,就執行乘法減小演算法,把ssthresh門限減半。但是接下去並不執行慢開始演算法。考慮到如果網路出現擁塞的話就不會收到好幾個重複確認,所以傳送方現在認為網路可能沒有出現擁塞。所以此時不執行慢開始演算法,而是將cwnd設定為ssthresh的大小,然後執行擁塞避免演算法。