HTTP 1.1与HTTP 1.0的比较

2023-10-27

HTTP 1.1HTTP 1.0的比较

一个WEB站点每天可能要接收到上百万的用户请求,为了提高系统的效率,HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。但是,这也造成了一些性能上的缺陷,例如,一个包含有许多图像的网页文件中并没有包含真正的图像数据内容,而只是指明了这些图像的URL地址,当WEB浏览器访问这个网页文件时,浏览器首先要发出针对该网页文件的请求,当浏览器解析WEB服务器返回的该网页文档中的HTML内容时,发现其中的<img>图像标签后,浏览器将根据<img>标签中的src属性所指定的URL地址再次向服务器发出下载图像数据的请求,如图3.3所示。

 

3.3

显然,访问一个包含有许多图像的网页文件的整个过程包含了多次请求和响应,每次请求和响应都需要建立一个单独的连接,每次连接只是传输一个文档和图像,上一次和下一次请求完全分离。即使图像文件都很小,但是客户端和服务器端每次建立和关闭连接却是一个相对比较费时的过程,并且会严重影响客户机和服务器的性能。当一个网页文件中包含AppletJavaScript文件,CSS文件等内容时,也会出现类似上述的情况。

为了克服HTTP 1.0的这个缺陷,HTTP 1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输,但每个单独的网页文件的请求和应答仍然需要使用各自的连接。HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。基于HTTP 1.1协议的客户机与服务器的信息交换过程,如图3.4所示。

3.4

可见,HTTP 1.1在继承了HTTP 1.0优点的基础上,也克服了HTTP 1.0的性能问题。不仅如此,HTTP 1.1还通过增加更多的请求头和响应头来改进和扩充HTTP 1.0的功能。例如,由于HTTP 1.0不支持Host请求头字段,WEB浏览器无法使用主机头名来明确表示要访问服务器上的哪个WEB站点,这样就无法使用WEB服务器在同一个IP地址和端口号上配置多个虚拟WEB站点。在HTTP 1.1中增加Host请求头字段后,WEB浏览器可以使用主机头名来明确表示要访问服务器上的哪个WEB站点,这才实现了在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点。HTTP 1.1的持续连接,也需要增加新的请求头来帮助实现,例如,Connection请求头的值为Keep-Alive时,客户端通知服务器返回本次请求结果后保持连接;Connection请求头的值为close时,客户端通知服务器返回本次请求结果后关闭连接。HTTP 1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头。

Accept-Language

Accept-Language头字段用于指定客户机期望服务器返回哪个国家语言的文档,可以指定多个以逗号分隔的国家语言。对于一些WEB站点,可以根据用户所使用的浏览器国家语言版本的不同,分别返回该国家语言的网页文档。例如,使用中文的IE浏览器访问www.google.com站点时,服务器返回的是使用中文语言的网页文件。单击IE浏览器的“工具”à“Internet选项”菜单,在打开的“Internet选项”对话框中,单击“语言”按钮,在打开的“语言首选项”对话框中添加英语,并将其上移到语言列表中的第一个位置,如图3.14所示。

图3.14

设置好语言首选项后,再次访问www.google.com站点,这时服务器返回的是使用英语的网页文件。上面的实验结果很可能会受到google站点策略调整和Cookie的影响,例如,作者在编写本书的初稿时,按照上面的操作,看到了预期的效果,但等到作者几个月后再次校稿时,即使将英语设置成了语言首先项,但所看到的结果却仍然是中文网页。这可能是由于英语已成为了国际通用语言的原因,google对语言首选项设置成英语的情况进行了忽略吧!如果把语言首选项设置成日语后,服务器可以返回日语的网页文件。

在WEB服务器上实现上述功能的原理非常简单,因为,IE浏览器会根据“语言首选项”对话框中的语言列表,生成相应的Accept-Language请求头,例如,

    Accept-Language: en-gb,zh-cn

WEB服务器只要检查Accept-Language请求头中的信息,按照其中设置的国家语言的先后顺序,就知道应该返回哪种国家语言的网页文档给浏览器。如果WEB服务器不能返回位于Accept-Language设置值前面的国家语言的网页文档时,WEB服务器将返回后面的国家语言的网页文档。关于各个国家语言的名称信息,例如,中国是zh-cn,可以参阅RFC 1766,其实,只要在图3.14中添加进某个国家的语言,显示在中括号里面的内容就是这个国家语言的名称。

:动手体验:Accept-Language头字段的作用

(1)在命令行窗口中执行telnet www.google.com 80,在成功连接后启动的telnet程序窗口中,输入如下几行内容:

    GET / HTTP/1.1

    Host:

    Accept-Language: en-us,zh-cn

    <空行>

可以看到google返回的正文部分是英文字符的网页文档。省略上面的Accept-Language字段部分,google默认返回的正文部分也是英文字符的网页文档。

(2)重新连接上google站点,在成功连接后启动的telnet程序窗口中,输入如下几行内容:

    GET / HTTP/1.1

    Host:

    Accept-Language: zh-cn

    <空行>

可以看到google返回的正文部分是中文字符的网页文档。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP 1.1与HTTP 1.0的比较 的相关文章

