计算机网络——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 OK | 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/html | |
数据 | data data data data data … |
HTTP响应状态码
位于服务器 -> 客户端的响应报文中的首行
一些状态码的例子
状态码 | 状态信息 | 说明 |
---|---|---|
200 | OK | 请求成功,请求对象包含在响应报文的后续部分 |
301 | Moved Permanently | 请求的对象己经被永久转移了;新的URL在响应报文的Location:首部行中指定;客户端软件自动用新的URL去获取对象 |
400 | Bad Request | 一个通用的差错代码,表示该请求不能被服务器解读 |
404 | Not Found | 请求的文档在该服务上没有找到 |
505 | HTTP 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
相关文章:

计算机网络——09Web-and-HTTP
Web and HTTP 一些术语 Web页:由一些对象组成对象可以是HTML文件、JPEG图像,JAVA小程序,声音剪辑文件等Web页含有一个基本的HTML文件,该基本HTML文件又包含若干对象的引用(链接)通过URL对每个对象进行引用…...

【教程】MySQL数据库学习笔记(一)——认识与环境搭建(持续更新)
写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 【MySQL数据库学习】系列文章 第一章 《认识与环境搭建》 第二章 《数据类型》 文章目录 【MySQL数据库学习】系列文章一、认…...
软件测试-测试用例研究-如何编写一份优秀的测试用例
什么是测试用例 测试用例是一组由测试输入、执行条件、预期结果等要素组成,以完成对某个特定需求或者目标测试的数据,体现测试方案、方法、技术和策略的文档。测试用例是软件测试的核心,它把测试系统的操作步骤用文档的形式描述出来…...

计网day1
RTT:往返传播时延(越大,游戏延迟) 一.算机网络概念 网络:网样的东西,网状系统 计算机网络:是一个将分散得、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功…...
vLLM vs Text Generation Interface:大型语言模型服务框架的比较
在大型语言模型(LLM)的世界中,有两个强大的框架用于部署和服务LLM:vLLM 和 Text Generation Interface (TGI)。这两个框架都有各自的优势,适用于不同的使用场景。在这篇博客中,我们将对这两个框架进行详细的…...
[AIGC] 上传文件:后端处理还是直接阿里云OSS?
在构建Web应用时,我们经常需要处理用户上传的文件。这可能是图片、视频、文档等各种各样的文件。但是,上传文件的方式有很多种,最常见的两种方式是:通过后端处理,或者直接上传至云存储服务,如阿里云OSS。那…...
速盾cdn:香港服务器如何用国内cdn
在国内使用香港服务器的情况下,可以考虑使用速盾CDN来提供加速服务。速盾CDN是一种专业的内容分发网络解决方案,可以通过使用不同节点的服务器来提供高速的内容传输和访问。 首先,使用速盾CDN可以帮助解决香港服务器与国内用户之间的延迟和带…...

深入学习Pandas:数据连接、合并、加入、添加、重构函数的全面指南【第72篇—python:数据连接】
深入学习Pandas:数据连接、合并、加入、添加、重构函数的全面指南 Pandas是Python中最强大且广泛使用的数据处理库之一,提供了丰富的函数和工具,以便更轻松地处理和分析数据。在本文中,我们将深入探讨Pandas中一系列数据连接、合…...

IDEA中mybatis配置文件表名显示红色,提示 Unable to resolve table ‘xxx‘
问题:IDEA中mybatis配置文件表名显示红色,提示 Unable to resolve table ‘xxx’ 解决方法: 使用快捷提示键 Alt Enter,选择 Go to SQL Resolution Scopes(转到SQL的解析范围)...

Python基于大数据的电影预测分析系统
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...

【MATLAB】小波神经网络回归预测算法
有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 小波神经网络回归预测算法是一种利用小波变换和人工神经网络相结合的方法,用于解决回归预测问题。下面将详细介绍该算法的原理与方法: 小波变换: 小波变…...

最新Burp Suite入门讲解
Burp Suite的安装 Burp Suite是一款集成化的渗透测试工具,包含了很多功能,可以帮助我们高效地完成对Web应用程序的渗透测试和安全检测。 Burp Suite由Java语言编写,Java自身的跨平台性使我们能更方便地学习和使用这款软件。不像其他自动化测…...

【C++】模版初阶
目录 泛函编程 函数模版 概念 格式 原理 实例化 模版函数的匹配原则 类模板 定义格式 泛函编程 如何实现一个通用的交换函数呢? void Swap(int& left, int& right) {int temp left;left right;right temp; } void Swap(double& left, dou…...

Stable Diffusion 模型下载:DreamShaper(梦想塑造者)
本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 DreamShaper 是一个分格多样的大模型,可以生成写实、原画、2.5D 等…...
GPT-4模型的创造力
超级的创造力是GPT-4等高级语言模型的重要特征之一。它们不仅能够精确地模拟和再现各类文本样式、结构和内容,而且在生成新的文本时,能够通过深度学习算法对海量训练数据中捕捉到的模式进行创新性的重组与拓展: 词汇创新:基于已学…...
没用的计算器
本次的项目仍然属于没用的模块,仅供娱乐,最后附有效果视频,如需要源代码可以私信或评论,本次还是使用vue来实现的,同样也可以修改为JS 一、HTML部分 <div class"con"><div class"calculator&q…...

基于 Python 的大数据的电信反诈骗系统
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...

二、ClickHouse简介
ClickHouse简介 前言一、行式存储二、DBMS功能三、多样化引擎四、高吞吐写入能力五、数据分区与线程级并行六、场景七、特定版本 前言 ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库(DBMS),使用 C 语言编写,主要…...
C++ 11新特性之并发
概述 随着计算机硬件的发展,多核处理器已经成为主流,对程序并发执行能力的需求日益增长。C 11标准引入了一套全面且强大的并发编程支持库,为开发者提供了一个安全、高效地利用多核CPU资源进行并行计算的新框架,极大地简化了多线程…...

jvm问题自查思路
本文聊一下最近处理了一些jvm的问题上,将这个排查和学习过程分享一下,看了很多资料,最终都会落地到几个工具的使用,本文主要是从文档学习、工具学习和第三方技术验证来打开认知和实践,希望有用。 一、文档 不仅知道了…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...