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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【计算机网络】传输层 : TCP 连接管理 ( TCP 连接建立 | 三次握手 | TCP 连接释放 | 四次挥手 )

發布時間:2025/6/17 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【计算机网络】传输层 : TCP 连接管理 ( TCP 连接建立 | 三次握手 | TCP 连接释放 | 四次挥手 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、TCP 連接管理
  • 二、TCP 連接建立
  • 三、TCP 連接建立 相關報文段 字段
  • 四、SYN 洪泛攻擊
  • 五、TCP 連接釋放





一、TCP 連接管理



TCP 傳輸數據過程 : 建立連接 -> 傳輸數據 -> 釋放連接 ;

TCP 連接通信方式是 客戶端 / 服務器 方式 , 主動發起連接的應用進程是 客戶端 , 被動等待連接的應用進程是 服務器 ;





二、TCP 連接建立



TCP 連接建立過程 : 客戶端 與 服務器 的 TCP 連接建立過程 ;

① 客戶端 發送 連接請求報文段 , 該報文段 沒有應用層數據 ;

  • SYN = 1 , 同步位 , 如果為 111 , 說明該位是連接請求 / 連接接收 報文 ; 本次的情況是 連接請求 ;
  • seq = x ( 隨機 ) , 序號位 , 隨機產生一個字節 , 確認號此時是無效的 , 客戶端沒有收到服務器發送的報文段 , 不知道期待獲取什么序號的數據 ;
  • ACK = 0 , 確認位 , 連接還沒有建立成功 , 此時是 000 , 之后連接建立成功后置位 111 ;

② 服務器端 收到 連接請求報文段 , 為 TCP 連接 分配 緩存和變量 , 向客戶端返回 確認報文段 , 允許客戶端連接 , 此時該報文段 也沒有應用層數據 ;

  • SYN = 1 , 同步位 , 如果為 111 , 說明該位是連接請求 / 連接接收 報文 ; 本次的情況是 連接接收 ;
  • seq = y ( 隨機 ) , 序號位 , 隨機產生一個字節 , 確認號此時是無效的 , 客戶端沒有收到服務器發送的報文段 , 不知道期待獲取什么序號的數據 ;
  • ACK = 1 , 確認位 , 連接建立成功后置位 111 ;
  • ack = x + 1 , 確認號 , 該 ack 與上面的 ACK 是配套使用的 ; 只有 ACK = 1 確認位為 1 時 , 確認號 ack 才生效 ;

③ 客戶端 收到 服務器端 返回的 確認報文段 , 客戶端為 TCP 連接分配緩存和變量 , 同時向 服務器端 返回 確認報文段 的 確認 , 并可以 攜帶實際傳輸的數據 ;

  • SYN = 0 , 同步位 , 說明該位 不是 連接請求 / 連接接收 報文 ;
  • seq =x+1 , 序號位 , 表明本次發送的數據的第一個字節的序號 ;
  • ACK = 1 , 確認位 , 連接建立成功后置位 111 ;
  • ack = y + 1 , 確認號 , 期望收到 服務器端 下一次 發送的序號 ; 該 ack 與上面的 ACK 是配套使用的 ; 只有 ACK = 1 確認位為 1 時 , 確認號 ack 才生效 ;


總結 :

  • SYN : 在開始的兩個報文段為 111 , 這是建立連接的前兩次握手 ; 等到真實傳輸數據時 , 該位 為 000 ;
  • ACK : 只在第一次握手時 為 000 , 此時還沒有建立連接 , 之后服務器端接收后 , 知道連接建立成功了 , ACK 設置為 111 ;
  • 序號位 : 隨機值 , 客戶端生成 發送的 隨機序號位 x , 服務器端生成 發送的 隨機序號位 y ;
  • 確認號 : 對應上述 序號位 的是 確認號 , 客戶端 生成的隨機序號 x 是 服務器端 期待的接收的序號 確認號 , 服務器端 生成的 隨機序號 y 是 客戶端 期待接收的 序號 確認號 ;




三、TCP 連接建立 相關報文段 字段



上述涉及到的 TCP 報文的 四個字段 :

  • 序號 seq : TCP 連接中 , 字節流中的 字節按照順序編號 , 每個字節都有一個序號 , 本首部中的序號是本 TCP 報文 數據部分第一個字節的序號 ;
  • 確認號 ack : 期望收到 對方 下一個報文段 第一個數據字節的序號 ; 序號為 100100100 , 說明 999999 及之前的數據都已經收到 ;
  • 同步位 SYN : SYN =1=1=1 時 , 表明該報文是一個 連接請求 / 連接接收 報文 ;
  • 確認位 ACK : ACK =1= 1=1 時 , 確認號有效 , 連接建立后 , 所有的報文段的 ACK 都必須設置為 111 ;

上述 涉及到 TCP 報文內容 , 參考博客 【計算機網絡】傳輸層 : TCP 協議 ( TCP 協議特點 | TCP 報文段首部格式 | TCP 報文段控制位 )





四、SYN 洪泛攻擊



SYN 洪泛攻擊 : 利用 TCP 連接的 三次握手 特性 ;

① 攻擊者 偽裝成客戶端 , 向服務器端 發送 TCP 連接的第一個數據包 , SYN ;

② 服務器端 收到 第一個數據包 , 第一次握手完成 , 服務器返回 ACK , 但是 攻擊者 客戶端 不進行確認 ;

③ 此時服務器端 TCP 連接掛起 , 處于 半連接 狀態 , 持續消耗服務器資源 ;

④ 消耗服務器資源 : 如果 攻擊者 大量 發送 SYN 第一次握手數據 , 服務器消耗資源過多 導致宕機 ;


解決方案 : 采用 SYN Cookie 解決上述問題 ;





五、TCP 連接釋放



TCP 連接釋放 : 四次揮手 ;

① 客戶端 : 客戶端 發送 連 接釋放報文段 , 停止發送數據 , 發起 TCP 連接關閉流程 ; 連接釋放報文段 關鍵字段如下 :

  • FIN = 1 : 表明該報文發送完畢 , 釋放連接 ;
  • seq = u : 序號位設置成 u

② 服務器端 : 返回 確認報文段 , 客戶端收到該報文段后 ; 確認報文段 關鍵字段 如下 :

  • ACK = 1
  • seq = v : 服務器端生成的發送序號 ;
  • ack = u + 1 : 期待收到 客戶端 發送的 u 之后的報文段 u + 1 ;

③ 服務器端 : 發送完畢 上面的 確認報文段后 , 發送 連接釋放報文段 , 關閉 TCP 連接 ( 該鏈接時 客戶端 -> 服務器端 方向的連接 ) ; 連接釋放報文段 關鍵字段如下 :

  • FIN = 1
  • ACK = 1
  • seq = w : 服務器端 生成的序號 ;
  • ack = u + 1 : 該步驟 與 步驟 ② 中 , 沒有收到客戶端的報文 , 因此 ack 仍然保持 u + 1 不變 ;

④ 客戶端 : 收到 服務器端 連接釋放報文段 , 回復 確認報文段 , 等待 2MSL ( 最長報文壽命 ) 后 , 關閉 TCP 連接 ( 服務器 -> 客戶端 方向連接 ) ; 確認報文段 格式 :

  • ACK = 1
  • seq = u + 1 : 第一次回收時是 u , 第四次揮手 時 , 是 u + 1 ;
  • ack = w + 1 : 服務器端發送的數據序號是 w , 本次期待收到下一次 w + 1

總結

以上是生活随笔為你收集整理的【计算机网络】传输层 : TCP 连接管理 ( TCP 连接建立 | 三次握手 | TCP 连接释放 | 四次挥手 )的全部內容,希望文章能夠幫你解決所遇到的問題。

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