一、HTTP协议是什么
1、HTTP协议是以TCP协议为基础的文本协议。
2、HTTP协议采用请求和响应的模式。
3、HTTP协议可以传输二进制文件、文本文件、图片等资源。
4、HTTP协议支持表单上传,文件上传,文件下载等功能。
二、HTTP协议的格式
(一)请求格式
请求格式的报文由浏览器来发送。
分为请求头和请求体两部分,用回车符和空行隔开。
1、格式如下:
请求方法 空格 资源路径 空格 协议版本\r\n
请求字段集合
\r\n
可选的请求体
2、案例
GET /home.html HTTP/1.1\r\n
Accept: */* \r\n
Host: localhost:8080\r\n
User-Agent: Window-NT Chrome\r\n
\r\n
本案例没有使用请求体。
3、格式解释
请求方法:有Get、Put、Post、Delete常用方法,分别代表本次请求是查询、更新、获取、删除操作。
空格:就是ASCII西文字符码的空格符。
资源路径:指的是服务器项目中的文件路径,例如: /Home/one/h.html。
协议版本:表示浏览器支持的版本,例如HTTP/1.1, HTTP/1.0等等。
\r\n:这是回车符和换行符,用来分行。
请求字段集合:由很多的请求字段组成,每个字段用回车符和换行符结尾。
请求体:用来放置上传的字节内容,例如表单信息、文件信息。
(二)响应格式
响应格式的报文由服务器来发送。
分为响应头和响应体两部分,它们用回车符和空格隔开。
1、格式如下:
协议版本 空格 状态码 空格 状态描述信息 \r\n
响应头集合
\r\n
可选的响应体
2、响应案例
HTTP/1.1 200 ok\r\n
Content-Length: 12 \r\n
Content-Type: text/html \r\n
\r\n
<p>hello</p>
3、格式解释
协议版本:和请求体一样,代表服务器支持的版本。
状态码:用一个三位数字来表示本次请求的结果,可能成功,可能失败,可能请求不正确。由官方规定状态码的编号和含义。
状态描述信息:自定义的字符串,用户自定义,简单描述结果。
响应头集合:格式和请求头集合一样,只不过有些是服务器专用。
响应体:可选的,由实际的字节构成,可能是一个文件的所有字节。
三、请求头字段和响应头字段的格式
1、作用是描述格式信息。
2、格式如下:
字段名字: 字段值\r\n
字段名和字段值用英文冒号连接,每个字段用回车符和换行符结尾。
3、多个实体字段是连续放置。
例如:Content-Type: text/html\r\n
Content-Length: 29\r\n
四、获取更多信息
有关更多的HTTP协议信息,请查询RFC的官方网站。
RFC中有很多协议的格式说明书。