精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

TCP三次握手與四次揮手的細節(jié)理解

GReq_mcu168 ? 來源:碼農(nóng)愛學習 ? 作者:碼農(nóng)愛學習 ? 2021-03-25 14:11 ? 次閱讀

簡介

TCP提供面向有連接的通信傳輸,面向有連接是指在數(shù)據(jù)通信開始之前先做好通信兩端之間的準備工作。

TCP在數(shù)據(jù)通信之前,通過TCP首部發(fā)送一個SYN包作為建立連接的請求等待確認應答(TCP中發(fā)送第一個SYN包的一方叫做客戶端,接收這個的一方叫做服務端)。如果對端發(fā)來確認應答,則認為可以進行數(shù)據(jù)通信。如果對端的確認應答未能到達,就不會進行數(shù)據(jù)通信。此外,在通信結(jié)束時會進行斷開連接的處理(FIN包)。

一個連接的建立與斷開,正常過程至少需要來回發(fā)送7個包才能完成(建立一個TCP連接需要發(fā)送3個包,這個過程也稱作“三次握手”,斷開一個TCP連接需要發(fā)送4個包,這個過程也稱作“四次揮手”)。

af0d6c02-8cec-11eb-8b86-12bb97331649.png

TCP報文段首部

在具體理解三次握手與四次揮手的細節(jié)時,需要先了解一下TCP報文段的首部格式:

af854cd6-8cec-11eb-8b86-12bb97331649.jpg

主要需要了解的是:

序號 seq

占4個字節(jié),范圍[0,223-1],共223(42 9496 7296)個序號。TCP是面向字節(jié)流的,在一個TCP連接中傳送的字節(jié)流中的每一個字節(jié)都按順序編號。

確認號 ack

占4個字節(jié),是期望收到對方下一個報文段的第一個數(shù)據(jù)字節(jié)的序號。

確認 ACK

僅當ACK=1時確認號字段才有效,當ACK=0時,確認號無效。TCP規(guī)定,在建立連接后所傳送的報文都必須把ACK置1。

同步 SYN

在連接時用來同步序號,當SYN=1而ACK=0時,表明這是一個連接請求報文段,對方若同意連接,在應在響應的報文段中使用SYN=1和ACK=1。因此,SYN置為1就表示這是一個連接請求或連接接受報文。

終止 FIN

用來釋放一個連接,當FIN=1時,表明此報文段的發(fā)送方的數(shù)據(jù)已發(fā)送完畢,并要求釋放運輸連接。

三次握手

afdd4238-8cec-11eb-8b86-12bb97331649.jpg

最初兩端的TCP進程都處于CLOSE(關(guān)閉)狀態(tài)。上圖中A主動打開連接,B被動打開連接。

B打開連接后處于LISTEN(監(jiān)聽狀態(tài)),等待客戶的連接請求。

A向B發(fā)送請求報文,SYN=1,ACK=0,選擇一個初始序號seq=x。

B 收到連接請求報文,如果同意建立連接,則向 A 發(fā)送連接確認報文,SYN=1,ACK=1,確認號為ack= x+1,同時也選擇一個初始的序號 seq=y。

A 收到 B 的連接確認報文后,還要向 B 發(fā)出確認,確認號為ack= y+1,序號為 seq=x+1。

B 收到 A 的確認后,連接建立。

必須握手三次而不是兩次的原因

主要是防止已經(jīng)失效的連接請求報文突然又傳送到了服務器,從而產(chǎn)生錯誤

如果使用的是兩次握手建立連接,假設有這樣一種場景,客戶端發(fā)送了第一個請求連接并且沒有丟失,只是因為在網(wǎng)絡結(jié)點中滯留的時間太長了,由于TCP的客戶端遲遲沒有收到確認報文,以為服務器沒有收到,此時重新向服務器發(fā)送這條報文,此后客戶端和服務器經(jīng)過兩次握手完成連接,傳輸數(shù)據(jù),然后關(guān)閉連接。此時此前滯留的那一次請求連接,網(wǎng)絡通暢了到達了服務器,這個報文本該是失效的,但是,兩次握手的機制將會讓客戶端和服務器再次建立連接,這將導致不必要的錯誤和資源的浪費。

如果采用的是三次握手,就算是那一次失效的報文傳送過來了,服務端接受到了那條失效報文并且回復了確認報文,但是客戶端不會再次發(fā)出確認。由于服務器收不到確認,就知道客戶端并沒有請求連接。

建立連接后,客戶端出現(xiàn)故障時的機制

TCP設有一個保活計時器,顯然,客戶端如果出現(xiàn)故障,服務器不能一直等下去,白白浪費資源。服務器每收到一次客戶端的請求后都會重新復位這個計時器,時間通常是設置為2小時,若2小時還沒有收到客戶端的任何數(shù)據(jù),服務器就會發(fā)送一個探測報文段,以后每隔75秒發(fā)送一次。若一連發(fā)送10個探測報文仍然沒反應,服務器就認為客戶端出了故障,接著就關(guān)閉連接。

四次揮手

b055125e-8cec-11eb-8b86-12bb97331649.jpg

A 發(fā)送連接釋放報文,F(xiàn)IN=1。

B 收到之后發(fā)出確認,此時 TCP 屬于半關(guān)閉狀態(tài),B 能向 A 發(fā)送數(shù)據(jù)但是 A 不能向 B 發(fā)送數(shù)據(jù)。

當 B 不再需要連接時,發(fā)送連接釋放報文,F(xiàn)IN=1。

A 收到后發(fā)出確認,進入 TIME-WAIT 狀態(tài),等待 2 MSL(最大報文存活時間)后釋放連接。

B 收到 A 的確認后釋放連接。

四次揮手的細節(jié)

CLOSE-WAIT

客戶端發(fā)送了 FIN 連接釋放報文之后,服務器收到了這個報文,就進入了 CLOSE-WAIT 狀態(tài)。這個狀態(tài)是為了讓服務器端發(fā)送還未傳送完畢的數(shù)據(jù),傳送完畢之后,服務器會發(fā)送 FIN 連接釋放報文。

TIME-WAIT

客戶端接收到服務器端的 FIN 報文后進入此狀態(tài),此時并不是直接進入 CLOSED 狀態(tài),還需要等待一個時間計時器設置的時間 2MSL。原因有二:

為保證A發(fā)送的最后一個ACK報文段能夠到達B

A發(fā)送的這個ACK報文段有可能丟失,如果 B 沒收到 A 發(fā)送來的確認報文,那么A就會重新發(fā)送連接釋放請求報文,A 等待一段時間就是為了處理這種情況的發(fā)生。

防止“已經(jīng)失效的連接請求報文段”出現(xiàn)在本鏈接中

A在發(fā)送完最后一個ACK報文段后,再經(jīng)過時間2MSL,就可以使本連接的時間內(nèi)所產(chǎn)生的所有報文段都從網(wǎng)絡中消失。這樣下一個新的連接中就不會出現(xiàn)這種舊的連接請求報文段。

為何建立連接協(xié)議是三次握手,而關(guān)閉連接卻是四次揮手?

因為服務端B的LISTEN狀態(tài)下的SOCKET當收到SYN報文的連接請求后,它可以把ACK和SYN(ACK起應答作用,而SYN起同步作用)放在一個報文里來發(fā)送。但關(guān)閉連接時,當B收到對方A的FIN報文通知時,它僅表示客戶端A沒有數(shù)據(jù)發(fā)送給B了;但未必B的數(shù)據(jù)都全部發(fā)送給A了,所以B可能未必會馬上會關(guān)閉SOCKET,而是先發(fā)送一個ACK應答信號,繼續(xù)將剩余的數(shù)據(jù)發(fā)送給A之后,再發(fā)送FIN報文給A表示B同意現(xiàn)在可以關(guān)閉連接了,所以它這里的ACK報文和FIN報文多數(shù)情況下都是分開發(fā)送的。

原文標題:TCP的三次握手與四次揮手

文章出處:【微信公眾號:玩轉(zhuǎn)單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    5973

    瀏覽量

    135863
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1351

    瀏覽量

    78989

原文標題:TCP的三次握手與四次揮手

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    三次諧波治理用多大的電抗器?

    三次諧波治理時選擇合適的電抗器電感值非常關(guān)鍵,一般需要根據(jù)電網(wǎng)諧波情況、目標濾波頻率和濾波器容量等因素來確定。針對三次諧波治理,通常建議配置以下參數(shù)的電抗器: 電抗率(%) :三次諧波頻率較低
    的頭像 發(fā)表于 10-28 14:14 ?186次閱讀
    <b class='flag-5'>三次</b>諧波治理用多大的電抗器?

    簡述TCP協(xié)議的三次握手機制

    TCP(Transmission Control Protocol,傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。它主要用于在IP網(wǎng)絡中進行數(shù)據(jù)傳輸。TCP協(xié)議的三次握手
    的頭像 發(fā)表于 08-16 10:57 ?669次閱讀

    MEMS 的第四次浪潮,來了!

    星、小米、OPPO等各種消費電子品牌。 MEMS被業(yè)內(nèi)人士號稱“一輩子都做不完的產(chǎn)業(yè)”,迄今已經(jīng)經(jīng)歷了三次熱潮:1990年~2000年汽車安全掀起第一熱潮;2000年~2010年智能手機引發(fā)第二熱潮
    的頭像 發(fā)表于 07-25 16:46 ?504次閱讀
    MEMS 的第<b class='flag-5'>四次</b>浪潮,來了!

    三次諧波定子接地保護動作條件

    三次諧波定子接地保護是電力系統(tǒng)中一種重要的保護方式,主要用于保護發(fā)電機、變壓器等設備的定子繞組。 一、三次諧波定子接地保護的基本原理 1.1 三次諧波的產(chǎn)生 在電力系統(tǒng)中,由于非線性負載、變壓器鐵芯
    的頭像 發(fā)表于 07-25 14:57 ?922次閱讀

    三次諧波對注入式定子接地影響

    引言 隨著電力系統(tǒng)的快速發(fā)展,電力系統(tǒng)的諧波問題日益突出。三次諧波作為電力系統(tǒng)中常見的一種諧波,對電力系統(tǒng)的安全穩(wěn)定運行產(chǎn)生了一定的影響。特別是在注入式定子接地系統(tǒng)中,三次諧波的影響尤為明顯。 三次
    的頭像 發(fā)表于 07-25 14:55 ?595次閱讀

    諧波和三次諧波區(qū)別 二諧波危害沒有三次諧波大?

    諧波和三次諧波區(qū)別 二諧波危害沒有三次諧波大? 在現(xiàn)代電力系統(tǒng)中,諧波問題逐漸引起人們的關(guān)注。諧波是指頻率是基波頻率的倍數(shù)的電流或電壓成分。二
    的頭像 發(fā)表于 04-08 17:11 ?5249次閱讀

    SpaceX星艦將第三次試飛

    SpaceX公司近日宣布,其巨型火箭星艦即將迎來第三次試飛,旨在進一步測試其性能極限。據(jù)悉,這次試飛計劃最早于3月14日進行,相比前兩,其任務目標更加宏大且復雜。
    的頭像 發(fā)表于 03-08 13:52 ?634次閱讀

    說說TCP三次握手的過程?為什么是三次而不是兩四次

    說說TCP三次握手的過程?為什么是三次而不是兩四次T
    的頭像 發(fā)表于 02-04 11:03 ?621次閱讀

    tcp協(xié)議四次揮手過程及原因

    TCP協(xié)議致力于可靠的數(shù)據(jù)傳輸,即使在連接關(guān)閉時也不例外。在關(guān)閉連接之前,雙方需要確保對方已經(jīng)接收到了所有的數(shù)據(jù),以避免數(shù)據(jù)丟失或不完整。
    的頭像 發(fā)表于 02-03 16:51 ?5477次閱讀
    <b class='flag-5'>tcp</b>協(xié)議<b class='flag-5'>四次</b><b class='flag-5'>揮手</b>過程及原因

    TCP協(xié)議連接的三次握手

    通過三次握手,客戶端與服務端能夠確保彼此的網(wǎng)絡連接是可用的。客戶端發(fā)起的SYN報文和服務端返回的SYN+ACK報文都包含了對方的初始序列號和通信能力信息,通過互相確認這些信息,雙方確認彼此的能力和正確性。
    的頭像 發(fā)表于 02-03 16:44 ?1307次閱讀
    <b class='flag-5'>TCP</b>協(xié)議連接的<b class='flag-5'>三次</b><b class='flag-5'>握手</b>

    傳輸控制協(xié)議TCP特點及三次握手過程

    TCP的主要功能包括分段、確認、重傳、排序和流控等,以保證數(shù)據(jù)傳輸?shù)目煽啃院晚樞蛐浴?b class='flag-5'>TCP通過將數(shù)據(jù)流分割成適當長度的報文段,并對每個段進行編號,以便接收端實體按序接收并重組為原始數(shù)據(jù)流。
    的頭像 發(fā)表于 02-03 16:38 ?1027次閱讀
    傳輸控制協(xié)議<b class='flag-5'>TCP</b>特點及<b class='flag-5'>三次</b><b class='flag-5'>握手</b>過程

    TCP和UDP協(xié)議有什么區(qū)別?如何通過網(wǎng)關(guān)實現(xiàn)TCP協(xié)議通信?

    四次握手就是指斷開的過程。而UDP可以立即傳輸數(shù)據(jù),并不需要建立三次握手連接。兩者相比,TCP就像是掛了專家號,可以保證及時看病;而UDP就
    的頭像 發(fā)表于 01-24 11:07 ?570次閱讀
    <b class='flag-5'>TCP</b>和UDP協(xié)議有什么區(qū)別?如何通過網(wǎng)關(guān)實現(xiàn)<b class='flag-5'>TCP</b>協(xié)議通信?

    請問SPI DMA描述符列表如何單觸發(fā)?

    第一 按照描述符元素0的配置信息進行觸發(fā); 手動第二 按照描述符元素1的配置信息進行觸發(fā); 手動第三次 按照描述符元素2的配置信息進行觸發(fā); 手動第四次 按照描述符元素0的配置信
    發(fā)表于 01-12 08:07

    淺談TCP三次握手四次揮手

    在計算機網(wǎng)絡的基本概念中,分層次的體系結(jié)構(gòu)是最基本的。計算機網(wǎng)絡體系結(jié)構(gòu)的抽象概念較多,在學習時要多思考。這些概念對后面的學習很有幫助。
    的頭像 發(fā)表于 01-03 13:40 ?709次閱讀
    淺談<b class='flag-5'>TCP</b><b class='flag-5'>三次</b><b class='flag-5'>握手</b>和<b class='flag-5'>四次</b><b class='flag-5'>揮手</b>

    TCP四次揮手過程分析

    TCP 連接是全雙工的,雙方可以同時發(fā)送和接收數(shù)據(jù)。第一客戶端發(fā)送 FIN 報文后只表示它不再發(fā)送數(shù)據(jù),但還是能接受數(shù)據(jù)。服務端接收到 FIN 報文,回一個 ACK 應答報文,這次服務端可以還有數(shù)據(jù)需要處理和發(fā)送,等它處理完成
    的頭像 發(fā)表于 12-10 15:40 ?2839次閱讀
    <b class='flag-5'>TCP</b><b class='flag-5'>四次</b><b class='flag-5'>揮手</b>過程分析