负载均衡故障排错指南 (3) 推荐

2.3 wget和curlwget和curl是两个常用的,基于命令行的文件传输工具软件。这两个工具很类似,但又有所不同。这两个工具都可以通过FTP、HTTP或HTTPS协议来下载内容,通过这两个工具,我们可以模拟客户端向负载均衡发送各种TCP请求,以研究负载均衡对数据包的处理方式和流程。但是,这两个工具实际上也有差别: curl支持更多的协议,如:FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP 和 RTSP,而wget仅支持FTP, HTTP, HTTPS。 curl默认支持HTTP1.1(也支持HTTP1.0),而wget仅支持HTTP1.0(据说最新的wget已经支持HTTP1.1,我们将在后续的测试中进行验证)。 网上有很多文章说,二者最关键的区别 在于curl支持libcurl库,而wget纯粹是一个命令行工具。对于这一点,我们并不在乎。这些命令行工具的使用方法非常简单,但是,要想完全精准的掌握这两个命令的使用方法,其实并不是那么容易。让我们从最简单的命令开始:

[root@linux-test~]#curlhttp://www.baidu.com !doctypehtml html head metahttp-equiv= Content-Type content= text/html;charset=gb2312 title title style html{overflow-y:auto}body{font:12pxarial;text-align:center;background:#fff}body,p,form,ul,li{margin:0;padding:0;list-//...此处省略XXX字符...[root@linux-test~]#[root@linux-test~]#wgethttp://www.baidu.com--2011-09-1623:05:51--http://www.baidu.com/Resolvingwww.baidu.com...119.75.217.56,119.75.218.45Connectingtowww.baidu.com|119.75.217.56|:80...connected.HTTPrequestsent,awaitingresponse...200OKLength:8403(8.2K)[text/html]Savingto:`index.html'100%[================================================================================================= ]8,403--.-K/sin0s2011-09-1623:05:51(296MB/s)-`index.html'saved[8403/8403][root@linux-test~]#

从上面的两个对比例子可以看出,curl比wget更加符合传统的unix风格,我们可以通过下面的例子,使curl获得与wget相同的输出结果(baidu.html与index.html的内容完全相同):

[root@linux-test~]#curlhttp://www.baidu.com baidu.html%Total%Received%XferdAverageSpeedTimeTimeTimeCurrentDloadUploadTotalSpentLeftSpeed1008403100840300490230--:--:----:--:----:--:--141k[root@linux-test~]#lltotal68-rw-------1rootroot1608Sep1610:16anaconda-ks.cfg-rw-r--r--1rootroot8403Sep1623:06baidu.html-rw-r--r--1rootroot8403Sep1623:05index.html-rw-r--r--1rootroot15780Sep1610:16install.log-rw-r--r--1rootroot3779Sep1610:16install.log.syslog[root@linux-test~]#

但是,这两个命令的请求过程对于服务器来说真的就一样吗?我们看看用wireshark对两个工具访问相同网站的解码过程。下面两张图分别是对wget和curl的HTTP请求的解码。

从上面Wireshark的解码截图,我们可以非常明显的发现,两个命令请求http://www.baidu.com 的HTTP请求的头部有很大的区别。

1) wget默认采用HTTP/1.0标准发送请求,而curl则默认采用HTTP/1.1发送请求。

2) 默认的User-Agent不同。

3) wget多了一个Connection: Keep-Alive头。

至于这其中的区别究竟意味着什么,我们将在后续的文章中详细介绍。有关wget和curl的具体用法,请读者参考互联网上的其它文章或其帮助文件,本文将不再赘述,对于后续文章中用到的一些参数,我们将在使用时再介绍其含义。

E.S.

我想有一天和你去旅行。去那没有去过的地方,

负载均衡故障排错指南 (3) 推荐

相关文章:

你感兴趣的文章:

标签云: