chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

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

講一講的TCP三次握手和四次揮手

阿銘linux ? 來源:阿銘linux ? 作者:阿銘linux ? 2023-02-03 10:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

如果你學(xué)過網(wǎng)絡(luò)基礎(chǔ)知識,那么你一定對TCP三次握手不陌生。今天我想用通俗的話來給大家講一講TCP三次握手和四次揮手。畢竟,這個知識點在面試時被問到的概率很高!

TCP特點

① 面向連接

TCP是面向客戶端和服務(wù)器端連接的通訊協(xié)議,使用它可以將客戶端和服務(wù)器端進行連接。數(shù)據(jù)通信之前,必須要有一個連接通道建立。

② 可靠性

是指無論網(wǎng)絡(luò)環(huán)境多差,TCP都可以保證信息一定能夠傳遞到接收端。TCP之所以可以保證可靠性主要得益于兩個方面,一個是“狀態(tài)性”,另一個是“可控制性”。所謂狀態(tài)性是指TCP會記錄信息的發(fā)送狀態(tài),例如,哪些數(shù)據(jù)收到了、哪些數(shù)據(jù)沒收到等狀態(tài)信息都會被記錄;可控制性是指TCP會根據(jù)狀態(tài)情況控制自己的行為,比如當(dāng)TCP意識到丟包了就會控制重發(fā)此包,這樣就實現(xiàn)了TCP的可靠性。 總之,TCP可以很好地處理傳輸過程中數(shù)據(jù)包丟失的情況,它會重復(fù)發(fā)送包,這個特性很關(guān)鍵。

③ 傳輸單位為數(shù)據(jù)段

是指TCP在數(shù)據(jù)傳輸時,傳送的每一個數(shù)據(jù)包里的數(shù)據(jù)只是一個數(shù)據(jù)段單元,并非完整數(shù)據(jù),比如,要傳送一個1MB的文件,整個文件會被切割成諸多數(shù)據(jù)段,然后再進行傳輸。 由于數(shù)據(jù)段大小受應(yīng)用層傳送給的報文大小和所途徑網(wǎng)絡(luò)中的MYU值大小決定,所以每次發(fā)送的TCP數(shù)據(jù)段大小是不固定的。在一個具體的網(wǎng)絡(luò)中,有一個MSS(Maximum Segment Size,即最大數(shù)據(jù)段大?。?,最小的和數(shù)據(jù)段可能僅有21字節(jié)(其中20字節(jié)屬于TCP數(shù)據(jù)段頭部,數(shù)據(jù)部分僅1字節(jié))。

④基于字節(jié)流

說到字節(jié)流,不得不提一下UDP的傳輸,UDP傳輸是基于報文的,簡單點理解,UDP傳輸一個消息,需要將整個消息封裝成一個數(shù)據(jù)包,然后進行傳輸。而TCP不一樣,它會把整個消息切割成若干段,然后每一個段再被封裝成數(shù)據(jù)包,逐一傳輸??傊?,TCP不像UDP那樣以一個個報文獨立地進行傳輸,而是在不保留報文邊界的情況下以字節(jié)流方式進行傳輸。

TCP三次握手過程

了解了TCP的特點后,再來看TCP三次握手就容易理解為何要三次,而不是兩次啦。

980f5594-a2fa-11ed-bfe3-dac502259ad0.png

一開始客戶端和服務(wù)端都是CLOSED狀態(tài),就好比他們兩個彼此相互不認(rèn)識,誰都不理誰。下面為了更好理解三次握手,我把客戶端叫做小客,服務(wù)器叫做小服。

有一天小客需要小服幫忙,于是小客首先跟小服打招呼:你好小服,我需要你幫助,可以幫我嗎?(客戶端發(fā)送SYN=1,seq=x,這個x是一個隨機數(shù)) 小服收到消息后,會回一個反饋給到小客:你好小客,我可以幫助你啊,那我要如何幫你呢?(服務(wù)端發(fā)送SYN=1,ACK=1,同時發(fā)送seq=y,ack=x+1,這里的ack為客戶端發(fā)送的seq數(shù)值加1) 小客收到小服的反饋后,很高興,于是又跟小服回了一句:謝謝你小服,我需要你幫我做......(客戶端再次跟服務(wù)端發(fā)送ACK=1,seq=x+1,ack=y+1)。 小服再次收到小客的反饋后,小服就開始幫小服做事情了,從此成為了好基友!

做一個簡單總結(jié):

第一次握手:客戶端發(fā)送 SYN 報文,并進入 SYN_SENT 狀態(tài),等待服務(wù)器的確認(rèn);

第二次握手:服務(wù)器收到 SYN 報文,需要給客戶端發(fā)送 ACK 確認(rèn)報文,同時服務(wù)器也要向客戶端發(fā)送一個 SYN 報文,所以也就是向客戶端發(fā)送 SYN + ACK 報文,此時服務(wù)器進入 SYN_RCVD 狀態(tài);

第三次握手:客戶端收到 SYN + ACK 報文,向服務(wù)器發(fā)送確認(rèn)包,客戶端進入 ESTABLISHED 狀態(tài)。待服務(wù)器收到客戶端發(fā)送的 ACK 包也會進入 ESTABLISHED 狀態(tài),完成三次握手。

TCP四次揮手

當(dāng)客戶端和服務(wù)端通信完畢后,需要斷開連接,釋放資源。在正式斷開連接之前,客戶端和服務(wù)端會出現(xiàn)幾個狀態(tài),先看四次揮手狀態(tài)圖:

982eec92-a2fa-11ed-bfe3-dac502259ad0.png

我們還拿剛才小客和小服來舉例,小客的事情在小服的幫助下得到了圓滿結(jié)束,小客對小服非常感激,這一天小客跟小服提出了感謝。

小客:你好小服,我的事情在你的幫助下終于完成了,感謝你的幫忙,后面暫時不需要你的幫助啦。(FIN=1 seq=u)

小服:收到,小客,不用客氣啦。這陣我也太累了,是該休息一下啦,那我們就后會有期吧?(ACK=1 seq=v ack=u+1; FIN=1 seq=w ack=u+1)

小客:再次感謝,后會有期!(ACK=1 seq=u+1 ack=w+1)

之后小客和小服就沒有再聯(lián)系了。

再來做個總結(jié)吧:

客戶端發(fā)送斷開TCP連接請求的報文,其中報文中包含seq序列號,是由發(fā)送端隨機生成的,并且還將報文中的FIN字段置為1,表示需要斷開TCP連接。(FIN=1,seq=x,x由客戶端隨機生成);

服務(wù)端會回復(fù)客戶端發(fā)送的TCP斷開請求報文,其包含seq序列號,是由回復(fù)端隨機生成的,而且會產(chǎn)生ACK字段,ACK字段數(shù)值是在客戶端發(fā)過來的seq序列號基礎(chǔ)上加1進行回復(fù),以便客戶端收到信息時,知曉自己的TCP斷開請求已經(jīng)得到驗證。(FIN=1,ACK=x+1,seq=y,y由服務(wù)端隨機生成);

服務(wù)端在回復(fù)完客戶端的TCP斷開請求后,不會馬上進行TCP連接的斷開,服務(wù)端會先確保斷開前,所有傳輸?shù)紸的數(shù)據(jù)是否已經(jīng)傳輸完畢,一旦確認(rèn)傳輸數(shù)據(jù)完畢,就會將回復(fù)報文的FIN字段置1,并且產(chǎn)生隨機seq序列號。(FIN=1,ACK=x+1,seq=z,z由服務(wù)端隨機生成);

客戶端收到服務(wù)端的TCP斷開請求后,會回復(fù)服務(wù)端的斷開請求,包含隨機生成的seq字段和ACK字段,ACK字段會在服務(wù)端的TCP斷開請求的seq基礎(chǔ)上加1,從而完成服務(wù)端請求的驗證回復(fù)。(FIN=1,ACK=z+1,seq=h,h為客戶端隨機生成)

TCP連接中的狀態(tài)說明

