TCP/IP的三次握手和四次揮手

\color{#dd0000}{TCP/IP的執(zhí)行標準}

??TCP/IP(Transmission Control Protocol/Internet Protocol) 即傳輸控制協(xié)議/網(wǎng)間協(xié)議亥贸,是一個工業(yè)標準的協(xié)議集贱迟,它是為廣域網(wǎng)(WAN)設計的们镜。它是由ARPANET網(wǎng)的研究機構發(fā)展起來的缴渊。

??TCP/IP的標準在一系列稱為RF [1] C的文檔中公布仑乌。文檔由技術專家兑燥、特別工作組亮瓷、或RFC編輯修訂。公布一個文檔時降瞳,該文檔被賦予一個RFC編號嘱支,如RFC959(FTP的說明文檔)、RFC793(TCP的說明文檔)、RFC791(IP的說明文檔)等除师。最初的RFC一直保留而從來不會被更新赢织, [1] 如果修改了該文檔,則該文檔又以一個新號碼公布馍盟。因此,重要的是要確認你擁有了關于某個專題的最新RFC文檔茧吊。通常在RFC的開頭部分贞岭,有相關RFC的更新(update)、排錯(errata)搓侄、作廢(obsolete)信息瞄桨,提示讀者信息的時效性。

首部格式

TCP的首部格式圖如下所示:


TCP首部

---Source Port是源端口讶踪,16位芯侥。

---Destination Port是目的端口,16位乳讥。

---Sequence Number是發(fā)送數(shù)據(jù)包中的第一個字節(jié)的序列號柱查,32位。

---Acknowledgment Number是確認序列號云石,32位唉工。

---Data Offset是數(shù)據(jù)偏移,4位汹忠,該字段的值是TCP首部(包括選項)長度除以4淋硝。 [1]

---標志位: 6位,URG表示Urgent Pointer字段有意義:

ACK表示Acknowledgment Number字段有意義

PSH表示Push功能宽菜,RST表示復位TCP連接

SYN表示SYN報文(在建立TCP連接的時候使用)

FIN表示沒有數(shù)據(jù)需要發(fā)送了(在關閉TCP連接的時候使用)

Window表示接收緩沖區(qū)的空閑空間谣膳,16位,用來告訴TCP連接對端自己能夠接收的最大數(shù)據(jù)長度铅乡。

---Checksum是校驗和继谚,16位。

---Urgent Pointers是緊急指針隆判,16位犬庇,只有URG標志位被設置時該字段才有意義,表示緊急數(shù)據(jù)相對序列號(Sequence Number字段的值)的偏移侨嘀。

連接建立

TCP是因特網(wǎng)中的傳輸層協(xié)議臭挽,使用三次握手協(xié)議建立連接。當主動方發(fā)出SYN連接請求后咬腕,等待對方回答

SYN+ACK [1] 欢峰,并最終對對方的 SYN 執(zhí)行 ACK 確認。這種建立連接的方法可以防止產生錯誤的連接,TCP使用的流量控制協(xié)議是可變大小的滑動窗口協(xié)議纽帖。 [1]

TCP三次握手的過程如下:

三次握手
  1. 客戶端發(fā)送SYN(SEQ=x)報文給服務器端宠漩,進入SYN_SEND狀態(tài)。

  2. 服務器端收到SYN報文懊直,回應一個SYN (SEQ=y)ACK(ACK=x+1)報文扒吁,進入SYN_RECV狀態(tài)。

  3. 客戶端收到服務器端的SYN報文室囊,回應一個ACK(ACK=y+1)報文雕崩,進入Established狀態(tài)。

三次握手完成融撞,TCP客戶端和服務器端成功地建立連接盼铁,可以開始傳輸數(shù)據(jù)了。

連接終止

四次揮手

建立一個連接需要三次握手尝偎,而終止一個連接要經(jīng)過四次握手饶火,這是由TCP的半關閉(half-close)造成的。具體過程如下圖所示致扯。 [1]

(1) 某個應用進程首先調用close肤寝,稱該端執(zhí)行“主動關閉”(active close)。該端的TCP于是發(fā)送一個FIN分節(jié)急前,表示數(shù)據(jù)發(fā)送完畢醒陆。

(2) 接收到這個FIN的對端執(zhí)行 “被動關閉”(passive close),這個FIN由TCP確認裆针。

注意:FIN的接收也作為一個文件結束符(end-of-file)傳遞給接收端應用進程刨摩,放在已排隊等候該應用進程接收的任何其他數(shù)據(jù)之后,因為世吨,F(xiàn)IN的接收意味著接收端應用進程在相應連接上再無額外數(shù)據(jù)可接收澡刹。

(3) 一段時間后,接收到這個文件結束符的應用進程將調用close關閉它的套接字耘婚。這導致它的TCP也發(fā)送一個FIN罢浇。

(4) 接收這個最終FIN的原發(fā)送端TCP(即執(zhí)行主動關閉的那一端)確認這個FIN。 [1]

既然每個方向都需要一個FIN和一個ACK沐祷,因此通常需要4個分節(jié)嚷闭。

注意:

(1) “通常”是指赖临,某些情況下胞锰,步驟1的FIN隨數(shù)據(jù)一起發(fā)送,另外兢榨,步驟2和步驟3發(fā)送的分節(jié)都出自執(zhí)行被動關閉那一端嗅榕,有可能被合并成一個分節(jié)顺饮。 [2]

(2) 在步驟2與步驟3之間,從執(zhí)行被動關閉一端到執(zhí)行主動關閉一端流動數(shù)據(jù)是可能的凌那,這稱為“半關閉”(half-close)兼雄。

(3) 當一個Unix進程無論自愿地(調用exit或從main函數(shù)返回)還是非自愿地(收到一個終止本進程的信號)終止時,所有打開的描述符都被關閉帽蝶,這也導致仍然打開的任何TCP連接上也發(fā)出一個FIN赦肋。

無論是客戶還是服務器,任何一端都可以執(zhí)行主動關閉励稳。通常情況是金砍,客戶執(zhí)行主動關閉,但是某些協(xié)議麦锯,例如,HTTP/1.0卻由服務器執(zhí)行主動關閉琅绅。 [2]

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末扶欣,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子千扶,更是在濱河造成了極大的恐慌料祠,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澎羞,死亡現(xiàn)場離奇詭異髓绽,居然都是意外死亡,警方通過查閱死者的電腦和手機妆绞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門顺呕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人括饶,你說我怎么就攤上這事株茶。” “怎么了图焰?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵启盛,是天一觀的道長。 經(jīng)常有香客問我技羔,道長僵闯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任藤滥,我火速辦了婚禮鳖粟,結果婚禮上,老公的妹妹穿的比我還像新娘超陆。我一直安慰自己牺弹,他們只是感情好浦马,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著张漂,像睡著了一般晶默。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上航攒,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天磺陡,我揣著相機與錄音,去河邊找鬼漠畜。 笑死币他,一個胖子當著我的面吹牛,可吹牛的內容都是我干的憔狞。 我是一名探鬼主播蝴悉,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瘾敢!你這毒婦竟也來了拍冠?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤簇抵,失蹤者是張志新(化名)和其女友劉穎庆杜,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碟摆,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡晃财,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了典蜕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片断盛。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖愉舔,靈堂內的尸體忽然破棺而出郑临,到底是詐尸還是另有隱情,我是刑警寧澤屑宠,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布厢洞,位于F島的核電站,受9級特大地震影響典奉,放射性物質發(fā)生泄漏躺翻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一卫玖、第九天 我趴在偏房一處隱蔽的房頂上張望公你。 院中可真熱鬧,春花似錦假瞬、人聲如沸陕靠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剪芥。三九已至垄开,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間税肪,已是汗流浹背溉躲。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留益兄,地道東北人锻梳。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像净捅,于是被迫代替她去往敵國和親疑枯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內容