《图解TCP/IP》阅读笔记(第八章 8.5)—— WWW知多少?

news2024/11/15 19:45:46

8.5 WWW

看到这章的名字,对于日常上网冲浪的我们而言,应该是再熟悉不过了。这不就是常见网址前的那三个字母,号称万维网(WWW,World Wide Web)的东西吗?

确实,我们本篇文章就要介绍与之相关的内容。

万维网是将互联网中的信息已超文本(显示文本以及文本相关的内容)形式展现的系统,也叫做Web。可以显示WWW信息的客户端软件叫做Web浏览器。比如微软的Edge(书中提到的是Internet Explorer,但这年代了谁还用IE啊)、Mozilla基金会的Firefox、Google的Chrome、苹果公司的Safari等。

只有有网,只要有浏览器,人们只用轻轻点击鼠标,就可以访问任何可以被访问的页面,并浏览相关信息。

通过浏览器访问后回显的内容叫做“Web页”。


WWW定义了3个重要的概念

  • 访问信息的手段与位置 URI(Uniform Resource Identifier,统一资源标志符)
  • 信息的表现形式 HTML(HyperText Markup Language,超文本标记语言)
  • 信息转发 HTTP(HyperText Transfer Protocol,超文本传输协议)等操作

接下来我们就详细讲一下这三个概念


URI(Uniform Resource Identifier,统一资源标志符),从名字就可以看出来,其用于资源表示,是一种可以用于WWW之外的高效的识别码,被用于主页地址、电子邮件、电话号码等各种组合中,例如:

image-20221228203017290

这些例子属于一般主页地址,也被叫做URL(Uniform Resource Locator),URL常用语表示互联网中资源文件的具体位置。但URI不局限于标识互联网资源,可以作为所有资源的识别码。URI相比URL,是一个更加广义的概念。虽然在RFC中转而在使用URI,但是人们在日常中仍旧习惯使用URL的说法(到2022年都如此呢)

URI表示的组合叫做方案(Scheme),WWW主要用其中的http和https表示Web页的位置和访问Web页的方法。URI的http方案具体格式如下:

image-20221228203523507

其中主机名表示域名或IP地址;

端口号表示传输端口号,省略端口号是表示采用http的默认端口为80;

路径是指主机上该信息的位置;

访问内容表示要传给CGI(Common Gateway Interface,通用网关接口)的信息;

部分信息表示页面当中的位置等。

这种表示方法可以唯一地标识互联网中特定的数据,不过,由于用http方案展现的数据随时有可能发生变化,所以即使将自己喜欢的页面的URI(URL)记住,也不嫩而过保证下次是否还能够访问到一模一样的网页。


HTML(HyperText Markup Language,超文本标记语言)是记述Web页的一种语言(数据格式)。它可以指定浏览器中显示的文字、文字的大小和颜色,此外,不仅可以对图像或动画进行相关设置,还可以设置音频内容。

HTML也具有纯文本的功能,在页面中不仅可以为文字或图像附加链接,用户可以通过点击这些链接,了解自己想要了解的信息。

HTML也可以说是WWW通用的数据表现协议,即使是在异构的计算机上,只要使用HTML展现的数据,效果基本上是一致的。可以认为HTML属于WWW的表示层。


HTTP(HyperText Transfer Protocol,超文本传输协议),当用户在浏览器地址内输入所要访问Web页的URI之后,HTTP的处理就会开始。其默认使用80端口,首先是客户端向服务器的80端口建立一个TCP连接,然后在这个TCP连接上进行请求和应答以及数据报文的发送,下图展示了HTTP 的工作机制:

image-20221228205158305

HTTP中常用的有两个版本:HTTP1.0HTTP1.1

HTTP1.0中每一个命令和应答都会触发一次TCP连接的建立和断开,而从HTTP1.1开始,允许在一个TCP连接上发送多个命令和应答(叫做保持连接Keep-alive)。

值得一提的是,HTTP2.0早在2015年5月就以标准的形式被发布,据某网站统计,截止2021年10月,全球有46.5%的网站支持HTTP/2.0。相较于HTTP1.1,其主要变化在于,及时修改也不会破坏现有程序的正常工作,但是新的程序可以借由新特性得到更好的速度;二是在于HTTP/2采用了新的方法来编码、传输客户端和服务器之间的数据。

这里仅列出HTTP中的主要命令,

image-20221228210647417

而应答信息(同样是3位数字)限于篇幅长度,不再列举,但类型可以分为

  • 1开头:信息提供
  • 2开头:肯定应答
  • 3开头:重定向请求
  • 4开头:客户端请求内容出现错误
  • 5开头:服务器错误

以下的内容算是扩展部分,主要涉及三个部分

  • JavaScript

web的基本要素是URI、HTML、HTTP,但是这些无法更改与条件相符的动态内容,为了执行特定程序时可以实现更加精彩、多样的内容,例如网络购物、搜索、动态画面等,就需要用到JavaScript语言。

首先明确,我们称Web浏览器端执行的程序为客户端程序,在服务器端执行的程序为服务器端程序。

JavaScript就是一种嵌入在HTML中的编程语言,作为客户端程序可以运行于多种类型的浏览器。这些浏览器下载了嵌入JavaScript的HTML后,其对应的JavaScript程序就可以在客户端得到执行。

JS程序可以用于验证客户端输入字符串是否过长、是否填写或选择了页面中的必选选项等功能(因为如果都放在服务器执行,给服务器带来的负荷相当之大)。

另外,JS程序还可以用于操作HTML或者XML(Extensible Markup Language,可扩展标记语言)的逻辑结构(Document Object Model,DOM)以及动态显示Web也的内容和页面风格上。另外还有服务器端不需要读取整个页面而是通过JavaScript操作DOM来实现更为生动的Web页面的技术——Ajax(Asynchronous JavaScript and XML)技术。

image-20221228211818599

  • CGI(Common Gateway Interface,通用网关接口)

CGI是Web服务器调用外部程序时所使用的一种服务端应用的规范。

一般的Web通信中,只是按照客户端请求将保存在Web服务器硬盘中的数据转发而已,这种情况下客户端每次收获的信息也是同样(静态)的内容。引入CGI之后,客户端请求会触发Web服务器端运行另一个程序,客户端输入的数据也会传给这个外部程序。该程序运行结束后会将生成的HTML和其他数据再返回给客户端。

利用CGI,可以针对用户的操作,返回给客户端有各种各样变化(动态)信息。论坛与网上购物系统中就经常使用CGI调用外部程序或访问数据库。

  • Cookie

Web中为了获取用户信息使用一个叫做Cookie的机制,用Cookie在客户端保存信息(多为用户名、登录名等信息)。Cookie常被用于保存登陆信息或者网络购物中放入购物车的商品信息。

从Web服务器检查Cookie可以确认是否为同一对端的通信,从而存放于购物车里的商品信息就不必要保存到服务器了。

另外,书中提到了博客与RSS。博客blog是weblog的缩写,是一种在使用着完全不懂HTML,也不需要使用FTP的情况下,轻松建立Web页并更新内容的网络服务应用。我们的这一系列笔记也属于博客。

而RSS(Really Simple Syndication或RDF(Resource Description Framework) Site Summary,中文常译作简易信息聚合)是用来交互与Web站点内容更新相关的只要信息的一种数据格式。总而言之,其用于将页面的标题、章节、摘要、分类、关键字等原本Web上难以抽取的内容进行聚合,只显示页面的概要,提高关键字搜索的精度。

如果发布消息的Web站点支持RSS,那么用户就可以轻松地通过RSS获取该站点的最新消息。

值得一提的是,国内的许多站点为了占据用户的浏览时长,把RSS机制取消了(这也是网络逐步发展中必经的一环,对我个人而言,算是弊端,例如推送给你那些不感兴趣的内容,或者在搜索时呈现很多无意义的搜索结果等)。

在此安利一个开源项目DIYgod/RSSHub: 🍰 Everything is RSSible (github.com),其是一个开源、简单易用、易于扩展的 RSS 生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。RSSHub 借助于开源社区的力量快速发展中,目前已适配数百家网站的上千项内容。

我曾经使用过一段时间,那种所有你想要了解的信息都汇聚于一个界面的感觉确实很便利。


本篇小结

本篇内容主要讲了有关WWW(万维网)的一些相关概念,简而言之,就是我们使用浏览器上网冲浪时涉及到的一些知识点。

