关于wget的一个问题

时间:2010-07-06 04:45:19

标签: unix

当我在unix shell上输入wget http://yahoo.com:80时。有人可以解释一下从输入命令到达雅虎服务器到底发生了什么。非常感谢你提前。

2 个答案:

答案 0 :(得分:1)

RFC为您提供所需的所有详细信息,并且不依赖于工具或操作系统。

Wget在你的情况下使用HTTP,它基于TCP,后者又使用IP,然后它取决于你使用的内容,大部分时间你会遇到Ethernet Wireshark 3}}帧。

为了理解会发生什么,我建议您安装HTTP: 2616并查看解剖后的帧,您将了解哪些数据属于哪个网络层。这是可视化和了解所发生情况的最简单方法。除此之外,如果你真的喜欢(讽刺)有趣的文件(/讽刺),请查看相应的RFC {{3}},例如,其他人看一下维基百科文章底部的外部链接。

答案 1 :(得分:0)

  1. 该程序使用DNS将主机名解析为IP。经典API调用为gethostbyname,但较新的程序应使用getaddrinfo与IPv6兼容。
  2. 由于您指定了端口,程序可以跳过查找http的默认端口。但如果你没有,它会尝试getservbyname查找默认端口(然后再次,wget可能只是嵌入端口80)。
  3. 该程序使用网络API连接到远程主机。这是通过socketconnect
  4. 完成的
  5. 程序通过调用write
  6. 将http请求写入连接
  7. 程序通过对read的一次或多次调用来读取http响应。