TCP的三次握手和四次揮手

TCP通過(guò)三次握手建立連接

屏幕快照 2019-10-14 上午11.57.23.png

為什么需要三次握手而不是兩次或者四次钥屈?

三次握手是為了保證可靠傳輸咽袜,兩次握手只能保證客戶端知道服務(wù)端準(zhǔn)備好了妨马,而服務(wù)端并不知道客戶端也準(zhǔn)備好了咐熙。三次握手的關(guān)鍵在于序列號(hào)seq的交換確認(rèn)弱恒。如果有一個(gè)包丟了,就會(huì)周期性超時(shí)重傳棋恼,直到確認(rèn)返弹。(但是第三次握手例外锈玉,當(dāng)client與server的第三次握手失敗了之后,即client發(fā)送至server的確認(rèn)建立連接報(bào)文段未能到達(dá)server义起,server在等待client回復(fù)ACK的過(guò)程中超時(shí)了拉背,那么server會(huì)向client發(fā)送一個(gè)RTS報(bào)文段并進(jìn)入關(guān)閉狀態(tài),即:并不等待client第三次握手的ACK包重傳默终,直接關(guān)閉連接請(qǐng)求椅棺,這主要是為了防止泛洪攻擊,即壞人偽造許多IP向server發(fā)送連接請(qǐng)求齐蔽,從而將server的未連接隊(duì)列塞滿两疚,浪費(fèi)server的資源。)

syn泛洪攻擊

通俗的理解是:當(dāng)?shù)谌挝帐譀](méi)有發(fā)送確認(rèn)信息時(shí)含滴,等待一段時(shí)間后鬼雀,主機(jī)就會(huì)斷開之前的半開連接并回收資源,這為dos(deny of service)攻擊埋下隱患蛙吏,當(dāng)主動(dòng)方主動(dòng)發(fā)送大量的syn數(shù)據(jù)包,但并不做出第三次握手響應(yīng)鞋吉,server就會(huì)為這些syn包分配資源(但并未使用)鸦做,就會(huì)使server占用大量?jī)?nèi)存,使server連接環(huán)境耗盡谓着,這就是syn洪泛攻擊

三次握手的過(guò)程

(1):第一次握手:客戶端發(fā)送syn包服務(wù)器泼诱,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn)
(2):第二次握手:服務(wù)器收到syn包赊锚,確認(rèn)客戶的SYN治筒,同時(shí)自己也發(fā)送一個(gè)SYN包,即SYN+ACK包舷蒲,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài)耸袜。
(3):第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK牲平,此包發(fā)送完畢堤框,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手纵柿。
握手過(guò)程中傳送的包里不包含數(shù)據(jù)蜈抓,三次握手完畢后,客戶端與服務(wù)器才正式開始傳送數(shù)據(jù)昂儒。理想狀態(tài)下沟使,TCP連接一旦建立,在通信雙方中的任何一方主動(dòng)關(guān)閉連接之前渊跋,TCP連接都將被一直保持下去腊嗡。斷開連接時(shí)服務(wù)器和客戶端均可以主動(dòng)發(fā)起斷開TCP連接的請(qǐng)求着倾,斷開過(guò)程需要經(jīng)過(guò)“四次握手”

三次握手有什么缺陷可以被黑客利用,用來(lái)對(duì)服務(wù)器進(jìn)行攻擊叽唱?

黑客仿造IP大量的向server發(fā)送TCP連接請(qǐng)求報(bào)文包屈呕,從而將server的半連接隊(duì)列(上文所說(shuō)的未連接隊(duì)列,即server收到連接請(qǐng)求SYN之后將client加入半連接隊(duì)列中)占滿棺亭,從而使得server拒絕其他正常的連接請(qǐng)求虎眨。

怎么防范這種攻擊?

1镶摘,縮短服務(wù)器接收客戶端SYN報(bào)文之后的等待連接時(shí)間嗽桩,即SYN
timeout時(shí)間,也就是server接收到SYN報(bào)文段凄敢,到最后放棄此連接請(qǐng)求的超時(shí)時(shí)間碌冶,將SYN
timeout設(shè)置的更低,便可以成倍的減少server的負(fù)荷涝缝,但是過(guò)低的SYN
timeout可能會(huì)影響正常的TCP連接的建立扑庞,一旦網(wǎng)絡(luò)不通暢便可能導(dǎo)致client連接請(qǐng)求失敗

