# 网络请求

## URL的组成

以 `http://www.bing.com/search?q=gulp&first=9#history` 为例：

|    协议   |      主机名     |     端口    |    路径   |       查询字符串      |   信息片段   |
| :-----: | :----------: | :-------: | :-----: | :--------------: | :------: |
| http:// | www.bing.com | :80(默认端口) | /search | ?q=gulp\&first=9 | #history |

### 概念

* 协议： 协议确定如何传输请求，主要是 `http` 和 `https` ，其他的还有 `file` 和 `ftp` 。
* 主机名： 主机名标识服务器。
* 端口： 每一台服务器都有一系列的端口号。一些端口号比较特殊，如 80 和 443 端口。如果省略端口值，那么默认 80 端口负责HTTP传输，443 端口负责HTTPS传输。
* 路径： URL中影响应用程序的第一个组成部分通常是路径，路径是应用中的页面或其他资源的唯一标识。
* 查询字符串： 查询字符串是一种键值对集合，是可选的。它以问号(?)开头，键值对则以与号(&)分隔开。所有的名称和值都必须是URL编码的。
* 信息片段： 信息片段（或散列）被严格限制在浏览器中使用，不会传递到服务器。用它控制单页应用或AJAX富应用越来越普遍。最初，信息片段只是用来让浏览器展现文档中通过锚点标记(`<a href="#chapter1">`)指定的部分。
