互联网用户需要通过点击或者输入一个URL链接或地址来访问一个资源
如下为两个示例:
http://google.com/ index.html
http: //facebook .com/ index . htm
URL的第一个部分是HTTP,代表所采用的协议。除HTTP外,URL还可以采用其他类型的协议,如下为两个示例:
可以用ping命令来获取域名对应的IP地址。
ping google .com
由于IP地址不容易记忆,所以实践中更倾向于使用域名。一台计算机可以托管不止一个域名,因此,不同的城名可能指向同一一个 IP。另外,example.com 或者example.org 无法被注册,因为他们被保留作为各类文档手册举例使用。
URL中的Host部分用来表示在互联网或内网中一一个唯一 的地址。例如,htp://yahoo.com(没有host)访问的地址完全不同于http://mail.yahoo.com (有host)。 多年以来,作为最受欢迎的主机名, www是默认的主机名。通常,http://www.domainName 会被映射到http://domainName.
HTTP的默认端口是80端口。因此,对于采用80端口的Web服务器,无需输入端口号。有时, Web服务器并未运行在80端口上,此时必须输入相应的端口号。例如,Tomcat服务器的默认端口号是8080,为了能正确访问,必须提供输入端口号。
http://localhost: 8080/index.html
localhost作为一一个保留关键字,用于指向本机。
URL中的context部分用来代表应用名称,该部分也是可选的。一台Web服务器可以运行多个上下文(应用),其中一一个可以配置为默认上下文。若访问默认上下文中的资源,可以跳过context部分。
最后,一个context 可以有一一个或多个默认资源(通常为index.html、 index.htm或者defaulthtm)。一个没有带资源名称的URL通常指向默认资源。当存在多个默认资源时,其中最高优先级的资源将被返回给客户端。
资源名后可以有一个或多个查询语句或者路径参数。查询语句是一个KeyNalue 组,多个查询语句间用“&”符号分隔。路径参数类似于查询语句,但只有value部分,多个value部分用“/”符号分隔。
HTTP请求
一个HTTP请求包含3部分内容。
1.方法-URI-协议/版本。
2.请求头信息。
3.请求正文。
HTTP请求示例:
POST /examples/default.jsp HTTP/1.1
Accept:text/plain; text/html
Accept Language:en-gb
Connection:Keep-aliveHost: localhost
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US;
rv:1.9.6)Gecko/20100625 Firefox/3.6.6
Content-Length:30
Content -Type: application/x-www- form-urlencoded
Accept-Encoding: gzip, deflate
lastName=Blanks&firstName =Mike
请求的第一行POST /examples/defaultjsp HTTP/1.1是方法URI协议/版本。请求方法为POST, URI 为/examplesdefaltjsp,而协议/版本为HTTP/1.1;
HTTP 1.1规范定义了7种类型的方法
包括GET、POST、HEAD、 OPTIONS、PUT、DELETE以及TRACE.其中GET和POST广泛应用于互联网。
A中口
URI定义了一个互联网资源,通常解析为服务器根目录的相对路径。因此,通常用“”符号打头。另外,URL是URI的一一个具体类型。(详见htp://ww.cf.org/rfc/rfc2396.txt)。
HTTP请求包含的请求头信息包含关于客户端环境以及实体内容等非常有用的信息。例如,浏览器设置的语言,实体内容长度等。每个header都用回车/换行(即CRLF)分隔。
HTTP请求头信息和请求正文用一行空行分隔,HTTP服务器据此判断请求正文的起始位置。因此,在一些关于互联网的书籍中,CRLF被作为HTTP请求的第4种组件。
示例中,请求正文是lastName-Blanks&firstName Mike。在正常的HTTP请求中,请求正文的内容不止如此。
HTTP响应
同HTTP请求样,HTTP响应也包含3部分
1.协议一状态码一描述。
2.响应头信息。
3.响应正文。