TCP三次握手-四次揮手詳解_第1頁
TCP三次握手-四次揮手詳解_第2頁
TCP三次握手-四次揮手詳解_第3頁
TCP三次握手-四次揮手詳解_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、TCP三次握手/四次揮手詳解TCP(Tra nsmissio nCon trol Protocol)傳輸控制協(xié)議TCP是主機(jī)對(duì)主機(jī)層的傳輸控制協(xié)議,提供可靠的連接服務(wù),采用三次握手確認(rèn)建立一個(gè)連接:位碼即tcp標(biāo)志位,有6種標(biāo)示:SYN(synchronous建立聯(lián)機(jī))ACK(acknowledgement確認(rèn))PSH(push 傳送ST(reset 重置)URG(urgent緊急)Sequeneenumber( 順序號(hào)碼)Acknowledgenumber( 確認(rèn)號(hào)碼)第一次握手:主機(jī) A發(fā)送位碼為syn = 1,隨機(jī)產(chǎn)生seq number=1234567的數(shù)據(jù)包到服務(wù)器,主機(jī)B由SYN=

2、機(jī);第二次握手:主機(jī)B收到請(qǐng)求后要確認(rèn)聯(lián)機(jī)信息,向A發(fā)送ack number=(主機(jī)A的seq+1),syn=1,ack=1,隨1的包第三次握手:主機(jī) A收到后檢查ack number 是否正確,即第一次發(fā)送的seq number+1, 以及位碼ack是否為再發(fā)送ack number=( 主機(jī)B的seq+1),ack=1 ,主機(jī)B收到后確認(rèn)seq值與ack=1 則連接建立成功。完成三次握手,主機(jī) A與主機(jī)B開始傳送數(shù)據(jù)。在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采用三次握手建立一個(gè)連接。第一次握手:建立連接時(shí),客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入 SYN_SEND 狀態(tài),

3、等待服務(wù)器確認(rèn);第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN (ack=j+1 ),同時(shí)自己也發(fā)送一個(gè) SYN包(syn=k ),時(shí)服務(wù)器 進(jìn)入SYN_RECV 狀態(tài); 第三次握手:客戶端收到服務(wù)器的完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED 狀態(tài),完成三次握手。SYN + ACK包,向服務(wù)器發(fā)送確認(rèn)包 ACK( 完成三次握手,客戶端與服務(wù)器開始傳送數(shù)據(jù)實(shí)例:IP16.3337>IP23.7788>IP16.3337>第一次握手:1623.7788:192

4、.337:23.7788:S 3626544836:3626544836S 1739326486:1739326486 ack 1739326487,ack1發(fā)送位碼 syn = 1,隨機(jī)產(chǎn)生 seq number=3626544836ack 3626544837的數(shù)據(jù)包到192.168.1.由 SYN=1 知道 16要求建立聯(lián)機(jī)第二次握手:23收到請(qǐng)求后要確認(rèn)聯(lián)機(jī)信息,向16 發(fā)送ack number=362654483機(jī)產(chǎn)生seq=1739326486 的包;第 三次握手:192.

5、168.1.116 收到后檢查 ack number 是否正確,即第一次發(fā)送的 seq number+1, 以及位碼16會(huì)再發(fā)送 ack number=1739326487,ack=1,23收到后確認(rèn) seq=seq+1,ack圖解:一個(gè)三次握手的過程(圖 1,圖2 )124.147.192,147:3867220,131.23, 42: ww-http220.26.42: ww-http47:3067124.147,192,147:3667220-101-2&.42:www-http(圖1 )220.181.2B.

6、 42 i ww-htcpHTTP90序列號(hào)L65S526435fD而fdOD標(biāo)廨氛悵124.147,192.147:3667HTTP76庠列 =3581866967,= 1655526440,標(biāo)志二乳狂220,42; ww-hctpHTTP66齢列號(hào) 1655526440, A號(hào)3於1加活麗聯(lián)孟口冉衣(圖2)第一次握手的標(biāo)志位(圖 3 )我們可以看到標(biāo)志位里面只有個(gè)同步位,也就是在做請(qǐng)求(SYN)th »0 。i A * fl X Iv v 甲 0-O購急也:O確認(rèn)12:O憊迫怕:©同步悝:O終止也:(圖3) 第二次握手的標(biāo)志位(圖 4)(SYN + ACK)我們可以看到

7、標(biāo)志位里面有個(gè)確認(rèn)位和同步位,也就是在做應(yīng)答U標(biāo)志:.01 0010卜Q篇急位:0.;Q確認(rèn)位:|Q急迫也:* 口 | Q重置也:*01 O同步悅:-“Q終止悅:- b * 0(圖4)第三次握手的標(biāo)志位(圖5)我們可以看到標(biāo)志位里面只有個(gè)確認(rèn)位,也就是再做再次確認(rèn)(ACK)J 標(biāo)志;0000-O第急位;.+00丄» -O迫迫餃:-0,.,-.O至直也; * CL *罔步位:0.L.Q終止位:0(圖5) 一個(gè)完整的三次握手也就是 請(qǐng)求-應(yīng)答-再次確認(rèn)四次分手:由于TCP連接是全雙工的,因此每個(gè)方向都必須單獨(dú)進(jìn)行關(guān)閉。這個(gè)原則是當(dāng)一方完成它的數(shù)據(jù)發(fā)送任務(wù)后就能發(fā)送一個(gè)接。收到一個(gè)FIN只

8、意味著這一方向上沒有數(shù)據(jù)流動(dòng),一個(gè)TCP連接在收到一個(gè)FIN后仍能發(fā)送數(shù)據(jù)。首先進(jìn)行關(guān)閉的一方將執(zhí)行被動(dòng)關(guān)閉。(1) 客戶端A發(fā)送一個(gè)FIN,用來關(guān)閉客戶 A到服務(wù)器B的數(shù)據(jù)傳送(報(bào)文段 4)。(2) 服務(wù)器B收到這個(gè)FIN,它發(fā)回一個(gè)ACK,確認(rèn)序號(hào)為收到的序號(hào)加1 (報(bào)文段5)。和SYN 一樣,一個(gè)FIN將占用(3) 服務(wù)器B關(guān)閉與客戶端 A的連接,發(fā)送一個(gè) FIN給客戶端A (報(bào)文段6)。(4) 客戶端A發(fā)回ACK報(bào)文確認(rèn),并將確認(rèn)序號(hào)設(shè)置為收到序號(hào)加1 (報(bào)文段7)。狀態(tài)詳解CLOSED :這個(gè)沒什么好說的了,表示初始狀態(tài)。LISTEN :這個(gè)也是非常容易理解的一個(gè)狀態(tài),表示服務(wù)器端的

9、某個(gè)SOCKET處于監(jiān)聽狀態(tài),可以接受連接了SYN_RCVD :這個(gè)狀態(tài)表示接受到了SYN報(bào)文,在正常情況下,這個(gè)狀態(tài)是服務(wù)器端的SOCKET在建立-會(huì)話過程中的一個(gè)中間狀態(tài),很短暫,基本上用n etstat你是很難看到這種狀態(tài)的,除非你特意寫了一個(gè)客戶端測(cè)試CP握手過程中最后一個(gè) ACK報(bào)文不予發(fā)送。因此這種狀態(tài)時(shí),當(dāng)收到客戶端的ACK報(bào)文后,它會(huì)進(jìn)入到 ESTABSYN_SENT : 這個(gè)狀態(tài)與 SYN_RCVD 遙想呼應(yīng),當(dāng)客戶端 SOCKET 執(zhí)行CONNECT 連接時(shí),它首先發(fā)送 即它會(huì)進(jìn)入到了 SYN_SENT狀態(tài),并等待服務(wù)端的發(fā)送三次握手中的第2個(gè)報(bào)文。SYN_SENT狀態(tài)表示

10、客戶端已ESTABLISHED :這個(gè)容易理解了,表示連接已經(jīng)建立了。FIN_WAIT_1 :這個(gè)狀態(tài)要好好解釋一下,其實(shí)FIN_WAIT_1 和FIN_WAIT_2狀態(tài)的真正含義都是表示而這兩種狀態(tài)的區(qū)別是:FIN_WAIT_1狀態(tài)實(shí)際上是當(dāng) SOCKET在ESTABLISHED 狀態(tài)時(shí),它想主動(dòng)關(guān)閉連接,文,此時(shí)該 SOCKET即進(jìn)入到FIN_WAIT_1 狀態(tài)。而當(dāng)對(duì)方回應(yīng) ACK報(bào)文后,則進(jìn)入到 FIN_WAIT_2狀態(tài),當(dāng)下,無論對(duì)方何種情況下,都應(yīng)該馬上回應(yīng)ACK報(bào)文,所以FIN_WAIT_1狀態(tài)一般是比較難見到的,而FIN_WA可以用netstat 看到。FIN_WAIT_2 :

11、上面已經(jīng)詳細(xì)解釋了這種狀態(tài),實(shí)際上 FIN_WAIT_2狀態(tài)下的SOCKET,表示半連接,也連接,但另外還告訴對(duì)方,我暫時(shí)還有點(diǎn)數(shù)據(jù)需要傳送給你,稍后再關(guān)閉連接。TIME_WAIT : 表示收到了對(duì)方的 FIN報(bào)文,并發(fā)送岀了 ACK報(bào)文,就等2MSL后即可回到CLOSED 可丿 WAIT_1 狀態(tài)下,收到了對(duì)方同時(shí)帶FIN標(biāo)志和ACK標(biāo)志的報(bào)文時(shí),可以直接進(jìn)入到TIME_WAIT 狀態(tài),而無須態(tài)。CLOSING :這種狀態(tài)比較特殊,實(shí)際情況中應(yīng)該是很少見,屬于一種比較罕見的例外狀態(tài)。正常情況下,當(dāng) 按理來說是應(yīng)該先收到(或同時(shí)收到)對(duì)方的 ACK報(bào)文,再收到對(duì)方的 FIN報(bào)文。但是CLOSI

12、NG 狀態(tài)表示你發(fā)送 收到對(duì)方的ACK報(bào)文,反而卻也收到了對(duì)方的FIN報(bào)文。什么情況下會(huì)岀現(xiàn)此種情況呢?其實(shí)細(xì)想一下,也不難得雙方幾乎在同時(shí) close 一個(gè)SOCKET的話,那么就岀現(xiàn)了雙方同時(shí)發(fā)送FIN報(bào)文的情況,也即會(huì)岀現(xiàn)CLOSING關(guān)閉SOCKET連接。CLOSE_WAIT :這種狀態(tài)的含義其實(shí)是表示在等待關(guān)閉。怎么理解呢?當(dāng)對(duì)方close 一個(gè)SOCKET后發(fā)送系統(tǒng)毫無疑問地會(huì)回應(yīng)一個(gè)ACK報(bào)文給對(duì)方,此時(shí)則進(jìn)入到CLOSE_WAIT 狀態(tài)。接下來呢,實(shí)際上你真正需要考 否還有數(shù)據(jù)發(fā)送給對(duì)方,如果沒有的話,那么你也就可以 close 這個(gè) SOCKET ,發(fā)送 FIN 報(bào)文給對(duì)方,

13、也即關(guān)閉連 _WAIT 狀態(tài)下,需要完成的事情是等待你去關(guān)閉連接。LAST_ACK : 這個(gè)狀態(tài)還是比較容易好理解的,它是被動(dòng)關(guān)閉一方在發(fā)送 FIN 報(bào)文后,最后等待對(duì)方的 AC 報(bào)文后,也即可以進(jìn)入到 CLOSED 可用狀態(tài)了??偨Y(jié):1為什么建立連接協(xié)議是三次握手,而關(guān)閉連接卻是四次握手呢?這是因?yàn)榉?wù)端的 LISTEN 狀態(tài)下的 SOCKET 當(dāng)收到 SYN 報(bào)文的建連請(qǐng)求后,它可以把 ACK 和 SYN (ACK 起應(yīng)答作用, 在一個(gè)報(bào)文里來發(fā)送。但關(guān)閉連接時(shí),當(dāng)收到對(duì)方的 FIN 報(bào)文通知時(shí),它僅僅表示對(duì)方?jīng)]有數(shù)據(jù)發(fā)送給你了;但未必你所有的數(shù) 所以你可以未必會(huì)馬上會(huì)關(guān)閉 SOCKET, 也即你可能還需要發(fā)送一些數(shù)據(jù)給對(duì)方之后,再發(fā)送FIN 報(bào)文給對(duì)方來表示你同意現(xiàn)在可這里的 ACK 報(bào)文和 FIN 報(bào)文多數(shù)情況下都是分開發(fā)送的 .2為什么 TIME_WAIT 狀態(tài)還需要等 2MS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論