首先,WWW是一个系统级的概念,其常见于网址,定义了三个重要的概念:

  • URI(Uniform Resource Identifier,统一资源标识符):

    用于标识网络中的资源,更准确的讲,是提供该网址的服务器中可以访问到资源

  • HTML(HyperText Markup Language,超文本标记语言):

    用于记述Web网页的一种信息,将网页中的元素标签化,而浏览器正是通过读取HTML文件,将其渲染为可视化网页。HTML属于一种标记语言而非编程语言。

  • HTTP(HyperText Transfer Protocol,超文本传输协议):

    是一种用于两节点(此处指网站)之间请求与应答的标准,是WWW的数据通信的基础,其建立的目的是为了提供一种发布和接收HTML页面的方法,其请求的资源由URI来标识。通常占用TCP80端口。

    迄今为止主要经历了三个版本,主要特点如下

    • 1.0:每次请求和应答都要建立一次连接
    • 1.1:可以在一个连接上发送多个请求 ,接收多个应答
    • 2.0:更加稳定,速度更快

    主要有8个命令,以及5类信息。(参见正文内容)

之后,书中讲了三个相关概念:

  • JavaScript:嵌入HTML的一种语言,用于编写网页客户端程序、操作HTML、XML的逻辑结构,使得网页更加生动。通常我们所说的脚本就是使用JS语言编写的。
  • CGI:是Web服务器调用外部程序时所使用的一种服务端应用的规范。该过程由一个HTTP POST请求开始,从客户端经由标准输入发送数据到一个CGI程序,同时携带其他数据,例如URL路径、HTTP头字段数据,被转化为进行的环境变量。
  • Cookie:Web服务器常用cookie在客户端保存信息(多为用户名、登录名等信息)。从Web服务器检查Cookie,可以确认是否为同一对端的通信。

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

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

相关文章

Dimitra 2022: 年度回顾

大家好, 我首先要感谢 Dimitra 社区和我们所有的投资者在 2022 年期间的支持。俗话说,“这些都会过去”,2022 年的宏观加密环境尤其具有挑战性,一些非常糟糕的行为者给广泛的加密行业带来很多痛苦。 2023 年可能是监管框架最终显…

公司来了个新测试开发,一副毛头小子的样儿,哪想到......

最近公司来了个新同事,学历并不高,而且大学也不是计算机专业的,今年刚满25岁。。 本以为也是来干点基础的活混混日子的,结果没想到这个人上来就把现有项目的性能优化了一遍,直接给公司节省了不少成本,这种…

Qt通过QProcess启动进程并传递命令行参数

目录QProcess启动外部程序的两种方式依赖式分离式:启动进程前的预处理设置启动路径设置启动命令参数启动的状态更多说明Public FunctionsSignals设计一个拉起进程的程序基本设计思路效果图核心代码控件对象header file(头文件)member variabl…

java比较器

一、说明: Java中的对象,正常情况下,只能进行比较: 或 ! 。不能使用 >或 如何实现? 使用两个接口中的任何一个: Comparable 或 Comparator 二、Comparable的使用(自然排序) 1.Comparable接口的使用举例: 1.像string、包装类等实现了Comparable接口…

智能优化算法:协作搜索算法-附代码

智能优化算法:协作搜索算法 摘要:协作搜索算法( Cooperation search algorithm ,CSA)是 Zhong-kai Feng等 于 2021 年提出的一种新型元启发式优化算法 。 该算法受现代企业团队协作行为的启发,具有寻优能力强,收敛速度…

Seata-AT模式数据源代理-JDBC中的关键知识点

背景 Seata 对业务无侵入是通过数据源代理实现的,从下图中可看出,数据源代理的实现涉及到 DataSource、Connection 以及 Statement,这几个关键知识属于 JDBC 的范畴,所以本篇从 JDBC 的视角对他们进行介绍。 一、JDBC 概述 JDBC…

【算法】面试题 - 回溯算法解题套路框架

