计算机网络——09Web-and-HTTP

Web and HTTP

一些术语

  • Web页:由一些对象组成
  • 对象可以是HTML文件、JPEG图像,JAVA小程序,声音剪辑文件等
  • Web页含有一个基本的HTML文件,该基本HTML文件又包含若干对象的引用(链接)
  • 通过URL对每个对象进行引用
    • 访问协议:用户名、口令字、端口等
  • URL格式:
Port://user:psw@www.someSchool.edu/someDept/pic.gif:port
路径元素含义
Port协议名
user用户
psw口令
www.somSchool.edu主机名
someDept/pic.gif路径名
port端口

用户口令可以不提供,即匿名访问
端口不填可以是默认的:http-80,ftp-21

HTTP概况

HTTP:超文本传输协议

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

在这里插入图片描述

使用TCP

  • 客户发起一个与服务器的TCP连接(建立套接字),端口号为80
  • 服务器接受客户的TCP连接
  • 在浏览器(HTTP客户端)与Web服务器(HTTP服务器server)交换HTTP报文(应用层协议报文)
  • TCP连接关闭

HTTP是无状态的

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

维护状态的协议很复杂

  • 必须维护历史信息(状态)
  • 如果服务器/客户端死机,他们的状态可能不一致,二者的信息必须一致
  • 无状态的服务器能够支持更多的客户端

HTTP连接

非持久HTTP

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

持久HTTP

  • 多个对象可以在一个(在客户端和服务器之间的)TCP连接上传输
  • HTTP/1.1默认使用持久连接

非持久HTTP连接

在这里插入图片描述

在这里插入图片描述

响应时间模型

往返时间RTT:一个小的分组从客户端到服务器,在回到客户端的时间(传输时间忽略)
响应时间

  • 一个RTT用来发起TCP连接
  • 一个RTT用来HTTP请求并等待HTTP响应
  • 文件传输时间

共:2RTT + 传输时间
在这里插入图片描述

持久HTTP

非持久HTTP的缺点

  • 每个对象要 2 个RTT
  • 操作系统必须为每个TCP连接分配资源
  • 但浏览器通常打开并行TCP连接,以获取引用对象

持久HTTP

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

非流水方式的持久HTTP

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

流水方式的持久HTTP

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

HTTP请求报文

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

HTTP请求报文

GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
User-agent: Mozilla/4.0
Connection: close
Accept-language:fr

解析报文如下:

部分举例说明
请求行GET /somedir/page.html HTTP/1.1命令: GET:获取数据;POST:上载数据;HEAD:仅仅获取相应头部,搜索引擎使用改命令得到头部之后建立索引资源路径:/somedir/page.html协议/协议版本:HTTP/1.1
首部行Host: www.someschool.edu User-agent: Mozilla/4.0 Connection: close Accept-language:fr
实体

HTTP请求报文:通用格式

在这里插入图片描述

sp是space空格
cr是回车
if是有可能有,有可能没有

提交表单输入

Post方式

  • 网页通常包括表单输入
  • 包含在实体主体中的输入被提交到服务器

URL方式

  • 方法:GET
  • 输入通过字段请求行的URL字段上载

方法类型

HTTP 1.0

  • GET
  • POST
  • HEAD
    • 要求服务器咋响应报文中不包含请求对象 -> 故障跟踪

HTTP 1.1

  • GET、POST、HEAD
  • PUT
    • 将实体主体中的文件上载到URL字段限定的路径
  • DELETE
    • 删除URL字段限定的文件

HTTP响应报文

HTTP/1.1 200 OK
Connection close
Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Mon, 22 Jun 1998 …... 
Content-Length: 6821
Content-Type: text/htmldata data data data data ...

解析:

部分举例说明
状态行HTTP/1.1 200 OKHTTP/1.1是协议及版本,200是状态码,OK是状态码相应状态信息
首部行Connection close Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 …… Content-Length: 6821 Content-Type: text/html
数据data data data data data …

HTTP响应状态码

位于服务器 -> 客户端的响应报文中的首行
一些状态码的例子

状态码状态信息说明
200OK请求成功,请求对象包含在响应报文的后续部分
301Moved Permanently请求的对象己经被永久转移了;新的URL在响应报文的Location:首部行中指定;客户端软件自动用新的URL去获取对象
400Bad Request一个通用的差错代码,表示该请求不能被服务器解读
404Not Found请求的文档在该服务上没有找到
505HTTP version Not supported版本不支持

用户-服务器状态:cookies

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

4个组成部分

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

Cookies:维护状态

在这里插入图片描述

Cookies能带来什么

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

如何维持状态

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

Cookies与隐私

  • Cookies允许站点知道许多关于用户的信息
  • 可能将他知道的东西卖给第三方
  • 使用重定向和cookie的搜索引擎还可能知道用户的更多信息
  • 广告公司从站点获得信息

Web缓存(代理服务器)

目标:不访问原始服务器,就满足客户的请求

  • 用户设置浏览器:通过缓存访问Web
  • 浏览器将所有的HTTP请求发送给缓存:
    • 在缓存中的对象:缓存直接返回对象
    • 如对象不在缓存:缓存请求原始服务器,然后再将对象返回给客户端

在这里插入图片描述

Web缓存

  • 缓存既是客户端又是服务器
  • 通常缓存是由ISP安装

为什么要使用Web缓存

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

缓存示例

在这里插入图片描述

条件

  • 平均对象大小 = 100kb(也就是请求的文件的平均大小是100kb)
  • 机构内浏览器对原始服务器的 平均请求率为 = 15请求/s
  • 平均到浏览器的速率:1.5Mbps(100kb * 15请求/s)
  • 接入链路带宽:1.54Mbps

相关数据计算

  • 各种延时计算(Internet延时、接入延时、LAN延时)

  • 延时如下:

    • Internet延时:公共网(public Internet)路由器到原始服务器 再返回到路由器的的延时 ( Internet 延时)= 2s;这个也是网络核心的延时吧
    • 接入延时:不确定,不过有公式:接入延时(主要还是排队延时) d q u e u e d_{queue} dqueue = I(1-I) * L / R = 2min
    • LAN延时:客户端到LAN路由器再返回客户端的时间,为10ms
  • 流量强度和排队延时计算:

    • 流量强度 I = 平均到达浏览器的速率 / 接入链路宽带
    • 排队延时 = t q u e u e t_{queue} tqueue = I(1-I) * L / R
    • L/R:一个分组的传输时间
  • 结果:

    • LAN的流量强度 = 15%
    • 接入链路上的流量强度 = 99% (排队延迟会非常大,排队延迟会随着分组的流量强度越接近于1趋近于无穷,此时排队延迟会非常大)
    • 总延时= LAN延时+ 接入延时+ Internet 延时 = ms + 分+ 2s

流量强度 = 平均到达浏览器的速率 / 接入链路宽带 = 1.5 / 1.54 = 0.99

优化方式

  • 提高接入链路带宽

    • 假设:
      • 平均对象大小 = 100kb
      • 机构内浏览器对原始服务器的 平均请求率为 = 15请求/s
      • 平均到浏览器的速率:1.5Mbps
      • 接入链路带宽:1.54Mbps——> 154Mbps(带宽提升)
    • 延时:
      • Internet延时机构内部路由器到原始服务器 再返回到路由器的的延时 = 2s
      • LAN延时:客户端到LAN路由器再返回客户端的时间,为10ms
    • 结果:
      • LAN的流量强度 = 15%
      • 接入链路上的流量强度 = 9.9%(可以看到强度降低了很多,排队延时也会下降)
      • 总延时 = LAN延时 + 接入延时 + Internet 延时 = ms + 分 + 2s
    • 代价: 增加了接入链路带宽(非常昂贵!)
  • 安装本地缓存

    • 假设:
      • 平均对象大小 = 100kb
      • 机构内浏览器对原始服务器的平均 请求率为 = 15请求/s
      • 平均到浏览器的速率:1.5Mbps
      • 机构内部路由器到原始服务器再返回到路由器的的延时 (Internet 延 时)= 2s
      • 接入链路带宽:1.54Mbps
    • 结果:
      • LAN 利用率: 15%
      • 接入网络利用率: ?
      • 总体延迟= ? 代价: web缓存(廉价!)

计算链路利用率,有缓存的延迟:

  • 假设:
    • 缓存命中率0.4:40%请求在缓存中被满足,其他60%的请求 需要被原始服务器满足
    • 接入链路利用率: 60%的请求采用接入链路
    • 进过接入链路到达浏览器的数据速 率 = 0.6*1.50 Mbps = 0.9 Mbps
    • 利用率= 0.9/1.54 = 0.58
    • 总体延迟 = 0.6 * (从原始服务器获取对象的 延迟,也就是接入延时 + Internet延时) +0.4 * (从缓存获取对象的延迟,也就是LAN延时) = 0.6 * (2s) + 0.4 * (msecs,这个很小,所以几乎不看了) = 1.2 secs
    • 比安装154Mbps链路还来得小 (而且 比较便宜!)

条件GET方法

  • 目标:如果缓存器中的对 象拷贝是最新的,就不要发送对象
  • 缓存器: 在HTTP请求中指 定缓存拷贝的日期 If-modified-since:<date>
  • 服务器: 如果缓存拷贝陈 旧,则响应报文没包含对象: HTTP/1.0 304 Not Modified

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/468045.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#,巴都万数列(Padonve Number)的算法与源代码

1 巴都万数列&#xff08;Padovan Sequence&#xff09; 巴都万数列&#xff08;Padovan Sequence&#xff09;是一个整数数列。 首数个值为1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 16, 21, 28, 37 ... 此数列以建筑师理察巴都万命名&#xff0c;他的论文Dom&#xff08;1994年&a…

九、java 继承

文章目录 java 继承3.1 根父类Object3.2 方法重写3.3 继承案例&#xff1a;图形类继承体系3.4 继承的细节3.4.1 构造方法3.4.2 重名与静态绑定3.4.3 重载和重写3.4.4 父子类型转换3.4.5 继承访问权限protected3.4.6 可见性重写3.4.7 防止继承final 3.5 继承是把双刃剑3.5.1 继承…

Android13多媒体框架概览

Android13多媒体框架概览 Android 多媒体框架 Android 多媒体框架旨在为 Java 服务提供可靠的接口。它是一个系统&#xff0c;包括多媒体应用程序、框架、OpenCore 引擎、音频/视频/输入的硬件设备&#xff0c;输出设备以及一些核心动态库&#xff0c;比如 libmedia、libmedi…

【C++初阶】第三站:类和对象(中) -- 类的6个默认成员函数

目录 前言 类的6个默认成员函数 构造函数 概念 特性 析构函数 概念 特性 拷贝构造函数 概念 特征 赋值运算符重载 运算符重载 赋值运算符重载 const成员 const修饰类成员函数 取地址及const取地址操作符重载 本章总结&#xff1a; 前言 有时候我们写好了一个栈&#xff0c;头脑…

Excel

1、Excel的学习路径 2、掌握excel的基础要求 01、保证新版本 02、培养好的数据表格习惯 03、主动性探索 04、多联系 一、函数 二、文本清洗函数 三、常见文本的清洗函数 获取k的位置 FIND("k",P2,1) 从第1个位置开始在位置P2&#xff0c;查询字段k&#x…

【MySQL】索引事务

MySQL索引事务 1. 索引1.1 概念1.2 作用1.3 使用场景1.4 使用1.5 案例 2. 事务2.2 事物的概念2.3 使用 3. 内容重点总结 1. 索引 1.1 概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引&#xff0c; 并指定索引的类…

数列极限

一、数列基础 1. 判断数列an是否有界 判断|an|是否小于等于M 2. 判断数列an是否单调 对所有正整数n&#xff0c;有an1&#xff1e;an&#xff0c;则称的单调递增数列。 对所有正整数n&#xff0c;有an1&#xff1c;an&#xff0c;则称的单调递减数列。 3. 重要数列 二、数列…

中小学信息学奥赛CSP-J认证 CCF非专业级别软件能力认证-入门组初赛模拟题第一套(完善程序题)

CCF认证CSP-J入门组模拟测试题第一套 三、完善程序题 第一题 九宫格 请完善下面的程序,将1~9个数字分别填人3x3的九宫格中,第一行的三个数字组成一个三位数。要使第二行的三位数是第一行的2倍,第三行的三位数是第一行的3倍且每个格子里的数字都不能重复,现在要求输出所有的填…

音视频剪辑|FFMPEG|windows10下的音视频格式转换,遮挡填充,GIF动图制作,背景音频抽取,替换

前言&#xff1a; 最近对于音视频和图像的处理问题比较感兴趣&#xff0c;但发现很多目前需要的功能要么需要付费但不会过于麻烦&#xff0c;要么比较麻烦&#xff0c;很可能某个功能实现需要安装很多软件 例如&#xff0c;视频转GIF动图&#xff0c;该功能的实现要么使用Pho…

Vue源码系列讲解——模板编译篇【三】(HTML解析器)

目录 1. 前言 2. HTML解析器内部运行流程 3. 如何解析不同的内容 3.1 解析HTML注释 3.2 解析条件注释 3.3 解析DOCTYPE 3.4 解析开始标签 3.5 解析结束标签 3.6 解析文本 4. 如何保证AST节点层级关系 5. 回归源码 5.1 HTML解析器源码 5.2 parseEndTag函数源码 6. …

HTML世界之第二重天

目录 一、HTML 格式化 1.HTML 文本格式化标签 2.HTML "计算机输出" 标签 3.HTML 引文, 引用, 及标签定义 二、HTML 链接 1.HTML 链接 2.HTML 超链接 3.HTML 链接语法 4.文本链接 5.图像链接 6.锚点链接 7.下载链接 8.Target 属性 9.Id 属性 三、HTML …

二、docker compose安装

docker compose安装 docker compose的所有版本&#xff1a;https://github.com/docker/compose/releases # 安装步骤 # 1.下载docker compose&#xff1a;v2.5.0是docker-compose版本 curl -L https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-lin…