① 簡述TCP建立連接 傳輸過程和流量控制斷開連接的過程
1,tcp使用三次握手
(
three-way
handshake
)
協議來建立連接,這三次握手為:
請求端(通常稱為客戶)發送一個
syn
報文段(
syn
為
1
)指明客戶打算連接的伺服器的埠,以及初始順序號(
isn
)。
伺服器發回包含伺服器的初始順序號的
syn
報文段(
syn
為
1
)作為應答。同時,將確認號設置為客戶的
isn
加
1
以對客戶的
syn
報文段進行確認(
ack
也為
1
)。
客戶必須將確認號設置為伺服器的
isn
加
1
以對伺服器的
syn
報文段進行確認(
ack
為
1
),該報文通知目的主機雙方已完成連接建立。
發送第一個
syn
的一端將執行主動打開(
active
open
),接收這個
syn
並發回下一個
syn
的另一端執行被動打開(
passive
open
)。另外,
tcp
的握手協議被精心設計為可以處理同時打開(
simultaneous
open
),對於同時打開它僅建立一條連接而不是兩條連接。因此,連接可以由任一方或雙方發起,一旦連接建立,數據就可以雙向對等地流動,而沒有所謂的主從關系。
2,應用層向tcp層發送用於網間傳輸的、用8位位元組表示的數據流,然後tcp把數據流分割成適當長度的報文段(通常受該計算機連接的網路的數據鏈路層的最大傳送單元(mtu)的限制)。之後tcp把結果包傳給ip層,由它來通過網路將包傳送給接收端實體的tcp層。tcp為了保證不發生丟包,就給每個位元組一個序號,同時序號也保證了傳送到接收端實體的包的按序接收。然後接收端實體對已成功收到的位元組發回一個相應的確認(ack);
如果發送端實體在合理的往返時延(rtt)內未收到確認,那麼對應的數據(假設丟失了)將會被重傳。tcp用一個校驗和函數來檢驗數據是否有錯誤;在發送和接收時都要計算校驗和。