【网络协议详解】——万维网WWW系统协议(学习笔记)

news2024/11/6 7:29:01

目录

  • 🕒 1. 概述
  • 🕒 2. 文本传输协议HTTP
  • 🕒 3. HTTP的报文格式
  • 🕒 4. Cookie
  • 🕒 5. 万维网缓冲与代理服务器

🕒 1. 概述

  • 万维网www(World Wide Web)并非某种特殊的计算机网络。它是一个大规模的、联机式的信息储藏所,是运行在因特网上的一个分布式应用
  • 万维网利用网页之间的超链接将不同网站的网页链接成一张逻辑上的信息网。
  • 浏览器最重要的部分是渲染引擎,也就是浏览器内核。负责对网页内容进行解析和显示。
    • 不同的浏览器内核对网页内容的解析也有不同,因此同一网页在不同内核的浏览器里显示的效果可能不同。
    • 网页编写者需要在不同内核的浏览器中测试网页显示效果。
  • 为了方便地访问在世界范围的文档,万维网使用统一资源定位符URL来指明因特网上任何种类"资源"的位置
  • URL的一般形式由以下四个部分组成:<协议>://<主机>:<端口>/<路径>

万维网的文档:

  • 超文本标记语言HTML(HyperText Markup Language)
    • 使用多种“标签”来描述网页的结构和内容
  • 层叠样式表CSS(Cascading Style Sheets)
    • 从审美的角度来描述网页的样式
  • 一种脚本语言(和Java没有任何关系)
    • 控制网页的行为

🕒 2. 文本传输协议HTTP

HTTP定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传送给浏览器

在这里插入图片描述

HTTP/1.0采用非持续连接方式。在该方式下,每次浏览器要请求一个文件都要与服务器建立TCP连接,当收到响应后就立即关闭连接。

  • 每请求一个文档就要有两倍的RTT的开销。若一个网页上有很多引用对象(例如图片等),那么请求每一个对象都需要花费2RTT的时间。
  • 为了减小时延,浏览器通常会建立多个并行的TCP连接同时请求多个对象。但是,这会大量占用万维网服务器的资源,特别是万维网服务器往往要同时服务于大量客户的请求,这会使其负担很重。

在这里插入图片描述

HTTP/1.1采用持续连接方式。在该方式下,万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。这并不局限于传送同一个页面上引用的对象,而是只要这些文档都在同一个服务器上就行。

为了进一步提高效率,HTTP/1.1的持续连接还可以使用流水线方式工作,即浏览器在收到HTTP的响应报文之前就能够连续发送多个请求报文。这样的一个接一个的请求报文到达服务器后,服务器就发回一个接一个的响应报文。这样就节省了很多个RTT时间,使TCP连接中的空闲时间减少,提高了下载文档的效率。

🕒 3. HTTP的报文格式

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

HTTP是面向文本的,其报文中的每一个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。

在这里插入图片描述

 方 法   描 述   GET   请求URL标志的文档   HEAD   请求URL标志的文档的首部   POST   向服务器发送数据   PUT   在指明的URL下存储一个文档   DELETE   删除URL标志的文档   CONNECT   用于代理服务器   OPTIONS   请求一些选项信息   TRACE   用来进行环回测试   PATCH   对PUT方法的补充,用来对已知资源进行局部更新  \begin{array}{|c|c|} \hline \text { 方 法 } & {\text { 描 述 }} \\ \hline \text { GET } & \text { 请求URL标志的文档 } \\ \hline \text { HEAD } & \text { 请求URL标志的文档的首部 } \\ \hline \text { POST } & \text { 向服务器发送数据 } \\ \hline \text { PUT } & \text { 在指明的URL下存储一个文档 } \\ \hline \text { DELETE } & \text { 删除URL标志的文档 } \\ \hline \text { CONNECT } & \text { 用于代理服务器 } \\ \hline \text { OPTIONS } & \text { 请求一些选项信息 } \\ \hline \text { TRACE } & \text { 用来进行环回测试 } \\ \hline \text { PATCH } & \text { 对PUT方法的补充,用来对已知资源进行局部更新 } \\ \hline \end{array}     GET  HEAD  POST  PUT  DELETE  CONNECT  OPTIONS  TRACE  PATCH     请求URL标志的文档  请求URL标志的文档的首部  向服务器发送数据  在指明的URL下存储一个文档  删除URL标志的文档  用于代理服务器  请求一些选项信息  用来进行环回测试  PUT方法的补充,用来对已知资源进行局部更新 

 状态码(五大类33种)   描 述  1 X X  表示通知信息,如请求收到了或正在进行处理;  2 X X  表示成功,如接受或知道了;  3 X X  表示重定向,即要完成请求还必须采取进一步的行动;  4 X X  表示客户的差错,如请求中有错误的语法或不能完成;  5 X X  表示服务器的差错,如服务器失效无法完成请求。  \begin{array}{|c|c|} \hline \text { 状态码(五大类33种) }&{\text { 描 述 }} \\ \hline \mathbf{1 X X} & \text { 表示通知信息,如请求收到了或正在进行处理; } \\ \hline \mathbf{2 X X} & \text { 表示成功,如接受或知道了; } \\ \hline \mathbf{3 X X} & \text { 表示重定向,即要完成请求还必须采取进一步的行动; } \\ \hline \mathbf{4 X X} & \text { 表示客户的差错,如请求中有错误的语法或不能完成; } \\ \hline \mathbf{5 X X} & \text { 表示服务器的差错,如服务器失效无法完成请求。 } \\ \hline \end{array}  状态码(五大类33种) 1XX2XX3XX4XX5XX    表示通知信息,如请求收到了或正在进行处理;  表示成功,如接受或知道了;  表示重定向,即要完成请求还必须采取进一步的行动;  表示客户的差错,如请求中有错误的语法或不能完成;  表示服务器的差错,如服务器失效无法完成请求。 

