Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于Ping测试时延的建议 #25

Closed
JimLee1996 opened this issue Dec 22, 2020 · 12 comments
Closed

关于Ping测试时延的建议 #25

JimLee1996 opened this issue Dec 22, 2020 · 12 comments

Comments

@JimLee1996
Copy link

目前ping采用的是tcp ping的方式,其时延为当前host到cloudflare节点建立连接的速度。这样其实是不太合理的,还应当考虑CF节点到VPS的时延。比如香港的CF节点很快,但是HTTP服务在美国,这样的速度可能不如在美西的CF节点效果好。

一个小建议是使用HTTP Ping时延作为衡量节点好坏的时延。具体的思路是对于未指定url的,走默认的tcp;而指定了测速url的,通常都是自建的HTTP(s)服务器,因此可以使用http测速

@JimLee1996
Copy link
Author

JimLee1996 commented Dec 22, 2020

测量标准可以以发出request到收到http报文为准,应该也有相关参考的go语言代码(不是专家)https://github.com/search?l=Go&q=http+ping&type=Repositories

@XIU2
Copy link
Owner

XIU2 commented Dec 22, 2020

Cloudflare CDN 用到了Anycast 技术,所以即使你 Hosts 指向一个 Cloudflare CDN 节点 IP 访问某个网站,该网站后台看到的 CDN 节点请求 IP 其实是其他 CDN 节点 IP,并不是同一个 IP

访问 CDN 流程:

你访问使用 Cloudflare CDN 的网站时,CDN 会分配给你一个距离最近的 IP(具体看情况),你访问这个 IP 后,如果有缓存就直接发给你了,如果没有缓存就会选个距离网站源服务器 IP 最近的 CDN 节点去回源(请求网页内容)。

所以说,你访问网站时解析的明明是 IP A,但是网站后台看到的回源 CDN IP 却是 B


并不说你通过 CDN IP A 去访问网站,CDN 就会通过 IP A 去回源访问你的网站服务器。

Cloudflare CDN 公开的所有 IP 段中,分为两类。

  • 一类是回源 IP,即是 Cloudflare CDN 专门去网站源服务器回源获取数据时用的 IP。
  • 一类是任播 IP,即是用户访问网站时用的 CDN IP。

这也是为什么我的软件第一步延迟测速后,下载测速时就剩下一部分 IP 段的原因,因为过滤掉了不能用的和回源 IP

回源 IP 是由 Cloudflare CDN 根据情况分配的,用户是无法主动控制的。


如果你有使用 Cloudflare CDN 的网站,可以自己做测试:

访问网站前按 F12 键打开浏览器开发者工具,看 Network 中域名解析的 IP,然后再去服务器上面看网站访问日志中的访客 IP(CDN 节点 IP),你会发现 IP 不一样


所以说,你提的这个需求没有必要。

而且,HTTP Ping 是需要双向支持的(ICMP Ping 和 TCP Ping 也是各系统内置支持了),也就是说只有我这软件支持没用。

因为软件(客户端)发送数据给服务器后,还需要服务器上面有个软件(服务端)来接收数据并回应,这样才是一个完整的链接。

这意味着要使用 HTTP Ping 还需要在服务器上安装特定的软件(服务端),这无疑是会使软件操作复杂、麻烦。


另外,别把我当大佬,对于 Go 语言我可能连入门都算不上,完全是看几篇教程就上手了,写的乱七八糟的,所以技术很菜,你说的 HTTP Ping 我也不懂,没必要把软件整的太复杂。


当然最重要的是我对这功能不感兴趣。。。也就没有动力去实现该功能。

我这个人很随性,遇到感兴趣的我可以临时学会一门编程语言去实现,但是如果没兴趣的,就没动力。。。

因此我就不知不觉学了很多语言,当然,一个精通的都没有。。。


本身就是个小众需求、小众软件,用的人很少,甚至折腾出来后,感觉有点鸡肋,我自己都没用过几次。。。
这几个月一直都是别人提出需求和建议,然后我去添加、优化、修复功能。。。

而且很有意思的是,我一开始的目的只是单纯的想要找个速度快的 Cloudflare CDN IP,用来 Hosts 指向一些国外网站提高访问速度,结果最近我发现很多人都是拿这个软件扫出来最快 IP 去提高梯子速度。。。

@JimLee1996
Copy link
Author

谢谢大佬的解惑。我按照这个思路去看一下。

btw,最后一句话看的太真实了,hhhh

@XIU2
Copy link
Owner

XIU2 commented Dec 22, 2020

我只是在回复你时简单测试了下。

把网站域名 Hosts 指向某个 Cloudflare CDN IP,换了好几个 IP 测试,都没有遇到和网站后台访客 IP 一致的情况。

但是也有例外,那就是我昨天添加的 3 个非公开 Cloudflare CDN IP,这 3 个可能是因为比较特殊(不是 Cloudflare 自己的 IP 节点,而是和其他公司合作的),测试时发现网站后台访客 IP 是一致的,除了这 3 个外,没见到其他一致的情况了。

@JimLee1996
Copy link
Author

嗯嗯。应该是小众ISP没有很强的网络基础设施,估计就不会用到泛播IP。
我再按照你的方法研究研究。
谢谢大佬!

@CodeKirin-dragon
Copy link

大佬请问你是怎么扫到非公开 Cloudflare CDN IP的 ? 谢谢

@XIU2
Copy link
Owner

XIU2 commented Dec 22, 2020

@1967522059 不是我扫出来的,是 #15 这个人扫出来的,但是他也没说具体方法。。。

@CodeKirin-dragon
Copy link

@1967522059 不是我扫出来的,是 #15 这个人扫出来的,但是他也没说具体方法。。。

好的 谢谢

@AndersonGhost
Copy link

@1967522059 不是我扫出来的,是 #15 这个人扫出来的,但是他也没说具体方法。。。

看来很多人对这个问题很感兴趣啊

@XIU2
Copy link
Owner

XIU2 commented Dec 23, 2020

@AndersonGhost 因为 Cloudflare CDN 自己的亚洲节点太少了,除了移动可以直连 Cloudflare CDN 香港节点外(但是否会分配到香港 IP 也看运气,当然可以用我这软件来找到),其他运营商链接这些 CDN 亚洲节点都要绕道其他国家,导致速度捉急。。。

当然之所以亚洲节点少,主要是因为亚洲宽带成本高昂(新加坡<日本<香港<韩国,最大可能有几倍的差距)。

因为 Cloudflare 无法进军中国市场,所以也不会针对中国访客去优化线路,为了最大程度的利用亚洲节点,致使中国访客链接 CDN 亚洲节点都要各种绕道。。。


在 CDN 市场中,目前的老大应该还是亚马逊,亚马逊就有很多亚洲节点,但是亚马逊 CDN 和 Cloudflare CDN 不一样,并不能随便指向任意一个 CDN IP,要看该网站购买了 CDN 哪些服务(CDN 区域)。

@XIU2
Copy link
Owner

XIU2 commented Dec 23, 2020

很好奇你们都是从哪里找到我这个项目的,因为我都没怎么宣传过,本身就是很冷门的需求,起初是我自用的。。。

特别是最近几天,项目访问量 和 软件使用量 突然提高一截。。。

@XIU2
Copy link
Owner

XIU2 commented Dec 24, 2020

如果没有其他需要讨论的问题,就关闭该 Issues 吧。

走之前如果觉得该项目有帮到你,那就去项目右上角点个 [⭐ Star] 鼓励一下吧~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants