TCP/IP通信案例:访问Internet上的Web服务器
TCP/IP协议族各层的功效和部分协议,以及它们之间是如何协作完成网络通信的。我们详细地探讨了IP协议和TCP协议。我们分析一个完整的TCP/IP通信的实例一一访问 Internet上的Web服务器,通过该实例把这些知识串联起来。选择应用Web服务器展开讨论的理由是:
Internet上的Web服务器随处都可以获得,我们通过浏览器访问任何一个网站都是在与Web服务器通信。
将编写简略的Web服务器程序,因此先学习其工作原理是有利益的。Web客户端和服务器之间应用HIIP协议通信。HITP协议的内容相当广泛,涵盖了网络利用层协议需要考虑的诸多方面。因此,学习HTTP协议对利用层协议设计将大有裨益。
实例总图
我们按照如下方法来安排通信实例:在 Kongming20上运行wget客户端程序,在 ernest-laptop上运行 squid代理服务器程序。客户端通过代理服务器的中转,获取Internet上的主机百度网址的首页文档 index.html,如图1所示。
图1通过代理服务器访问 Internet上的Web服务器由图1可见,wget客户端程序和代理服务器之间,以及代理服务器与Web服务器之间都是应用HIT"P协议通信的。HTIP协议是一种利用层协议,它默认应用的传输层协议是TCP协议。我们将在后文中简略讨论HTTP协议。
为了将 ernest-laptop设置为 Kongming20的HTP代理服务器,我们需要在 Kongming20上设置环境变量htp_ proxy:
Sexporthttp_proxy-="ernest-laptop:3128"#在Kongming20上履行
其中,3128是 squid服务器默认应用的端口号(可以通过lsof命令查看服务器程序监听的端口号,见第17章)。设置好环境变量之后,Kongming20访间任何 Internet上的Web服务器时,其HITP恳求都将首先发送至 ernest-laptop的3128端口。
squid代理服务器吸收到wget客户端的HTP恳求之后,将简略地修正这个恳求,然后把它发送给最终的目标Web服务器。既然代理服务器访问的是 Internet上的机器,可以预感它发送的P数据报都将经过路由器的中转,这一点也体现在图1中了。