计算机网络:应用层 - 万维网 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


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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eBPF 如何塑造 Linux 和平台工程的未来

当Docker 于 2013 年突然出现时,Linux 容器似乎一夜成名。但容器(以及微服务和Kubernetes)的演变实际上是基于 Linux 操作系统中的内核原语而进行的,历时数十年。 Docker 使用这些原语(即 cgroups 和命名空间&#xf…

计算机Java项目|基于SpringBoot的基于保密信息学科平台系统

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简…

acme.sh泛证书申请

说明: 1、想每个项目都接入域名+端口访问,所以通过acme.sh申请泛域名证书 2、阿里云域名解析,并且指定公网ip地址对应的公共Nginx服务 3、acme.sh证书只有3个月,所以要用shell自动续签证书 4、阿里云域名已解析,所以二级域名、三级域名能正常解析,如下图所示, 一、阿里云…

武汉星起航:跨境电商浪潮下,中国卖家扬帆出海,书写国际新篇章

随着全球化进程的加速和互联网技术的飞速发展,跨境出口电商模式已成为中国卖家海外拓展的重要渠道。这一模式不仅为商家带来了巨大的市场机遇,更为中国卖家在全球舞台上展示其独特魅力和竞争力提供了宝贵平台。武汉星起航将从多个维度探讨中国卖家海外发…

DWC USB2.0协议学习2--架构介绍

目录 1 系统级架构 1.1 DWC_otg PMU模块 1.2 DWC_otg层次结构框图 1.3 DWC_otg功能模块框图 1.4 USB Host体系结构 1.4.1 发送FIFO 1.4.2 接收FIFO 1.5 USB Device体系结构 1.5.1专用发送FIFO 1.5.2 单个接收FIFO 2 DWC_otg_core架构 2.1 AHB总线接口单元(BIU) 2.2…

LLM大模型算法学习资源持续整理

文章目录 waytoagiLLM101llm-coursellm-cookbook waytoagi 飞书文档写的AGI知识库。 https://www.waytoagi.com/ LLM101 karpathy更新中的大模型教程: https://github.com/karpathy/LLM101n llm-course Course to get into Large Language Models (LLMs) wi…

C++初学者指南第一步---12.引用

C初学者指南第一步—12.引用 文章目录 C初学者指南第一步---12.引用1. 功能(和限制)1.1 非常量引用1.2 常量引用1.3 auto引用 2.用法2.1 范围for循环中的引用2.2 常量引用的函数形参2.3 非常量引用的函数形参2.4 函数参数的选择:copy / const…

charles破解

一、Charles官网下载安装包二、安装charles三、charles破解 一、Charles官网下载安装包 根据自己电脑系统 官网下载即可。 链接: https://www.charlesproxy.com/download/latest-release/ 二、安装charles 点击下载的安装包,然后进行安装。 三、charles破解 打…

基于信息论的高动态范围图像评价算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于信息论的高动态范围图像评价算法matlab仿真,利用一种自然图像的概率模型对图像的熵与成像动态范围之间的关系进行了数值模拟,得到了具有普遍意义上…

如何制作自己的网站

制作自己的网站可以帮助个人或组织在互联网上展示自己的品牌、作品、产品或服务。随着技术的发展,现在制作网站变得越来越简单。下面是一个简单的步骤指南,帮助你制作自己的网站。 1. 确定你的网站需求和目标 在开始之前,你需要明确你的网站的…

国家自然科学基金标书大全(2002-2024)

数据来源:在20世纪80年代初,为了促进中国的科技体制革新并改革科研资金分配机制,中国科学院的89位院士联名向党和国家领导人提出建议,设立了国家自然科学基金的设立。国自然基金自创立以来,根据国家发展科学技术方针、…

群体优化算法---石墨烯优化算法介绍以及在期权定价上的应用(Black-Scholes模型来计算欧式期权的理论价格)

介绍 石墨烯算法是一种新兴的优化算法,灵感来自于石墨烯的结构和特性。石墨烯是一种由碳原子构成的二维蜂窝状晶格结构,具有优异的机械、电学和热学性能。石墨烯算法通过模拟石墨烯原子之间的相互作用和迁移,来求解复杂的优化问题 基本概念…

JavaEE之HTTP协议(1)_HTTP基础知识,HTTP 请求、响应格式,方法,状态码

一、HTTP协议 1.1 基本概念: HTTP全称超文本传输协议,是一种无状态的、应用层的协议,它基于请求/响应模型。客户端(通常是Web浏览器)通过发送HTTP请求到服务器来获取或发送信息,服务器则返回HTTP响应作为回应。HTTP协…

七天速通javaSE:第四天 递归算法

文章目录 前言一、递归的介绍二、递归模型(n!)1 阶乘的定义:2. 阶乘的递归代码实现3. 递推与回归的内部逻辑三、练习 前言 本文将学习递归算法。在计算机科学中,递归算法是一种将问题不断分解 为同一类子问题来解决问题的方法。递…

sd卡一插上就提示格式化是怎么回事?sd卡数据如何恢复?

sd卡一插上就提示格式化是怎么回事?里面的数据怎么办?下面小编总结了SD卡提示格式化的原因和对应解决办法分享给大家! SD卡好好的,为什么一插电脑上就提示需要格式化呢?当SD卡提示格式化时,可以考虑下面几类…

项目1111

中文显示姓名列和手机号 SELECT contact_name AS 姓名, contact_phone AS 手机号 FROM 2_公司id; 使用explain测试给出的查询语句,显示走了索引查询 EXPLAIN SELECT * FROM 7_订单数量 WHERE countid LIKE e%; 统计用户订单信息,查询所有用户的下单数量…

项目实战系列三: 家居购项目 第六部分

文章目录 🌈Ajax检验注册名🌈Ajax添加购物车🌈上传与更新家居图片🌈作业布置🍍会员登陆后不能访问后台管理🍍解决图片冗余问题🍍分页导航完善 🌈Ajax检验注册名 需求分析 注册会员时…

【osgEarth】Ubuntu 22.04 源码编译osgEarth 3.5

下载源代码 git clone --depth1 https://dgithub.xyz/gwaldron/osgearth -b osgearth-3.5 下载子模块 git submodule update --init 如果下载不过来,就手动修改下.git/config文件,将子模块的地址替换成加速地址 (base) yeqiangyeqiang-Default-string…

苹果Mac安装adobe软件报错“installer file may be damaged”解决方案

最近Mac电脑系统的有小伙伴在安装PS、AI、AE、PR等软件,出现了一个错误,让人头疼不已,苦苦找寻,也找不到完美的解决方法。让我们来一起看看吧! 很多小伙伴都喜欢苹果电脑,但是在安装外来软件时,…

浏览器扩展V3开发系列之 chrome.cookies 的用法和案例

【作者主页】:小鱼神1024 【擅长领域】:JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 chrome.cookies API能够让我们在扩展程序中去操作浏览器的cookies。 在使用 chrome.cookies 要先声明…