🕒 4. Cookie

Cookie提供了一种机制使得万维网服务器能够"记住"用户,而无需用户主动提供用户标识信息。也就是说,Cookie是一种对无状态HTTP进行状态化的技术。

在这里插入图片描述

🕒 5. 万维网缓冲与代理服务器

  • 在万维网中还可以使用缓存机制以提高万维网的效率。
  • 万维网缓存又称为Web缓存(Web Cache),可位于客户机,也可位于中间系统上,位于中间系统上的Web缓存又称为代理服务器(Proxy Server)。
  • Web缓存把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去因特网访问该资源

在这里插入图片描述

Q:如果原始服务器中的文档已经修改,但是代理服务器中仍然有缓存,那么主机访问文档时是否会访问到未修改的文档从而发送错误呢?
A:实际上,原始服务器会为每个响应的对象设定一个修改时间字段和一个有效日期字段。当请求到达代理服务器时,若文档未过期则直接返回响应报文,否则向原始服务器发送请求。请求头部中有If-modified-since字段记录了上次文档的修改时间,如果代理服务器中文档的修改时间与原始服务器中文档的修改时间一致,说明文档没有发送变化,因此原始服务器返回一个空文档,否则返回新文档。

在这里插入图片描述


❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

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

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

相关文章

两个iframe同时滚动实现界面内容对比功能

背景&#xff1a;因为要实现一个版本对比功能&#xff0c;所以要保证两个界面能同时滚动。&#xff08;本文只讲同时滚动&#xff0c;对比功能文本只讲思路&#xff0c;具体代码实现如有需要 可以联系我&#xff09;&#xff0c;因为过程中有部分收获特此记录。 本文参考&…

Jetson硬件 升级jetpack系统 版本流程

前言&#xff1a; 准备一个linux系统电脑&#xff0c;一个跳线帽&#xff0c;以及一条usb线 以及英伟达开发者账号&#xff0c;点击https://developer.nvidia.com/zh-cn/embedded/jetpack进行注册 注意&#xff1a;烧录的目标硬件是以前装过低版本的jetpack&#xff0c;以下步…

工业自动化新引擎:工业机器人引领制造业转型升级

自2010年开始&#xff0c;我国15-64岁人口比例下滑&#xff0c;截至2022年我国总人数出现负增长&#xff0c;同比下滑0.1%&#xff0c;因人口老龄化加剧和出生率的持续走低&#xff0c;致使进入生产体系的劳动力越来越少。 随着我国经济进入新常态&#xff0c;制造业面临着产能…

通过训练NLP制作一个自己的简易输入法

最近开始研究NLP&#xff0c;然后根据手写CV UP主的视频&#xff0c;写了一个N Gram的NLP模型&#xff0c;算是该领域里的hello world吧。然后我又添加了几行代码实现了一个非常简易的输入法。 项目说明&#xff1a; 数据集可以自创&#xff0c;导入txt文件即可&#xff1b; …

K8s in Action 阅读笔记——【6】Volumes: attaching disk storage to containers

K8s in Action 阅读笔记——【6】Volumes: attaching disk storage to containers 在前三章中&#xff0c;我们介绍了Pods以及它们与ReplicationControllers、ReplicaSets、DaemonSets、Jobs和Services等Kubernetes资源的交互。现在&#xff0c;我们将回到Pod内部&#xff0c;…

【java 基础一】 纯语法基础记录

一、基础 1.1 变量 Java 变量是程序中存储数据的容器。 在 Java 中&#xff0c;变量需要先声明再使用&#xff0c;并且必须先声明再赋值。 声明变量&#xff1a;声明变量时需要指定变量的类型、名称和初始值。例如&#xff0c;声明一个整型变量可以如下所示&#xff1a; in…

水处理施工方案合集

编制说明及工程简介 (一) 编制说明 本施工组织设计是依据建设单位提供的招标文件、施工图、同类工程施工资料和国家有关施工规范及验收标准进行编制的。本施工组织设计针对本工程施工中的关键点、难点及其处理措施&#xff0c;主要施工方法&#xff0c;施工组织部署&#xff…

如何理解 CRM 客户关系管理系统?