随机推荐

  • c:\Windows\System32\drivers\etc\hosts

    c Windows System32 drivers etc hosts 是域名解析文件 可以直接用记事本打开 将IP地址重定向 格式为 ip地址 空格 域名 可以将一个域名重新定向到一个IP Hosts文件配置的映射是静态的 如果网络上的
  • NVIDIA GPU驱动和CUDA工具包 Linux CentOS 7 在线安装指南

    挑选指定系统和对应的GPU型号下载驱动和CUDA工具包 Linux CentOS安装NVIDIA GPU驱动程序和NVIDIA CUDA工具包 centos安装显卡驱动和cuda Entropy Go的博客 CSDN博客 相比之下 本文是在
  • cron表达式插件 qnn-react-cron

    eslint disable react no unstable nested components import React from react import Cron from qnn react cron import Button
  • 渗透测试流程——渗透测试的9个步骤(转)

    渗透测试的流程 1 明确目标 2 分析风险 获得授权 3 信息收集 4 漏洞探测 手动 自动 5 漏洞验证 6 信息分析 7 利用漏洞 获取数据 8 信息整理 9 形成报告 1 明确目标 1 确定范围 测试的范围 如 IP 域名 内外网 整
  • 绕过图片格式限制上传木马获取WebShell

    思路 图片上传功能中 前端页面上传的是 png格式的图片文件 但是抓包Request中修改图片后缀为 php 可以绕过对上传文件格式的限制 文件的上传路径可以在上传后的页面或查看上传成功后的response中有显示 记录下来后用菜刀连接即可
  • ApplicationContext.log 将servlet[XXX]标记为不可用 问题已解决!!!

    期间我清楚Maven重新构建项目 手动在 lib 文件中添加 servlet api 等相关jar包无果 最终我尝试着把Tomcat从 10 0 6 版本降低到 9 0 46 版本 更改环境变量重新运行 竟然好了 也许是 Tomcat 版本
  • mac下通过终端安装python3问题记录及解决

    安装python时 首先想到的是升级电脑里的python版本 可是上网搜索后发现升级可能会使用一些基于python的应用运行有问题 所以就尝试安装两个版本 一 查看当前的python版本 打开终端 输入命令python V 二 安装Xcod
  • C语言——可执行程序过程

    我们在编写代码的时候 不知道大家是否和一开始的我一样 在运行代码的时候就直接CTRL F5运行了呢 一开始 我只知道会生成一个 exe的可执行文件 中间的原理我一点也不知道 今天就由我带领大家对生成可执行的文件有更深的一层理解 程序的翻译环
  • 安装Ubuntu系统详细教程

    一 前言 本篇文章详解介绍一下如何安装Ubuntu系统 笔者在安装的过程中踩过很多坑 重装了很多次 现在把安装过程中遇到的问题也列出来 供大家参考 二 准备工作 这个环节很重要 工欲善其事 必先利其器 2 1 固态硬盘 如果是做系统源码开发
  • Android GB28181设备接入端语音广播和语音对讲技术实现探究

    上篇文章提到Android端GB28181接入端的语音广播和语音对讲的实现 从spec角度大概介绍了下流程和简单的接口设计 好多开发者私信我 希望展开说一下 其实这块难度不大 只是广播和对讲涉及到双向实现 如果之前没有相关的积累 从头实现麻
  • gitlab常用操作总结

    1 常用命令 1 git clone xx git 首先从git项目xx gitclone项目到本地 2 clone之后 使用命令行项目进入项目所在文件夹 此时一般在master分支下 为了不影响主分支代码 进行新建分支 git check
  • 40个大数据学习资源,个个是干货,最后7个太给力

    数据是驱动商业向前发展的核心 更是人类社会的未来 尽管将马云的这句话断章取义地拿出来说会显得唐突 但这话所表达的意思却显而易见 今天给大家分享的这40个教程 送给对未来抱有远见的乐观主义者 涵盖了大数据入门的大多基础知识 从Java基础到S
  • 沉浸式翻译 安装及使用

    介绍一下最近非常或的沉浸式翻译工具 非常有助于外文阅读 包括网页 pdf等 可以同时显示原文和译文 操作简单 使用起来还是非常友好的 先上链接 介绍 沉浸式翻译 如何使用 沉浸式翻译 1 安装 支持Edge Chrome Firefox和S
  • algorithm 不修改序列的操作

    文章目录 非修正序列算法 adjacent find first last count first last val for each first last func 相关参考 非修正序列算法 非修正序列算法不修改他们所作用的容器 例如计算
  • SpringBoot 集成Kafka

    Kafka项目整体结构图 父类项目 pom xml 依赖
  • 高血糖克星!育润齐梅牌胰力佳奶粉调节血糖大作用

    21世纪以来 健康一直是大家关注的重点 保健品市场行业正在慢慢扩张 尽管很多人对其有一定的争议 但不可否认的是 越来越多的消费者最终选择了接受 并且消费群体逐渐往年轻态发展 不再是老年人的专属需求 在健康大数据的观测下 已知我国目前是全球糖
  • Unity第一人称视角相机跟随鼠标移动

    基于Unity实现第一人称视角相机跟随鼠标移动 private float xRotate 0 0f private float yRotate 0 0f Void Update xRotate Input GetAxis Mouse Y
  • Vue-cli 相关webpack配置-量化打包时间和打包后分析

    参考 https blog csdn net weixin 41779718 article details 110038340 主要介绍两个插件 用于量化打包时间 和打包后分析 speed measure webpack plugin 可
  • Android中Fragmnet的跳转

    1 Fragment跳转到Fragment中 描述 我的项目是由MainActivity启动的Fragment作为底部导航栏 HomeFragment StoreFragment PersonalFragment 情景一 点击HomeFra
  • HTTP 1.1与HTTP 1.0的比较

    HTTP 1 1与HTTP 1 0的比较 一个WEB站点每天可能要接收到上百万的用户请求 为了提高系统的效率 HTTP 1 0规定浏览器与服务器只保持短暂的连接 浏览器的每次请求都需要与服务器建立一个TCP连接 服务器完成请求处理后立即断开