回溯算法解题套路框架前言回溯算法的框架排列(元素无重不可复选)46. 全排列解析子集(元素无重不可复选)78. 子集解析组合(元素无重不可复选)77. 组合解析子集/组合(元素可重不可复选&#xff09…

免费PDF转Word?有这几个网站就够了

如果您想使用 Word 文档,您可能需要将PDF 转换为 Word,以便您可以随意使用该文档。将 PDF 转换为 Word 的过程需要一个好的 PDF 转换器。在本文中,您将探索可用的 5个免费转换器,其中包括 奇客PDF 和PDF2Go。 最好的 6 个 PDF 转 …

【unity笔记】图解Vector3.SignedAngle()方法的返回值

首先看一下官方文档的说明: public static float SignedAngle (Vector3 from, Vector3 to, Vector3 axis); from测量角度差的源向量。to测量角度差的目标向量。axis一个向量,其他向量将绕其旋转。返回 from 与 to 之间的有符号角度(以度为单…

CodeQL 源代码漏洞扫描

目录 1、下载配置 codeql 1.1 配置 codeql 1.2 配置 maven 2、测试 codeql 漏洞检测 2.1 构建 codeql 查询数据库 2.2 漏洞检测 测试环境:centos7 jdk11 maven 1、下载配置 codeql 1.1 配置 codeql 下载安装 codeql-cli: https://github.com/github/code…

大数据系列——什么是Flink?Flink有什么用途?

目录 一、基本概念 批与流 数据可以作为无界流或有界流处理 二、什么是Flink? 三、Flink有什么用途? 四、适用场景 五、flink事件驱动 六、flink拥有分层API flink sql 七、fllink企业级使用 一、基本概念 批与流 批处理的特点是有界、持久、大…

被误认为是外国人开发的4款软件,功能强大到离谱,且用且珍惜

国外的月亮不一定比国内圆,随着国内互联网飞速发展,国内研发出许多实用又良心的软件,由于偏见,功能强大的它们却被误认为是外国佬研发的。 1、Foxit PDF用系统自带的Adobe实在难用,Foxit这款PDF阅读器实在太强大&#…

unity使用RenderTexture可以渲染粒子特效

一,使用UIRawImage,创建材质球,把Shader给材质球,放到RawImage的Material上, // Upgrade NOTE: replaced mul(UNITY_MATRIX_MVP,*) with UnityObjectToClipPos(*)Shader "UI/Default No-Alpha" {Properties{[PerRende…

基于文本和图像的网络舆情分析方法研究

基于文本和图像的网络舆情分析方法研究 一、舆情分析技术 (1)舆情数据采集与提取技术; (2)自动文摘技术; (3)事件发现与追踪技术; (4)舆情情感分…

【虚幻引擎UE】UE5 模型描边的三个方法

一、后期处理法 1、创建描边材质,方法很多种,主要有设置深度、法线描边等 可以参考现有文章制作或直接下载材质资源使用。 参考文章: 1、【UE4】几种后处理描边的方法,效果及效率 2、UE4之物体描边 3、【UE4_001】后期处理轮廓…

第002课 - 项目整体效果展示

文章目录 基础篇高级篇流量控制:alibaba sentinel注册中心链路追踪高可用集群篇CICD这个章节是进行项目效果的演示。 基础篇 第一个就是基础篇。 这是我们的后台管理系统。 围绕电商的管理系统做一个整套的增删改查逻辑。 这个商品系统都会教给大家来编写的。 这个是使用前…

网站报错:PHP Fatal error: Allowed memory size of 134217728 bytes exhausted的处理方法

原因分析 内存已耗尽,这关系到PHP的memory_limit的设置问题,根据自己的需要及参考本机的内存大小修改php内存限制。 解决方案 1、修改php.ini (改配置) memory_limit 128 这种方法需要重启服务器,很显然&#xff0c…

向Linux内核添加驱动的步骤详解

1、获取驱动源码 (1)驱动源码一般都是从设备厂商处获取; (2)设备厂商给的驱动源码大体上是没有问题的,能加载但是效果不一定好,需要根据自己的板子进行适配; 2、驱动在内核中的两种形式 (1)直接编译进内核:内核启动时自…

ubuntu下编译opencv

目录 1. 下载opencv和opencv-contrib 2. 安装依赖 3. cmake 4. make 5. 安装 6. 配置opencv的路径 7. 测试 后续 1. 下载opencv和opencv-contrib https://github.com/opencv/opencv/archive/refs/tags/4.6.0.zip https://github.com/opencv/opencv_contrib/archive/re…

python两种方式实现读写航拍影像JPG图片的GPS坐标

写入坐标效果 读取坐标效果 1、写入JPG坐标数据 1.1、准备数据 gps坐标文件 图片 可以查看它的属性中目前并没有坐标信息 1.2、执行脚本 第一种方法(piexif) writegps2jpg_piexif.py import csv,os import