应用层(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方法

相关推荐
九皇叔叔5 小时前
【第二章】Redis基础入门:Redis是什么、为什么快以及核心特性详解
数据库·redis·缓存
敲代码的嘎仔17 小时前
用 Redis 合并写 + DelayQueue 延迟检测,把视频播放进度写库频率降到 1/60
java·开发语言·数据库·redis·缓存·音视频·高并发
Lhappy嘻嘻17 小时前
网络(六)|应用层 HTTP&HTTPS:URL、请求响应、Cookie 与证书
网络·http·https
程序猿乐锅19 小时前
【黑马点评 | 第一篇】从 Session 到 Redis+Token 的改造与拦截器实现
数据库·redis·缓存
野生技术架构师19 小时前
Redis Hot Key 与 Big Key:危害、发现与解决方案
数据库·redis·缓存
零依赖极客20 小时前
Day 9·1 KV 也量化——q8 KV 把缓存与 decode 带宽压到一半
c语言·开发语言·arm开发·人工智能·缓存·矩阵
敲代码的嘎仔20 小时前
互动问答系统实战:两级评论模型、ES 搜索集成、Caffeine 多级缓存全记录
java·开发语言·数据库·elasticsearch·缓存·mybatis·高并发
vortex521 小时前
AI 提示词缓存命中机制解析
人工智能·缓存
huang57914721 小时前
从缓存行角度优化链表遍历:批处理与预取策略
数据结构·链表·缓存
玄芯散人1 天前
【筑基·047】内存Hierarchy:寄存器到硬盘的速度差
缓存·内存·计算机基础