Linux tcp_info:監控TCP連接的秘密武器

深入解析 Linux tcp_info:TCP 狀態的實時監控利器

在開發和運維網絡服務時,我們常常遇到這些問題:

  • 我的 TCP 連接為什么速度慢?
  • 是發生了重傳,還是窗口太小?
  • 擁塞控制到底有沒有生效?

這些問題的答案,其實隱藏在內核的 tcp_info 結構中。

本文將詳細介紹:

  • tcp_info 是什么,怎么用?
  • 各字段含義和實際用途
  • 在調優 TCP 服務中的應用實踐

一、什么是 tcp_info

tcp_info 是 Linux 內核中定義的結構體,位于頭文件 <linux/tcp.h> 中。它提供了當前 TCP 連接的詳細狀態信息,可通過 getsockopt() 接口獲取。

典型用途:

  • 網絡狀態實時觀測
  • 性能數據收集(配合 Prometheus/Grafana)
  • 排查連接卡頓、丟包、慢啟動等問題

二、如何使用 tcp_info

在 C/C++ 中獲取 tcp_info 數據很簡單:

#include <netinet/tcp.h>
#include <sys/socket.h>
#include <stdio.h>struct tcp_info info;
socklen_t len = sizeof(info);
getsockopt(sockfd, IPPROTO_TCP, TCP_INFO, &info, &len);

getsockopt() 會把當前 TCP 連接狀態寫入 info,我們就可以讀取并打印出相關字段。

在 Go、Python 等語言中也都有封裝可用。


三、tcp_info 字段詳解

以下是常用字段的解釋和典型用途:

字段說明工程應用
tcpi_stateTCP 狀態機(ESTABLISHED, TIME_WAIT 等)檢查連接生命周期
tcpi_retransmits重傳次數排查丟包問題
tcpi_rtt當前 RTT(微秒)網絡延遲診斷
tcpi_rttvarRTT 波動抖動分析
tcpi_snd_cwnd擁塞窗口擁塞控制效果評估
tcpi_snd_mss最大發送段大小了解 MTU 限制
tcpi_total_retrans總重傳次數連接穩定性指標
tcpi_unacked未確認的數據包數量判斷發送瓶頸
tcpi_rcv_space接收緩沖區空間判斷是否發生流控

示例打印:

state: ESTABLISHED
rtt: 12345 us
rttvar: 4000 us
cwnd: 20 segments
retransmits: 2
total_retrans: 4
unacked: 3

四、實際應用場景

1. 網絡連接性能監控

通過周期性抓取 tcp_info 數據,可以實現如下監控:

  • RTT 抖動圖表
  • 重傳率趨勢
  • 擁塞窗口動態

適用于高頻交易系統、實時游戲、音視頻推流等對網絡敏感的服務。

2. 連接問題定位

案例:

用戶反饋網頁加載慢,但服務器響應快。

通過對 tcp_info 分析發現:

  • tcpi_rtt 穩定
  • tcpi_unacked 長期維持高值
  • tcpi_snd_cwnd 遲遲不增長

結論:鏈路存在丟包,TCP 卡在擁塞避免階段。

3. TCP 擁塞控制算法驗證

Linux 支持多種 TCP 擁塞控制算法(如 CUBIC、BBR)。tcp_info 可用于對比算法效果:

  • BBR 下 cwnd 不受 ACK 驅動,但 RTT 波動更低
  • CUBIC RTT 抖動大,重傳多但吞吐高

五、在系統中如何部署使用?

方案一:配合 ss 命令分析

ss -ti

輸出類似如下內容:

cwnd:10 retrans:2 rtt:12.3/3.2ms

方案二:程序內采集+可視化

  • 在服務中嵌入 tcp_info 抓取邏輯(如定期上報給 Prometheus)
  • 用 Grafana 可視化每條連接的延遲與重傳
  • 異常自動報警(如 RTT > 100ms)

六、注意事項

  • tcp_info快照而非歷史記錄
  • 對于 UDP 無效,僅適用于 TCP socket
  • getsockopt() 有少許開銷,建議低頻采樣(如每秒)

七、結語

tcp_info 就像是內核提供的一臺“網絡心電儀”,讓我們能實時洞察每條 TCP 連接的內部狀態。它不光是診斷工具,更是系統網絡優化與架構調整的重要依據。

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

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

相關文章

CVE-2015-5531源碼分析與漏洞復現(Elasticsearch目錄遍歷漏洞)

概述 漏洞名稱&#xff1a;Elasticsearch 快照API目錄遍歷漏洞 CVE 編號&#xff1a;CVE-2015-5531 CVSS 評分&#xff1a;7.5 影響版本&#xff1a; Elasticsearch 1.0.0–1.6.0&#xff08;1.5.1及以前版本無需配置即可觸發&#xff1b;1.5.2–1.6.0需配置path.repo&#xf…

HexHub開發運維利器Database, Docker, SSH, SFTP

支持隧道&#xff0c;SFTP&#xff0c;X11轉發&#xff0c;跳板機&#xff0c;分屏廣播輸入&#xff0c;LRZSZ&#xff0c;TRZSZ&#xff0c;SCP 分屏廣播輸入 管理多臺服務器&#xff0c;更快一步 支持多種文件傳輸協議 支持跨服務器文件傳輸&#xff0c;使用復制粘貼即可進…

2025年教育、心理健康與信息管理國際會議(EMHIM 2025)

2025 2nd International Conference on Education, Mental Health, and Information Management 一、大會信息 會議簡稱&#xff1a;EMHIM 2025 大會地點&#xff1a;中國三亞 收錄檢索&#xff1a;提交Ei Compendex,CPCI,CNKI,Google Scholar等 二、會議簡介 第二屆教…

數字孿生技術為UI前端注入新活力:實現智能化交互新體驗

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩! 在數字化轉型的深水區&#xff0c;數字孿生技術正以破竹之勢重構 UI 前端的技術邏輯與交互范式…

組件協作模式

目錄 “組件協作”模式模板方法模式動機模式定義結構要點總結 “組件協作”模式 現代軟件專業分工之后的第一個結果是“框架與應用程序的劃分”。“組件協作”模式通過晚期綁定&#xff0c;實現框架與應用程序之間的松耦合&#xff0c;是二者之間協作時常用的模式。典型模式&a…

Docker 運行RAGFlow 搭建RAG知識庫

借鑒視頻&#xff1a;DeepSeek 10分鐘完全本地部署 保姆級教程 斷網運行 無懼隱私威脅 大語言模型 CPU GPU 混合推理32B輕松本地部署&#xff01;DeepSeek模擬王者&#xff01;&#xff01;_嗶哩嗶哩_bilibili 借鑒博客&#xff1a;RAGFlow搭建全攻略&#xff1a;從入門到精通…

python編寫腳本每月1號和15號執行一次將TRX是否強更發送到釘釘

編寫腳本 import requests import json import time import hmac import hashlib import base64 import urllib.parse# 1. 配置釘釘機器人 webhook "https://oapi.dingtalk.com/robot/send?access_tokenXXXXXX" secret "XXXXXXXX" # 如果沒有加簽驗…

Linux-系統管理

[rootlocalhost ~]# lscpu //查看cpu [rootlocalhost etc]# cat /etc/redhat-release //查看當前目錄的版本信息 [rootlocalhost ~]# ifconfig //查看當前激活的網卡信息 [rootlocalhost ~]# ifconfig ens33 192.168.1.10 //給網卡配置臨時地址 [rootlocalhost ~]# hostnam…

【Spring】系統化的 Spring Boot 全棧學習教程,涵蓋基礎配置、核心功能、進階實戰及文檔自動生成

這里寫目錄標題 &#x1f6e0;? **一、環境搭建與項目創建**1. 開發環境準備2. 創建第一個項目&#xff08;Spring Initializr&#xff09; &#x1f680; **二、核心功能開發**1. RESTful API 開發2. 數據持久化&#xff08;Spring Data JPA&#xff09;3. 配置文件多環境切換…

Discrete Audio Tokens: More Than a Survey

文章目錄 模型設計的考慮量化的方式&#xff1a;比特率&#xff1a;Fixed vs. Adaptive Bitrate碼本內容設計的考慮Streamability. 模型評估Reconstruction Evaluation and Complexity Analysis.識別和生成任務&#xff08;SE, SR)Acoustic Language Modeling.Music Generation…

