1. 程式人生 > >網路教程(13) 深入TCP協議

網路教程(13) 深入TCP協議

應用層向TCP層傳送用於網間傳輸的、用8位位元組表示的資料流,然後TCP把資料流分割成適當長度的報文段(通常受該計算機連線的網路的資料鏈路層的最大傳輸單元(MTU)的限制)。之後TCP把結果包傳給IP層,由它來通過網路將包傳送給接收端實體的TCP層。TCP為了保證不發生丟包,就給每個包一個序號,同時序號也保證了傳送到接收端實體的包的按序接收。然後接收端實體對已成功收到的包發回一個相應的確認(ACK);如果傳送端實體在合理的往返時延(RTT)內未收到確認,那麼對應的資料包就被假設為已丟失將會被進行重傳。TCP用一個校驗和函式來檢驗資料是否有錯誤;在傳送和接收時都要計算校驗和。

 

 

Client       

Server

 

TCP連線後Client和Server就無所謂了 因為可以雙向傳輸

(建立連結

 

syn(synchronize)

 

ack 1 的意思是已經收到了seq 0 ,期待收到的是ack1 (expect 1

 

===>

SYN(seq0

 

<===

ACK(ack1

SYN(seq0

 

===>

ACK(ack1 seq1

 

 

連線建立後兩邊都可以開始傳送data

 

發了22個位元組後ack的是23(expect 23

 

 

用軟體看一下:

 

這個seq num 是相對的: