【每日八股】復習計算機網絡 Day4:TCP 協議的其他相關問題

文章目錄

  • 昨日內容復習
    • 已經建立了 TCP 連接,客戶端突然出現故障怎么辦?
    • 什么時候用長連接?短連接?
    • TCP 的半連接隊列與全連接隊列?
    • 什么是 SYN 攻擊?如何避免?
    • TIME_WAIT 的作用?過多如何解決?
    • TIME_WAIT 為什么要經過兩個 MSL?
    • CLOSE_WAIT 狀態過多如何解決?
  • 復習計算機網絡 Day4:TCP 協議的其他相關問題
    • TCP 和 UDP 的區別?
    • TCP 傳輸時出現粘包問題應該如何解決?
    • TCP 的 keepalive 和 HTTP 的 keepalive 的區別?
    • IP 層可以對較長的報文進行分片,為什么 TCP 層還需要 MSS?

昨日內容復習

已經建立了 TCP 連接,客戶端突然出現故障怎么辦?

服務端不會一直等待。服務端會為每一條 TCP 連接設置一個保活計時器(時長通常是兩個小時),每當客戶端傳來數據,服務端會重置計時器。如果保活計時器時間到,那么服務端每隔一定時間發送一個探測報文,連續發送十個探測報文仍然收不到客戶端的回復,那么服務端終止與客戶端的連接。

什么時候用長連接?短連接?

  • 長連接用于頻繁通信的點對點通訊,并且長連接的個數不能太多。數據庫的連接就是長連接的一種。
  • HTTP 服務一般使用短連接,可快速釋放。

TCP 的半連接隊列與全連接隊列?

  • 半連接隊列:又稱 SYN 隊列,服務端會保存發送 SYN 請求報文請求連接的客戶端的信息,并向客戶端發送 SYN-ACK 報文。
  • 全連接隊列:又稱 ACCEPT 隊列。服務端回發的 SYN-ACK 報文得到 ACK 報文確認后,就會將 SYN 隊列中的客戶端移出隊列,建立 TCP 連接并加入到全連接隊列當中。

什么是 SYN 攻擊?如何避免?

服務端收到大量的惡意 SYN 請求報文,會不停地回發 SYN-ACK 報文,得不到 ACK 確認報文,會觸發超時重傳,此時會導致服務端資源浪費。此外,服務端收到 SYN 報文后,可能會為該連接分配一個 TCB 進程控制塊,大量的惡意 SYN 請求會導致服務端資源枯竭。

避免方法包括但不限于以下幾種:

  • TCP 連接建立后再分配 TCB;
  • 減少 SYN-ACK 的重傳次數;
  • 監視 SYN 隊列和 ACCEPT 隊列中的無效連接,及時清除;
  • 擴大 SYN 隊列;

TIME_WAIT 的作用?過多如何解決?

  • 確保主動關閉方發送的 ACK 報文到達被動關閉方,從而確保全雙工通道的可靠關閉;
  • 等待網絡中因網絡擁塞而還沒有到達的報文在網絡中自然消失,避免對新連接產生干擾;

過多的 TIME_WAIT 會占用網絡與端口資源,導致新的連接無法建立。

解決辦法包括但不限于:

  • 復用長連接;
  • 調整 MSL 時間;
  • 快速回收 TIME_WAIT。

TIME_WAIT 為什么要經過兩個 MSL?

  • 第一個 MSL:確保 ACK 報文到達對端;
  • 第二個 MSL:確保對端重傳的 FIN 到達本端;

2 MSL 還可確保舊報文在網絡中完全消亡。

CLOSE_WAIT 狀態過多如何解決?

CLOSE_WAIT 過多可能是應用程序層面產生的問題,應該對應用程序進行檢查。

復習計算機網絡 Day4:TCP 協議的其他相關問題

在這里插入圖片描述

