计算机网络:应用层 - 万维网 HTTP协议

计算机网络:应用层 - 万维网 & HTTP协议

    • 万维网 WWW
      • 统一资源定位符 URL
    • 超文本传输协议 HTTP
      • 非持续连接
      • 持续连接
        • 非流水线
        • 流水线
      • 代理服务器
      • HTTP报文


万维网 WWW

万维网是一个大规模的、联机式的信息储藏所。万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。

万维网是一个分布式的超媒体系统,它是超文本系统的扩充。超文本是指包含指向其他文档的链接的文本。

利用一个链接可使用户找到远在异地的另一个文档。这些文档可以位于世界上任何一个接在互联网上的超文本系统中。

超文本是万维网的基础。超媒体超文本的区别是文档内容不同。超文本文档仅包含文本信息,而超媒体文档还包含其他表示方式的信息,如图形、图像、声音、动画以及视频图像等

万维网以客户/服务器方式工作。上面所说的浏览器就是在用户主机上的万维网客户程序。万维网文档所驻留的主机则是运行服务器程序,因此这台主机也称为万维网服务器。

客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。在一个客户程序主窗口上显示出的万维网文档称为页面。

那么现在有一个问题了,万维网上有那么多文档,如何标识一个确定的唯一的文档呢?

此时就要用到统一资源定位符 URL

统一资源定位符 URL

统一资源定位符URL是用来表示从互联网上得到的资源位置和访问这些资源的方法。

只有知道了这个资源在互联网上的什么地方,才能对它进行操作。互联网上的所有资源,都有一个唯一确定的URL。这里所说的资源是指在互联网上可以被访问的任何对象,包括文件目录、文件、文档、图像、声音等,以及与互联网相连的任何形式的数据。

URL的一般形式由以下四个部分组成:

在这里插入图片描述

  • 协议:指出使用何种协议来获取该万维网文档。现在最常用的协议就是超文本传送协议HTTP,其次是文件传送协议FTP
  • 主机:万维网文档所存放的主机的域名,通常以www开头,但这并不是硬性规定
    主机名用点分十进制的IP地址代替也是可以的
  • 端口:端口号,但经常被省略掉。这是因为这个端口号通常就是协议的默认端口号。但如不使用默认端口号,那么就必须写明现在所使用的端口号
  • 路径:前面的三个部分指明了互联网的具体主机,以及使用的协议,路劲则是在一台主机内部的相对路径

超文本传输协议 HTTP

HTTP定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。

HTTP面向事务的应用层协议,它是万维网上能够可靠地交换文件的重要基础。

  • 事务:一系列的信息交换是一个不可分割的整体,要么所有信息都交换完成,要么一次都不进行交换

HTTP不仅传送完成超文本跳转所必需的信息,而且也传送任何可从互联网上得到的信息,如文本、超文本、声音和图像等。

在这里插入图片描述

每个万维网网点都有一个服务器进程,它不断地监听TCP的端口80,以便发现是否有浏览器向它发出连接建立请求。一旦监听到连接建立请求并建立了TCP连接之后,浏览器就向万维网服务器发出浏览某个页面的请求,服务器接着就返回所请求的页面作为响应。服务器在完成任务后,TCP连接就被释放了。

在浏览器和服务器之间的请求和响应的交互,必须按照规定的格式和遵循一定的规则。这些格式和规则,就是超文本传输协议HTTP


非持续连接

HTTP/1.0采用了非持续连接,浏览器获取一个文档的过程如下:

在这里插入图片描述

从浏览器请求一个万维网文档到收到整个文档。HTTP首先要和服务器建立TCP连接。这需要使用三报文握手。当建立 TCP 连接的三报文握手的前两个报文完成后,万维网客户就把HTTP请求报文,作为建立TCP连接的三报文握手中的第三个报文的数据,发送给万维网服务器。服务器收到HTTP请求报文后,就把所请求的文档作为响应报文返回给客户。

整个过程所耗时为:两个往返时间RTT + 传输文档所需时间。也就是说,在HTTP/1.0中最大的缺点就是每次请求一个文档都要两个RTT的开销。

如果一个页面上有很多链接的对象需要依次进行链接,那么每一次链接下载都导致两个RTT的开销。特别是万维网服务器往往要同时服务于大量客户的请求,所以这种非持续连接会使万维网服务器的负担很重。


持续连接

HTTP/1.1开始改用了持续连接的策略,所谓持续连接就是万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行。

持续连接有两种工作方式:非流水线方式流水线方式

非流水线

非流水线方式的特点,是客户在收到前一个响应后才能发出下一个请求

如图所示:

在这里插入图片描述

TCP连接已建立后,客户每访问一次对象都要用去一个往返时间RTT。这比非持续连接节省了建立TCP连接所需的一个RTT时间。

流水线

流水线方式的特点,是客户在收到HTTP的响应报文之前就能够接着发送新的请求报文

如图所示:

在这里插入图片描述

一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。因此,使用流水线方式时,客户访问所有的对象一起只需花费一个RTT时间以及这些文件的传输时间。流水线工作方式使TCP连接中的空闲时间减少,提高了下载文档效率。


代理服务器

代理服务器是一种网络实体,它又称为万维网高速缓存。

代理服务器把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去互联网访问该资源

如图所示是一个校园网:

在这里插入图片描述

校园网内多台主机通过浏览器访问互联网的网页,那么R1 - R2这条链路就会非常拥堵。

但是此时若增加一个代理服务器

在这里插入图片描述

此时所有浏览器访问网页前,都要先通过代理服务器,如果代理服务器内有这个链接对应的数据,就直接返回。如果没有再去互联网访问,当代理服务器访问互联网拿到链接对应的资源后,自己先缓存一份,然后交给客户浏览器。后续别的浏览器再来访问同一个链接,代理服务器就可以直接返回这个内容了。


HTTP报文

HTTP有两类报文:HTTP请求报文HTTP响应报文

两类报文格式如下:

在这里插入图片描述

HTTP报文是面向文本的,HTTP报文中,每个字段不是简单的数据,而是一些ACSII码字符串,各个字段的长度都是不确定的

HTTP请求报文和响应报文都是由三个部分组成的。这两种报文格式的区别就是开始行不同。

各个区域含义如下:

  • 开始行:用于区分是请求报文还是响应报文。在请求报文中的开始行叫作请求行,而在响应报文中的开始行叫作状态行。在开始行的三个字段之间都以空格分隔开,最后的CRLF分别代表回车换行(它们也是ASCII码)。
  • 首部行:用来说明浏览器、服务器或报文主体的一些信息。首部可以有好几行,但也可以不使用。在每一个首部行中都有首部字段名和它的值,每一行在结束的地方都要有回车换行整个首部行结束时,还有一空行将首部行和后面的实体主体分开
  • 实体主体:在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段。

下面先介绍 HTTP请求报文的一些主要特点。

格式如下:

在这里插入图片描述

请求报文的请求行只有三个内容:方法URLHTTP版本,后两者都非常好理解,我着重讲讲方法

  • 方法:对所请求对象所做的一些操作,本质上就是一些命令。

常见的方法如下:

方法含义
OPTION请求一些选项信息
GET (有一个空格)请求读取URL所标志的信息
HEAD请求读取URL所标志的信息的首部
POST给服务器添加信息
PUT在指明的URL下存储一个文档
DELETE删除指明的URL所标志的资源
TRACE用来进行环回测试的请求报文
CONNECT用于代理服务器

再看看HTTP响应报文的特点:

在这里插入图片描述

响应报文的状态行包括:版本状态码短语三部分。

短语用于简单解释状态码,状态码被分为五大类:

