TCP三次握手四次揮手

TCP頭部報文

  • source port/destination port
    源/目標(biāo)端口號
  • sequence number
    字節(jié)流中每個字節(jié)的編號,用于TCP通信過程中確定數(shù)據(jù)通信的有序性
  • acknowledgement number
    確認序列號,N表示之前N-1為止的所有數(shù)據(jù)都已經(jīng)確認收到
  • ISN(Initial Sequence Number)
  • TCP FLAG
    • ACK
      ACK=0表示接收端未應(yīng)答颅夺,ACK=1表示接收端已經(jīng)接收到數(shù)據(jù)
    • SYN
      同步序列號凡蚜,常用于確認端口存在爽醋,TCP握手發(fā)送的第一個數(shù)據(jù)包涝滴,SYN=1表示接收端已經(jīng)準(zhǔn)備好了
    • FIN
      數(shù)據(jù)末尾涮瞻,常用于端口掃描鲤拿,通知接收端已經(jīng)到數(shù)據(jù)末尾,可以關(guān)閉連接了

三次握手過程

三次握手過程其實是指建立一個TCP連接時饲宛,需要客戶端和服務(wù)器總共發(fā)送3個包
三次握手主要就是為了確認雙方的接收能力和發(fā)送能力是否正常皆愉,指定自己的初始化序列號為后面的可靠性傳輸做準(zhǔn)備。
實質(zhì)上就是連接服務(wù)器指定端口艇抠,建立TCP連接幕庐,同步雙方序列號和確認號,交換TCP窗口大小信息

  • 初始狀態(tài)
    客戶端處于closed狀態(tài)家淤,服務(wù)器端處于listen狀態(tài)

  • 第一次握手
    客戶端 發(fā)送 SYN=1(客戶端SYN) sequence num=x(客戶端ISN)
    狀態(tài) SYN_Send

  • 第二次握手
    服務(wù)端 發(fā)送 SYN=1(服務(wù)端SYN) sequence num=y(服務(wù)端ISN) ACK=1 acknowledgement number=x+1
    狀態(tài) SYN_RCVD

  • 第三次握手
    客戶端 發(fā)送 ACK=1 sequence num=x+1 acknowledgement number=y+1
    狀態(tài) ESTABLISHED

相關(guān)問題

  • 為什么是三次握手异剥?
    只有三次握手才能確認雙方的發(fā)送和接收能力

  • 兩次握手行不行?
    不行絮重,比如客戶端發(fā)送連接請求冤寿,但是由于網(wǎng)絡(luò)原因過了一會兒這個請求才到達服務(wù)端,但是客戶端又發(fā)送了一次連接請求青伤,并且連接成功督怜,傳輸完數(shù)據(jù)后關(guān)閉了連接,但是這時之前的第一次請求到達了服務(wù)端狠角,如果是兩次握手号杠,那么服務(wù)端會認為此時建立了連接,客戶端會一直忽略服務(wù)端發(fā)送的確認信息丰歌,造成服務(wù)端一直在等待客戶端發(fā)送數(shù)據(jù)姨蟋,浪費資源

  • 什么是半連接隊列?
    服務(wù)端第一次接收到客戶端的SYN之后立帖,會處于SYN_RCVD狀態(tài)眼溶,此時連接并沒有建立,服務(wù)端會把處于這種狀態(tài)下的請求連接放在一個隊列中,我把這種隊列稱為半連接隊列晓勇,服務(wù)端同時還維護一個全連接隊列堂飞。服務(wù)端發(fā)送完SYN-ACK包后灌旧,如果收不到客戶端的確認消息,會每隔一段時間發(fā)送一次SYN-ACK包酝静,當(dāng)發(fā)送次數(shù)超過規(guī)定次數(shù)后节榜,會將該客戶端踢出半連接隊列羡玛。

  • ISN
    三次握手的其中一個重要功能是客戶端和服務(wù)端交換 ISN(Initial Sequence Number)别智,以便讓對方知道接下來接收數(shù)據(jù)的時候如何按序列號組裝數(shù)據(jù)。如果 ISN 是固定的稼稿,攻擊者很容易猜出后續(xù)的確認號薄榛,因此 ISN 是動態(tài)生成的。

  • 三次握手時可以攜帶數(shù)據(jù)么让歼?
    第一次第二次不可以攜帶數(shù)據(jù)敞恋,防止被惡意攻擊,每次都在第一次握手放入大量數(shù)據(jù)谋右,服務(wù)端會浪費很多資源和時間來接收這些無用的報文硬猫。

  • SYN攻擊是什么?
    服務(wù)端的資源分配是第二次握手時分配的改执,客戶端的資源分配是第三次握手時分配的啸蜜。客戶端短時間內(nèi)通過不同的偽造IP辈挂,不斷向服務(wù)端發(fā)送SYN包衬横,服務(wù)端會和一堆不存在的IP進行第二次握手確認,同時會將這些偽造的客戶端加入半連接隊列终蒂,導(dǎo)致正常的客戶端請求被擠出隊列
    防御方法:縮短超時時間蜂林、增加半連接隊列長度、過濾網(wǎng)關(guān)防護拇泣、SYN cookies技術(shù)

四次揮手過程

TCP的半關(guān)閉狀態(tài)噪叙,指的是TCP提供了連接的一端在結(jié)束發(fā)送后還能接收來自對方數(shù)據(jù)的能力。

  • 初識狀態(tài)
    雙方都處于ESTABLISHED狀態(tài)
  • 第一次揮手
    客戶端 發(fā)送 FIN=1 sequence num=u(客戶端seq)
    狀態(tài) FIN_WAIT1
  • 第二次揮手
    服務(wù)端 發(fā)送 ACK=1 sequence num=v(服務(wù)端seq) acknowledgement number=u+1
    狀態(tài) CLOSE_WAIT
  • 第三次揮手
    服務(wù)端 發(fā)送 FIN=1 ACK=1 sequence num=w(服務(wù)端seq) acknowledgement number=u+1
    狀態(tài) LAST_ACK
  • 第四次揮手
    客戶端 發(fā)送 ACK=1 sequence num=u+1(客戶端seq) acknowledgement number=w+1
    狀態(tài) CLOSED

相關(guān)問題

  • 為什么是四次揮手霉翔?
    一方發(fā)送FIN=1睁蕾,那么另外一方需要先ACK=1確認收到最后一條消息,然后再另外發(fā)送一條FIN=1表示這是自己的最后一條信息早龟。
  • 2MSL等待時間
    MSL(Maximum Segment Lifetime)惫霸,報文段被丟棄前在網(wǎng)絡(luò)內(nèi)的最長時間,在揮手過程中最后一次發(fā)送ACK=1包后等待2MSL的時間內(nèi)不能關(guān)閉葱弟,同時該連接在這2MSL時間內(nèi)不能再次使用壹店。
  • 等待2MSL的意義
    • 保證客戶端發(fā)送的最后一個ACK=1包能夠到達服務(wù)端
    • 防止已經(jīng)失效的連接的請求包出現(xiàn)在別的連接中
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市芝加,隨后出現(xiàn)的幾起案子硅卢,更是在濱河造成了極大的恐慌射窒,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件将塑,死亡現(xiàn)場離奇詭異脉顿,居然都是意外死亡,警方通過查閱死者的電腦和手機点寥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門艾疟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人敢辩,你說我怎么就攤上這事蔽莱。” “怎么了戚长?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵盗冷,是天一觀的道長。 經(jīng)常有香客問我同廉,道長仪糖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任迫肖,我火速辦了婚禮锅劝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咒程。我一直安慰自己鸠天,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布帐姻。 她就那樣靜靜地躺著稠集,像睡著了一般。 火紅的嫁衣襯著肌膚如雪饥瓷。 梳的紋絲不亂的頭發(fā)上剥纷,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音呢铆,去河邊找鬼晦鞋。 笑死,一個胖子當(dāng)著我的面吹牛棺克,可吹牛的內(nèi)容都是我干的悠垛。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼娜谊,長吁一口氣:“原來是場噩夢啊……” “哼确买!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起纱皆,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤湾趾,失蹤者是張志新(化名)和其女友劉穎芭商,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搀缠,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡铛楣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了艺普。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片簸州。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖衷敌,靈堂內(nèi)的尸體忽然破棺而出勿侯,到底是詐尸還是另有隱情,我是刑警寧澤缴罗,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站祭埂,受9級特大地震影響面氓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蛆橡,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一舌界、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧泰演,春花似錦呻拌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至垃喊,卻和暖如春猾普,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背本谜。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工初家, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乌助。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓溜在,卻偏偏與公主長得像,于是被迫代替她去往敵國和親他托。 傳聞我的和親對象是個殘疾皇子掖肋,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348

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