OSI七层协议:
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
完整的Http协议请求流程:
协议:客户端和服务器双方都能听的懂得语言(约定)
不需要关注底层的网络层或传输层协议 TCP/IP socket等
1989年诞生HTTP协议,是为了知识共享开发的。
建立底层的TCP链接
客户端 --> 服务端 请求
(请求头 请求方法 请求参数)
服务端 --> 客户端 响应
(响应头 协议状态码 响应正文)
断开底层的TCP链接-->释放资源,不然对服务器造成很大的资源
HTTP 1.1 出现持久链接
connection:keep-alive (只有一次链接和关闭)
持久链接可以理解为任意一端没有明确的断开链接,tcp一直会保持链接状态的;
查看淘宝图片的资源只会慢慢的加载出来,系统架构的设计和服务器的性能问题
URI:统一资源定位符
http:// 协议
www.baidu.com 服务器
xxxxx.png 资源
URL 是 URI的分支(子集合)URL-->资源的地址
HTTP请求方法:
GET:向服务器获取资源
POST:客户端提交数据到服务器中,保存到服务器的数据库中,并且服务器不允许提交重复的数据
PUT:客户端的数据发送服务器,并且覆盖服务器的数据
DELETE:从服务器删除指定的数据资源
HTTP协议状态码
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见状态代码、状态描述、说明:
200 OK      //客户端请求成功
400 Bad Request  //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
403 Forbidden  //服务器收到请求,但是拒绝提供服务
404 Not Found  //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable  //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
HTTP是无状态的协议,不知道是谁登录系统,从而导致cookie技术的发展
Cookie请求流程(存储在客户端中,不安全)
1. 客户端发送login登录请求系统给服务端
2. 服务端在response响应头中set-cookie管理cookie信息并且响应给客户端
3. 客户端发起请求需携带返回的cookie信息给服务端
4. 服务端会与请求中的cookie进行对比校验,校验通过后,响应给客户端是同一用户登录的系统
cookie来管理session
session请求流程(存储在服务器中)
1. 客户端登录login(输入userID和pwd)系统发送请求给服务端
2. 服务端在response响应头中set-cookie管理sessionID并且存储在数据库中,发送包含sessionID的cookie信息给客户端
3. 客户端发起请求需携带服务器返回sessionID的cookie信息给服务端
4. 服务器会与请求中的sessionID进行对比,与数据库中sessionID保持一致,进行放行响应给客户端信息
token请求流程(令牌)
1. 客户端登录请求给服务端
2. 服务器在响应数据中包含了token信息响应给客户端
3. 客户端再次请求中,会在请求参数中带上服务端的token信息,发送给服务端
4. 服务器会与客户端中的token进行对比,与数据库中响应的token令牌一致后,响应数据信息给客户端
Https安全证书的流程(443)
请求流程大致与Http一致,只有通信安全的线路,才实现客户端与服务器的通信和交互
Https = http + 加密 + 认证 + 信息完整被保护
SSL作用:
1. 提供加密的处理
2. 使用证书通知通信方,客户端开始通信前先确认服务器的证书

最新文章

  1. java - Stack栈和Heap堆的区别
  2. java 利用JAX-RS快速开发RESTful 服务
  3. ODATA WEB API(一)---扩展使用
  4. php 常用的好函数(持续更新)
  5. Binary Numbers(HDU1390)
  6. poj3358 Period of an Infinite Binary Expansion 数论有难度
  7. hdu1004----用java链表实现
  8. C++ Primer第九章课后编程问题
  9. WordPress网站加速优化,一键免费使用七牛CDN插件
  10. linux 下 查看是32位还是64位系统 命令
  11. kibana提示“Your Kibana index is out of date, reset it or use the X-Pack upgrade assistant.”
  12. 校园wifi
  13. Knockout案例: 全选
  14. macs安卓工程创建
  15. Python 类的特性讲解
  16. copy 深浅复制
  17. 20165215 2017-2018-2 《Java程序设计》第4周学习总结
  18. 20172308《Java软件结构与数据结构》第二周学习总结
  19. loadrunner:HTTP接口脚本实例
  20. User Login Client Identification

热门文章

  1. Java 并发基础知识
  2. 『居善地』接口测试 — 12、Moco框架介绍
  3. 【NX二次开发】Block UI 选择对象
  4. 如何在CentOS 7上搭建LAMP环境(使用YUM或编译)
  5. LTDC_DMA2D驱动实验
  6. 【模拟7.27】题(liu_runda的神题)(卡特兰数,组合数)
  7. Scala语言笔记 - 第二篇
  8. WEB安全新玩法 [4] 防护邮箱密码重置漏洞
  9. vscode 配置 Pug Compile Hero Pro 插件步骤
  10. ceph-csi源码分析(3)-rbd driver-服务入口分析