1 web基础

用户访问网站,使用App时,都是基于Web这种 Browser/Server模式,简称BS架构。它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web页面,并把Web页面展示给用户即可。

1.1 Internet的基本概念

  • Internet:全球性的计算机互联网络。

    用于信息共享和交互,基于共同协议(如HTTP)进行通信。

  • Web(World Wide Web):全球广域网,也称为万维网。
    Internet上最流行的网络应用之一,通过超文本、超媒体和HTTP协议实现信息和服务无缝连接,是一种分布式图形信息系统。

1.2 web技术的主要组成

  • HTML(超文本标记语言):用于定义网页结构和内容的标记语言。
  • CSS(层叠样式表):用于控制网页样式,实现内容与样式分离。
  • JavaScript:为网页添加动态行为和交互性的脚本语言。

1.3 web开发架构和技术

  • 客户端技术:HTML、CSS、JavaScript等,负责页面展示和用户交互。
  • 服务器端技术:处理客户端请求,生成动态内容,如Java、Python、 PHP等。
  • 数据库技术:存储和管理Web应用数据,如MySQL、SQL Server、 Oracle等。

1.4 web的工作原理

  • 浏览器:请求服务器获取Web页面,解析并展示给用户。
  • 服务器:接收浏览器请求,生成并发送HTML网页等资源。
  • HTTP协议:浏览器与服务器之间的通信协议,基于请求-响应模式。

1.5 web应用的工作机制

  • 用户通过浏览器输入URL,向服务器发送HTTP请求。
  • 服务器接收请求,处理并生成响应(如HTML页面)。
  • 浏览器接收响应,解析并展示页面给用户。

1.6 域名概述

  • 域名的产生:IP地址不易记忆

  • 早期使用Hosts文件解析域名:主机名称重复、主机维护困难

    在这里插入图片描述

  • DNS(Domain Name System,域名系统):分布式、层次性

  • 域名空间结构

    在这里插入图片描述

    • 根域
    • 顶级域
      • 组织域
      • 国家/地区域名
    • 二级域
    • FQDN=主机名.DNS后缀
  • 域名注册

    域名注册是Internet中用于解决地址对应问题的一种方法
    遵循先申请先注册原则
    域名注册步骤:准备申请资料→寻找域名注册网址→查询域名→正式申请→申请成功

1.7 网页的概念

  • 网页

    纯文本格式文件
    编写语言为HTML
    在用户的浏览器中被“翻译”成网页形式显示出来

  • 网站

    由一个一个页面构成的,是多个网页的结合体

  • 主页

    打开网站后出现的第一个网页称为网站主页(或首页)

  • 域名

    浏览网页时输入的网址

  • HTTP

    用来传输网页的通信协议

  • URL

    一种万维网寻址系统

  • HTML

    用来编写网页的超文本标记语言

  • 超链接

    将网站中不同网页链接起来的功能

  • 发布

    将制作好的网页上传到服务器供用户访问的过程

1.8 web版本

  • web1.0

    以编辑为特征,网站提供给用户的内容是编辑处理后的,然后用户阅读网站提供的内容,这个过程是网站到用户的单向行为。

  • web2.0

    更注重用户的交互作用,用户既是网站内容的消费者(浏览者),也是网站内容的制造者。
    加强了网站与用户之间的互动,网站内容基于用户提供,网站的诸多功能也由用户参与建设,实现了网站与用户双向的交流与参与。
    Web2.0特征:用户分享、以兴趣为聚合点的社群、开放的平台,活跃的用户

1.9 静态网页

  • 静态网页是标准的HTML文件

  • 扩展名是.htm、.html

    文本、图像、声音、Flash动画、客户端脚本和ActiveX控件及Java小程序等

  • 是网站建设的基础,早期网站一般都由静态网页制作

  • 没有后台数据库、不含程序和不可交互的网页

  • 相对更新起来比较麻烦,适用于一般更新较少的展示型网站

  • 特点:

    每个静态网页都有一个固定的URL,且URL以.htm、.html、.shtml等常见形式为后缀,而不含有 “?”。
    网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页都是保存在网站服务器上的。
    静态网页的内容相对稳定,容易被搜索引擎检索。

    静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难。
    静态网页的交互性较差,在功能方面有较大的限制。
    页面浏览速度迅速,过程无需连接数据库,开启页面速度快于动态页面。

