TCP/IP--理解TCP三次握手和四次揮手

本篇結(jié)構(gòu):

  • 前言
  • TCP報(bào)文首部格式
  • 三次握手
  • 四次揮手
  • wireshark抓包三次握手
  • wireshark抓包四次揮手

一、前言

比較郁悶沥匈,明明年紀(jì)不大踱承,記性卻出奇顯出老態(tài)浓体,不久前學(xué)習(xí)過的知識(shí),再回頭看發(fā)現(xiàn)基本已經(jīng)忘卻渐裸。

可能也是學(xué)得不扎實(shí),不深入的原因吧装悲。

拋開這些無關(guān)的念頭昏鹃,少年,再來深入理解一下吧诀诊,要知道這個(gè)世上大多數(shù)的事洞渤,都是一個(gè)重復(fù)的過程。

二属瓣、TCP報(bào)文首部格式

先來復(fù)習(xí)下TCP報(bào)文首部首部的格式载迄。

  1. 源端口和目的端口(Source Port和Destination Port):分別占用2個(gè)字節(jié),用于區(qū)別主機(jī)中的不同進(jìn)程抡蛙,而IP地址是用來區(qū)分不同的主機(jī)的护昧,源端口號(hào)和目的端口號(hào)配合上IP首部中的源IP地址和目的IP地址就能唯一的確定一個(gè)TCP連接。
  2. 序號(hào)seq(Sequence Number):占4個(gè)字節(jié)粗截,用來標(biāo)識(shí)從TCP發(fā)端向TCP收端發(fā)送的數(shù)據(jù)字節(jié)流(tcp傳輸?shù)拿恳粋€(gè)字節(jié)都按順序編號(hào))惋耙,它表示在這個(gè)報(bào)文段中的的第一個(gè)數(shù)據(jù)字節(jié)在數(shù)據(jù)流中的序號(hào)。主要用來解決網(wǎng)絡(luò)報(bào)亂序的問題熊昌。
  3. 確認(rèn)號(hào)ack(Acknowledgment Number):占4個(gè)字節(jié)绽榛,確認(rèn)序列號(hào)包含發(fā)送確認(rèn)的一端所期望收到的下一個(gè)序號(hào),因此婿屹,確認(rèn)序號(hào)應(yīng)當(dāng)是上次已成功收到數(shù)據(jù)字節(jié)序號(hào)加1灭美。不過,只有當(dāng)標(biāo)志位中的ACK標(biāo)志為1時(shí)該確認(rèn)序列號(hào)的字段才有效选泻。主要用來解決不丟包的問題(確認(rèn)序號(hào)減去上次收到的序號(hào)等于本段收到的報(bào)文的長(zhǎng)度)冲粤。
  4. 數(shù)據(jù)偏移(Offset):占4個(gè)bit,指出tcp報(bào)文段的數(shù)據(jù)起始處距離tcp報(bào)文段的起始有多遠(yuǎn)页眯,這個(gè)字段實(shí)際指出Ttcp報(bào)文段的首部長(zhǎng)度梯捕。需要這個(gè)值是因?yàn)槿芜x字段的長(zhǎng)度是可變的,它用來表示首部中32bit(4字節(jié))字的數(shù)目窝撵,因此最多能表示15個(gè)32bit的的字傀顾,即4*15=60個(gè)字節(jié)的首部長(zhǎng)度),因此TCP最多有60字節(jié)的首部碌奉。然而短曾,沒有任選字段寒砖,正常的長(zhǎng)度是20字節(jié)。
  5. 保留:占6bit嫉拐。
    TCP Flags:TCP首部中有6個(gè)標(biāo)志比特哩都,它們中的多個(gè)可同時(shí)被設(shè)置為1,主要是用于操控TCP的狀態(tài)機(jī)的婉徘,依次為URG漠嵌,ACK,PSH盖呼,RST儒鹿,SYN,F(xiàn)IN几晤。每個(gè)標(biāo)志位的意思如下
  6. 緊急URG:當(dāng)URG = 1時(shí)约炎,表示TCP包的緊急指針域有效,告訴系統(tǒng)這個(gè)報(bào)文段中有緊急數(shù)據(jù)蟹瘾,應(yīng)當(dāng)盡快傳輸圾浅。
  7. 確認(rèn)ACK:TCP應(yīng)答號(hào)將會(huì)包含在TCP數(shù)據(jù)包中,有兩個(gè)取值:0和1热芹,為1的時(shí)候表示應(yīng)答域有效贱傀,反之為0。
  8. 推送PSH:這個(gè)標(biāo)志位表示Push操作伊脓,接收方tcp收到PSH = 1的報(bào)文段府寒,就盡快交付給接收接收應(yīng)用進(jìn)程而不是再等到這個(gè)緩沖區(qū)都填滿之后再向上交付。
  9. 復(fù)位RST:表示連接復(fù)位請(qǐng)求报腔,當(dāng)RST = 1株搔,標(biāo)明tcp有嚴(yán)重的錯(cuò)誤,必須釋放連接纯蛾,重新建立運(yùn)輸連接纤房。RST = 1還可以用來拒絕一個(gè)非法的報(bào)文段或者拒絕打開一個(gè)連接。
  10. 同步SYN:表示同步序號(hào)翻诉,用來建立連接炮姨,SYN標(biāo)志位和ACK標(biāo)志位搭配使用,當(dāng)連接請(qǐng)求的時(shí)候碰煌,SYN=1舒岸,ACK=0;連接被響應(yīng)的時(shí)候芦圾,SYN=1蛾派,ACK=1;這個(gè)標(biāo)志的數(shù)據(jù)包經(jīng)常被用來進(jìn)行端口掃描。掃描者發(fā)送一個(gè)只有SYN的數(shù)據(jù)包洪乍,如果對(duì)方主機(jī)響應(yīng)了一個(gè)數(shù)據(jù)包回來 眯杏,就表明這臺(tái)主機(jī)存在這個(gè)端口;但是由于這種掃描方式只是進(jìn)行TCP三次握手的第一次握手壳澳,因此這種掃描的成功表示被掃描的機(jī)器不很安全,一臺(tái)安全的主機(jī)將會(huì)強(qiáng)制要求一個(gè)連接嚴(yán)格的進(jìn)行TCP的三次握手钾埂。
  11. 終止FIN: 表示發(fā)送端已經(jīng)達(dá)到數(shù)據(jù)末尾河闰,將釋放一個(gè)連接,F(xiàn)IN = 1褥紫, 表示報(bào)文段的發(fā)送方的數(shù)據(jù)已經(jīng)發(fā)送完成,請(qǐng)求釋放連接瞪慧。
  12. 窗口:占2個(gè)字節(jié)髓考,存放的是數(shù)據(jù)是字節(jié)為單位的窗口值告訴對(duì)方,本報(bào)文段首部中的確認(rèn)號(hào)算起弃酌,接收方目前允許對(duì)方發(fā)送的數(shù)據(jù)量氨菇。這是讓發(fā)送方設(shè)置發(fā)送窗口的依據(jù)。
  13. 檢驗(yàn)和妓湘,占2個(gè)字節(jié)查蓉。