2,SYN cookie + SYN proxy 無(wú)縫集成(較好的解決方案)

  • SYN
    cookie:當(dāng)server接收到client的SYN之后拒逮,不立即分配資源罐氨,而是根據(jù)client發(fā)送過(guò)來(lái)的SYN包計(jì)算出一個(gè)cookie值,這個(gè)cookie值用來(lái)存儲(chǔ)server返回給client的SYN+ACK數(shù)據(jù)包中的初始序列號(hào)滩援,當(dāng)client返回第三次握手的ACK包之后進(jìn)行校驗(yàn)栅隐,如果校驗(yàn)成功則server分配資源,建立連接玩徊。
  • SYN proxy代理租悄,作為server與client連接的代理,代替server與client建立三次握手的連接恩袱,同時(shí)SYN
    proxy與client建立好了三次握手連接之后泣棋,確保是正常的TCP連接,而不是TCP泛洪攻擊憎蛤,那么SYN
    proxy就與server建立三次握手連接外傅,作為代理(網(wǎng)關(guān)?)來(lái)連通client與server俩檬。(類似VPN了解一下萎胰。)

為什么斷開連接需要四次揮手

屏幕快照 2019-10-14 下午5.57.15.png

注:
FIN 表示關(guān)閉連接
ACK 表示確認(rèn)

因?yàn)楫?dāng)服務(wù)端收到客戶端的 FIN 數(shù)據(jù)包后(第一次揮手),服務(wù)端不會(huì)立即close棚辽,為什么不立即close技竟?因?yàn)榭赡苓€有數(shù)據(jù)沒(méi)發(fā)完,服務(wù)端會(huì)先將 ACK 發(fā)過(guò)去告訴客戶端我收到你的斷開請(qǐng)求了(第二次揮手)屈藐,但請(qǐng)?jiān)俳o我一點(diǎn)時(shí)間榔组,這段時(shí)間用來(lái)發(fā)送剩下的數(shù)據(jù)報(bào)文熙尉,發(fā)完之后再將 FIN 包發(fā)給客戶端表示現(xiàn)在可以斷了(第三次揮手)〈瓿叮客戶端收到 FIN 包后發(fā)送 ACK 確認(rèn)斷開信息給服務(wù)端(第四次揮手)检痰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市锨推,隨后出現(xiàn)的幾起案子铅歼,更是在濱河造成了極大的恐慌,老刑警劉巖换可,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椎椰,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡沾鳄,警方通過(guò)查閱死者的電腦和手機(jī)慨飘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)译荞,“玉大人瓤的,你說(shuō)我怎么就攤上這事⊥碳撸” “怎么了堤瘤?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)浆熔。 經(jīng)常有香客問(wèn)我,道長(zhǎng)桥帆,這世上最難降的妖魔是什么医增? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮老虫,結(jié)果婚禮上叶骨,老公的妹妹穿的比我還像新娘。我一直安慰自己祈匙,他們只是感情好忽刽,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著夺欲,像睡著了一般跪帝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上些阅,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天伞剑,我揣著相機(jī)與錄音,去河邊找鬼市埋。 笑死黎泣,一個(gè)胖子當(dāng)著我的面吹牛恕刘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抒倚,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼褐着,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了托呕?” 一聲冷哼從身側(cè)響起含蓉,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎镣陕,沒(méi)想到半個(gè)月后谴餐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呆抑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年岂嗓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鹊碍。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡厌殉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出侈咕,到底是詐尸還是另有隱情公罕,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布耀销,位于F島的核電站楼眷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏熊尉。R本人自食惡果不足惜罐柳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狰住。 院中可真熱鬧张吉,春花似錦、人聲如沸催植。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)创南。三九已至伦忠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間稿辙,已是汗流浹背缓苛。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人未桥。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓笔刹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親冬耿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子舌菜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359