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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Tcp连接的七次握手浅析

發(fā)布時(shí)間:2023/12/9 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tcp连接的七次握手浅析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

連接的三次握手

  • 客戶端向服務(wù)器發(fā)送SYN請(qǐng)求
  • 服務(wù)器發(fā)送ACK回應(yīng)請(qǐng)求,并同時(shí)發(fā)送一個(gè)SYN的請(qǐng)求給客戶端
  • 客戶端回應(yīng)ACK應(yīng)答
  • 關(guān)閉的四次握手

    對(duì)于關(guān)閉流程,一共有三種情況:客戶端主動(dòng)關(guān)閉,服務(wù)器端主動(dòng)關(guān)閉,客戶端和服務(wù)器端同時(shí)主動(dòng)關(guān)閉。這里僅僅以客戶端主動(dòng)關(guān)閉為例列出下圖。

  • 客戶端主動(dòng)關(guān)閉,發(fā)送FIN請(qǐng)求
  • 服務(wù)器回應(yīng)ACK應(yīng)答
  • 服務(wù)器被動(dòng)關(guān)閉,發(fā)送FIN請(qǐng)求
  • 客戶端回應(yīng)ACK應(yīng)答
  • 對(duì)于關(guān)閉流程,服務(wù)器端和客戶端是對(duì)等的地位,其它兩種場景處理過程類似。需要注意的是,由于對(duì)端是是可以主動(dòng)關(guān)閉的,因此在代碼中需要加上被動(dòng)關(guān)閉的響應(yīng)流程。

    為什么連接和關(guān)閉握手次數(shù)不一樣

    看到上述流程,可能有一個(gè)疑問:為什么連接和關(guān)閉的握手次數(shù)不一樣?其實(shí),不論是連接還是關(guān)閉,客戶端和服務(wù)器端都是發(fā)送了一次請(qǐng)求(SYN/FIN),回應(yīng)了一次應(yīng)答(ACK),它們是對(duì)稱的。但是,在連接的時(shí)候服務(wù)器端的請(qǐng)求和應(yīng)答是在一次握手中同時(shí)完成的,而關(guān)閉的時(shí)候卻是分兩次完成的,所以就造成了連接和關(guān)閉的握手次數(shù)不對(duì)稱。

    現(xiàn)在,新問題又來了:為什么連接時(shí)復(fù)用一次握手,而關(guān)閉的時(shí)候不復(fù)用握手?這個(gè)則是因?yàn)檫B接和關(guān)閉的行為不是一樣所造成的。

    • 在連接過程中,客戶端是主動(dòng)連接,服務(wù)器端是被動(dòng)連接,這個(gè)順序是確定了的,因此,可以復(fù)用第二次握手。
    • 在關(guān)閉的過程中,客戶端和服務(wù)器端可能同時(shí)主動(dòng)關(guān)閉,此時(shí)就不能復(fù)用第二次握手了,因此請(qǐng)求和應(yīng)答需要單獨(dú)的發(fā)送。

    Tcp連接的狀態(tài)遷移圖

    前面只考慮了理想的情況,在實(shí)際的過程中,可能還需要處理一些異常操作,如下則是一個(gè)完成的TCP連接的狀態(tài)遷移圖。

    半打開連接和半關(guān)閉連接

    如前所述,建立或關(guān)閉一個(gè)連接時(shí)需要三或四步的,在這個(gè)過程中,TCP連接則會(huì)處于一個(gè)半打開或半關(guān)閉狀態(tài)。例如,前面狀態(tài)圖中的FIN_WAIT_1和FIN_WAIT_2就是半關(guān)閉狀態(tài)。

    一般來說,半連接只是一個(gè)暫停的過程。但是,在一些異常的情況的時(shí)候(如遠(yuǎn)端主機(jī)故障)的時(shí)候常常會(huì)造成半關(guān)閉連接,由于Tcp連接處于半打開或半關(guān)閉狀態(tài)的時(shí)候,仍然會(huì)占用相應(yīng)的端口資源,尤其對(duì)于http之類的海量服務(wù)來說,會(huì)造成大量端口被占用,會(huì)造成資源的浪費(fèi)。

    另外,有的程序也針對(duì)Tcp協(xié)議的這一特征來惡意進(jìn)行網(wǎng)絡(luò)攻擊。例如,對(duì)于一個(gè)服務(wù)器,大量的惡意客戶端建立連接后,既不發(fā)請(qǐng)求,也不close套接字,這種情況下服務(wù)器如何保護(hù)自己呢。因?yàn)槿绻犞沃脑?#xff0c;大量的惡意連接會(huì)耗盡服務(wù)器的可用描述符,導(dǎo)致服務(wù)器不能服務(wù)。就算服務(wù)器主動(dòng)close,如果客戶端不close的話,那么這個(gè)連接還是不能完全釋放。對(duì)于服務(wù)器來說,需要增加相應(yīng)的機(jī)制進(jìn)行半連接的處理。

    總結(jié)

    以上是生活随笔為你收集整理的Tcp连接的七次握手浅析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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