状态码含义
1xx表示通知信息,如请求收到了或正在进行处理
2xx表示成功,如接受或知道了
3xx表示重定向,如要完成请求还必须采取进一步的行动
4xx表示客户的差错,如请求中有错误的语法或不能完成
5xx表示服务器的差错,如服务器失效无法完成请求

比如最经典的404 Not Found,就属于4xx


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux 安装redis 完整步骤

安装: 1.获取redis资源 复制代码 wget http://download.redis.io/releases/redis-4.0.8.tar.gz 2.解压 复制代码 tar xzvf redis-4.0.8.tar.gz 3.安装 复制代码 cd redis-4.0.8 make cd src make install PREFIX/usr/local/redis 4.移动配置文件到安装…

关于椭圆的方程(有Python画的动图)

关于椭圆的方程(有Python画的动图) flyfish 几何定义 椭圆是平面上所有到两个固定点(焦点)的距离之和为常数的点的集合。这两个固定点叫做焦点。 解析几何描述 设椭圆的两个焦点为 F 1 F_1 F1​ 和 F 2 F_2 F2​&#xff…

【数据结构】红黑树实现详解

在本篇博客中,作者将会带领你使用C来实现一棵红黑树,此红黑树的实现是基于二叉搜索树和AVLTree一块来讲的,所以在看本篇博客之前,你可以先看看下面这两篇博客 【C】二叉搜索树-CSDN博客 【数据结构】AVLTree实现详解-CSDN博客 在这…

填坑-celery正常启动后能收到任务但不执行任务的解决办法

场景 Flask开发中用celery 6正常启动后能收到任务但不执行任务的解决办法,也没有错误提示…… INFO/MainProcess] Task app.add_together[ce406ed8-71b3-49e6-8556-f44bfe66549c] received [2024-06-20 19:38:10,632: INFO/SpawnPoolWorker-36] child process 2244…

【安防天下】模拟视频监控系统——模拟监控系统的构成视频采集设备

文章目录 1 模拟监控系统的构成2 视频采集设备2.1 摄像机相关技术2.1.1 摄像机的工作原理2.1.2 摄像机的分类2.1.3 摄像机的主要参数 2.2 镜头相关介绍2.2.1 镜头的主要分类2.2.2 镜头的主要参数 1 模拟监控系统的构成 模拟视频监控系统又称闭路电视监控系统, 一般…

基于SpringBoot+Vue电影推荐系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,还…

Day 28:2748. 美丽下标对的数目

Leetcode 2748. 美丽下标对的数目 给你一个下标从 0 开始的整数数组 nums 。如果下标对 i、j 满足 0 ≤ i < j < nums.length &#xff0c;如果 nums[i] 的 第一个数字 和 nums[j] 的 最后一个数字 互质 &#xff0c;则认为 nums[i] 和 nums[j] 是一组 美丽下标对 。 返回…

探索FlowUs息流:个人和团队知识管理解决方案|FlowUs稳定保障你的笔记安全无忧

FlowUs息流&#xff1a;稳定运营保障你的笔记安全无忧 在知识管理工具的选择上&#xff0c;稳定性是用户最关心的问题之一。FlowUs息流以其稳定的运营记录&#xff0c;为用户提供了一个可靠的工作环境。我们深知&#xff0c;一个知识管理平台的稳定性直接影响到团队的生产力和…

ACS自助借还服务端模拟工具(3M SIP2协议)

点击下载《ACS自助借还服务端模拟工具&#xff08;源代码&#xff09;》 1. 前言 在当今科技迅猛发展的时代&#xff0c;自助服务系统已成为提升用户体验和运营效率的关键。为了满足自助借还软件辅助开发的需求&#xff0c;我们精心打造了一款功能强大的ACS服务端模拟软件。这…

Ranger配置图片及json文件预览

文章目录 前言下载apt下载pip下载 配置使用json文件预览方法一 修改scope用cat预览方法二 安装jq预览配置ranger 图片文件预览方法一 使用img2txt预览方法二 使用fim预览配置ranger 总结 前言 本文主要讲解Ranger12如何配置json及图片的预览设置&#xff0c;如下是ranger的介绍…