TCP 和 UDP 的區別?

  • TCP 是面向連接的,連接建立時需要三次握手,斷開時需要四次揮手。UDP 不需要建立連接。
  • TCP 是可靠傳輸服務,可確保傳輸數據無差錯。UDP 非可靠傳輸,盡最大努力交付。
  • TCP 是點對點連接,UDP 可以通過多對一、一對多、多對多等方式通訊。
  • UDP 對系統資源的要求比較少,通訊效率高,實時性好。TCP 適用于需要可靠連接,比如付費、加密數據等場景。
  • TCP 首部長度較長,有一定開銷,在沒有額外選項時 TCP 頭部的長度占 20 字節。UDP 首部長度只有 8 字節,沒有額外長度。
  • TCP 進行流式傳輸,沒有數據邊界。UDP 基于數據包傳輸,可能會丟包與亂序。
  • TCP 數據的大小如果大于 MSS,則會在傳輸層進行分片。對端收到數據分片后會在傳輸層進行組裝。中間如果發生丟包,傳輸方會重傳丟失的分片。UDP 數據的大小取決于 MTU 的大小,會在 IP 層分片,對端收到數據后,會在 IP 層組裝。
  • 應用場景:TCP 可用于 FTP 文件傳輸;UDP 用于包總量較少的通信,比如 DNS、SNMP 等。視頻、音頻等多媒體通信以及廣播通信也可用 UDP 實現。

TCP 傳輸時出現粘包問題應該如何解決?

在數據的頭部指定當前數據包的數據長度,由應用層根據數據長度來分包拆包。粘包是需要在應用層解決的問題。

TCP 的 keepalive 和 HTTP 的 keepalive 的區別?

  • HTTP 的 keepalive 是由應用層(用戶態)實現的,稱為 HTTP 長連接。而 TCP 的 keepalive 是由傳輸層(內核態)實現的,稱為 TCP 保活機制。
  • HTTP 的 keepalive 與 TCP 的 keepalive 作用不同。TCP 的 keepalive 用于探測對端是否仍然在線。而 HTTP 的 keepalive 用于避免重復建立/斷開 TCP 連接,減少 TCP 連接建立與斷開時的開銷。

IP 層可以對較長的報文進行分片,為什么 TCP 層還需要 MSS?

  • MTU:一個網絡包的最大長度,在以太網中一般 1500 字節;
  • MSS:去除 IP 和 TCP 報文頭部后,一個網絡包中可以容納的 TCP 數據部分的最大長度。

IP 層雖然可以對報文進行分片,但是存在以下問題,TCP 中 MSS 的提出就是為了解決下述問題:

性能消耗

  • 重組開銷:IP 層分片傳輸的報文需要在接收端進行重組,消耗 CPU /內存資源。
  • 重傳開銷:如果傳輸過程中任意 IP 報文分片丟失,則整個報文都需要重傳。

可靠性風險

  • 無分片狀態跟蹤:IP 是無狀態協議,無法感知分片是否全部到達。
  • 防火墻 / NAT 干擾:部分網絡設備會丟棄分片報文,導致通信失敗。

路徑 MTU 發現(PMTUD)復雜性

  • 動態路徑 MTU:網絡路徑中不同鏈路的 MTU 可能不同。
  • PMTUD 失敗:若 ICMP 報文被屏蔽,PMTUD 可能會失敗。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/80573.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80573.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80573.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

React:<></>的存在是為了什么

1. <></> 是什么&#xff1f; <></> 是 React 的Fragment&#xff08;片段&#xff09;語法糖&#xff0c;等價于 <React.Fragment></React.Fragment>。 2. 它的作用 主要作用&#xff1a; 允許你在組件里返回多個元素&#xff0c;而不需…

cron定時任務

cron定時任務 一、Cron表達式的定義 基礎結構 Cron表達式是由空格分隔的6或7個字段組成的字符串&#xff0c;格式為&#xff1a; 秒 分 時 日 月 星期 [年]其中&#xff0c;年通常可以被省略 字段說明&#xff1a; 秒&#xff08;0-59&#xff09; 秒字段表示每分鐘的哪一…

