HTTP三次握手連接示例

專業(yè)知識

HTTP 的三次握手是一個非常重要的面試和考試考點,但是今天早上看書上的一幅圖和三段話將近看了半個小時祸挪,于是來總結(jié)一下佑刷。


三次握手圖例

連接狀態(tài)

  1. CLOSED:表示初始狀態(tài)。
  2. LISTEN: 服務(wù)器端的某個SOCKET處于監(jiān)聽狀態(tài)棒动,可以接受連接了。
  3. SYN_SENT:表示客戶端已發(fā)送 SYN 報文肝劲。
  4. SYN_RCVD:表示服務(wù)器接受到了 SYN 報文迁客。
  5. ESTABLISHED:表示連接已經(jīng)建立。

HTTP 的三次握手使用的是 TCP 協(xié)議辞槐,所以先看一下 TCP 的報文段首部掷漱,三次握手需要注意到的是用紅線括起來的部分。

TCP 報文段頭部

字段介紹

  • ACK 確認(rèn)字段:在連接建立后所有傳送的報文段 ACK 必須為 1 榄檬。
  • SYN 同步字段:連接建立時使用同步序號卜范。
  • FIN 終止字段:FIN = 1 是表示釋放一個連接。
  • 序號 seq :發(fā)送了多少被成功接受數(shù)據(jù)鹿榜。
  • 確認(rèn)號 ack:接受了多少數(shù)據(jù)海雪。

注意點

ACK = 1 不攜帶數(shù)據(jù)不消耗序號。
SYN = 1 不能攜帶數(shù)據(jù)并且要消耗一個序號舱殿。

抓包示例

Wirshark 抓包

示例分析

192.168.1.11 為客戶端 A奥裸,42.121.252.58 為服務(wù)器 B。

  1. 客戶端請求連接發(fā)送 SYN 產(chǎn)生一個為 x = 0 的序號 seq 沪袭。
  2. 服務(wù)器接受連接湾宙,ACK = x + 1 = 1 并產(chǎn)生 y = 0 的序號 seq;發(fā)送 SYN ACK seq = 0 ack = 1 到客戶端冈绊。
  3. 客戶端發(fā)現(xiàn)服務(wù)器接受了連接請求返回了 ack侠鳄,seq = x;同時接受服務(wù)器的請求 ack = y + 1 = 1死宣。
  4. 因為上個傳輸伟恶,只傳輸了一個 ACK 沒有數(shù)據(jù),所以看第四條線 seq = 1毅该,ack = 1博秫。

收獲:看 2 這個列表項,發(fā)送端的 seq 字段需要接收到服務(wù)器段的 ack 才會變化鹃骂,這個時候 服務(wù)器 ack = 客戶端 seq 台盯。

所以我才會有下面對 seq 和 ack 的理解。

  • 序號 seq :發(fā)送了多少被成功接受數(shù)據(jù)畏线。
  • 確認(rèn)號 ack:接受了多少數(shù)據(jù)静盅。

面試問題

為什么使用三次握手?
為了防止已失效的連接請求報文段突然又傳送到了服務(wù)端寝殴,因而產(chǎn)生錯誤 ——謝希仁著《計算機網(wǎng)絡(luò)》第四版
謝希仁版《計算機網(wǎng)絡(luò)》中的例子是這樣的蒿叠,“已失效的連接請求報文段”的產(chǎn)生在這樣一種情況下:client發(fā)出的第一個連接請求報文段并沒有丟失,而是在某個網(wǎng)絡(luò)結(jié)點長時間的滯留了蚣常,以致延誤到連接釋放以后的某個時間才到達(dá)server市咽。本來這是一個早已失效的報文段。但server收到此失效的連接請求報文段后抵蚊,就誤認(rèn)為是client再次發(fā)出的一個新的連接請求施绎。于是就向client發(fā)出確認(rèn)報文段溯革,同意建立連接。假設(shè)不采用“三次握手”谷醉,那么只要server發(fā)出確認(rèn)致稀,新的連接就建立了。由于現(xiàn)在client并沒有發(fā)出建立連接的請求俱尼,因此不會理睬server的確認(rèn)抖单,也不會向server發(fā)送數(shù)據(jù)。但server卻以為新的運輸連接已經(jīng)建立遇八,并一直等待client發(fā)來數(shù)據(jù)矛绘。這樣,server的很多資源就白白浪費掉了刃永。采用“三次握手”的辦法可以防止上述現(xiàn)象發(fā)生货矮。例如剛才那種情況,client不會向server的確認(rèn)發(fā)出確認(rèn)斯够。server由于收不到確認(rèn)次屠,就知道client并沒有要求建立連接■ù蹋”主要目的防止server端一直等待劫灶,浪費資源。

觀察 SYN 的含義:同部字段掖桦。如果客戶端和服務(wù)器端都需要使用 SYN-ACK 機制同步一下的話本昏,最少是需要 3 次握手的。另一方面服務(wù)器資源相對于客戶端資源是更加重要一點枪汪。

參考文章

TCP 三次握手

TCP為什么需要3次握手與4次揮手

Wireshark基本介紹和學(xué)習(xí)TCP三次握手

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末涌穆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子雀久,更是在濱河造成了極大的恐慌宿稀,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赖捌,死亡現(xiàn)場離奇詭異祝沸,居然都是意外死亡,警方通過查閱死者的電腦和手機越庇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門罩锐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人卤唉,你說我怎么就攤上這事涩惑。” “怎么了桑驱?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵竭恬,是天一觀的道長跛蛋。 經(jīng)常有香客問我,道長痊硕,這世上最難降的妖魔是什么问芬? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮寿桨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘强戴。我一直安慰自己亭螟,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布骑歹。 她就那樣靜靜地躺著预烙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪道媚。 梳的紋絲不亂的頭發(fā)上扁掸,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機與錄音最域,去河邊找鬼谴分。 笑死,一個胖子當(dāng)著我的面吹牛镀脂,可吹牛的內(nèi)容都是我干的牺蹄。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼薄翅,長吁一口氣:“原來是場噩夢啊……” “哼沙兰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起翘魄,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤鼎天,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后暑竟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體斋射,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年但荤,在試婚紗的時候發(fā)現(xiàn)自己被綠了绩鸣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡纱兑,死狀恐怖呀闻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情潜慎,我是刑警寧澤捡多,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布蓖康,位于F島的核電站,受9級特大地震影響垒手,放射性物質(zhì)發(fā)生泄漏蒜焊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一科贬、第九天 我趴在偏房一處隱蔽的房頂上張望泳梆。 院中可真熱鬧,春花似錦榜掌、人聲如沸优妙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽套硼。三九已至,卻和暖如春胞皱,著一層夾襖步出監(jiān)牢的瞬間邪意,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工反砌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留雾鬼,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓宴树,卻偏偏與公主長得像呆贿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子森渐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

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