- 一.HTTP的特点
- 二.HTTP请求和响应结构结构
- 1. HTTP的请求结构
- 2. HTTP的响应结构
- 三.关于HTTP的经典面试题
- 四.常见HTTP状态码
超文本传输协议的主要特点
-
支持客户端服务端 即C/S模式的
-
简单快速 客户端向服务器发送请求时, 只需传递请求方式(POST GET ), 请求url, 请求参数等
-
灵活 HTTP允许传输任意类型的数据对象. 传输的类型由
Content-Type
来区分 -
无连接 无连接代表每次请求和响应只处理一次. 服务器处理完请求,并收到应答后, 就断开连接. 这种方式节约了时间. 5.无状态 无状态是指协议对于事务处理没有记忆功能。 缺少状态意味着,假如后面的处理需要前面的信息,则前面的信息必须重传,这样可能导致每次连接传送的数据量增大。 另一方面,在服务器不需要前面信息时,应答就较快。直观地说,就是每个请求都是独立的,与前面的请求和后面的请求都是没有直接联系的。
实际中的使用情况:
在web应用中,我们使用http协议,但是我们需要的web是有状态的,因此加入了cookie、session等机制实现有状态的的web。
web=http协议+状态机制+其他机制
例如访问百度的请求头信息如下. get请求, 协议为HTTP1.1, 访问主机为
www.baidu.com
连接方式为keep-alive
访问百度的响应状态行和头部信息
响应的正文
请求/响应的步骤
- 客户端连接到web服务器
- 发送HTTP请求
- 服务器接收请求并返回HTTP响应
- 释放TCP连接
- 客户端浏览器解析HTML内容
在浏览器地址栏输入URL, 按下回车后,经历的流程 首先浏览器会根据输入的URL去逐层查询DNS服务器缓存, 解析url对应的ip地址 DNS缓存由近到远依次是 浏览器缓存–> 系统缓存—> 路由器缓存----->ISP缓存(电信营运商缓存)----->根域名服务器缓存------>顶级域名服务器缓存 从哪个缓存找到对应的ip则直接返回, 不再查询后面的缓存. 找到对应的IP地址后, 会根据对应的ip和对应的端口(默认是80端口),与服务器建立TCP连接(TCP的三次握手) 之后, 浏览器发送HTTP请求给服务器,具体发送内容参考上面第二节. 紧接着, 服务器处理请求, 并返回HTTP报文, 把带有html文本给浏览器.浏览器收到html后在前端进行渲染页面. 之后, 浏览器释放TCP连接, 连接结束.
四.常见HTTP状态码HTTP状态码由三位数组成. 第一位数字定义了响应的类别, 主要有五种类型 1xx: 以1开头的,代表请求已经接受,需要继续处理. 2xx: 以2开头的,成功 —代表请求已经被成功接收,理解和接受 3xx: 以3开头的,重定向----代表请求需要跳转到其他的url进行更进一步的操作 4xx: 以4开头的,客户端错误----代表请求请求有语法错误,或者请求无法完成(例如最常见的404代表该请求无对应的资源) 5xx: 以5开头的, 服务器端错误–一般为后台代码出现异常, 服务器未能实现合法的请求.
实际的常见状态码如下: