在 HTTP 客户端向服务器发送报文之前,需要用在客户端和服务器之间建立一条 TCP/IP 连接。
要想建立TCP/IP 连接连接,需要知道服务器的 IP 地址以及与服务器上运行的特定软件相关的 TCP 端口号。
但最初怎么获得 HTTP 服务器的 IP 地址和端口号呢?
当然是通过 URL 了!我们前面曾提到过,URL 就是资源的地址,所以自然能够为我们提供存储资源的机器的 IP 地址。我们来看几个 URL:
http://207.200.83.29:80/index.html
http://www.netscape.com:80/index.html
http://www.netscape.com/index.html
第一个 URL 使用了机器的 IP 地址,207.200.83.29 以及端口号 80。
第二个 URL 没有使用数字形式的 IP 地址,它使用的是文本形式的域名,或者称为主机名(www.netscape.com)。
主机名就是 IP 地址比较人性化的别称。
可以通过一种称为域名服务(Domain Name Service,DNS)的机制方便地将主机名转换为 IP 地址,这样所有问题就都解决了。
最后一个 URL 没有端口号。HTTP 的 URL 中没有端口号时,可以假设默认端口号是 80。
有了 IP 地址和端口号,客户端就可以很方便地通过 TCP/IP 进行通信了。
浏览器是怎样通过 HTTP 显示位于远端服务器中的某个简单 HTML 资源的?
步骤如下:
(a) 浏览器从 URL 中解析出服务器的主机名;
(b) 浏览器通过域名解析机制将服务器的主机名转换成服务器的 IP 地址;(如何直接使用了IP而不是域名,a,b步骤可省略)
(c) 浏览器将端口号(如果有的话)从 URL 中解析出来;
(d) 浏览器通过IP地址和端口号建立一条与 Web 服务器的 TCP 连接;
(e) 浏览器向服务器发送一条 HTTP 请求报文;
(f) 服务器向浏览器回送一条 HTTP 响应报文;
(g) 关闭连接,浏览器显示文档。