要理解三次握手,四次揮手榜贴,同步SYN豌研、確認(rèn)ACK、序號(hào)seq唬党、確認(rèn)號(hào)ack鹃共、終止FIN5個(gè)概念比較重要,下面再次加深這5個(gè)概念的理解:

  • 同步SYN:在連接建立時(shí)用來同步序號(hào)驶拱,當(dāng)SYN=1而ACK=0時(shí)霜浴,表明這是一個(gè)連接請(qǐng)求報(bào)文,對(duì)方若同意建立連接蓝纲,則應(yīng)在響應(yīng)報(bào)文中使SYN=1和ACK=1阴孟,SYN置1就表示這是一個(gè)連接請(qǐng)求或連接接受報(bào)文。
  • 確認(rèn)ACK:TCP協(xié)議規(guī)定税迷,只有ACK=1時(shí)有效永丝,也規(guī)定連接建立后所有發(fā)送的報(bào)文的ACK必須為1。
  • 序號(hào)seq:標(biāo)識(shí)從TCP發(fā)端向TCP收端發(fā)送的數(shù)據(jù)字節(jié)流(tcp傳輸?shù)拿恳粋€(gè)字節(jié)都按順序編號(hào))翁狐,它表示在這個(gè)報(bào)文段中的的第一個(gè)數(shù)據(jù)字節(jié)在數(shù)據(jù)流中的序號(hào)类溢。
  • 確認(rèn)號(hào)ack:確認(rèn)序列號(hào)包含發(fā)送確認(rèn)的一端所期望收到的下一個(gè)序號(hào),因此,確認(rèn)序號(hào)應(yīng)當(dāng)是上次已成功收到數(shù)據(jù)字節(jié)序號(hào)加1闯冷。不過砂心,只有當(dāng)標(biāo)志位中的ACK標(biāo)志為1時(shí)該確認(rèn)序列號(hào)的字段才有效。
  • 終止FIN:表示發(fā)送端已經(jīng)達(dá)到數(shù)據(jù)末尾蛇耀,也就是說雙方的數(shù)據(jù)傳送完成辩诞,沒有數(shù)據(jù)可以傳送了,發(fā)送FIN標(biāo)志位的TCP數(shù)據(jù)包后纺涤,連接將被斷開译暂。