UniApp 开发微信小程序教程(二):下载安装微信开发者工具

文章目录 一、微信开发者工具简介二、下载安装微信开发者工具1. 下载微信开发者工具步骤&#xff1a; 2. 安装微信开发者工具Windows 系统&#xff1a;Mac 系统&#xff1a; 3. 配置微信开发者工具登录微信开发者工具&#xff1a;新建项目&#xff1a; 4. 预览和调试预览&#…

基于一种改进熵方法的旋转机械故障诊断模型(MATLAB)

熵的概念起源于热力学&#xff0c;1884年&#xff0c;玻尔兹曼定义熵&#xff0c;用以描述分子热运动的无序性和混乱度。1948年&#xff0c;Shannon在其发表的《AMathematicalTheoryofCommunication》中提出香农熵&#xff0c;首次将“熵”引入信息度量范畴&#xff0c;为信息论…

眼见不一定为实之MySQL中的不可见字符

目录 前言 一、问题的由来 1、需求背景 2、数据表结构 二、定位问题 1、初步的问题 2、编码是否有问题 3、依然回到字符本身 三、深入字符本身 1、回归本质 2、数据库解决之道 3、代码层解决 四、总结 前言 在开始今天的博客内容之前&#xff0c;正在看博客的您先来…

ENVI实战—一文搞定非监督分类

实验1&#xff1a;使用isodata法分类 目的&#xff1a;学会使用isodata法开展非监督分类 过程&#xff1a; ①导入影像&#xff1a;打开ENVI&#xff0c;按照“文件→打开为→光学传感器→ESA→Sentinel-2”的顺序&#xff0c;打开实验1下载的哨兵2号数据。 图1 ②区域裁剪…

【Oracle篇】Oracle数据库坏块处理:rman修复坏块实践与案例分析(第七篇,总共八篇)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux&#xff0c;也在扩展大数据方向的知识面✌️…

分层Agent

分层Teams 分层Agent创建tool研究团队工具文档编写团队工具 通用能力定义Agent团队研究团队文档编写团队 添加图层 分层Agent 在前面的示例&#xff08;Agent管理&#xff09;中&#xff0c;我们引入了单个管理节点的概念&#xff0c;用于在不同工作节点之间路由工作。 但是&a…

ppt转换word文档怎么操作?6个软件让你自己轻松转换文件

ppt转换word文档怎么操作&#xff1f;6个软件让你自己轻松转换文件 将PPT文件转换为Word文档是一项常见的任务&#xff0c;可以通过多种软件和在线工具来实现。以下是六款常用的软件和工具&#xff0c;它们可以帮助您轻松地将PPT文件转换为Word文档&#xff1a; 1.迅捷PDF转换…

②-Ⅱ单细胞学习-组间及样本细胞比例分析(补充)

数据加载 ①单细胞学习-数据读取、降维和分群_subset函数单细胞群-CSDN博客‘ #2024年6月20日 单细胞组间差异分析升级# rm(list = ls()) library(Seurat)#数据加载(在第一步已经处理好的数据) load("scedata1.RData")#这里是经过质控和降维后的单细胞数据 tabl…

STM32单片机-FLASH闪存

STM32单片机-FLASH闪存 一、FLASH简介二、FLASH工作原理三、读写内部FLASH四、读取芯片ID 一、FLASH简介 STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分&#xff0c;通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程读写FLASH的用途&…

2024年6月20日 (周四) 叶子游戏新闻

超市播音系统: 定时播放不同音乐 强制卸载软件: 一款强制卸载软件 免费多人沙盒游戏《宝藏世界》推出更新“潮起潮落”&#xff0c;带来全新克苏鲁风冒险准备好迎接一场超凡的冒险吧&#xff0c;MMORPG发行商gamigo宣布《宝藏世界》的最新更新&#xff1a;“潮起潮落”。这次更…