HTTP协议入门_动力节点Java学院整理
一、HTTP/0.9 HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。 最早版本是1991年发布的0.9版。该版本极其简单,只有一个命令GET。 GET /index.html 上面命令表示,TCP 连接(connection)建立后,客户端向服务器请求(request)网页index.html。 协议规定,服务器只能回应HTML格式的字符串,不能回应别的格式。 <html> <body>Hello World</body> </html> 服务器发送完毕,就关闭TCP连接。 二、HTTP/1.0 2.1 简介 1996年5月,HTTP/1.0 版本发布,内容大大增加。 首先,任何格式的内容都可以发送。这使得互联网不仅可以传输文字,还能传输图像、视频、二进制文件。这为互联网的大发展奠定了基础。 其次,除了GET命令,还引入了POST命令和HEAD命令,丰富了浏览器与服务器的互动手段。 其他的新增功能还包括状态码(status code)、多字符集支持、多部分发送(multi-part type)、权限(authorization)、缓存(cache)、内容编码(content encoding)等。 2.2 请求格式 下面是一个1.0版的HTTP请求的例子。 GET/ HTTP/1.0 可以看到,这个格式与0.9版有很大变化。 2.3 回应格式 服务器的回应如下。 HTTP/1.0200OK <html> 回应的格式是”头信息 + 一个空行(rn) + 数据”。其中,第一行是”协议版本 + 状态码(status code) + 状态描述”。 2.4 Content-Type 字段 关于字符的编码,1.0版规定,头信息必须是 ASCII 码,后面的数据可以是任何格式。因此,服务器回应的时候,必须告诉客户端,数据是什么格式,这就是Content-Type字段的作用。 text/plain 这些数据类型总称为MIME type,每个值包括一级类型和二级类型,之间用斜杠分隔。 上面的类型表明,发送的是Debian系统的二进制数据包。 上面的类型表明,发送的是网页,而且编码是UTF-8。 上面代码中,客户端声明自己可以接受任何格式的数据。 <meta http-equiv="Content-Type"content="text/html; charset=UTF-8"/> <!-- 等同于 --> <meta charset="utf-8"/> 2.5 Content-Encoding 字段 由于发送的数据可以是任何格式,因此可以把数据压缩后再发送。Content-Encoding字段说明数据的压缩方法。 客户端在请求时,用Accept-Encoding字段说明自己可以接受哪些压缩方法。 2.6 缺点 HTTP/1.0 版的主要缺点是,每个TCP连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接。 三、HTTP/1.1 1997年1月,HTTP/1.1 版本发布,只比 1.0 版本晚了半年。它进一步完善了 HTTP 协议,一直用到了20年后的今天,直到现在还是最流行的版本。 3.1 持久连接 (编辑:焦作站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |