Loading... # NAT 超时探测程序设计方案 ```mermaid graph TB subgraph Client["客户端 nattimeout"] CLI[命令行解析] CLI --> MODE{探测模式} MODE -->|UDP| UDP_C[UDP 探测器] MODE -->|TCP| TCP_C[TCP 探测器] UDP_C --> SEND_U[发送探测包] TCP_C --> SEND_T[建立连接] SEND_U --> WAIT_U[等待间隔递增] SEND_T --> WAIT_T[保持空闲递增] WAIT_U --> CHECK_U{检测响应} WAIT_T --> CHECK_T{检测连接} CHECK_U -->|成功| INC_U[增加间隔] CHECK_U -->|超时| RESULT_U[记录超时点] CHECK_T -->|存活| INC_T[增加间隔] CHECK_T -->|断开| RESULT_T[记录超时点] INC_U --> WAIT_U INC_T --> WAIT_T end subgraph Server["测试服务器"] SRV_UDP[UDP Echo 服务] SRV_TCP[TCP Echo 服务] end SEND_U -.->|穿越NAT| SRV_UDP SEND_T -.->|穿越NAT| SRV_TCP SRV_UDP -.-> CHECK_U SRV_TCP -.-> CHECK_T ```  ## 核心探测流程 ```mermaid sequenceDiagram participant C as Client participant N as NAT participant S as Server Note over C,S: UDP 超时探测 C->>N: UDP包 (创建映射) N->>S: 转发 S->>N: Echo响应 N->>C: 转发 loop 递增间隔 Note over C: 等待 N 秒 C->>N: 探测包 alt 映射存活 N->>S: 转发 S->>N: 响应 N->>C: 成功 Note over C: 间隔 += step else 映射超时 N--xS: 丢弃 Note over C: 记录超时时间 end end ```  ## 程序架构 ```mermaid graph LR subgraph 模块结构 MAIN[main] --> CONFIG[配置解析] MAIN --> PROBE[探测引擎] PROBE --> UDP[udp_probe] PROBE --> TCP[tcp_probe] UDP --> NET[网络层] TCP --> NET PROBE --> REPORT[结果报告] end ```  ## 使用方式 ```bash # UDP 探测 nattimeout -m udp -s server:port -t 300 # TCP 探测 nattimeout -m tcp -s server:port -t 600 ``` 最后修改:2026 年 01 月 31 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