HTTP协议

什么是HTTP协议

对于HTTP协议我想任何接触过网络的都不会陌生,它是我们通过浏览器访问各个网页的基础。HTTP,全名超文本传输协议,是一个位于应用层的协议,其特点如下:

无状态:HTTP对于事务处理没有记忆功能,但是我们在访问某个网站时却需要保持登陆状态,因此需要引入其他机制如Cookie&Session。

②无连接:HTTP限制每次连接只能处理一个请求。也就是客户端发送请求给服务器,服务器对于请求处理后响应并收到来自客户端的应答后,就断开连接。无连接的优点是可以节省传输时间。
需要注意的是HTTP1.1默认采用keepAlive机制,即服务器需要经过一定时间后才能断开连接。跟无状态特性一样,HTTP1.1是通过其他机制实现的长连接,但其本身是无连接的。

③灵活:HTTP允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记。

④简单快速:由于HTTP协议简单,使得HTTP服务器的规模小,通信速度快。

⑤支持客户端/服务器模式(C/S):一般都是通过浏览器作为客户端向服务器发送请求。

⑥基于请求/响应模式:完整的一次请求包括了请求的发送和响应的返回,缺一不可。

HTTP基本工作流程

  1. 首先是客户端通过浏览器访问服务器的域名。浏览器会根据url的域名,逐层查询dns服务器缓存,解析url域名对应的ip地址。
    dns缓存从近到远依次是浏览器缓存,系统缓存,路由,ips服务器,根域名服务器缓存,顶级域名服务器缓存,从哪个缓存找到了ip则直接返回

  2. 客户端根据IP地址核对端口,默认为80,和服务器建立TCP连接,其过程参考TCP的三次握手

  3. 浏览器发出HTTP请求给服务器

  4. 服务器收到请求后,处理请求并将包含了HTML的响应报文发送给浏览器。

  5. 浏览器收到HTML,在显示窗口渲染页面。

  6. 浏览器主动释放连接,执行TCP的四次挥手。(这里如果设置了KeepAlive机制,则连接会保持一段时间再断开)

HTTP状态码

1xx :请求已经被接收,等待处理

2xx :请求成功

3xx :重定向

4xx :客户端错误

  • 400:客户端请求有语法错误
  • 401:请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用
  • 403:服务器收到请求,但是拒绝提供服务
  • 404:请求资源不存在

5xx :服务端错误

  • 500:服务器发生不可预知的错误
  • 503:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

GET和POST区别

HTTP报文层面:
GET请求将请求信息以键值对的形式放置在请求行中。
POST请求将请求信息放置在请求正文中。
所以POST相较于GET安全性稍微高一些,但是也并没有高到哪里去。用过WireShark的朋友们都知道,我们可以通过抓包抓取报文并能够查看到POST请求中的表单数据。如果没有对信息进行加密处理和采用HTTPS,即便使用POST请求也是非常不安全的。

数据库层面:
GET符合幂等性和安全性,POST不符合。
幂等性:对数据库的一次操作和多次操作的结果是一致的。
安全性:对数据库的操作,没有改变数据库中的数据。
因为GET的幂等性和安全性,GET请求通常都直接被服务器CDN缓存了,这大大减少了Web服务器的负担。
客户端请求数据时,先从本地缓存查找,如果被请求数据没有过期,就直接拿来用,如果过期,就向CDN边缘节点发起请求。CDN便会检测被请求的数据是否过期,如果没有过期,就返回数据给客户端,如果过期,CDN再向源站发送请求获取新数据。简单来说,服务器就是厂家,CDN是代理商家,我们是买家。

其他层面:
GET请求能被缓存:CDN缓存
GET请求能被存储:GET请求可以保存在浏览器浏览记录中;以GET请求访问的URL可以作为书签被存储。

Cookie和Session

参考我的另一篇博文
https://blog.csdn.net/weixin_43624024/article/details/100987744

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值