傳輸層(TCP/IP 協議)未完待續

以下內容摘自《計算機網絡》

通信的端點並不是主機,而是主機中的進程

TCP的特點
1.TCP面向連接的運輸層協議
2.每條TCP連接只能有兩個端點,每一條tcp連接只能點對點
3.TCP是可靠的交付,通過tcp連接傳送數據,無差錯,不丟失,不重複,並且按序到達
4.TC提供全雙工通信
5.面向字節流

tcp並不關心應用進程一次把多長的報文發送到TCP緩存中,而是根據對方給出的窗口值和當前網絡擁塞的程度來決定一個報文應該包含多少個字節

tcp把連接作爲基本的抽象,每一條tcp連接的端點的端點是套接字(socket socket = ip地址:端口號),每一條tcp連接唯一地被通信兩端的兩個端點所確定

停止等待協議
如圖
這裏寫圖片描述

發送端每次發送數據後,就會暫停,等對接受端的接受確認信息,當接受端接受出現問題時,就會將數據丟棄,不發送接收確認給發送方,則當發送方超過一段時間沒有收到接受方的確認信息後,會重新發送剛剛的數據,這種機制叫做超時重傳
在這種情況下,
1.發送方發送一組數據後,必須暫時保留已發送的分組的副本,只有在收到相應的確認信息後才能清除分組副本
2.分組和確認分組都會有編號
3.超時計時器設置的重傳時間應該比數據在分組傳輸的平均往返時間更長

當接受端發送確認數據沒有傳到發送端情況
這裏寫圖片描述
發送端由於沒有收到確認信息,在超時重傳的機制下,會不斷的發送數據,這時接受端會丟棄重複的數據並且發送確認信息。

連續ARQ協議(滑動窗口協議)
發送方每收到一個確認,就吧滑動窗口向前滑動一個分組的位置
這裏寫圖片描述
接受方一般採用累積確認的方式,收到幾個分組後,對按序到達的最後一個分組發送確認,這樣,到這個分組爲止的所有分組都正確收到了。

TCP報文格式
這裏寫圖片描述

常用字段解析
序號:tcp的面向字節流的。在一個tcp連接中傳送的字節流中的每一個字節按順序編號。整個要傳送的字節流的起始序號必須在連接建立是設置,首部中的序號字段值則指的是本報文段所發送的數據的第一個字節的序號
確認號:期望收到對方下一個報文段的第一個數據字節的序號
確認ACK:僅當ACK=1時確認號字段纔有效,當ACK=0時,確認號無效,tcp規定,在新建立後所有傳送的報文段都必須吧ACK=1;
同步SYN:在連接建立時用來同步序號,當SYN = 1而ACK = 0時,表明這是一個連接請求報文段,對方若同意建立連接,則應在響應的報文段中使用SYN=1.ACK = 1
終止FIN:用來釋放一個連接,當FIN=1時,表明此報文段的發送方的數據已經發送完畢,並且要求釋放運輸連接
窗口:指的是發送本報文段的一方的接收窗口(不是字節的發送窗口),窗口值作爲接收方讓發送方設置其發送窗口的依據

TCP可靠傳輸的實現

以字節爲單位的滑動窗口
這裏寫圖片描述

發送方沒有收到接收方的確認的情況下,發送方可以連續的把窗口內的數據全發送出去,凡是已經發送的數據在,在末尾收到確認之前必須暫時保留,用於超時重傳

發送方的窗口可能向後收縮,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章