TCP三次握手和四次揮手過程中,客戶端和服務(wù)端出現(xiàn)了多個TCP連接狀態(tài),下面我來做一個列舉。

LISTEN:服務(wù)端上起了服務(wù)就會監(jiān)聽一個端口(例如SSHD服務(wù)監(jiān)聽22端口),等待客戶端來連接它。

SYN_SENT:客戶端想要連接服務(wù)端,先打招呼,也就是三次握手時的第一次,它把請求發(fā)出去后,就變成了這個狀態(tài),表示等待服務(wù)端的確認(rèn)。

SYN_RECEIVED:服務(wù)端接收到了客戶端的請求,之后需要反饋給客戶端確認(rèn)信息,并且同時也要把自己的請求信息一起發(fā)給客戶端,此時就會變成SYN_RECEIVED狀態(tài)。

ESTABLISHED:經(jīng)過三次握手后,客戶端和服務(wù)端相繼變成ESTABLISHED狀態(tài),表示雙方建立了連接。只有雙方都是該狀態(tài),才可以順利傳輸數(shù)據(jù)。

FIN_WAIT_1:客戶端和服務(wù)端傳輸完數(shù)據(jù)后,總有一方需要主動發(fā)起關(guān)閉連接,這個FIN_WAIT_1狀態(tài)出現(xiàn)在主動關(guān)閉方。當(dāng)它發(fā)起關(guān)閉連接的請求后,就會變成此狀態(tài)。它需要等待對方的確認(rèn)。

FIN_WAIT_2:主動關(guān)閉方收到被動關(guān)閉方的確認(rèn)信息后,就會變成此狀態(tài)。

CLOSE_WAIT:被動關(guān)閉方收到主動方的關(guān)閉請求后,會發(fā)出確認(rèn)信息,確認(rèn)信息發(fā)出后就出現(xiàn)了CLOSE_WAIT。

LAST_ACK:被動關(guān)閉方除了發(fā)送確認(rèn)信息外,還需要發(fā)送關(guān)閉確認(rèn)信息給對方,這個信息發(fā)送完畢后,就會成為LAST_ACK狀態(tài),此時被動關(guān)閉方只需要等待主動關(guān)閉方的一個回饋確認(rèn)信息。

TIME_WAIT:主動關(guān)閉方將最后一次的確認(rèn)信息發(fā)送給被動關(guān)閉方,就會處于TIME_WAIT狀態(tài),該狀態(tài)只出現(xiàn)在主動關(guān)閉方,它只需等待一個時間就會徹底關(guān)閉,這個等待的時間為2*MSL(Maximum Segment Lifetime,報文最長存活時間)。因為它需要一個等待時間,所以在Linux系統(tǒng)里,這個狀態(tài)是最常見、最多的狀態(tài)。

CLOSING:幾乎看不到的狀態(tài),表示正在關(guān)閉連接,這個是瞬時完成的。

CLOSED:徹底關(guān)閉連接的狀態(tài)(這是為方便描述假想的狀態(tài),實際不存在)


審核編輯:劉清

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

    關(guān)注

    13

    文章

    9784

    瀏覽量

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

    關(guān)注

    8

    文章

    1402

    瀏覽量

    80962
  • ACK
    ACK
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    11379
  • UDP
    UDP
    +關(guān)注

    關(guān)注

    0

    文章

    330

    瀏覽量

    34612

原文標(biāo)題:再談TCP三次握手和四次揮手

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    這樣TCP的戀愛和分手大家都懂了

    Client與Server之間可以開始傳輸數(shù)據(jù)了。? 四次揮手三次握手耳熟能詳,四次揮手估計就{
    發(fā)表于 07-25 14:47

    三次握手,四次揮手你懂嗎

    程序員面試被問到“三次握手,四次揮手”怎么辦?
    發(fā)表于 04-08 07:23

    TCP三次握手的過程描述

    本文檔主要描述TCP三次握手的過程,個完整的三次握手也就是 請求---應(yīng)答---再次確認(rèn)
    發(fā)表于 03-02 15:37 ?8次下載

    TCP/IP協(xié)議工作過程的三次握手四次揮手

    )、第三次握手:Client收到確認(rèn)后,檢查ACK是否為1,如果正確則將標(biāo)志位ACK置為1,并將該數(shù)據(jù)包發(fā)送給Server,Server檢查ACK是否為1,如果正確則連接建立成功,Client
    的頭像 發(fā)表于 10-25 09:49 ?7218次閱讀

    TCP三次握手過程及四次揮手過程說明

    三次握手 置位概念:根據(jù) TCP 的包頭字段,存在 3 個重要的標(biāo)識 ACK、SYN、FIN ACK:表示驗證字段 SYN:位數(shù)置 1,表示建立 TCP 連接 FIN:位數(shù)置 1,表示
    的頭像 發(fā)表于 03-01 12:00 ?4462次閱讀

    TCP三次握手四次揮手以及11種狀態(tài)資料下載

    電子發(fā)燒友網(wǎng)為你提供TCP三次握手四次揮手以及11種狀態(tài)資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料
    發(fā)表于 04-15 08:41 ?2次下載
    <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>以及11種狀態(tài)資料下載

    TCP三次握手四次揮手過程中的異常情況

    TCP 三次握手四次揮手過程中,途中某步的報文丟失了,會發(fā)生什么?
    的頭像 發(fā)表于 09-05 10:23 ?1615次閱讀

    如何使用WireShark進行TCP三次握手

    WireShark是種非常方便的網(wǎng)絡(luò)抓包工具,下面演示,使用WireShark來抓取TCP三次握手過程。
    的頭像 發(fā)表于 11-01 09:50 ?2427次閱讀

    TCP建立連接概述及三次握手四次揮手的流程

    具備上述個條件后A獲取B的信息是有要求的,根本上的要求是數(shù)據(jù)信道可靠,就是平時所說的可靠連接,那么如何保證連接的可靠性呢,TCP協(xié)議就是靠確認(rèn)應(yīng)答機制、超時重傳機制等保證連接可靠性的,接下來就通過TCP協(xié)議的
    的頭像 發(fā)表于 03-23 15:57 ?1505次閱讀
    <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三次握手四次揮手

    前言今天的分享,是關(guān)于前兩天讀到的心得,TCP建立連接時三次握手,斷開時為何4握手的自我理解:戀愛時連接時客戶端說:SYN(約嗎?)服務(wù)器
    的頭像 發(fā)表于 08-28 16:11 ?1060次閱讀
    用戀愛的方式解釋<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種面向連接的協(xié)議。在進行數(shù)據(jù)傳輸之前,發(fā)送端和接收端需要建立
    的頭像 發(fā)表于 02-04 11:03 ?1135次閱讀

    TCP三次握手協(xié)議的作用

    在計算機網(wǎng)絡(luò)中,數(shù)據(jù)的傳輸需要在發(fā)送方和接收方之間建立個穩(wěn)定的連接,以確保數(shù)據(jù)的完整性和順序。TCP(傳輸控制協(xié)議)是種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,它通過三次
    的頭像 發(fā)表于 01-03 17:15 ?920次閱讀

    TCP三次握手的基本原理

    在計算機網(wǎng)絡(luò)中,TCP(傳輸控制協(xié)議)是種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。它確保了數(shù)據(jù)在網(wǎng)絡(luò)中傳輸?shù)目煽啃院晚樞蛐浴榱私蓚€網(wǎng)絡(luò)實體之間的通信,TCP使用種稱為
    的頭像 發(fā)表于 01-03 17:25 ?1137次閱讀

    TCP三次握手安全性分析

    、TCP三次握手的基本過程 TCP三次握手的過
    的頭像 發(fā)表于 01-03 18:10 ?1011次閱讀

    TCP三次握手四次揮手,這樣解釋太通俗易懂了!

    TCP連接的建立和釋放分別通過“三次握手”和“四次揮手”來完成。三次
    的頭像 發(fā)表于 04-24 19:33 ?747次閱讀
    <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>,這樣解釋太通俗易懂了!