多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 1.5 HTTP ## 1.5 HTTP HTTP即**超文本传输协议(Hypertext Transfer Protocol)**[1](#fn_1)。它是像浏览器这样的HTTP客户端程序(正式名称叫做**User Agent**)向HTTP服务器程序(**Server**)获取资源(如网页、图片等)的协议。它采用简单的“一问一答”模式:客户端发出一个请求(**Request**),服务器给出一个应答(**Response**)。这一过程可以用curl命令展示如下(*HTTP是一个基于文本的协议*,因此我们可以查看请求和应答): ``` curl -v http://www.example.com/index.html ``` 命令输出: ``` * Trying 93.184.216.34... * Connected to www.example.com (93.184.216.34) port 80 (#0) > GET /index.html HTTP/1.1 > Host: www.example.com > User-Agent: curl/7.43.0 > ... > < HTTP/1.1 200 OK < Content-Type: text/html < Content-Length: 1270 < ... < <!doctype html> <html> … </html> ``` 其中,“> ”开头的行是客户端发出的请求,“< ”开头的行是服务器的应答。注意行首的“> ”和“< ”本身并不是请求或者应答的一部分,只是curl输出的一种标记。同时,为了简明扼要,我略去了一些行,用“...”表示。 “\* ”开头的行是HTTP连接建立以前curl输出的一些诊断信息。我们可以看到curl通过DNS查找到“www.example.com”对应的IP—— 93.184.216.34[2](#fn_2)。 > 1. HTTP有好几个版本,目前比较流行的有1.0、1.1和2.0,均由IETF的RFC文本定义。RFC2616 <https://www.ietf.org/rfc/rfc2616.txt> 定义了HTTP 1.1,它是目前最流行的版本。[↩](#reffn_1 "Jump back to footnote [1] in the text.") > 2. 注意:DNS查找并不属于HTTP的一部分。HTTP发生在客户端到服务器的连接建立以后。[↩](#reffn_2 "Jump back to footnote [2] in the text.")