HTTP 协议入门

浏览器
本课程中,所有提到的“浏览器”的概念,是泛指可以发出HTTP请求的程序,无论是具体的浏览器,还是手机上使用HTTP协议与服务端通讯的App,又或者是命令行中的telnet,curl等命令,都在我们本次课中提到的“浏览器”概念的范畴。

关于 HTTP 的学习资源

  1. RFC 2616 (这个是HTTP 1.1的RFC文档,可以算作是一个官方规范文档)
  2. 《图解HTTP》
  3. 《HTTP权威指南 (HTTP:The Definitive Guide)》

什么是 HTTP 协议 ?
浏览器 与 Web服务器之间的通信协议、交互协议,即 HTTP协议。

Web服务器是什么?有什么用?
Web服务器用于提供Web资源,比如图片、网页等。

什么是 HTTP 事务?
一次HTTP事务 = 一次HTTP请求 + 一次HTTP响应。因此,HTTP协议,也可以被称为请求响应式协议。
任何两次HTTP事务之间是没有任何关系的,即一次HTTP事务不会依赖另一个HTTP事务。两次请求之间互不干扰,即HTTP无状态性。

什么是协议分层?
协议分层,不同层完成不同的功能。应用层、传输层(TCP)、网络层(IP)、数据链路层和物理层。

HTTP 协议入门_第1张图片
协议分层

DNS 是什么?
域名 = IP地址 + 端口号。DNS解析,可以完成从域名到IP地址的解析。

一次HTTP事务(请求 / 响应)的过程是怎样的?

HTTP 协议入门_第2张图片
HTTP事务的过程

HTTP 请求报文

  1. 请求行:GET / HTTP/1.1 \r\n
    请求方法 + 资源路径 + HTTP协议版本号 + \r\n结尾
  2. 请求头:键值对格式,key + value + \r\n
    Host: 主机名、虚拟主机
    Connection: 使用keepalive,一个连接可以发多个请求
    User-Agent: 请求发出者,兼容性以及定制化需求
  3. 请求体:可选!

HTTP 响应报文

  1. 状态行:HTTP/1.1 200 OK \r\n
    HTTP协议版本号 + 状态码 + 状态原因描述 + \r\n结尾
    常见的状态码:200 / 304 / 404 / 500
  2. 响应头:键值对格式, key + value + \r\n
    Server: 指明Web服务端使用的是什么软件
    Content-Type: 指明内容类型,如 html、音频、视频等
    Content-Length: 指明内容长度
    Date: 响应时间
  3. 响应体:可以是文本或二进制数据,一般情况下,其大小由Content-Length来指定。响应体与响应头之间以空行间隔。

使用浏览器 F12 - Network 可以查看 HTTP 请求报文和响应报文。



本节完!!

你可能感兴趣的:(HTTP 协议入门)