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

news2024/10/23 12:38:42

计算机网络:应用层 - 万维网 & 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.coloradmin.cn/o/1843251.html

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

相关文章

企业的差旅费用还能更节省吗?

对于多数企业而言,差旅成本是仅次于人力资源成本的第二大可控成本。 差旅成本除了差旅产品采购费用、差旅服务费用这些显性成本外,还有预订时间消耗、审批环节、报销流程、票据核查等隐性成本。 据调研数据显示:企业对于专业差旅管理的认知度…

测试服务器端口是否打开,服务器端口开放异常的解决方法

在进行服务器端口开放性的测试时,我们通常使用网络工具来验证目标端口是否响应特定的协议请求。常用的工具包括Telnet、Nmap、nc(netcat)等。这些工具可以通过发送TCP或UDP数据包到指定的IP地址和端口,然后分析返回的数据包&#…

「Python-docx 专栏」docx 获取页面大小、设置页面大小(纸张大小)

本文目录 前言一、docx纸张大小介绍1、document.xml① 关于 document.xml 的一些知识点② 纸张大小在哪里③ 纸张大小都有啥④ EMU对应的尺寸列表二、获取docx纸张大小1、完整代码2、运行效果图三、python为docx设置纸张大小1、完整代码2、效果图前言 今天的这边文章,我们来说…

DNS部署与安全

一、DNS 英文全称:Domain Name Service 含义:域名服务 作用:为客户机提供域名解析服务 二、域名组成 域名组成概述 (1)如"www.sina.com.cn”是一个域名,从严格意义上讲,“sina.com.cn”…

总结 CSS 选择器的常见用法

一,什么是css 在前端网页中,css就相当于化妆术,把一个很生硬的网页页面变得排版有序起来。 CSS可以对网页中的元素位置进行像素级精准控制,实现美化页面的效果,也能做到页面的样式和结构分离。 二,css的基…

前端下载文件流,axios设置responseType: arraybuffer/blob无效

项目中调用后端下载文件接口,设置responseType: arraybuffer,实际拿到的数据data是字符串 axios({method: post,url: /api/v1/records/recording-file/play,// 如果有需要发送的数据,可以放在这里data: { uuid: 06e7075d-4ce0-476f-88cb-87fb0a1b4844 }…

COSMOSPANDA星际熊猫闪耀助阵2023中国(广州)国际时尚产业大会

在2023年12月27日至12月29日于广州海心沙盛大举行的2023中国(广州)国际时尚产业大会上,备受瞩目的星际熊猫以其独特的IP精神与理念,成为本次活动的焦点。 打造“时尚之都”是提升广州国际知名度、消费繁荣度、商业活跃度的重要抓…

Python 基础:异常

目录 一、异常概念二、处理异常2.1 抛出异常2.2 使用 try-except 代码块2.3 使用 try-except-else 代码块2.4 静默失败 三、总结 遇到看不明白的地方,欢迎在评论中留言呐,一起讨论,一起进步! 本文参考:《Python编程&a…

《A DECODER-ONLY FOUNDATION MODEL FOR TIME-SERIES FORECASTING》阅读总结

介绍了一个名为TimeFM的新型时间序列预测基础模型,该模型受启发于自然语言处理领域的大语言模型,通过再大规模真实世界和合成时间序列数据集上的预训练,能够在多种不同的公共数据集上实现接近最先进监督模型的零样本预测性能。 该模型使用真…

数据资产与用户体验优化:深入挖掘用户数据,精准分析用户需求与行为,优化产品与服务,提升用户体验与满意度,打造卓越的用户体验,赢得市场认可

一、引言 在数字化时代,数据已经成为企业最宝贵的资产之一。通过深入挖掘和分析用户数据,企业能够精准把握用户需求和行为,从而优化产品与服务,提升用户体验和满意度。这不仅有助于企业在激烈的市场竞争中脱颖而出,还…

人工智能系列:一文让你读懂什么是模式识别

目录 1.什么是模式识别 1.1人工智能和模式识别 1.2信息感知 1.3计算机模式识别 1.4模式识别应用 1.5模式识别发展简史 1.6相关问题和领域 2.模式识别形式化 2.1模式和模式识别 2.2模式表示 2.3特征空间 2.4特征空间中的分类 2.5一个例子 3.模式识别系统流程 4.模…

【维护服务器安全,如何应对恶意的威胁行为?】

随着互联网的迅猛发展,网络服务器成为现代社会中不可或缺的基础设施。然而,恶意攻击行为也日益猖獗,技术不断升级,给网络服务器的安全带来了严峻挑战。下面德迅云安全就分享一些常见的危害服务器安全的行为,和相应的应…

某棋牌渗透测试

前言 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 一、信息收集 这里通过fofa进行收集,语法为:body某棋牌 && titlexxx 图1-1 fofa资产收集 …

JetBrains IDEA 新旧UI切换

JetBrains IDE 新旧UI切换 IntelliJ IDEA 的老 UI 以其经典的布局和稳定的性能,成为了许多开发者的首选。而新 UI 则在此基础上进行了全面的改进,带来了更加现代化、响应式和高效的用户体验。无论是新用户还是老用户,都可以通过了解和适应这…

apple watch上watchOS网络低级别和高级别区别,以及使用tcp/udp或者websocket的限制条件

可以直接看官方文档:TN3135: Low-level networking on watchOS | Apple Developer Documentation 高级网络:包括 URLSession 中的 HTTP 和 HTTPS 支持,以及在此之上的任何代码层。 低层网络:包括网络框架、 NSStream 和任何其他…

根据滚珠丝杆规格适配丝杆支撑座!

丝杆支撑座是机械设备中常见的支撑座装置,支撑着滚珠丝杆,起到稳定和支撑的作用,避免丝杆弯曲变形和震动,从而保证设备的稳定运行。那么,我们应该如何正确选择丝杆支撑座呢? 在选择丝杆支撑座时&#xff0c…

数据结构试题 16-17

先这样吧,,专业课不是统考,我发现每年的卷子风格都不太一样,侧重点也不一样。以及21的和16的发生了很大的改变。等明年1月再看看吧 那就先over啦 数据结构撒花!!!!!&am…

PTA - 函数的定义与调用

编写一个名为collatz()的函数,它有一个名为number的参数: 如果number是偶数,那么collatz()就打印number加上2如果number是奇数,那么collatz()就打印number乘以2 函数接口定义: def collatz(number)裁判测试程序样例: /* 请在这里填写答案…

Windows10 + fydeOS双系统!简单几步完成

前言 最近发现小伙伴对于fydeOS热情是真的不减,啧啧啧……今天闲来无事,就来讲讲双系统Windows10 fydeOS的安装方法吧! Windows10 FydeOS双系统安装过程其实很简单,不过要建议先安装好Windows10系统。 虽然先安装好fydeOS之后…

FineReport报表

一、报表类型 模板设计是 FineReport 学习过程中的主要难题所在,FineReport 模板设计主要包括普通报表、聚合报表、决策报表三种设计类型。 官网: ‘‘报表类型简介- FineReport帮助文档 - 全面的报表使用教程和学习资料 ‘’ 二、聚合报表 2-1 介绍…