三次握手和四次揮手

三次握手和四次揮手

在客戶(hù)端和服務(wù)器進(jìn)行數(shù)據(jù)傳輸前會(huì)經(jīng)歷三次握手和四次揮手,那三次握手和四次揮手具體是做了些什么呢冬竟?

三次握手

含義:三次握手其實(shí)是指在客戶(hù)端和服務(wù)端建立一個(gè)TCP連接時(shí)欧穴,會(huì)經(jīng)歷總共發(fā)送3個(gè)包;
目的: 是為了確保雙方的發(fā)送和接收是否正常泵殴,并指定自己的初始化序列號(hào)為后面正常傳輸數(shù)據(jù)做準(zhǔn)備涮帘。

狀態(tài)
初始狀態(tài):客戶(hù)端-closed 服務(wù)端-listen

第一次握手客戶(hù)端發(fā)送數(shù)據(jù)包:SYN=1,seq=x
客服端發(fā)送一段SYN(同步序列編號(hào))的報(bào)文,指明客戶(hù)端初始化序列號(hào)ISN笑诅。
注:
SYN: 用于建立連接的同步序列號(hào) SYN=1,表示一個(gè)連接請(qǐng)求调缨,握手完成后會(huì)變?yōu)?
seq: 客戶(hù)端的序列號(hào)x
\color{green}{初始化序列號(hào)(隨機(jī)生成的)是為了使每次TCP連接的序列號(hào)不同疮鲫,供服務(wù)端去區(qū)分每次TCP連接以做不同的響應(yīng),防止數(shù)據(jù)亂序}

狀態(tài): 客戶(hù)端-SYN_SENT

第二次握手服務(wù)端發(fā)送數(shù)據(jù)包:SYN=1, seq=y,ACK=1, ack=x(客服端的seq)+1
服務(wù)端接收客戶(hù)端報(bào)文后弦叶,將客戶(hù)端的SYN+1作為ACK 的值俊犯,并返回發(fā)送自己的SYN報(bào)文和初始化序列號(hào)ISN(server);
注:
ACK: 確認(rèn)序列號(hào)是否有效標(biāo)識(shí)伤哺,1為有效燕侠,0為無(wú)效
ack:確認(rèn)序列號(hào),值為對(duì)方序列號(hào)+1
seq: 服務(wù)器的序列號(hào)y

狀態(tài):服務(wù)端-SYN_RCVD

第三次握手客戶(hù)端發(fā)送數(shù)據(jù)包: ACK=1, seq=x+1, ack=y(服務(wù)端的seq)+1
客戶(hù)端接收到服務(wù)端的報(bào)文后立莉,會(huì)返回發(fā)送一個(gè) ACK 報(bào)文(服務(wù)端的seq+1)和自己的序列號(hào)
注:
ACK: 確認(rèn)序列號(hào)是否有效標(biāo)識(shí)绢彤,1為有效,0為無(wú)效
ack:確認(rèn)序列號(hào)蜓耻,值為對(duì)方序列號(hào)+1
seq: 自己初始+1
狀態(tài):客戶(hù)端-ESTABLISHED 服務(wù)端-ESTABLISHED

為什么要三次握手

確認(rèn)對(duì)方的發(fā)送和接收能力
第一次握手:客戶(hù)端=》服務(wù)端-----服務(wù)端確認(rèn)了客服端發(fā)送能力
第二次握手:服務(wù)端=》客戶(hù)端-----客戶(hù)端確認(rèn)了服務(wù)端的接收和發(fā)送能力
第三次握手:客服端=》服務(wù)端-----服務(wù)端確認(rèn)了客服端的接收能力

半連接隊(duì)列:

服務(wù)端在第一次接收客服端SYN之后茫舶,會(huì)處于SYN_RCVD狀態(tài),此時(shí)服務(wù)端會(huì)把客服端的請(qǐng)求放在隊(duì)列里刹淌,這種隊(duì)列就是半連接隊(duì)列饶氏;
在半連接隊(duì)列的客服端如果在定時(shí)的時(shí)候沒(méi)有收到客服的ACK,則會(huì)重發(fā)服務(wù)端ACK報(bào)文(linux 默認(rèn)5次)有勾,超過(guò)則會(huì)斷開(kāi)連接疹启;
半連接隊(duì)列滿(mǎn):服務(wù)端會(huì)直接丟棄當(dāng)前客戶(hù)端 SYN 包(Client端由于多次重發(fā)SYN包得不到響應(yīng)而拋出connection time out錯(cuò)誤)

全連接隊(duì)列

三次握手完成的連接會(huì)放入全連接狀態(tài)

SYN攻擊

SYN攻擊是短時(shí)間內(nèi)偽造大量不存在的IP地址,并向Server不斷地發(fā)送SYN包柠衅,server則回復(fù)ack確認(rèn)包,由于源ip地址是偽造的籍琳,客服端不會(huì)有回復(fù)菲宴,server就不斷的重發(fā)直至超時(shí),此時(shí)偽造的大量的SYN包會(huì)占用半連接隊(duì)列趋急,導(dǎo)致正常的SYN請(qǐng)求因隊(duì)列滿(mǎn)被丟棄喝峦,從而引進(jìn)網(wǎng)絡(luò)癱瘓甚至系統(tǒng)癱瘓。
常見(jiàn)防御方法:
縮短SYN Timeout時(shí)間呜达,增加最大半連接數(shù)谣蠢,過(guò)濾網(wǎng)關(guān)防護(hù),SYN cookies技術(shù)