1.10 动态网页

  • 网页 URL不固定,能通过后台与用户交互

  • 在动态网页网址中有一个标志性的符号——“?”

  • 常用的语言有PHP、JSP、Python、Ruby等。

  • 特点:

    • 交互性

      网页会根据用户的要求和选择而动态改变和响应,将浏览器作为客户端界面,这将是今后WEB发展的大势所趋

    • 自动更新

      无须手动地更新HTML文档,便会自动生成新的页面,可以大大节省工作量

    • 因时因人而变

      当不同的时间,不同的人访问同一网址时会产生不同的页面

2 HTTP协议

HTTP(HyperTextTransferProtocol,超文本传输协议),是一个工作在应用层的协议,它通常运行在 TCP之上,它指定了客户端以什么样的格式发送信息,以及得到什么样的响应信息。

2.1 HTTP 的起源与标准化历程

HTTP 协议,作为互联网基石之一,其发展可以追溯到 1989 年,由 蒂姆·伯纳斯·李 博士在欧洲核子研究组织(CERN)首次提出。这一创举不仅催生了万维网(www)的诞生,还奠定了 HTTP 作为互联网内容传输核心协议的地位。

随后,HTTP 的标准制定工作由两大权威组织 —— 万 维网协会(W3C)与互联网工程任务组(IETF)携手推进。经过多轮讨论和迭代。HTTP 1.1 标准最终于 1999年以 RFC 2616 的形式正式发布,这一版本至今仍广泛应用于全球互联网,支持着数以亿计的网络请求与响应。

2.2 HTTP/2的崛起与标准化

进入 21 世纪后,随着互联网的飞速发展,HTTP 1.1 在性能上的局限性逐渐显现。

为此 IETF 的 httpbis 工作小组于 2014 年启动了 HTTP/2标准的制定工作,旨在通过引入头部压缩、多路复用以及服务器推送等创新机制,显著提升 HTTP 协议的性能和效率。经过紧锣密鼓的研发与测试,HTTP/2 标准于 2015 年 5 月正式获得批准并以 RFC 7540 的形式发布,标志着 HTTP 协议迈进了一个全新的发展阶段。

如今,HTTP/2 已成为众多现代网站和应用的首选协议,为用户带来更加流畅、快速的浏览体验。

2.3 HTTP/3的崛起

HTTP/3是为了处理HTTP/2.0的传输相关问题而生的,可以在各种设备上更快地访问Web。它基于一个新的传输层协议,称为QUIC(Quick UDP Internet Protocol),在UDP之上工作。

当IETF正式标准化HTTP/2时,Google正在独立构建一个新的传输协议,名为gQUIC。它后来成为新互联网草案,并被命名为QUIC。

gQUIC最初的实验证明,在网络条件较差的情况下,gQUIC在增强网页浏览体验方面的效果非常好。因此,gQUIC的发展势头越来越好, IETF的大多数成员赞成建立一个在QUIC上运行的HTTP新规范。这个新的倡议被称为HTTP/3,以区别于当前的HTTP/2标准。

从语法和语义上看,HTTP/3与HTTP/2相似。HTTP/3遵循相同的请 求和响应消息交换顺序,其数据格式包含方法、标题、状态码和body。然而,HTTP/3的显著的偏差在于协议层在UDP之上的堆叠顺序。

2022年6月6日,IETF(互联网工程任务小组)正式发布了HTTP/3的RFC 9114。

主要特性:

基于UDP:HTTP/3使用基于UDP的QUIC协议,而不是传统的TCP。
多路复用:解决了HTTP/2中的队头阻塞问题,允许在单个连接上同时传输多个请求和响应。
内置加密:QUIC协议默认集成了TLS 1.3,提供了与HTTPS相同级别的安全性。
更快的连接建立:通常只需要一个往返时间(RTT)就可以建立加密连接。

目前,Cloudflare、Google Chrome、Firefox Nightly等均已表示支持 HTTP/3。

2.4 HTTP协议工作原理

在Web应用中,浏览器请求一个URL,服务器就把生成的HTML网页发送给浏览器,而浏览器和服务器之间的传输协议是HTTP,所以:

HTML是一种用来定义网页的文本,会HTML,就可以编写网页
HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信

HTTP协议是一个基于TCP协议之上的请求-响应协议,先使用任一浏览器查看网页,然后选择”开发者模式” 就可以看到HTML;切换到Network,重新加载页面,可以看到浏览器发出的每一个请求和响应;

对于Browser来说,请求页面的流程如下:

与服务器建立TCP连接
发送HTTP请求
收取HTTP响应,然后把网页在浏览器中显示出来

  • 浏览器发送的HTTP请求如下:

    在这里插入图片描述

    第一行表示使用GET请求获取路径为/的资源,并使用HTTP/1.1协议
    从第二行开始,每行都是以Header: Value形式表示的HTTP头,比较常用的 HTTP Header包括:
    Host: 表示请求的主机名,因为一个服务器上可能运行着多个网站,因此,Host表示浏览器正在请求的域名;
    User-Agent: 标识客户端本身,例如Chrome浏览器的标识类似Mozilla/5.0 …
    Chrome/79,IE浏览器的标识类似Mozilla/5.0 (Windows NT …) like Gecko;
    Accept:表示浏览器能接收的资源类型,如text/*,image/或者/*表示所有;
    Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;
    Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate, br。

  • 服务器的响应如下:

    在这里插入图片描述

    服务器响应的第一行总是版本号+空格+数字+空格+文本,数字表示响应代码。其中2xx表示成功,3xx表示重定向,4xx表示客户端引发的错误,5xx表示服务器端引发的错误。数字是给程序识别,文本则是给开发者调试使用的。
    从第二行开始,服务器每一行均返回一个HTTP头。服务器经常返回的HTTP Header包括:
    Content-Type:表示该响应内容的类型,例如text/html, image/jpeg
    Content-Length:表示该响应内容的长度(字节数)
    Content-Encoding:表示该响应压缩算法,例如gzip
    Cache-Control:指示客户端应如何缓存,例如max- age=300表示可以最多缓存300秒

  • 常见的响应码:

    200 OK:表示成功;
    301 MovedPermanently:表示该URL已经永久重定向;
    302 Found:表示该URL需要临时重定向;
    304 NotModified:表示该资源没有修改,客户端可以使用本地缓存的版本;
    400 BadRequest:表示客户端发送了一个错误的请求,例如参数无效;
    401 Unauthorized:表示客户端因为身份未验证而不允许访问该URL;
    403 Forbidden:表示服务器因为权限问题拒绝了客户端的请求;
    404 NotFound:表示客户端请求了一个不存在的资源;
    500 InternalServerError:表示服务器处理时内部出错,例如因为无法连接数据库;
    503 ServiceUnavailable:表示服务器此刻暂时无法处理请求;

HTTP请求和响应都由HTTP Header和HTTP Body构成,其中HTTP Header每行都以==\r\n==结束。
如果遇到两个连续的\r\n,那么后面就是HTTP Body。浏览器读取HTTP Body,并根据Header信息中指示的 Content-Type、Content-Encoding等解压后显示网页、图像或其他内容。
通常浏览器获取的第一个资源是HTML网页,在网页中,如果嵌入了JavaScript、CSS、图片、视频等其他资源,浏览器会根据资源的URL再次向服务器请求对应的资源。

2.5 HTTP方法

HTTP协议有多种获得Web资源的方法
常用的方法:GET和POST

HTTP方法 描述
GET 请求获取Request-URI所标识的资源
PUT 请求服务器存储一个资源,并用Request-URI作为其标识
DELETE 请求服务器删除Request-URI所标识的资源
POST 在Request-URI所标识的资源后附加新的数据
HEAD 请求获取由Request-URI所标识的资源的响应消息报头

2.5.1 GET方法

GET方法:从指定的服务器上获得数据
GET请求能被缓存
GET请求会保存在浏览器的浏览纪录里
GET请求有长度的限制
主要用于获取数据
查询的字符串会显示在URL中,不安全

2.5.2 POST方法

POST方法:提交数据给指定服务器处理
POST请求不能被缓存
POST请求不会保存在浏览器的浏览纪录里
POST请求没有长度限制
查询的字符串不会显示在URL中,比较安全

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