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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

详解TCP协议三次握手四次挥手

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详解TCP协议三次握手四次挥手 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

三次握手:

三次握手表示建立通信階段,在TCP協議中,在發送數據的準備階段,客戶端與服務器之間的三次交互,以保證連接的可靠,由于這種面向連接的特性, TCP協議可以保證傳輸數據的安全,所以應用十分廣泛。例如上傳文件、下載文件、瀏覽網頁等
第一次握手,客戶端向服務器端發出連接請求,等待服務器確認(客:我就蹭蹭不進去)
第二次握手,服務器端向客戶端回送一個響應,通知客戶端收到了連接請求(服:行)
第三次握手,客戶端再次向服務器端發送確認信息,確認連接 完成三次握手,連接建立后,客戶端和服務器就可以開始進行數據傳輸了。(客:開始了哦)

名稱含義
SYN(synchronous)建立連接
ACK(acknowledgement)連接確認
PSH(push)傳送
FIN(finish)結束
RST(reset)重置
URG(urgent)緊急
Sequence number順序號碼
Acknowledge number確認號碼

建立連接(三次握手)的過程:

  • 客戶端發送一個帶SYN標志的TCP報文到服務器。這是上圖中三次握手過程中的段1。客戶端發出SYN位表示連接請求。序號是1000,這個序號在網絡通訊中用作臨時的地址,每發一個數據字節,這個序號要加1,這樣在接收端可以根據序號排出數據包的正確順序,也可以發現丟包的情況。另外,規定SYN位和FIN位也要占一個序號,這次雖然沒發數據,但是由于發了SYN位,因此下次再發送應該用序號1001。mss表示最大段尺寸,如果一個段太大,封裝成幀后超過了鏈路層的最大長度,就必須在IP層分片,為了避免這種情況,客戶端聲明自己的最大段尺寸,建議服務器端發來的段不要超過這個長度。
  • 服務器端回應客戶端,是三次握手中的第2個報文段,同時帶ACK標志和SYN標志。表示對剛才客戶端SYN的回應;同時又發送SYN給客戶端,詢問客戶端是否準備好進行數據通訊。服務器發出段2,也帶有SYN位,同時置ACK位表示確認,確認序號是1001,表示“我接收到序號1000及其以前所有的段,請你下次發送序號為1001的段”,也就是應答了客戶端的連接請求,同時也給客戶端發出一個連接請求,同時聲明最大尺寸為1024。
  • 客戶必須再次回應服務器端一個ACK報文,這是報文段3。
    客戶端發出段3,對服務器的連接請求進行應答,確認序號是8001。在這個過程中,客戶端和服務器分別給對方發了連接請求,也應答了對方的連接請求,其中服務器的請求和應答在一個段中發出。因此一共有三個段用于建立連接,稱為“三方握手”。在建立連接的同時,雙方協商了一些信息,例如,雙方發送序號的初始值、最大段尺寸等。
  • 數據傳輸的過程:

  • 客戶端發出段4,包含從序號1001開始的20個字節數據。
  • 服務器發出段5,確認序號為1021,對序號為1001-1020的數據表示確認收到,同時請求發送序號1021開始的數據,服務器在應答的同時也向客戶端發送從序號8001開始的10個字節數據。
  • 客戶端發出段6,對服務器發來的序號為8001-8010的數據表示確認收到,請求發送序號8011開始的數據。
  • 在數據傳輸過程中,ACK和確認序號是非常重要的,應用程序交給TCP協議發送的數據會暫存在TCP層的發送緩沖區中,發出數據包給對方之后,只有收到對方應答的ACK段才知道該數據包確實發到了對方,可以從發送緩沖區中釋放掉了,如果因為網絡故障丟失了數據包或者丟失了對方發回的ACK段,經過等待超時后TCP協議自動將發送緩沖區中的數據包重發。

    四次揮手:

    所謂四次揮手(Four-Way-Wavehand)即終止TCP連接,就是指斷開一個TCP連接時,需要客戶端和服務端總共發送4個包以確認連接的斷開。在socket編程中,這一過程由客戶端或服務器任一方執行close來觸發。

    客戶端向服務器發出取消連接請求
    服務器向客戶端返回一個響應,表示收到請求
    服務器向客戶端發出確認取消請求
    客戶端再次確認連接取消

    為什么握手只有三次,揮手卻要四次

    因為握手的時候兩端沒有連接,只要確認連接就行
    但是揮手的時候是已經連接了,這個時候服務器要在第二次握手以后處理最后的數據,處理完最后數據跟客戶端確認了才能取消

    關閉連接(四次握手)的過程:

    由于TCP連接是全雙工的,因此每個方向都必須單獨進行關閉。這原則是當一方完成它的數據發送任務后就能發送一個FIN來終止這個方向的連接。收到一個 FIN只意味著這一方向上沒有數據流動,一個TCP連接在收到一個FIN后仍能發送數據。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。

  • 客戶端發出段7,FIN位表示關閉連接的請求。
  • 服務器發出段8,應答客戶端的關閉連接請求。(這里是一個半關閉的狀態)
  • 服務器發出段9,其中也包含FIN位,向客戶端發送關閉連接請求。
  • 客戶端發出段10,應答服務器的關閉連接請求。
    建立連接的過程是三次握手,而關閉連接通常需要4個段,服務器的應答和關閉連接請求通常不合并在一個段中,因為有連接半關閉的情況,這種情況下客戶端關閉連接之后就不能再發送數據給服務器了,但是服務器還可以發送數據給客戶端,直到服務器也關閉連接為止。
  • 總結

    以上是生活随笔為你收集整理的详解TCP协议三次握手四次挥手的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。