协议
客户端与某个端口的服务程序连接以后,会使用一个特定协议获得服务。协议是想要使用某一服务的某一方与该服务之间进行通信的一种预定义方式。“某一方”可能是一个人,但在更多的情况下,它是一个计算机程序,例如Web浏览器。协议通常是文本,简单说明客户端和服务器进行会话的方式。
也许最简单的协议是日期时间协议。如果您在一台支持日期时间服务器的计算机上连接到端口13,该服务器将为您发送它的当前日期和时间,然后关闭连接。协议是“如果你连接到我,我将为你发送日期和时间,然后断开连接”。大多数UNIX计算机都支持此服务器。如果您想尝试一下,可以用Telnet应用程序连接到此服务器。在UNIX中,会话过程如下所示:
%telnet Web67.ntx.net 13
Trying 216.27.61.137...(正在尝试 216.27.61.137...)
Connected to Web67.ntx.net.(已连接到 Web67.ntx.net。)
Escape character is '^]'.(转义字符为“^]”。)
Sun Oct 25 08:34:06 1998(1998年10月25日星期日 08:34:06)
Connection closed by foreign host.(连接已被外部主机关闭。)
在Windows计算机上,您可以通过在MSDOS提示符下键入“telnet Web67.ntx.net 13”来访问此服务器。
在本示例中,Web67.ntx.net是该服务器的UNIX计算机,13是日期时间服务的端口号。Telnet应用程序连接到端口13(telnet会自然连接到端口23,但您可以将其定向为连接到任何端口),之后,服务器会发送日期和时间并断开连接。Telnet的大多数版本均允许您指定端口号,所以您可以使用您的计算机上可用的任何版本的Telnet来尝试。
大多数协议涉及的内容并不仅限于日期时间,并在公开可用的“征求意见(RFC)文档中进行指定(有关所有RFC的完整存档,请访问http://sunsite.auc.dk/RFC/)。互联网上的每个Web服务器都遵循HTTP协议,该协议在1991年定义的原始HTTP中进行了精辟的总结。HTTP服务器可以理解的最基本的协议形式只包括一个命令:GET。如果您连接到一个能理解HTTP协议的服务器并让它“GET文件名”,该服务器将做出相应的反应,为您发送指定文件的内容,然后断开连接。下面是一个典型的会话:
%telnet www.howstuffworks.com 80
Trying 216.27.61.137...(正在尝试 216.27.61.137...)
Connected to howstuffworks.com.(已连接到 howstuffworks.com。)
Escape character is '^]'.(转义字符为“^]”。)
GET http://www.howstuffworks.com/ () ... Connection closed by foreign host.(连接已被外部主机关闭。)
在原始HTTP协议中,您所要发送的只是实际文件名,比如“/”或“/Web-server.htm”。经过后来的修改后,它可以发送完整的URL。这使得托管虚拟域(许多域存在于单一的计算机上)的公司可以为他们托管的所有的域使用一个IP地址。其结果是数百个域都托管在209.116.69.66上,而这正是HowStuffWorks的IP地址。