三、三次握手

三次握手的文章很多撩炊,相關(guān)的圖片也很多外永,但自己親自動(dòng)手寫和畫可以加深理解。

這里貼上我畫的TCP三次握手的圖:

TCP協(xié)議中拧咳,主動(dòng)發(fā)起請(qǐng)求的一端稱為『客戶端』伯顶,被動(dòng)連接的一端稱為『服務(wù)端』。不管是客戶端還是服務(wù)端骆膝,TCP連接建立完后都能發(fā)送和接收數(shù)據(jù)祭衩。

剛開始的時(shí)候,服務(wù)器和客戶端都為CLOSED狀態(tài)阅签。在通信開始前掐暮,雙方都得創(chuàng)建各自的傳輸控制塊(TCB)。

服務(wù)器創(chuàng)建完TCB后遍進(jìn)入LISTEN狀態(tài)政钟,此時(shí)準(zhǔn)備接收客戶端發(fā)來的連接請(qǐng)求路克。

1.第一次握手

客戶端向服務(wù)端發(fā)送連接請(qǐng)求報(bào)文段。該報(bào)文段的頭部中同步SYN=1锥涕,確認(rèn)ACK=0衷戈,同時(shí)選擇一個(gè)初始序號(hào)seq=x。請(qǐng)求發(fā)送后层坠,客戶端便進(jìn)入SYN-SENT狀態(tài)殖妇。

  • SYN=1,ACK=0表示該報(bào)文段為連接請(qǐng)求報(bào)文
  • x為本次TCP通信的字節(jié)流的初始序號(hào)
  • TCP規(guī)定:SYN=1的報(bào)文段不能有數(shù)據(jù)部分破花,但要消耗掉一個(gè)序號(hào)

2.第二次握手

服務(wù)端收到連接請(qǐng)求報(bào)文段后谦趣,如果同意連接,會(huì)發(fā)送一個(gè)應(yīng)答:SYN=1座每,ACK=1前鹅,seq=y,ack=x+1峭梳。發(fā)送完應(yīng)答后服務(wù)端進(jìn)入SYN-RCVD狀態(tài)舰绘。

  • SYN=1蹂喻,ACK=1表示該報(bào)文段為連接同意的應(yīng)答報(bào)文
  • seq=y表示服務(wù)端作為發(fā)送者時(shí),發(fā)送字節(jié)流中的第一個(gè)字節(jié)序號(hào)
  • ack=x+1表示服務(wù)端希望客戶端發(fā)送的下一個(gè)數(shù)據(jù)報(bào)初始序號(hào)是從x+1開始

3.第三次握手

客戶端收到服務(wù)端連接同意的應(yīng)答后捂寿,還會(huì)向服務(wù)端發(fā)送一個(gè)確認(rèn)報(bào)文段口四,表示:服務(wù)端發(fā)來的連接同意應(yīng)答已經(jīng)成功收到。該報(bào)文段的頭部為:ACK=1秦陋,seq=x+1蔓彩,ack=y+1。

