1 | 开发有个php程序,通过curl去调用bind dns中一个域名(2个A记录),在某些服务器上始终只轮询落到其中一个A记录服务器(使用wget和ping不存在这个问题),具体原因后研究认定可能与路由消耗有关。但现在来说说curl和wget的区别。 |
使用strace命令去跟踪整个请求过程
curl
1 | strace curl -v web.test.zone |
摘出关键部分
1 | ...... |
1 | write(2, "Rebuilt URL to: web.test.zone/\n", 32Rebuilt URL to: web.test.zone/ |
wget
1 | strace wget web.test.zone |
摘出关键部分
1 | ...... |
1 | #查找了/etc/resalv.conf文件 |
总结
1 | curl是通过libcurl跨平台库去实现的,暂且搞不懂curl是通过何种方式或规律一次获取的IP地址,不过从strace的结果中来看,它并没有遵循Bind DNS轮询IP地址去请求数据。 |
1 | 对于以上结论,纯属个人观点,如有雷同,纯属巧合。我已经在stackoverflow发布了该话题,如果有大牛回答,我可能会更新我的观点。 |
其他-curl请求URL不使用缓存
1 | curl请求url不使用缓存 |
基本无价值参考: haxx.se
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2018/05/21/curl和wget的底层实现区别/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!