当前位置: 首页 > news >正文

应用层(Web与HTTP)

目录

常见术语

1.HTTP概况

2.HTTP连接

非持久HTTP流程

响应时间模型

持久HTTP

3.HTTP报文

3.1HTTP请求报文

3.2HTTP响应报文

HTTP响应状态码

4.Cookies(用户-服务器状态)

cookies:维护状态

Cookies的作用

5.Web缓冲(代理服务器)

缓存示例

缓存示例:使用带宽更大的链路

缓存示例:安装本地缓存

条件GET方法


常见术语

  • Web页面:由一些对象组成
  • 对象可以是HTML文件、JPEG图像、Java小程序、声音剪辑文件等
  • Web页面包括一个基本的HTML文件,该基本HTML文件又包括若干对象的引用(链接)
  • 通过URL对每个对象进行引用
    • 访问协议、用户名、口令字、端口等等
  • URL格式

1.HTTP概况

HTTP:超文本传输协议(Hypertext Transfer Protocol)

  • Web的应用层协议
  • 客户/服务器模式
    • 客户:请求、接收和显示Web对象的浏览器
    • 服务器:对请求进行响应,发送对象的Web服务器

使用TCP协议

  • 客户端发起一个与服务器的TCP连接(建立socket),端口号为80
  • 服务器接收客户端的TCP连接
  • 客户端与服务器交换HTTP报文(应用层协议报文)
  • TCP连接关闭

HTTP是无状态的

  • 服务器不维护关于客户端的任何信息

2.HTTP连接

非持久HTTP

  • 只有一个对象在TCP连接上发送
  • 下载多个对象需要多个TCP连接
  • HTTP/1.0使用非持久连接

持久HTTP

  • 多个对象可以在一个TCP连接是传输
  • HTTP/1.1默认使用T持久连接

非持久HTTP流程

响应时间模型

持久HTTP

非持久HTTP的缺点

  • 每个对象要2个RTT
  • 操作系统必须为每个TCP连接分配资源
  • 浏览器通常并行打开TCP连接(同一时间建立多个TCP连接),以获取引用对象

持久HTTP

  • 服务器在发送响应之后,任然保持TCP连接
  • 在相同客户端和服务器之间的后续请求和响应报文通过相同的连接进行传输
  • 客户端在遇到一个引用对象的时候,就可以尽快发送该对象的请求

非流水方式的持久HTTP

  • 客户端只能在收到一个响应之后才可以发出新的请求
  • 每个引用对象花费一个RTT

流水方式的持久RTT

  • HTTP/1.1的默认模式
  • 客户端遇到一个引用对象就立即产生一个请求
  • 所有引用对象只花费一个RTT是可能的

3.HTTP报文

3.1HTTP请求报文

  • 两种类型的HTTP报文:请求、响应

HTTP请求报文

  • ASCII(人能阅读)

HTTP请求报文:通用格式


提交表单输入

方法类型

3.2HTTP响应报文

HTTP响应状态码

4.Cookies(用户-服务器状态)

大多数的门户网站主要使用的就是cookies

cookies的4个组成部分:

  1. 在HTTP响应报文中有一个cookie的首部行
  2. 在HTTP请求报文中有一个cookie的首部行
  3. 在用户端系统中保留有cookie文件,由用户的浏览器管理
  4. 在Web站点有一个后端数据库

cookies:维护状态

Cookies的作用

cookies能带来什么

  • 用户验证
  • 购物车
  • 推荐
  • 用户状态

cookies如何维护状态

  • 协议端节点:在多个事务上,发送端和接收端维持状态
  • cookies:http报文携带状态信息

5.Web缓冲(代理服务器)

目标:不使用原始服务器,就满足客户的需求

  • 用户设置浏览器:通过缓存访问Web
  • 浏览器将所有的请求发给缓存
    • 存在缓存中的对象,直接返回该对象
    • 如果缓存中不存在该对象,缓存请求原始服务器,然后再将对象返回给客户端
  • 缓存既是客户端又是服务器
  • 通常缓存是由ISP按照(大学、公司、居民区ISP)

为什么要使用Web缓存?

  • 降低客户端的请求响应时间
  • 大大减少一个机构内部网络与Internet接入链路的流量
  • 使用较弱的ICP也能够有效提供内容

缓存示例

缓存示例:使用带宽更大的链路

缓存示例:安装本地缓存

条件GET方法

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • docker基本使用及常见问题
  • 零基础入门天池镜像提交--windows场景VirtualBox虚拟机安装linux系统并ssh远程登录,直至镜像的制作及提交
  • 前波士顿咨询Platinion董事总经理陈果加入望繁信科技
  • 和星辰为伴,与代码共舞
  • 直播商城小程序开发指南:基于多商户商城系统源码的实现
  • .net开发日常笔记(持续更新)
  • 中小企业数字化营销突围秘籍,快来解锁!
  • Stable Diffusion 必备插件推荐,菜鸟轻松成高手!
  • 基层医疗云HIS系统源码:云计算、大数据等现代信息技术研发
  • 嵌入式Linux C应用编程指南-进程与线程(速记版)
  • Leetcode面试经典150题-45.跳跃游戏II
  • C++ 变量、输入输出、表达式和顺序语句 ac-wing
  • css加载一张图片 设置整个页面背景
  • 前端面试宝典【CSS篇】【8】
  • 使用WSL在Windows上安装Linux
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 分享的文章《人生如棋》
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • codis proxy处理流程
  • echarts的各种常用效果展示
  • golang中接口赋值与方法集
  • JavaScript的使用你知道几种?(上)
  • ng6--错误信息小结(持续更新)
  • uni-app项目数字滚动
  • Vue ES6 Jade Scss Webpack Gulp
  • Vue2 SSR 的优化之旅
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • vuex 学习笔记 01
  • vue的全局变量和全局拦截请求器
  • 从重复到重用
  • 官方解决所有 npm 全局安装权限问题
  • 基于axios的vue插件,让http请求更简单
  • 将 Measurements 和 Units 应用到物理学
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 前端学习笔记之观察者模式
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 首页查询功能的一次实现过程
  • 小试R空间处理新库sf
  • 责任链模式的两种实现
  • 走向全栈之MongoDB的使用
  • ​Java并发新构件之Exchanger
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (新)网络工程师考点串讲与真题详解
  • (一)基于IDEA的JAVA基础1
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)Scala的“=”符号简介
  • (转)shell中括号的特殊用法 linux if多条件判断