客戶端發(fā)完這個(gè)報(bào)文段后便進(jìn)入ESTABLISHED狀態(tài)驳概,服務(wù)端收到這個(gè)應(yīng)答后也進(jìn)入ESTABLISHED狀態(tài)赤嚼,此時(shí)連接的建立完成!

3.1顺又、TCP建立連接為什么是三次握手更卒,而不是兩次或四次?

首先應(yīng)該清楚一點(diǎn):不論握手多少次都不能確認(rèn)一條信道一定是“可靠”的稚照,但通過3次握手可以至少確認(rèn)它是“可用”的逞壁,再往上加握手次數(shù)不過是提高它是“可用”的這個(gè)結(jié)論的可信度。

也就是說任意次的握手都是“不可靠”的锐锣,握手成功只能說明握手時(shí)的通信是正常的,并不能保證握手后的通信是正常的绳瘟。握手只能保證盡可能的可靠雕憔,而不可能保證絕對(duì)可靠。

1.那為什么不是兩次握手糖声?

是為了防止已失效的連接請(qǐng)求報(bào)文段突然又傳送到了服務(wù)端斤彼,造成服務(wù)端資源的浪費(fèi)。

這句話怎樣理解蘸泻?

在一次TCP連接中琉苇,客戶端A向服務(wù)端B發(fā)送連接請(qǐng)求SYN報(bào)文段,假如這個(gè)報(bào)文段沒有及時(shí)被服務(wù)端B接收悦施,而是滯留在網(wǎng)絡(luò)的某處并扇,于是客戶端A超時(shí)重傳,再次發(fā)送請(qǐng)求連接并且順利與服務(wù)端B建立了連接抡诞,交換數(shù)據(jù)后斷開連接。

滯留在網(wǎng)絡(luò)中的某處的陳舊報(bào)文就變成了失效的連接請(qǐng)求報(bào)文。

但如果這個(gè)失效的請(qǐng)求SYN報(bào)文段光坝,現(xiàn)在又突然傳送到了服務(wù)端B處取视,設(shè)想這時(shí)是使用兩次握手而不是三次握手,服務(wù)端B就以為客戶端A現(xiàn)在建立請(qǐng)求連接顷窒,于是服務(wù)端B發(fā)出確認(rèn)蛙吏,新的連接就建立了,服務(wù)端B分配資源,等待客戶端A傳送數(shù)據(jù)鸦做,但客戶端A并沒有想要建立TCP連接励烦,不會(huì)理會(huì)服務(wù)端B發(fā)送的應(yīng)答,也不會(huì)向服務(wù)端B傳送數(shù)據(jù)馁龟,于是服務(wù)端B就白白等待崩侠,空耗資源。

使用三次握手可以避免這個(gè)情況坷檩。服務(wù)端B收到客戶端A的失效的陳舊SYN報(bào)文段却音,向客戶端A發(fā)送SYN報(bào)文段,選擇自己的序號(hào)seq=y矢炼,確認(rèn)收到客戶端A的SYN報(bào)文段系瓢,確認(rèn)號(hào)ack=x+1。第三次握手客戶端A收到B的SYN報(bào)文段后句灌,從確認(rèn)號(hào)就可得知不應(yīng)理睬這個(gè)SYN報(bào)文段(因?yàn)锳現(xiàn)在并沒有發(fā)送seq=x的報(bào)文段)夷陋。

這時(shí),客戶端A會(huì)發(fā)送復(fù)位報(bào)文段胰锌,這個(gè)復(fù)位報(bào)文段中骗绕,RST=1,ACK=1资昧,確認(rèn)號(hào)ack=y+1酬土。

服務(wù)端B收到A的復(fù)位報(bào)文,就知道不建立TCP連接格带,不會(huì)分配資源等待A發(fā)送數(shù)據(jù)撤缴。

2.為什么不是四次握手?

既然兩次握手不可以叽唱,那四次握手屈呕,五次握手呢?

因?yàn)槿挝帐忠呀?jīng)能說明握手時(shí)的通信是正常的棺亭,四次握手虎眨、五次握手就顯得浪費(fèi)了。

四侦铜、四次揮手

同樣专甩,先上一張圖:

TCP連接的釋放一共需要四步,這也是四次揮手的由來钉稍。

TCP連接是雙向的涤躲,在四次揮手中,前兩次揮手用于斷開一個(gè)方向的連接贡未,后兩次揮手用于斷開另一方向的連接种樱。

1.第一次揮手

客戶端數(shù)據(jù)發(fā)送完成蒙袍,則它向服務(wù)端發(fā)送連接釋放請(qǐng)求。該請(qǐng)求只有報(bào)文頭嫩挤,頭中攜帶的主要參數(shù)為:FIN=1害幅,seq=u。此時(shí)岂昭,客戶端將進(jìn)入FIN-WAIT-1狀態(tài)以现。TCP規(guī)定,F(xiàn)IN報(bào)文段即使不攜帶數(shù)據(jù)约啊,也要消耗一個(gè)序號(hào)邑遏。

  • FIN=1表示該報(bào)文段是一個(gè)連接釋放請(qǐng)求
  • seq=u,u-1是客戶端向服務(wù)端發(fā)送的最后一個(gè)字節(jié)的序號(hào)

2.第二次揮手

服務(wù)器收到客戶端連接釋放報(bào)文恰矩,通知相應(yīng)的高層應(yīng)用進(jìn)程记盒,告訴它客戶端向服務(wù)器這個(gè)方向的連接已經(jīng)釋放了。

此時(shí)服務(wù)端進(jìn)入了CLOSE-WAIT(關(guān)閉等待)狀態(tài)外傅,并向客戶端發(fā)出連接釋放的應(yīng)答纪吮,其報(bào)文頭包含:ACK=1,ack=u+1萎胰,并且?guī)献约旱男蛄刑?hào)seq=v碾盟。

  • ACK=1:除TCP連接請(qǐng)求報(bào)文段以外,TCP通信過程中所有數(shù)據(jù)報(bào)的ACK都為1技竟,表示應(yīng)答
  • seq=v巷疼,v是服務(wù)端釋放應(yīng)答報(bào)文段第一個(gè)字節(jié)序號(hào)
  • ack=u+1表示希望收到從第u+1個(gè)字節(jié)開始的報(bào)文段,并且已經(jīng)成功接收了前u個(gè)字節(jié)

客戶端收到該應(yīng)答后灵奖,進(jìn)入FIN-WAIT-2狀態(tài),等待服務(wù)器發(fā)送連接釋放報(bào)文(在這之前還需要接受服務(wù)器發(fā)送的最后的數(shù)據(jù))估盘。

第二次揮手完成后瓷患,客戶端到服務(wù)端方向的連接已經(jīng)釋放,服務(wù)端不會(huì)再接收客戶端的數(shù)據(jù)遣妥,客戶端也沒有數(shù)據(jù)要發(fā)送了擅编。但服務(wù)端到客戶端方向的連接仍然存在,服務(wù)器若發(fā)送數(shù)據(jù)箫踩,客戶端依然要接受爱态。這個(gè)狀態(tài)還要持續(xù)一段時(shí)間,也就是整個(gè)CLOSE-WAIT狀態(tài)持續(xù)的時(shí)間境钟。

3.第三次揮手

服務(wù)端將最后的數(shù)據(jù)發(fā)送完畢后锦担,就向客戶端發(fā)送連接釋放報(bào)文,其報(bào)文頭包含:FIN=1慨削,ack=u+1洞渔,由于在CLOS-WAIT狀態(tài)套媚,服務(wù)端很可能又發(fā)送了一些數(shù)據(jù),假定此時(shí)的序列號(hào)為seq=w磁椒,此時(shí)堤瘤,服務(wù)器就進(jìn)入了LAST-ACK(最后確認(rèn))狀態(tài),等待客戶端的確認(rèn)浆熔。

4.第四次揮手

客戶端收到服務(wù)器的連接釋放報(bào)文后本辐,向服務(wù)端發(fā)出確認(rèn)應(yīng)答,報(bào)文頭:ACK=1医增,ack=w+1慎皱,而自己的序列號(hào)是seq=u+1,此時(shí)调窍,客戶端就進(jìn)入了TIME-WAIT(時(shí)間等待)狀態(tài)宝冕。

