為什么tcp需要四次揮手 三次握手及四次揮手在TCP/ip模型的哪一層進行的?最好有理由~?
三次握手及四次揮手在TCP/ip模型的哪一層進行的?最好有理由~?TCP/IP由四層組成:網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。三次握手和四個波發(fā)生在第三層:傳輸層。原因:三次握手和四次波是TCP協(xié)議保
三次握手及四次揮手在TCP/ip模型的哪一層進行的?最好有理由~?
TCP/IP由四層組成:網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。
三次握手和四個波發(fā)生在第三層:傳輸層。原因:三次握手和四次波是TCP協(xié)議保證可靠全連接的手段,TCP協(xié)議屬于傳輸層協(xié)議。當(dāng)然,三次握手和四個波發(fā)生在第三層——傳輸層
你聽到了嗎?
我聽到了。你呢?
我也聽說過
三次握手之后,一定要保證雙方都能溝通,哪句話是無效的
首先,讓我們看看我們在三次握手中都做了些什么
!在第一次握手中,客戶端向服務(wù)器發(fā)送請求:“我想與您建立鏈接”
在第二次握手中,服務(wù)器回復(fù)客戶端:“收到,您真的想與我建立鏈接嗎”
在第三次握手中,客戶端回復(fù)服務(wù)器:“是,我真的很想和你建立聯(lián)系。
成功
!我想您最大的疑問是:當(dāng)服務(wù)器第二次回復(fù)客戶端時,為什么不直接成功呢
!第三次握手的主要目的是防止向服務(wù)器發(fā)送無效的鏈接請求
!當(dāng)然,正常情況下沒問題
!但是,在異常情況下!客戶端發(fā)送了一個請求,在一個網(wǎng)絡(luò)節(jié)點上時間長了,發(fā)送到服務(wù)器已經(jīng)無效了
!但是,如果服務(wù)器不發(fā)送確認消息(第三次握手),它會認為這是一個新的請求。
服務(wù)器會一直等待,但是對于客戶端來說,鏈接失敗了,不會發(fā)送數(shù)據(jù),造成服務(wù)器資源的極大浪費
!通過第三次握手,它將防止無效鏈接傳輸?shù)椒?wù)器,從而浪費服務(wù)器資源
!此外,不要忘記,即使有第三次握手,也經(jīng)常受到黑客的攻擊!即使它沒有受到攻擊,如果有太多的鏈接請求,服務(wù)器通常會出現(xiàn)503
!所以,必須有第三次握手
TCP為什么是三次握手,而不是兩次或四次?
TCP是面向連接的
就像打電話一樣。你需要撥號、打電話和連接。發(fā)表演講
過程:
a:我想和你建立聯(lián)系
B:好的,我知道。我也想和你建立連接
a:我知道你收到了我的連接請求,我也收到了你的連接請求
滑動窗口:
主要是為了避免一次發(fā)送太多數(shù)據(jù),導(dǎo)致對方的緩存溢出。
滑動窗口是一種動態(tài)協(xié)商,即當(dāng)建立連接時,它將進行協(xié)商
同時,當(dāng)緩沖區(qū)發(fā)生變化時,它將進行協(xié)商。
主要目的是避免在一方斷開連接而另一方不知道時浪費資源來維護斷開的連接
過程:
假設(shè)已經(jīng)建立了三個連接
A:我要與您斷開連接
B:好的,我知道你要斷開連接
B:我也要和你斷開連接
A:好的,然后斷開連接
三次握手:第三次握手一次握手:客戶端向服務(wù)器發(fā)送一個syn數(shù)據(jù)包(syn=x)并進入syn發(fā)送狀態(tài),等待服務(wù)器確認;第二次握手:當(dāng)服務(wù)器收到syn包時,必須確認客戶端的syn(ACK=x1),同時發(fā)送一個syn包(syn=y),即syn ACK包。此時,服務(wù)器進入synRecv狀態(tài);第三次握手:客戶機接收服務(wù)器的syn+ACK數(shù)據(jù)包并向服務(wù)器發(fā)送ACK(ACK=y1)。數(shù)據(jù)包發(fā)送后,客戶機和服務(wù)器進入建立狀態(tài)并完成三次握手。在握手過程中,數(shù)據(jù)包不包含數(shù)據(jù)。在三次握手之后,客戶機和服務(wù)器正式開始傳輸數(shù)據(jù)。理想情況下,一旦建立了TCP連接,TCP連接將一直保持到雙方中的任何一方關(guān)閉連接為止。四次握手類似于建立連接的“三次握手”,斷開TCP連接需要“四次握手”。第一波:主動關(guān)閉方發(fā)送fin關(guān)閉主動關(guān)閉方到被動關(guān)閉方的數(shù)據(jù)傳輸,即主動關(guān)閉方告訴被動關(guān)閉方:我不再向您發(fā)送數(shù)據(jù)(當(dāng)然,如果fin包之前發(fā)送的數(shù)據(jù)沒有收到相應(yīng)的ack確認消息,主動關(guān)閉方仍然會重新發(fā)送該數(shù)據(jù)),但此時主動關(guān)閉方也可以接受該數(shù)據(jù)。第二波:被動關(guān)閉方收到fin報文后,向?qū)Ψ桨l(fā)送ACK,確認序號為收到序號1(與syn相同,一個fin占用一個序號)。第三波:被動關(guān)閉方發(fā)送fin,用于關(guān)閉被動關(guān)閉方到主動關(guān)閉方的數(shù)據(jù)傳輸。換言之,它告訴主動成交方我的數(shù)據(jù)已經(jīng)發(fā)送出去了,不會再向您發(fā)送任何數(shù)據(jù)。第四波:主動關(guān)閉方收到fin后,向被動關(guān)閉方發(fā)送ACK,確認收到序列號1。到目前為止,已經(jīng)完成了四次浪潮。