5分钟带你快速理解Http协议
HTTP协议
什么是HTTP协议
tcp ip协议有什么作用 HTTP(Hyper Text Transfer Protocol)协议⼜叫超⽂本传输协议,是建⽴在TCP/IP协议之上的⽤来传递数据的协议。它不涉及数据包的传递,主要规定了客户端和服务端的通信格式,默认端⼝号为80。
HTTP协议的特点
简单快速
灵活
允许任意类型的数据对象
⽆连接
每次只处理⼀个请求,且服务端处理完⼀个请求返回给客户端后⽴即断开连接,采⽤这种⽅式节约时间
⽆状态
HTTP协=协议是⽆状态的,它本⾝不对不同请求的状态进⾏保存,也就是说每两种请求之间的是相互隔离的。
HTTP报⽂
HTTP报⽂分为请求报⽂和响应报⽂
请求报⽂
请求报⽂包含 请求头(request line) 请求头(header) 空⾏ 请求体四个部分组成。
请求⾏:⽤来说明请求类型,要访问的url和HTTP协议版本
请求⽅法的种类以及作⽤:
GET:请求指定页⾯信息,返回页⾯主体
HEAD:请求指定页⾯,只⽤来获取报头
POST:向指定资源提交数据处理请求(例如提交表单和上传⽂件),数据被包含在请求体中
PUT:更新指定数据
DELETE:删除指定数据
GET和POST请求的区别:
GET在浏览器回退时是⽆害的,⽽POST会再次提交请求。
GET请求会被浏览器主动缓存,⽽POST不会,除⾮⼿动设置。
GET请求参数会被完整保留在浏览器历史记录⾥,⽽POST中的参数不会被保留。
GET请求在URL中传送的参数是有长度限制的,⽽POST没有限制。
GET参数通过URL传递,POST放在Request body中
请求头:由关键字 / 值对组成,每⾏⼀对,关键字和值⽤英⽂冒号“:”分隔。
请求头部通知服务器有关于客户端请求的信息。它包含许多有关的客户端环境和请求正⽂的有⽤信息。其中⽐如:
Host:表⽰主机名,虚拟主机。
Connection:HTTP/1.1增加的,使⽤keepalive,即持久连接,⼀个连接可以发多个请求。
User-Agent:请求发出者,兼容性以及定制化需求。
空⾏:⽤来声明请求头和请求体的分隔
请求体:包含我们请求的多个参数如登录时post发送的⽤户名和密码
响应报⽂
响应报⽂包含 响应头 响应⾏ 空⾏ 响应体。(与请求报⽂最明显的区别就在于响应头中⽤状态码代替了请求信息)
状态⾏:包含请求的状态码,每个状态码包含三个数字,第⼀个数值代表相应的类别
1xx:提⽰信息:表⽰请求正在处理
2xx:成功信息:表⽰请求成功
3xx:重定向信息: 常见的有301和302
4xx:客户端错误信息:常见403禁⽌访问,404 not found等,⼀般是语法错误或请求⽆法实现
5xx:服务器错误:通常因为后端服务器崩溃
HTTP请求⼤致流程
1. 客户端发送请求报⽂
2. DNS解析请求头中的域名(url)返回服务器的域名
3. TCP协议对请求报⽂进⾏分隔成报⽂段⽅便发送
4. IP协议通过ip连接上服务器
5. TCP协议拿到报⽂进⾏重组
6. HTTP协议对报⽂进⾏解析返回响应报⽂
【补充】 HTTP的长连接和短连接
如上HTTP请求报⽂中有⼀个参数为【connection:keepalive】,那这个表⽰的就是长连接的意思。
⽬前我们所⽤的HTTP协议版本都是HTTP1.1版,⽽在这之前所⽤的HTTP1.0和0.9版所采⽤的都是短连接。
那什么是长连接?什么⼜是短连接呢?
# 短连接指的是HTTP请求发给TCP 之后就断开了连接,在HTTP1.1版本出来之前⼤多数⽹页的内容⼏乎都由⽂字和css,
js代码组成,所以⼀次请求就⾜够了,然后随着时的发展⽹页上的图⽚越来越多,我们发送⼀次请求过后发现内容中包含了⼤量的图⽚连接没办法⼜得重复去发送请求连接TCP, 这样频繁的断开连接的反复操作浪费了⼤量资源,于是HTTP1.1版本问世后改变了这种连接⽅式,添加长连接状态。
# 长连接就是我们在HTTP报⽂中见到的keepalive,他会⼀直保存和tcp之间的联系,直到HTTP请求回来的资源完全被加载完毕后才会断开。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论