日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

第三次握手为什么没有序列号_图解TCP三次握手与四次分手

發(fā)布時(shí)間:2023/12/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第三次握手为什么没有序列号_图解TCP三次握手与四次分手 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

TCP三次握手和四次揮手不管是在開(kāi)發(fā)還是面試中都是一個(gè)非常重要的知識(shí)點(diǎn),它是我們優(yōu)化web程序性能的基礎(chǔ)。但是大部分教材都對(duì)這部分解釋的比較抽象,本文我們就利用wireshark來(lái)抓包以真正體會(huì)整個(gè)流程的細(xì)節(jié)。

三次握手

根據(jù)下面這幅圖我們來(lái)看一下TCP三次握手。p.s: 每個(gè)箭頭代表一次握手。

第一次握手

client發(fā)送一個(gè)SYN(J)包給server,然后等待server的ACK回復(fù),進(jìn)入SYN-SENT狀態(tài)。p.s: SYN為synchronize的縮寫,ACK為acknowledgment的縮寫。

第二次握手

server接收到SYN(seq=J)包后就返回一個(gè)ACK(J+1)包以及一個(gè)自己的**SYN(K)**包,然后等待client的ACK回復(fù),server進(jìn)入SYN-RECIVED狀態(tài)

第三次握手

client接收到server發(fā)回的ACK(J+1)包后,進(jìn)入ESTABLISHED狀態(tài)。然后根據(jù)server發(fā)來(lái)的SYN(K)包,返回給等待中的server一個(gè)ACK(K+1)包。等待中的server收到ACK回復(fù),也把自己的狀態(tài)設(shè)置為ESTABLISHED。到此TCP三次握手完成,client與server可以正常進(jìn)行通信了。

為什么要進(jìn)行三次握手

我們來(lái)看一下為什么需要進(jìn)行三次握手,兩次握手難道不行么?這里我們用一個(gè)生活中的具體例子來(lái)解釋就很好理解了。我們可以將三次握手中的客戶端和服務(wù)器之間的握手過(guò)程比喻成A和B通信的過(guò)程:

  • 在第一次通信過(guò)程中,A向B發(fā)送信息之后,B收到信息后可以確認(rèn)自己的收信能力和A的發(fā)信能力沒(méi)有問(wèn)題。
  • 在第二次通信中,B向A發(fā)送信息之后,A可以確認(rèn)自己的發(fā)信能力和B的收信能力沒(méi)有問(wèn)題,但是B不知道自己的發(fā)信能力到底如何,所以就需要第三次通信。
  • 在第三次通信中,A向B發(fā)送信息之后,B就可以確認(rèn)自己的發(fā)信能力沒(méi)有問(wèn)題。

上面分析還不夠形象,很容易忘記,下面我們利用wireshark來(lái)證明一下上面的分析過(guò)程。從下面的的輸出就可以很容易看出來(lái),必須要經(jīng)過(guò)前面的三次tcp請(qǐng)求才會(huì)有起一次http請(qǐng)求。

第一次請(qǐng)求客戶端發(fā)送一個(gè)SYN包,序列號(hào)是0。

第二次請(qǐng)求服務(wù)器會(huì)發(fā)送一個(gè)SYN和一個(gè)ACK包,序列號(hào)是0,ack號(hào)是1。

第三次本地客戶端請(qǐng)求會(huì)發(fā)送一個(gè)ACK包,序列號(hào)是1,ack號(hào)是1來(lái)回復(fù)服務(wù)器。

四次揮手

以下面這張圖為例,我們來(lái)分析一下TCP四次揮手的過(guò)程。

第一次揮手

client發(fā)送一個(gè)FIN(M)包,此時(shí)client進(jìn)入FIN-WAIT-1狀態(tài),這表明client已經(jīng)沒(méi)有數(shù)據(jù)要發(fā)送了。

第二次揮手

server收到了client發(fā)來(lái)的FIN(M)包后,向client發(fā)回一個(gè)ACK(M+1)包,此時(shí)server進(jìn)入CLOSE-WAIT狀態(tài),client進(jìn)入FIN-WAIT-2狀態(tài)。

第三次揮手

server向client發(fā)送FIN(N)包,請(qǐng)求關(guān)閉連接,同時(shí)server進(jìn)入LAST-ACK狀態(tài)

第四次揮手

client收到server發(fā)送的FIN(N)包,進(jìn)入TIME-WAIT狀態(tài)。向server發(fā)送**ACK(N+1)**包,server收到client的ACK(N+1)包以后,進(jìn)入CLOSE狀態(tài);client等待一段時(shí)間還沒(méi)有得到回復(fù)后判斷server已正式關(guān)閉,進(jìn)入CLOSE狀態(tài)。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的第三次握手为什么没有序列号_图解TCP三次握手与四次分手的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。