HTTP协议

超文本传输协议(HyperText Transfer Protocol, HTTP),无状态的,以请求/应答方式运行的协议,灵活支持自适应扩展及自描述信息格式

HTTP报文格式

http协议请求报文和响应报文基本相同,由三大部分组层

起始行 请求:GET /index.html HTTP/1.1
响应:HTTP/1.1 200 OK
头部字段集合 Connection: keep-alive
空行
消息正文 请求url返回的Response

起始行(start line)

描述请求或响应的基本信息

头部字段集合(header)

以Key-Value形式描述的相关报文

消息正文(entity)

实际传输的数据,类型可以是纯文本、图片、视频等二进制数据

请求行报文格式

GET /index.html HTTP/1.1

METHOD 空格 URI 空格 VERSION 换行

METHOD:请求的方式(GET、HEAD、PUT、POST、DELETE、PATCH)
URI:请求的地址
VERSION:发起的请求使用的HTTP协议版本

响应行报文格式

HTTP/1.1 200 OK

VERSION 空格 STATUS CODE 空格 REASON 换行

VERSION:响应报文使用的HTTP协议版本
STATUS CODE:响应状态码(200、401、500、502、503)
REASON:状态码的补充(OK、NOT_FOUND)

HTTP头部字段

以key-value的方式定义,多个可通过回车换行分隔
Connection: keep-alive

头部字段注意事项

字段名不区分大小写
字段名不允许出现空格
字段名可以使用“-”字符,但不可使用“_”字符
字段名后需紧跟“:”字符
字段原则上不可重复,除非这个字段本身的语义允许,如Set-Cookie

HTTP请求流程

  1. 请求指定网址
  2. 浏览器根据请求地址解析域名,并在浏览器缓存中是否存在对应ip
    1. 如浏览器中不存在ip,则去本机hosts中去查找
    2. 如本机hosts中也不存在,则一层层去顶级DNS中去查找
  3. 得到域名服务器IP地址
  4. TCP三次握手 TLS握手
  5. 发起HTTP请求
  6. HTTP响应
  7. 浏览器解析响应报文,渲染页面
  8. TCP四次挥手

HTTP请求流程.png

posted @ 2023-02-17 11:53  雨伦  阅读(85)  评论(0)    收藏  举报