四次揮手

TCP提供了在一端結(jié)束發(fā)送的同時(shí)可以保留接收數(shù)據(jù)能力查近,即TCP的half-close(半關(guān)閉)眉踱,因此結(jié)束一段連接需要四次揮手。

第一次揮手 客戶(hù)端發(fā)送報(bào)文段:FIN=1,seq=u

客戶(hù)端斷開(kāi)連接霜威,并發(fā)送(連接釋放報(bào)文端)即FIN報(bào)文谈喳,報(bào)文中攜帶一段序列號(hào)seq。
狀態(tài):客戶(hù)端-FIN_WAIT1 等待服務(wù)端的確認(rèn)

第二次揮手 服務(wù)端發(fā)送報(bào)文段:ACK=1,ack=u+1,seq=v

服務(wù)端接收到客服端的釋放連接報(bào)文后戈泼,發(fā)送確認(rèn)報(bào)文段婿禽。此時(shí)TCP連接處于半關(guān)閉狀態(tài)赏僧。
客戶(hù)端接收到確認(rèn)報(bào)文段后,處于FIN_WAIT2狀態(tài)扭倾,繼續(xù)等待服務(wù)端的連接釋放報(bào)文段
狀態(tài):客戶(hù)端-FIN_WAIT2 服務(wù)端-CLOSE_WAIT

第三次揮手 服務(wù)端發(fā)送報(bào)文段:FIN=1淀零,ACK=1,seq=w ack=u+1

服務(wù)端斷開(kāi)連接膛壹,和客戶(hù)端一樣發(fā)送一段FIN報(bào)文驾中,等待客戶(hù)端的確認(rèn)
狀態(tài):服務(wù)端-LAST_ACK

第四次揮手 客戶(hù)端發(fā)送報(bào)文段:ACK=1,seq=u+1恢筝,ack=w+1

客戶(hù)端接收到服務(wù)端的連接釋放報(bào)文后哀卫,發(fā)出確認(rèn)報(bào)文端。服務(wù)端接收確認(rèn)報(bào)文段后就關(guān)閉連接撬槽,進(jìn)入CLOSED狀態(tài)此改,客戶(hù)段處于TIME_WAIT(時(shí)間等待)狀態(tài),等待2MSL(報(bào)文在網(wǎng)絡(luò)中最大生存時(shí)間)后進(jìn)入關(guān)閉狀態(tài)侄柔;
狀態(tài):服務(wù)端-CLOSED 客戶(hù)端- TIME_WAIT

為什么要四次揮手

第一次和第二次為客戶(hù)端關(guān)閉連接報(bào)文和服務(wù)端確認(rèn)報(bào)文共啃,第二次第三次為服務(wù)端關(guān)閉連接和客戶(hù)端確認(rèn)報(bào)文

客戶(hù)端為什么要等待2MSL

確保服務(wù)端正常關(guān)閉連接≡萏猓客戶(hù)端在發(fā)送服務(wù)端的確認(rèn)報(bào)文后移剪,如果確認(rèn)報(bào)文在發(fā)送的過(guò)程中丟失,服務(wù)端接收不到客戶(hù)端的確認(rèn)報(bào)文薪者,會(huì)一直處于LAST-ACK狀態(tài)纵苛,無(wú)法正常關(guān)閉。服務(wù)端如果超時(shí)沒(méi)接收到客戶(hù)端的確認(rèn)報(bào)文言津,會(huì)重發(fā)FIN_ACK報(bào)文段攻人,客戶(hù)端接收后重置2MSI等待時(shí)間。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末悬槽,一起剝皮案震驚了整個(gè)濱河市怀吻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌初婆,老刑警劉巖蓬坡,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異磅叛,居然都是意外死亡屑咳,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)弊琴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)乔宿,“玉大人,你說(shuō)我怎么就攤上這事访雪∠耆穑” “怎么了掂林?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)坝橡。 經(jīng)常有香客問(wèn)我泻帮,道長(zhǎng),這世上最難降的妖魔是什么计寇? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任锣杂,我火速辦了婚禮,結(jié)果婚禮上番宁,老公的妹妹穿的比我還像新娘元莫。我一直安慰自己,他們只是感情好蝶押,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布踱蠢。 她就那樣靜靜地躺著,像睡著了一般棋电。 火紅的嫁衣襯著肌膚如雪茎截。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天赶盔,我揣著相機(jī)與錄音企锌,去河邊找鬼。 笑死于未,一個(gè)胖子當(dāng)著我的面吹牛撕攒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播烘浦,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼抖坪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了谎倔?” 一聲冷哼從身側(cè)響起柳击,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤猿推,失蹤者是張志新(化名)和其女友劉穎片习,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蹬叭,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡藕咏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秽五。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孽查。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖坦喘,靈堂內(nèi)的尸體忽然破棺而出盲再,到底是詐尸還是另有隱情西设,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布答朋,位于F島的核電站贷揽,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏梦碗。R本人自食惡果不足惜禽绪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望洪规。 院中可真熱鬧印屁,春花似錦、人聲如沸斩例。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)樱拴。三九已至柠衍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間晶乔,已是汗流浹背珍坊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留正罢,地道東北人阵漏。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像翻具,于是被迫代替她去往敵國(guó)和親履怯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

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