該狀態(tài)會(huì)持續(xù)2MSL(最長(zhǎng)報(bào)文段壽命)時(shí)間,這個(gè)期間TCP連接還未釋放邓萨,若該時(shí)間段內(nèi)沒有服務(wù)端的重發(fā)請(qǐng)求的話地梨,客戶端就進(jìn)入CLOSED狀態(tài),撤銷TCB缔恳。

服務(wù)端只要收到了客戶端發(fā)出的確認(rèn)宝剖,立即進(jìn)入CLOSED狀態(tài)。同樣歉甚,撤銷TCB后万细,就結(jié)束了這次的TCP連接≈叫梗可以看到赖钞,服務(wù)器結(jié)束TCP連接的時(shí)間要比客戶端早一些。

4.1聘裁、為什么客戶端最后還要等待2MSL雪营?

第一:為了保證服務(wù)端能收到客戶端的確認(rèn)應(yīng)答。

若客戶端發(fā)完確認(rèn)應(yīng)答后直接進(jìn)入CLOSED狀態(tài)衡便,那么如果該應(yīng)答丟失献起,服務(wù)端等待超時(shí)后就會(huì)重新發(fā)送連接釋放請(qǐng)求,但此時(shí)客戶端已經(jīng)關(guān)閉了镣陕,不會(huì)作出任何響應(yīng)谴餐,因此服務(wù)端就無法正常關(guān)閉。

第二:防止類似與“三次握手”中提到了的“已經(jīng)失效的連接請(qǐng)求報(bào)文段”出現(xiàn)在本連接中呆抑。

客戶端發(fā)送完最后一個(gè)確認(rèn)報(bào)文后岂嗓,在這個(gè)2MSL時(shí)間中,就可以使本連接持續(xù)的時(shí)間內(nèi)所產(chǎn)生的所有報(bào)文段都從網(wǎng)絡(luò)中消失鹊碍。這樣新的連接中不會(huì)出現(xiàn)舊連接的請(qǐng)求報(bào)文摄闸。

4.2善镰、TCP關(guān)閉連接是為什么是四次揮手?

關(guān)閉連接時(shí)年枕,服務(wù)器收到客戶端的FIN報(bào)文時(shí)炫欺,僅僅表示客戶端不再發(fā)送數(shù)據(jù)了但是還能接收數(shù)據(jù),并且服務(wù)端也未必全部數(shù)據(jù)都發(fā)送給對(duì)方了熏兄,所以服務(wù)端可以立即關(guān)閉品洛,也可以發(fā)送一些數(shù)據(jù)給對(duì)方后,再發(fā)送FIN報(bào)文給對(duì)方來表示同意現(xiàn)在關(guān)閉連接摩桶,因此桥状,服務(wù)端的ACK和FIN一般都會(huì)分開發(fā)送,從而導(dǎo)致多了一次硝清。

五辅斟、wireshark抓包三次握手

wireshark是個(gè)抓包工具,很不幸芦拿,我不是很會(huì)玩士飒,所以就不多說,想要玩的朋友只能自己找資料看了蔗崎。

廢話不多說酵幕,直接開干。

用wireshark簡(jiǎn)單驗(yàn)證一下TCP的三次握手缓苛,這里我以我的博客地址(http://blog.csdn.net/w1992wishes)為例芳撒。

打開wireshark,開啟捕獲:

在瀏覽器輸入http://blog.csdn.net/w1992wishes地址未桥,然后進(jìn)入wireshark的捕獲頁面笔刹,在過濾器中輸入http,找到GET /w1992wishes HTTP 1.1那條記錄冬耿。

然后右鍵追蹤流-TCP流徘熔,找到相關(guān)的記錄。

可以看到HTTP上面的三次TCP記錄淆党,就是三次握手,分別來看讶凉。

1.第一次握手

客戶端發(fā)送一個(gè)TCP染乌,標(biāo)志位為SYN,序列號(hào)為0懂讯,代表客戶端請(qǐng)求建立連接荷憋。

2.第二次握手

服務(wù)器發(fā)回連接確認(rèn)包,標(biāo)志位為 SYN=1褐望,ACK=1勒庄。將確認(rèn)序號(hào)ack(Acknowledgement Number)設(shè)置為客戶的ISN加1串前,即0+1=1,同時(shí)設(shè)置服務(wù)端序列號(hào)seq=0实蔽。

3.第三次握手

客戶端再次發(fā)送確認(rèn)包(ACK) SYN=0荡碾,ACK=1。并且把服務(wù)器發(fā)來的seq序號(hào)字段+1放在確定ack中(即ack=1局装,因?yàn)橐呀?jīng)收到了序列號(hào)為0的數(shù)據(jù)坛吁,發(fā)送確認(rèn)的一端所期望收到的下一個(gè)序號(hào)是1),發(fā)送給對(duì)方铐尚,并且seq=1(因?yàn)閟eq=0已經(jīng)發(fā)送拨脉,seq=1是客戶端希望收到的下一個(gè)數(shù)據(jù)初始序號(hào))。

