概念
HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。
请求报文和响应报文都由三部分组成:起始行、首部、主体。
HTTP请求报文
格式:
<method> <request-URL> <version>
<headers>
<entity-body>
请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。
请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。
主体:不在GET方法中使用,而是在POST方法中使用。
HTTP响应报文
格式:
<method> <status> <reason-phrase>
<headers>
<entity-body>
响应行:包含了响应报文使用的HTTP版本、数字状态码,以及描述状态码的文本信息的原因短语。
响应头
主体:响应的数据
浏览器输入url后发生了什么?
- DNS域名解析得到相应的ip;
- 根据ip建立TCP连接(三次握手);
- 发送HTTP请求;
- 服务器处理请求;
- 返回响应结果;
- 关闭TCP连接;
- 浏览器解析HTML;
- 浏览器布局渲染;