TCP的一般工作過程

TCP的一般工作過程
寫在前面:
一直以來,很多人對於TCP的工作過程感覺有點難理解,我剛開始接觸TCP的時候,也有這種感覺。後來經過一段時間的分析後,逐漸對它有了一點的理解。現在,我就把我的理解注入到一個實例中進行分析!
1 簡單介紹
 傳輸控制協議(Transmission Control Protocol,TCP)是一種面向連接的、可靠的、基於字節流的運輸層通信協議。
 面向連接:通信前要建立連接,通信後要拆除連接;
 可靠的:它會後續的數據包狀態進行跟蹤;
 字節流:以字節爲最小單位的流服務;
2 工作過程
TCP分三個階段
第一階段:連接建立(三次握手)
第二階段:數據傳輸
第三階段:連接拆除(四次握手)
具體如何理解以上的三個階段呢?
3 理解要點
1)編號:是對TCP要傳輸的數據部分中的字節時行編號,但第一個編號並不是標識第一個字節,而是在0-(2的32次方)之間產生的一個隨機數作爲第一個編號。
例如:
data=5000,ISN=10000。則編號爲10001--15000
2)Sequence Number:當前傳輸的數據中的第一個字節的編號
例如:
data=5000,ISN=10000。則編號爲10001--15000。但要分5個報文段進行傳輸,每個報文段傳1000字節
seq爲:
段1:seq=10001(10001-11000)
段2:seq=11001(11001-12000)
段3:seq=12001(12001-13000)
段4:seq=13001(13001-14000)
段5:seq=14001(14001-15000)
3)ACKn:下一次接收到的報文的第一個字節的編號。
作用:對上已接收到的報文進行確認,並且標識希望接收到的一下報文。
例如:
A                                                                                                       B
發:seq=10001(10001-11000)
                                                  發:ACKn=11001(11000+1希望發到下一個報文的編號從11001開始)
發:seq=11001(11001-12000)
4 實例分析(telnet)
 
1)簡述telnet過程

telnet是基於TCP的23端口的,它的工作過程如下:
打開cmd
輸入:telnet 172.16.1.1                        //向服務器端發起telnet控制連接,觸發TCP連接的建立
三次握手建立TCP連接                            //不帶任何數據
數據傳輸過程                                       //輸入telnet的數據包
四次握手斷開連接                                 //不帶任何數據
抓到的包大概如下:
 
//前面的3個包爲TCP的三次握手過程(SYN置位表明爲三次握手)
//然後纔開始數據的傳輸
 
//最後的四個包分爲四次握手斷開連接過程(FIN置位表明爲四次握手)
 
2)數據包分析過程
 
//三次握手過程。
//雙方都初始化一個序列號,此例中都爲0,非0也可以的。
//第三包比較特殊,因爲此包中只作確認中,既不帶數據(前三個包都不帶數據),也不帶控制信息(FIN或SYN位爲控制信息)。TCP中規定此類包不能佔用Sep號。故它可以跟前一個包的序號或後個包的序號相同。
//第三個包也沒有SYN置位,因爲它只在初始化序號的包只才置位。
//而第二個包開始的包都有ACK置位,只有第一個包纔不置位。
 
 
//此過程數據傳輸過程,只摘錄前面幾個包,後續包的規律也一樣;
//seq爲本次發送的數據中的第一個字節的標號
//ACKn爲希望下一次發送的數據中第一個字節的標號

 
//此處爲四次握手斷開連接過程
 
 
 

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