为了了解HTTP 具体的传输协议,花时间阅读了MDN 上的的HTTP协议说明,写的很详细,中英文版本都有。 这里把看完的一些知识点重点记录
超文本传输协议(HTTP)是用于传输诸如HTML的超媒体文档的应用层协议。 它被设计用于Web浏览器和Web服务器之间的通信。
HTTP是一种能够获取如 HTML 这样的网络资源的 protocol(通讯协议)。它是在 Web 上进行数据交换的基础,是一种 client-server 协议,也就是说,请求通常是由像浏览器这样的接受方发起的。一个完整的Web文档通常是由不同的子文档拼接而成的,像是文本、布局描述、图片、视频、脚本等等。
主要特点如下:
其中比较重要的两个概念是:
客户端和服务端通过交换各自的消息(与数据流正好相反)进行交互。
由像浏览器这样的客户端发出的消息叫做 requests,被服务端响应的消息叫做 responses。
这个在编程中怎么体现的呢,比如使用Node编写的Web服务器中:
var http = require("http");
// 创建server,指定处理客户端请求的函数
http.createServer(
function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World!");
response.end();
}
).listen(8000);
可以看到其中的两个参数,其中request代表了客户端发过来的请求,response代表了要回写给客户端的响应。
当客户端想要和服务端进行信息交互时(服务端是指最终服务器,或者是一个中间代理),过程表现为下面几步:
GET / HTTP/1.1
Host: developer.mozilla.org
Accept-Language: fr
HTTP/1.1 200 OK
Date: Sat, 09 Oct 2010 14:28:02 GMT
Server: Apache
Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT
ETag: "51142bc1-7449-479b075b2891b"
Accept-Ranges: bytes
Content-Length: 29769
Content-Type: text/html
<!DOCTYPE html... (here comes the 29769 bytes of the requested web page)
可以详细看一下请求的具体格式:
响应的具体格式:
实际通信过程中,还有其他参数,就不一一解释,这里实际抓取了一次浏览器访问网页的通信过程
本文章只是总结了HTTP一次简单的连接,详细的可以查看HTTP协议