如何理解 CRM 客户关系管理系统&#xff1f; CRM的作用不止是工具&#xff0c;根据用户和对象的不同&#xff0c;CRM创造的价值也是不同的。 打个比方: 有的企业是用CRM来管理客户信息;有的企业是用CRM来获取流量的&#xff1b;有的企业是用CRM来做销售管理的&#xff1b;还…

Springboot整合OSS并实现文件上传和下载

目录 一.OSS服务器开通并创建账户 二.Springboot整合OSS 1.创建springboot项目 2.整合OSS 三.postman测试 一.OSS服务器开通并创建账户 参考阿里云OSS的使用(全程请登陆)_zhz小白的博客-CSDN博客https://blog.csdn.net/zhouhengzhe/article/details/112077301 二.Springb…

深度学习笔记之循环神经网络(八)LSTM的轻量级变体——门控循环单元(GRU)

深度学习笔记之LSTM轻量级变体——门控循环单元[GRU] 引言回顾&#xff1a; LSTM \text{LSTM} LSTM的前馈计算过程 LSTM \text{LSTM} LSTM的问题 GRU \text{GRU} GRU的前馈计算过程 GRU \text{GRU} GRU的优势 引言 上一节介绍了从反向传播过程的角度认识 LSTM \text{LSTM} LST…

【29】核心易中期刊推荐——计算语言学人工智能(AI)技术

🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…

使用javascript-obfuscator给js文件加密

一、安装javascript-obfuscator包 npm install javascript-obfuscator -g二、默认配置直接压缩文件 javascript-obfuscator miniprogram/src/utils/utils_create_sign.js --output miniprogram/src/utils/create_sign.js三、根据配置文件压缩文件 3.1、创建mixs.json配置文…

前端阿里云OSS直传,微信小程序版本

前言&#xff1a; 网络上许多的文章资料&#xff0c;全是使用阿里云官方的SDK&#xff0c;ali-oss插件去做直传。可是各位素未谋面的朋友要注意&#xff0c;这个SDK它支持web环境使用&#xff0c;也就是PC端浏览器。 当项目环境切换到微信小程序&#xff0c;是无法使用这种方…

Power BI Embedded自动缩放容量,为公司每个月节省上万元

哎&#xff0c;不知道今年行情怎么就这样了&#xff0c;大厂一边大批毕业生&#xff0c;一边大量招人。难道是今年的新人便宜&#xff1f;就连道哥&#xff08;吴翰清&#xff0c;阿里P10&#xff0c;中国顶级黑客&#xff09;都从阿里离职了&#xff0c;当年年少不懂学计算机&…

Nodejs批量处理图片小工具:批量修改图片信息

小工具一&#xff1a;批量修改文件夹里面的图片名称 步骤&#xff1a; 1.安装nodejs。 2.根据需要修改editFileName(filePath, formatName)函数的参数&#xff0c;也可以不改&#xff0c;直接将renameFile.js和img文件夹放在同一个目录下。 3.在renameFile.js目录下开启终端…

SQL报错this is incompatible with sql_mode=only_full_group_by

一、bug记录 1.1.bug截图 1.2.sql语句 SELECT id,batch_no,if_code,channel_mch_no,bill_date,bill_type,currency,order_id, channel_order_no,channel_amount,channel_fee_amount,channel_success_at, channel_user,channel_state,org_pay_order_id,channel_refund_amoun…

曾经由盛转衰的骈文,却引领后人在文质兼美的创作之路上坚定前行

又叫骈体文&#xff0c;是和散文相对应的一种文体&#xff0c;它兴起于汉末&#xff0c;形成于魏晋&#xff0c;最盛行于南北朝&#xff0c;在初唐、中唐、唐末、五代、宋初时也盛极一时。古人语&#xff1a;两马并驾为骈&#xff0c;所以骈文最大的特点是用对偶的手法&#xf…

Fiddler抓包工具之fiddler设置手机端抓包

fiddler设置手机端抓包 安卓手机抓包 第一步&#xff1a;配置电脑和安卓的相关设置 1、手机和fiddler位于同一个局域网内&#xff1b;首先从fiddler处获取到ip地址和端口号&#xff1a; &#xff0c;点击online&#xff0c;最后一行就是ip地址 2、路径&#xff1a;Tools》O…

数据库基础——10.子查询

这篇文章来讲一下数据库的子查询 目录 1. 需求分析与问题解决 1.1 实际问题 1.2 子查询的基本使用 1.3 子查询的分类 2. 单行子查询 2.1 单行比较操作符 2.2 代码示例 2.3 HAVING 中的子查询 2.4 CASE中的子查询 2.5 子查询中的空值问题 2.5 非法使用子查询​编辑…

数字IC验证高频面试问题整理(附答案)

后台有同学私信想要验证的面试题目&#xff0c;这不就来了~ Q1.权重约束中”:”和 /”的区别 : 操作符表示值范围内的每一个值的权重是相同的,比如[1:3]:40,表示1&#xff0c;2&#xff0c;3取到的概率为40/120&#xff1b; :&#xff0f;操作符表示权重要平均分到值范围内的…