六宣增、wireshark抓包四次揮手

再來看四次揮手:

1.第一次揮手

客戶端給服務(wù)端發(fā)送TCP包玫膀,用來關(guān)閉客戶端到服務(wù)端的數(shù)據(jù)傳送,F(xiàn)IN=1爹脾,ACK=1帖旨,seq=12149,ack=2574誉简。

2.第二次揮手

服務(wù)端收到客戶端的FIN報(bào)文段后碉就,回應(yīng)一個(gè)應(yīng)答,ACK=1闷串,seq=2574瓮钥,ack=12150。

3.第三次揮手

服務(wù)端數(shù)據(jù)傳出完成烹吵,關(guān)閉與客戶端的連接碉熄,發(fā)送FIN報(bào)文段,F(xiàn)IN=1肋拔,ACK=1锈津,seq=2574,ack=12150凉蜂。第三次揮手的seq和第二次揮手的seq相同琼梆,說明在客戶端發(fā)起TCP連接關(guān)閉請(qǐng)求后,服務(wù)端的數(shù)據(jù)已經(jīng)傳輸完了窿吩,所以seq是相同的茎杂。

4.第四次揮手

客戶端收到服務(wù)端的FIN報(bào)文后,回應(yīng)應(yīng)答纫雁,發(fā)回ACK確認(rèn)煌往,ACK=1,seq=12150轧邪,ack=2575刽脖。

參考博文:

TCP 為什么是三次握手羞海,而不是兩次或四次? - 大閑人柴毛毛的回答 - 知乎
https://www.zhihu.com/question/24853633/answer/254224088

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末曲管,一起剝皮案震驚了整個(gè)濱河市却邓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌翘地,老刑警劉巖申尤,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異衙耕,居然都是意外死亡昧穿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門橙喘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來时鸵,“玉大人,你說我怎么就攤上這事厅瞎∈吻保” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵和簸,是天一觀的道長(zhǎng)彭雾。 經(jīng)常有香客問我,道長(zhǎng)锁保,這世上最難降的妖魔是什么薯酝? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮爽柒,結(jié)果婚禮上吴菠,老公的妹妹穿的比我還像新娘。我一直安慰自己浩村,他們只是感情好做葵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著心墅,像睡著了一般酿矢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上怎燥,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天瘫筐,我揣著相機(jī)與錄音,去河邊找鬼刺覆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛史煎,可吹牛的內(nèi)容都是我干的谦屑。 我是一名探鬼主播驳糯,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼氢橙!你這毒婦竟也來了酝枢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤悍手,失蹤者是張志新(化名)和其女友劉穎帘睦,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坦康,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡竣付,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了滞欠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片古胆。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖筛璧,靈堂內(nèi)的尸體忽然破棺而出逸绎,到底是詐尸還是另有隱情,我是刑警寧澤夭谤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布棺牧,位于F島的核電站,受9級(jí)特大地震影響朗儒,放射性物質(zhì)發(fā)生泄漏颊乘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一采蚀、第九天 我趴在偏房一處隱蔽的房頂上張望疲牵。 院中可真熱鬧,春花似錦榆鼠、人聲如沸纲爸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽识啦。三九已至,卻和暖如春神妹,著一層夾襖步出監(jiān)牢的瞬間颓哮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工鸵荠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留冕茅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像姨伤,于是被迫代替她去往敵國(guó)和親哨坪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容