分布式之易混淆概念

昨天寫UE寫的破防了&#xff0c;忘了寫文章&#xff0c;今天補一下分布式的一些概念。&#x1f61a; 在軟件架構領域&#xff0c;微服務、領域驅動設計&#xff08;DDD&#xff09;和分布式系統是三個高頻且容易被混淆的概念。許多開發者誤以為它們是“同一件事的不同說法”&a…

量子躍遷:Vue組件安全工程的基因重組與生態免疫(完全體終局篇)

開篇數字免疫系統的范式革命 在2025年某國際金融峰會期間&#xff0c;黑客組織利用量子計算技術對全球37個交易系統發起協同攻擊。傳統安全組件在2.7秒內集體失效&#xff0c;造成每秒超18億美元的交易漏洞。這場數字"切爾諾貝利"事件促使我們重新定義前端安全——組…

Operating System 實驗七 Linux文件系統實驗

實驗目標: 使用dd命令創建磁盤鏡像文件ext2.img并格式化為ext2文件系統,然后通過mount命令掛載到Linux主機文件系統。查看ext2文件系統的超級塊的信息,以及數據塊的數量、數據塊的大小、inode個數、空閑數據塊的數量等信息 在文件系統中創建文件xxxxx.txt(其中xxxxx為你的學…

模型識別能力錘煉及清單

大腦將注意力分配給需要消耗腦力的活動&#xff0c;通過學習技能&#xff0c;大腦也能更輕松的工作。這個時候&#xff0c;大腦負責管理注意力控制和努力控制的區域活動會大幅減少。沉浸式學習是學習一門新的語言的最佳方式&#xff0c;也是深入洞察錯綜復雜商業環境的絕佳途徑…

Android 混合開發實戰:統一 View 與 Compose 的淺色/深色主題方案

整個應用&#xff08;包括 View 和 Compose 部分&#xff09;的淺色/深色模式保持一致。以下是完整的解決方案&#xff1a; 全局配置方案 1. 基礎主題設置 在 res/values/themes.xml 和 res/values-night/themes.xml 中定義統一的主題&#xff1a; <!-- values/themes.x…

QT開發技術【QT實現桌面右下角消息】

一、效果 ![ 二、彈窗主體部分 noticewidget /* ** File name: NoticeWidget.h ** Author: ** Date: 2025-04-25 ** Brief: 通知欄控件 ** Copyright (C) 1392019713qq.com All rights reserved. */#include "../Include/NoticeWidget.h"…

在LiveGBS GB28181互聯網安防監控平臺中關于redis版本切換的方法說明

目錄 1、Redis服務2、如何切換REDIS? 2.1、停止啟動REDIS2.2、配置信令服務2.3、配置流媒體服務2.4、啟動3、搭建GB28181視頻直播平臺 1、Redis服務 在LivGBS中Redis作為數據交換、數據訂閱、數據發布的高速緩存服務。默認LiveCMS解壓目錄下會攜帶一個REDIS服務。如果已經有自…

vue3中的effectScope有什么作用,如何使用?如何自動清理

vue3中的effectScope有什么作用&#xff0c;如何使用?如何自動清理 vue3中的effectScope有什么作用&#xff0c;如何使用 官網介紹&#xff1a;作用特點簡單示例&#xff1a;自動清理示例 官網介紹&#xff1a; 創建一個 effect 作用域&#xff0c;可以捕獲其中所創建的響應…

搭建基于火災風險預測與防范的消防安全科普小程序

基于微信小程序的消防安全科普互動平臺的設計與實現&#xff0c;是關于微信小程序的&#xff0c;知識課程學習&#xff0c;包括學習后答題。 技術棧主要采用微信小程序云開發&#xff0c;有下面的模塊&#xff1a; 1.課程學習模塊 2.資訊模塊 3.答題模塊 4.我的模塊 還需…

python 與Redis操作整理

以下是使用 Python 操作 Redis 的完整整理&#xff0c;涵蓋基礎操作、高級功能及最佳實踐&#xff1a; 1. 安裝與連接 (1) 安裝庫 pip install redis(2) 基礎連接 import redis# 創建連接池&#xff08;推薦復用連接&#xff09; pool redis.ConnectionPool(hostlocalhost, …

什么時候使用Python 虛擬環境(venv)而不用conda

是的&#xff01;python3.9 -m venv rtdetr_env 是 Python 原生的虛擬環境&#xff08;venv&#xff09;&#xff0c;而 conda 是另一個流行的虛擬環境管理工具&#xff08;來自 Anaconda/Miniconda&#xff09;。下面我會詳細對比兩者的區別&#xff0c;并講解 venv 的基本用法…

ubuntu20.04安裝x11vnc遠程桌面

x11vnc是一個VNC服務器, 安裝后我們可以不依賴外部的顯示設備, 通過網絡遠程登錄ubuntu桌面。 安裝x11vnc sudo apt-get install x11vnc 設置VNC登錄密碼 sudo x11vnc -storepasswd /etc/x11vnc.pwd 設置x11vnc在開機時自動啟動 新建如下文件: sudo vi /lib/systemd/sys…

Maven的概念與初識Maven

目錄 一、Maven的概念 1. 什么是Maven 2. 項目構建&#xff1a;從代碼到部署的標準化流程 2.1 Maven構建生命周期 2.2 傳統構建 vs Maven構建 3. 依賴管理&#xff1a;解決“JAR地獄”的利器 3.1 依賴聲明 3.2 依賴傳遞與沖突解決 4. Maven倉庫&#xff1a;依賴的存儲…

Unity-Shader詳解-其二

前向渲染和延遲渲染 前向渲染和延遲渲染總的來說是我們的兩種主要的渲染方式。 我們在Unity的Project Settings中的Graphic界面能夠找到渲染隊列的設定&#xff1a; 我們也可以在Main Camera這里進行設置&#xff1a; 那這里我們首先介紹一下兩種渲染&#xff08;Forward R…

C++ 中 std::tuple 使用詳解

C 中 std::tuple 使用詳解 基本概念 std::tuple 是 C11 引入的模板類&#xff0c;用于打包任意數量、任意類型的值在一起。可看作是類型安全的變長結構體。 #include <tuple>std::tuple<int, std::string, double> t(42, "hello", 3.14);創建 tuple 的…

WebRTC基于網頁的視頻會議,手寫WebRTC流程(html)

WebRTC是web real-time communication網頁及時通信的縮寫&#xff0c;通過javascript就可以實現網頁會話&#xff0c;基于瀏覽器開發出來多媒體應用&#xff0c; 以下是手寫的WEBRTC調用本地攝像頭的html代碼&#xff0c;直接用瀏覽器打開&#xff0c;就可以使用 <!DOCTYPE…

MyBatis 官方子項目詳細說明及表格總結

MyBatis 官方子項目詳細說明及表格總結 1. 核心子項目說明 1.1 mybatis-3 GitHub 鏈接&#xff1a;https://github.com/mybatis/mybatis-3功能&#xff1a; MyBatis 核心框架的源碼&#xff0c;提供 SQL 映射、動態 SQL、緩存、事務管理等核心功能。主要功能&#xff1a; 支持…

【虛幻C++筆記】碰撞檢測

目錄 碰撞檢測參數詳情示例用法 碰撞檢測 顯示名稱中文名稱CSphere Trace By Channel按通道進行球體追蹤UKismetSystemLibrary::SphereTraceSingleSphere Trace By Profile按描述文件進行球體追蹤UKismetSystemLibrary::SphereTraceSingleByProfileSphere Trace For Objects針…