OwO-Network / nexttrace-experiment

An open source visual route tracking CLI tool (experiment field)
GNU General Public License v3.0
492 stars 34 forks source link

[Feature Request] 建议 nexttrace 可以将 ping 与 traceroute 结合,实时观测到各个 hop 的延迟等相关信息 #10

Open SunBK201 opened 2 years ago

SunBK201 commented 2 years ago

mtr 一样,可以实时观测当前的 IP 到所有的这些 hop 的平均延迟和丢包率等相关信息。

image
sjlleo commented 2 years ago

Hi SunBK201,

这个玩意儿可能会被叫做 NextMTR 独立成项目,因为 NextTrace 在编写之初没有按照 MTR 的逻辑去编写,所以如果现在要改的话,底层逻辑要全部大改,会导致已经非常稳定的 NextTrace 再次回归 Bug 满天飞的 Alpha 版本。

另外,做 MTR 最大的难点在于终端窗口的实时刷新,每次要对终端的内容清空并重新绘制,样式也比较难控制,每个字符在终端的位置不能每次刷新都乱跑,所以要单独创建一个专门用于终端显示控制的模块。

非常感谢

sjlleo commented 1 year ago

以下是 Alpha Preview Version

image

mtr 版本现在已经有了 Alpha 版本,目前还是有很多需要细节完善的地方,暂时不能开放公测,如果感兴趣,欢迎来尝鲜。

SunBK201 commented 1 year ago

以下是 Alpha Preview Version

image

mtr 版本现在已经有了 Alpha 版本,目前还是有很多需要细节完善的地方,暂时不能开放公测,如果感兴趣,欢迎来尝鲜。

我很乐意参与 Alpha 版本的测试,如果可以我想尝试下。

tsosunchia commented 1 year ago

以下是 Alpha Preview Version

image

mtr 版本现在已经有了 Alpha 版本,目前还是有很多需要细节完善的地方,暂时不能开放公测,如果感兴趣,欢迎来尝鲜。

我也想测试一下,如果可以请发到我邮箱(tsosunchia#gmail.com)。 另外对于web api,我有个小建议: 增加对于域名的支持

image

可以考虑使用阿里的DOH(不使用GOOGLE的DOH主要考虑国内网络环境)实现来减少工作量

package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
)

func main() {

  url := "https://dns.alidns.com/resolve?name=ip.sb&type=28"
  method := "GET"

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, nil)

  if err != nil {
    fmt.Println(err)
    return
  }
  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := ioutil.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}

结果:

{
    "Status": 0,
    "TC": false,
    "RD": true,
    "RA": true,
    "AD": false,
    "CD": false,
    "Question": {
        "name": "ip.sb.",
        "type": 28
    },
    "Answer": [
        {
            "name": "ip.sb.",
            "TTL": 253,
            "type": 28,
            "data": "2606:4700:20::681a:d1f"
        },
        {
            "name": "ip.sb.",
            "TTL": 253,
            "type": 28,
            "data": "2606:4700:20::681a:c1f"
        },
        {
            "name": "ip.sb.",
            "TTL": 253,
            "type": 28,
            "data": "2606:4700:20::ac43:4bac"
        }
    ]
}