設計在線教育項目核心數據庫表

1 在線教育項目核心數據庫表設計-ER圖 簡介&#xff1a;設計在線教育的核心庫表結構 在線教育站點速覽 xdclass.net ER圖知識回顧&#xff1a; 實體對象&#xff1a;矩形屬性&#xff1a;橢圓關系&#xff1a;菱形 核心庫表 videochapterepisodeuservideo_ordervideo_banner…

【音視頻】Ubuntu下配置ffmpeg庫

一、下載預編譯的庫 在github上可以找到編譯好的ffmpeg&#xff0c;多個版本的都有&#xff0c;這里我下載ffmpeg編譯好的動態庫 倉庫鏈接&#xff1a;(https://github.com/BtbN/FFmpeg-Builds/releases 下載后解壓得到 二、配置環境變量 打開.bashrc配置文件&#xff0c;添…

equine在神經網絡中建立量化不確定性

?一、軟件介紹 文末提供程序和源碼下載 眾所周知&#xff0c;用于監督標記問題的深度神經網絡 &#xff08;DNN&#xff09; 可以在各種學習任務中產生準確的結果。但是&#xff0c;當準確性是唯一目標時&#xff0c;DNN 經常會做出過于自信的預測&#xff0c;并且無論測試數…

C++動態鏈接庫之非托管封裝Invoke,供C#/C++ 等編程語言使用,小白教程——C++動態鏈接庫(一)

目錄&#xff1a; 一、前言及背景1.1需求描述1.2應用背景 二、編程基礎知識2.1非托管方式交互邏輯2.2該方式下C 與C# 數據轉換對應2.3VS工程下的注意點2.4C封裝接口2.4.1 __declspec(dllexport) 方式2.4.2 .def 文件方式2.4.3結合使用&#xff08;高級&#xff09; 2.5C# 封裝接…

消息隊列的網絡模型詳解:IO多路復用、Reactor模型、零拷貝

文章目錄 一、消息隊列的網路模型擬解決問題單個請求性能優化1. 編解碼速度2. 網絡模塊處理速度 并發請求性能優化1. 高效的連接管理2. 快速處理高并發請求3. 大流量場景處理 二、一些技術基礎知識1. 基于多路復用技術管理 TCP 連接&#xff08;提高性能&#xff09;&#xff0…

【生成模型】【模型介紹】(一)視頻生成Wan2.1速度質量簡單評測

基礎模型&#xff1a;FramePack https://github.com/kijai/ComfyUI-FramePackWrapper huggingface-cli download Comfy-Org/HunyuanVideo_repackaged --local-dir Comfy-Org/HunyuanVideo_repackaged --resume-download huggingface-cli download Comfy-Org/sigclip_vision_3…

微信小程序之滑塊scroll-view

我們要做的東西&#xff1a; 滑塊的視頻 我們先做個基本的圖片和文字(wxm;)&#xff1a; <scroll-view><view class"scrollItem"><image src"https://bkimg.cdn.bcebos.com/pic/fc1f4134970a304e251fd88e8191b086c9177f3ef634?x-bce-processim…

如何寫出優秀的單元測試?

&#x1f345; 點擊文末小卡片&#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快 寫出優秀的單元測試需要考慮以下幾個方面&#xff1a; 1. 測試用例設計 測試用例應該覆蓋被測試代碼的不同場景和邊界情況&#xff0c;以盡可能發現潛在的問題。…

Python LangChain 3.0 詳解:重構大模型應用開發范式

引言 在人工智能技術日新月異的今天&#xff0c;大模型應用開發框架的迭代速度直接決定了AI落地的效率。LangChain作為這一領域的領軍者&#xff0c;于2024年正式發布3.0版本&#xff0c;通過架構重構與功能擴展&#xff0c;為開發者提供了更強大的工具集。本文將深入解析Lang…

Java模板設計模式詳解

以下是Java模板設計模式的詳細解析&#xff1a; 一、核心定義 模板模式&#xff08;Template Method Pattern&#xff09;是一種?行為型設計模式?&#xff0c;通過定義算法骨架并允許子類重寫特定步驟&#xff0c;實現代碼復用與擴展。其核心在于控制?流程標準化?&#x…