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

server/2024/10/11 13:18:58/
http://www.w3.org/2000/svg" style="display: none;">

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

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


万维网 WWW

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

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

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

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

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

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

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

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

统一资源定位符 URL

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

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

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

https://img-blog.csdnimg.cn/direct/60c937effe3840a3901e8233429c3722.png" alt="在这里插入图片描述" />

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

超文本传输协议 HTTP

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

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

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

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

https://img-blog.csdnimg.cn/direct/6edc7e623f7a4c2aab0f3434b59168fd.png" alt="在这里插入图片描述" />

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

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


非持续连接

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

https://img-blog.csdnimg.cn/direct/3ba30d51363743e78aee4178252c8d6a.png" alt="在这里插入图片描述" />

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

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

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


持续连接

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

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

非流水线

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

如图所示:

https://img-blog.csdnimg.cn/direct/f9dec316f5304fdab0ff0d45b51649f5.png" alt="在这里插入图片描述" />

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

流水线

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

如图所示:

https://img-blog.csdnimg.cn/direct/c720dde0d7cf47fab76bb6d3dece9f37.png" alt="在这里插入图片描述" />

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


代理服务器

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

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

如图所示是一个校园网:

https://img-blog.csdnimg.cn/direct/ff79b102c87a4da09b38e681c3a7f4a8.png" alt="在这里插入图片描述" />

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

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

https://img-blog.csdnimg.cn/direct/427193f17039439b9ae5664bebe3800b.png" alt="在这里插入图片描述" />

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


HTTP报文

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

两类报文格式如下:

https://img-blog.csdnimg.cn/direct/43bd6801a624422485d33c257d87f074.png" alt="在这里插入图片描述" />

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

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

各个区域含义如下:

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

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

格式如下:

https://img-blog.csdnimg.cn/direct/03fbe9a7be0d454389bdc04667b16bdf.png" alt="在这里插入图片描述" />

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

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

常见的方法如下:

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

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

https://img-blog.csdnimg.cn/direct/09cf59aaa62a4457837a6ebe43f989f0.png" alt="在这里插入图片描述" />

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

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

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

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



http://www.ppmy.cn/server/53327.html

相关文章

【教程】几种不同的RBF神经网络

本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com 目录 一、经典RBF神经网络1.1.经典径向基神经网络是什么1.2.经典径向基神经网络-代码与示例 二、广义回归神经网络GRNN2.1.广义回归神经网络是什么2.2.广义回归神经网络是什么-代码与示例 三、概率…

AI学习指南机器学习篇-高斯朴素贝叶斯算法简介

AI学习指南机器学习篇-高斯朴素贝叶斯算法简介 高斯朴素贝叶斯算法的原理 算法的基本思想 高斯朴素贝叶斯算法是贝叶斯分类器的一种,其基本思想是通过计算输入特征对于每个类别的概率,然后选择具有最高概率的类别作为最终的分类结果。其“朴素”之处在…

探索未来的AI革命:GPT-5的即将登场

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

【Linux】动/静态库的创建和使用

目录 一、动/静态库的概念回顾: 二、动态库与静态库的区别: 三、静态库的创建与使用: 1、Linux静态库命名规则: 2、静态库的创建和使用: 四、动态库的创建与使用: 1、Linux动态库命名规则&#xff1…

项目启动 | 盘古信息助力鼎阳科技开启智能制造升级新征程

在全球数字化浪潮不断涌动的背景下,电子信息行业正迎来转型升级的关键阶段。近日,盘古信息与深圳市鼎阳科技股份有限公司(简称“鼎阳科技”,股票代码:688112)正式启动了IMS数字化智能制造工厂项目&#xff…

Pinia详解

文章目录 简介特点用法1. 安装Pinia2. 注册Pinia Store3. 创建Pinia Store4. 使用Pinia Store 区别 Vuex详解 Pinia是一个基于Vue 3的状态管理库,专为Vue 3设计。它提供了一种简单、直观且可扩展的方式来组织和访问应用程序的状态。Pinia的设计灵感来源于Vuex&#…

(十三)、MQTT3.1.1-MQTT服务端数据结构设计

为进一步实现一个简易的MQTT服务端,做如下服务端数据结构设计。 1、服务端协议相关的函数 连接 rx_connect() 接收连接请求 Socket中监听,通过第一个字节switch,根据数据创建client对象 tx_connectack() 回复连接响应 处理完成rx_conn…

kotlin类

一、定义 1、kotlin中使用关键字class 声明类,如果一个类没有类体,也可以省略花括号, 默认为public 类型的: // 这段代码定义了一个公开的、不可被继承的Test类 class Test{} // 没有类体,可以省略花括号 class Test 底层代码&…