http协议
什么是HTTP协议
Hyper Text Transfer Protocol,超级文本传输协议。常见于用来访问网页,传输HTML文件,图片,字符串等。
应用场景
HTTP协议工作于C/S架构上,HTTP CLIENT通过HTTP协议与HTTP SERVER进行交互。
HTTP SERVER默认端口号为80,用户也可以自定义成其它端口号。
HTTPS SERVER默认端口号为443,用户也可以自定义成其它端口号。
HTTP与HTTPS的异同
HTTPS是运行在TLS层(Transport Layer Security,传输层安全协议)的HTTP协议。
HTTP协议是基于TCP协议工作,其传输流程如下。
HTTPS=HTTP+TLS,TLS用来将HTTP的内容加密,然后由TCP层传输过去。
HTTP协议格式及说明
CLIENT发送的HTTP请求包括以下格式:
- 请求行(request line)
- 请求头 (request header)
- 空行 (blank line)
- 请求数据(body)
同时HTTP协议里不仅有header,还有参数设置,cookie,代理设置的功能
C语言的定义举例如下:
#define WEB_SERVER "example.com"
#define WEB_PORT "80"
#define WEB_PATH "/"
static const char *REQUEST = "GET " WEB_PATH " HTTP/1.1\r\n"
"Host: "WEB_SERVER":"WEB_PORT"\r\n"
"User-Agent: esp-idf/1.1 esp32\r\n"
"\r\n";
SERVER响应消息
也由四部分组成,分别是
- 状态行(status line)
- 消息报头(msg header)
- 空行 (blank line)
- 响应正文(body)
对于HEADER里的content-type说明
content-type,内容类型,决定浏览器将以什么方法去解析这个文件。
如
Content-Type: text/html; charset=utf-8
Content-Type: multipart/form-data; boundary=something
常见的媒体格式类型如下:
text/html : HTML格式
text/plain :纯文本格式
text/xml : XML格式
image/gif :gif图片格式
image/jpeg :jpg图片格式
image/png:png图片格式
以application开头的媒体格式类型:
application/xhtml+xml :XHTML格式
application/xml: XML数据格式
application/atom+xml :Atom XML聚合格式
application/json: JSON数据格式
application/pdf:pdf格式
application/msword : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded :