为了了解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协议
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句