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

news2024/11/29 10:01:00

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/html


data 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.coloradmin.cn/o/1447763.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言每日一题(56)平衡二叉树

力扣网 110 平衡二叉树 题目描述 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,…

LabVIEW智能温度监控系统

LabVIEW智能环境监测系统 介绍了一个基于LabVIEW的智能环境监测系统的开发过程。该系统在实时监测和分析环境参数&#xff0c;如温度、湿度、气体浓度等&#xff0c;以提供精确的数据支持&#xff0c;确保环境安全与健康。通过高效的数据处理和友好的用户界面&#xff0c;系统…

单链表基础知识点

单链表的读取 对于单链表实现获取第i个元素的数据的操作 GetElem&#xff0c;在算法上&#xff0c;相对要麻烦一些。 获得链表第i个数据的算法思路: 声明一个结点p指向链表第一个结点&#xff0c;初始化j从1开始;当j<i时&#xff0c;就遍历链表&#xff0c;让p的指针向后移…

算法沉淀——分治算法(leetcode真题剖析)

算法沉淀——分治算法 快排思想01.颜色分类02.排序数组03.数组中的第K个最大元素04.库存管理 III 归并思想01.排序数组02.交易逆序对的总数03.计算右侧小于当前元素的个数04.翻转对 分治算法是一种解决问题的算法范式&#xff0c;其核心思想是将一个大问题分解成若干个小问题&a…

计算机二级C语言的注意事项及相应真题-4-程序修改

目录&#xff1a; 31.逐个比较p、q所指两个字符串对应位置中的字符&#xff0c;把ASCII值大或相等的字符依次存放到c所指数组中&#xff0c;形成一个新的字符串32.求矩阵&#xff08;二维数组)a[N][N]中每行的最小值&#xff0c;结果存放到数组b中33.将一个十进制整数转换成r(二…

力扣刷题54-螺旋矩阵

给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5]示例 2&#xff1a; 输入&#xff1a;matrix [[1,2,3,…

我让ChatGPT帮我钓妹子,它一口气撩了5000人

来自俄罗斯的一名AI开发者、社交平台TenChat的产品经理 AleksandrZhadan于1月30日在推特上发布了自己的婚讯&#xff0c;他将要与自己的女友Karina Imranovna在今年的8月结婚。令人震惊的是Aleksandr Zhadan介绍的认识女友的窍门-ChatGPT 帮他找到了另一半&#xff0c;并且通过…

springsecurity6使用

spring security 中的类 &#xff1a; AuthenticationManager : 实现类&#xff1a;ProviderManager 管理很多的 provider &#xff0c;&#xff0c;&#xff0c; 经常使用的&#xff0c;DaoAuthenticationProvider , 这个要设置一个 UserDetailService , 查找数据库&#xff…

【ES6】Promise

Promise 回调地狱 const fs require(fs);fs.readFile(./a.txt, utf-8, (err, data) > {if(err) throw err;console.log(data);fs.readFile(./b.txt, utf-8, (err, data) > {if(err) throw err;console.log(data);fs.readFile(./c.txt, utf-8, (err, data) > {if(er…

斯巴鲁Subaru EDI需求分析

斯巴鲁Subaru是日本运输集团斯巴鲁公司&#xff08;前身为富士重工&#xff09;的汽车制造部门&#xff0c;以性能而闻名&#xff0c;曾赢得 3 次世界拉力锦标赛和 10 次澳大利亚拉力锦标赛。 斯巴鲁Subaru EDI 需求分析 企业与斯巴鲁Subaru建立EDI连接&#xff0c;首先需要确…

MQTT的学习与应用

文章目录 一、什么是MQTT二、MQTT协议特点三、MQTT应用领域四、安装Mosquitto五、如何学习 MQTT 一、什么是MQTT MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的消息传输协议&#xff0c;设计用于在低带宽、不稳定的网络环境中进行高效的通信…

ITK 图像分割(一):阈值ThresholdImageFilter

效果&#xff1a; 1、itkThresholdImageFilter 该类的主要功能是通过设置低阈值、高阈值或介于高低阈值之间&#xff0c;则将图像值输出为用户指定的值。 如果图像值低于、高于或介于设置的阈值之间&#xff0c;该类就将图像值设置为用户指定的“外部”值&#xff08;默认情况…

基于JAVA的新能源电池回收系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户档案模块2.2 电池品类模块2.3 回收机构模块2.4 电池订单模块2.5 客服咨询模块 三、系统设计3.1 用例设计3.2 业务流程设计3.3 E-R 图设计 四、系统展示五、核心代码5.1 增改电池类型5.2 查询电池品类5.3 查询电池回…

联合体与枚举

联合体与枚举 联合体枚举问题 联合体 联合体也是由一个或多个成员构成的数据类型,它最大的特点是只为最大的一个成员开辟空间,其他成员共用这个空间,这个东西也叫共用体!!! union Un {char c;int i; };int main() {union Un un { 0 };un.c 0x01;//先为最大的成员开辟空间un.…

STM32单片机的基本原理与应用(七)

超声波测距实验 基本原理 超声波测距实验是STM32单片机通过控制HC-SR04超声波模块&#xff0c;使其发送超声波&#xff0c;遇到物体反射回超声波来实现距离测量&#xff0c;其原理就是在发射超声波到接收超声波会有一段时间&#xff0c;而超声波在空气中传播的速度为声速&…

HCIA-HarmonyOS设备开发认证V2.0-轻量系统内核内存管理-动态内存

目录 一、动态内存运行机制二、动态内存开发流程三、动态内存使用说明四、动态内存核心算法五、动态内存接口六、代码分析&#xff08;待续...&#xff09;坚持就有收获 一、动态内存运行机制 动态内存管理&#xff0c;即在内存资源充足的情况下&#xff0c;根据用户需求&…

单个摄像头(单目RGB)实时3D手的跟踪

概述&#xff1a; 通过单个普通RGB摄像头就可以实现3D手的实时跟踪。 来自论文&#xff1a; GANerated Hands for Real-Time 3D Hand Tracking from Monocular RGB 官网地址如下链接&#xff1a; GANerated Hands for Real-Time 3D Hand Tracking from Monocular RGB 应用…

Linux_环境变量_命令行参数

一.环境变量 在Linux中自己写的程序必须要带路径才能运行&#xff0c;相对路径或是绝对路径&#xff0c;但是像ls pwd这样的程序&#xff0c;不带路径也能运行。当你想要运行一个程序时&#xff1a; 如果带有路径的话&#xff0c;则直接将对应路径的程序加载进内存&#xff0…

Linux入门(1)Linux介绍

目录 1. 认识 Linux, 了解 Linux 的相关背景 1.发展史 2. 学会如何使用云服务器 3. 掌握使用远程终端工具 xshell 登陆 Linux 服务器 1. 认识 Linux, 了解 Linux 的相关背景 1.发展史 学习Linux系统编程&#xff0c;你可能要问Linux从哪里来&#xff1f;它是怎么发展的&am…

如何在Spring Boot中启用HTTPS?

在Spring Boot中启用HTTPS是一个增强应用程序安全性的重要步骤。下面我将介绍如何将一个Spring Boot项目配置成支持HTTPS协议。 引入 在现代的网络通信中&#xff0c;安全性成为了一个不能忽视的要求。特别是当我们谈论到数据传输时&#xff0c;保护用户信息的安全性是非常重要…