文章目录
- 一、Web基础
- 1.域名概述
- 1.1域名的概念
- 1.2域名解析
- 1.3域名空间结构
- 2.域名注册
- 3.网页的概念
- 4.HTML概述
- 4.1HTML概念
- 4.2HTML文档的结构
- 5.网页基本标签
- 6.Web概述
- 7.静态网页与动态网页
- 7.1静态网页
- 7.2动态网页
- 7.3动态网页语言
- 二、HTTP协议
- 1.概念
- 2.HTTP协议的版本
- 3.HTTP方法
- GET和POST的区别
- 4.HTTP状态码
- 5.HTTP请求流程分析
- 5.1HTTP请求报文结构
- 5.2HTTP请求实例
- 5.3HTTP响应报文结构
- 5.4HTTP响应实例
一、Web基础
1.域名概述
1.1域名的概念
网络是基于TCP/IP协议进行通信和连接的,每一台主机都有一个唯一的标识(固定的IP地址),用以区别在网络上成千上万个用户和计算机。网络在区分所有与之相连的网络和主机时,均采用一种唯一、通用的地址格式,即每一个与网络相连接的计算机和服务器都被指派一个独一无二的地址。
为了保证地址唯一性,用户协议向特地给机构申请注册,分配IP地址网络中的地址有两套方案:IP地址系统、域名地址系统。而由于IP是由32位二进制数字标识,不方便记忆,所以以IP地址为基础发展出了符号化地址来代替解决方案,也是是域名。
1.2域名解析
早期使用hosts解析域名,hosts文件里存放缓存服务器所记录的域名信息。使用hosts管理主机名称容易重复,文件大解析效率下降,单点管理主机容易故障,维护起来比较困难。
后来逐渐被DNS(Demain Name System域名系统)替代使用。而DNS作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址。
1.3域名空间结构
域名通常是由根域、顶级域、二级域、子域、主机名组成。其中根域、顶级域、子域、主机名是必不可少的。如果顶级域是一些机构组织,子域就是二级域。
2.域名注册
域名注册时Internet中用于解决地址对应问题的一种方法。
域名注册步骤:
3.网页的概念
网页 | 纯文本格式,编写语言为HTML,在用户的浏览器中被“翻译”成网页形式显示出来。 |
网站 | 由一个一个页面构成,是多个网页的结合体。 |
主页 | 打开网站后出现的第一个网页称为网页主页(或者首页)。 |
域名 | 用于浏览网页时输入的网址。 |
HTTP | 用来传输网页的通信协议。 |
URL | 是一种万维网寻址系统。 |
HTML | 用来编写网页的超文本标记语言。 |
超链接 | 超链接是将网站中不同网页链接起来的功能。 |
发布 | 将制作好的网页上传到服务器供用户访问的过程。 |
4.HTML概述
4.1HTML概念
HTML叫做超文本标记语言,是一种规范,也是一种标准,它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容。
4.2HTML文档的结构
HTML文件可以使用任何能够生成txt文件的文本编辑器来编辑,生成超文本标记语言文件,只用修改文件名后缀为.html
或.htm
即可。
HTML网页是由头部部分(标题部分)、主体部分(网页内容,包括文本、图像等)具体结构如下:
<html>
<head>
<title>标题部分</title>
</head>
<body>
主题部分
</body>
</html>
5.网页基本标签
头标签中常用标签
标签 | 描述 |
---|---|
<title> | 定义了文档的标题 |
<base> | 定义了页面链接标签的默认链接地址 |
<link> | 定义了一个文档和外部资源之间的关系 |
<meta> | 定义了 HTML 文档中的元数据 |
<script> | 定义了客户端的脚本文件 |
<style> | 定义了 HTML 文档的样式文件 |
内容标签中常用标签
标签 | 描述 |
---|---|
<table> | 定义一个表格 |
<tr> | 定义了表格中的一行 |
<td> | 定义了表格中某一行的一列 |
<img> | 定义了一个图像 |
<a> | 定义了一个超链接 |
<p> | 定义了一行 |
<br/> | 定义了换行 |
<font> | 定义了字体 |
<h1> | 定义字体大小 |
6.Web概述
web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。
Web1.0
以编辑为特征,网站提供给用户的内容是编辑处理后的,然后用户阅读网站提供的内容,这个过程是网站到用户的单向行为。
Web2.0
更注重用户的交互作用,用户既是网站内容的消费者(浏览者),也是网站内容的制造者,加强了网站与用户之间的互动,网站内容基于用户提供,网站的诸多功能也由用户参与建设,实现了网站与用户双向的交流与参与。
Web1.0与Web2.0区别
- Web 1.0 被称为"只读 Web"。Web 2.0 被认为是"参与式社交 Web"。
- Web 1.0 由静态网页组成,Web 2.0 出现了 Web 应用程序。
- 内容由 Web 1.0 中的服务器文件系统提供。Web 2.0 内容灵活且可响应人工输入。
7.静态网页与动态网页
7.1静态网页
在网站设计中,纯粹HTML格式的网页通常被称为“静态网页”,静态网页是标准的HTML文件,它的文件扩展名是.htm
、.html
。静态网页是网站建设的基础,早期的网站一般都是由静态网页制作的。静态网页也可以出现各种动态的效果,如.GIF格式的动画
、FLASH
、滚动字幕
等,这些“动态效果”只是视觉上的。
静态网页是没有后台数据、不含程序和不可交互的网页,相对更新起来比较麻烦,使用一般更新较少的展示型网站。
静态网页的特点
- 每个静态网页都有一个固定的URL,且URL以
.htm
、.html
、.shtml
等常见形式为后缀,而不含有?
。 - 网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页都是保存在网站服务器上的。
- 静态网页的内容相对稳定,容易被搜索引擎检索。
7.2动态网页
所谓的动态网页,是指跟静态网页相对的一种网页编程技术。静态网页,随着HTML代码的生成,页面的内容和显示效果就基本上不会发生变化了——除非是修改页面代码。而动态网页则不然,页面代码虽然没有变,但是显示的内容却是可以,随着时间、环境或者数据库操作的结果而发生改变的。动态网页URL的后缀不是.htm
、.html
、.shtml
、.xml
等静态网页的常见网页制作格式,而是以.aspx
、.asp
、.jsp
、.php
、.perl
、.cgi
等形式为后缀,并且在动态网页网址中有一个标志性的符号——?
。
动态网页是基本的html语法规范与Java、PHP、C#等高级程序设计语言、数据库编程等多种技术的融合,以期实现对网站内容和风格的高效、动态和交互式的管理。因此,从这个意义上来讲,凡是结合了HTML以外的高级程序设计语言和数据库技术进行的网页编程技术生成的网页都是动态网页。
动态网页的特点
- 交互性:网页会根据用户的要求和选择而动态改变和响应,将浏览器最为客户端界面,这将是今后WEB发展的大势所趋。
- 自动更新:无需手动地更新HTML文档,便会自动生成新的页面,可以大大节省工作量。
- 因时因人而变:当不同的时间,不同的人访问统一网址时会产生不同的页面。
7.3动态网页语言
早期的动态网页主要采用通用网关接口 CGI(Common Gateway Interface)技术,虽然 CGI 技术已经发展成熟而且功能强大, 但由于编程困难、效率低下、修改复杂,所以有逐渐被新技术取代的趋势。
目前常用的动态网页编程语言如下:
常用的动态网页语言 | 用法 |
---|---|
PHP | 即 Hypertext Preprocessor(超文本预处理器),它是当今 Internet 上最为火热的脚本语言,其语法借鉴了 C、Java、PERL 等语言,但只需要很少的编程知识你就能使用 PHP 建立一个真正交互的 Web 站点。 |
JSP | 即 Java Server Pages(Java 服务器页面),它是由 Sun Microsystem 公司于 1999 年 6 月推出的新技术,是基于 Java Servlet 以及整个 Java 体系的 Web 开发技术。 |
Python | 是一种面向对象、跨平台的动态类计算机程序设计语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的大型项目开发。 |
Ruby | 是一种简单快捷的面向对象(面向对象程序设计)脚本语言,在 20 世纪 90年代由日本人松本行弘(Yukihiro Matsumoto) 开发,遵守GPL 协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada 以及 Lisp 语言。 |
二、HTTP协议
1.概念
HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上服务器信息、实体元信息以及可能的实体内容。
2.HTTP协议的版本
HTTP 已经演化出了很多版本,它们中的大部分都是向下兼容的。具体的协议版本有以下几种:
HTTP 0.9
已过时。只接受 GET 一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持 POST 方法,所以客户端无法向服务器传递太多信息。
HTTP 1.0
这是第一个在通讯中指定版本号的 HTTP 协议版本,至今仍被广泛采用,特别是在代理服务器中。
HTTP 1.1
引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用,能很好地配合代理服务器工作。还支持管道方式机制,即在同一个TCP连接里面,客户端可以同时发送多个请求,以便降低线路负载,提高传输速度。
HTTP 2.0(SPDY)
完全多路复用,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应。引入了头信息压缩机制,使用gzip或compress压缩后再发送。支持服务端推送,允许服务器未经请求,主动向客户端发送资源。
HTTP 3.0(QUIC)
对于在HTTP2.0中始终在使用的是TCP协议,所以无论如何都还是会有TCP传输层的对头阻塞问题,而HTTP 3.0是基于UDP协议的。
总结,HTTP 1.0和HTTP 1.1是文本传输,HTTP 2.0之后是二进制传输。
3.HTTP方法
HTTP 支持几种不同的请求命令,这些命令被称为 HTTP 方法(HTTP method)。每条 HTTP 请求报文都包含一个方法, 告诉服务器要执行什么动作,包括:获取一个页面,运行一个网关程序,删除一个文件等。最常用的获取资源的方法是 GET
、POST
、PUT
。
Http1.0定义了三种请求方法:GET
, POST
和 HEAD
方法。Http1.1新增了六种请求方法:OPTIONS
、PUT
、PATCH
、DELETE
、TRACE
和 CONNECT
方法。
HTTP方法 | 描述 |
---|---|
GET | 对服务器资源获取的简单请求。 |
PUT | 向服务器提交数据,以修改数据。 |
DELETE | 删除服务器上的某些资源。 |
POST | 用于发送包含用户提交数据的请求。 |
HEAD | 请求页面的首部,获取资源的元信息。 |
CONNECT | 建立特殊的连接隧道。 |
OPTIONS | 列出可对资源实行的方法。 |
TRACE | 追踪请求 - 响应的传输路径。 |
GET和POST的区别
GET 方法:从指定的服务器上获得数据
- GET请求能被缓存;
- GET请求会保存在浏览器的浏览纪录里;
- GET请求有长度的限制;
- 主要用于获取数据;
- 查询的字符串会显示在URL后缀中,不安全,比如
http://www.test.com/a.php?Id=123
。
POST 方法:提交数据给指定服务器处理
- POST请求不能被缓存;
- POST请求不会保存在浏览器的浏览纪录里;
- POST请求没有长度限制;
- 查询的字符串不会显示在URL中,比较安全。
4.HTTP状态码
HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599):
分类 | 已定义范围 | 分类 |
---|---|---|
1XX | 100-101 | 信息提示 |
2XX | 200-206 | 成功 |
3XX | 300-305 | 重定向 |
4XX | 400-415 | 客户端错误 |
5XX | 500-505 | 服务器错误 |
生产环境常见的HTTP状态码
状态码 | 状态码英文名称 | 中文描述 |
---|---|---|
200 | OK | 请求成功。一般用于GET与POST请求。 |
301 | Moved Permanently | 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替。 |
401 | Unauthorized | 请求要求用户的身份认证。 |
402 | Payment Required | 保留,将来使用。 |
403 | Forbidden | 服务器理解请求客户端的请求,但是拒绝执行此请求。禁止访问该页面。 |
404 | Not Found | 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面。服务器无法找到被请求的页面。 |
500 | Internal Server Error | 服务器内部错误,无法完成请求. |
502 | Bad Gateway | 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应。无效网关。 |
503 | Service Unavailable | 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中。 |
504 | Gateway Time-out | 充当网关或代理的服务器,未及时从远端服务器获取请求。网关请求超时。 |
5.HTTP请求流程分析
用户在浏览器输入URL访问时,发起HTTP请求报文,请求中包括请求行、请求头、请求体。而服务器在收到请求后返回响应报文,包括状态行、响应头、响应体。
5.1HTTP请求报文结构
我们之前说过TCP报文包=TCP头信息+TCP数据体,TCP头信息我们已经讲了,现在来讲TCP数据体,也就是我们的HTTP请求报文。
5.2HTTP请求实例
请求行
:请求行由请求方法、URL 以及协议版本三部分组成。
请求头
:请求头为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔。
空行
:请求头部的最后会有一个空行,表示请求头部结束,接下来为请求体,这一行非常重要,必不可少。
请求体
:请求体是请求提交的参数,GET 方法已经在 URL 中指明了参数,所以提交时没有数据。POST 方法提交的参数在请求体中。
常用的请求头:
请求头 | 描述 |
---|---|
Host | 接受请求的服务器地址,可以是 IP:端口号,也可以是域名 |
User-Agent | 发送请求的应用程序名称 |
Connection | 指定与连接相关的属性,如 Connection:Keep-Alive |
Accept-Charset | 通知服务端可以发送的编码格式 |
Accept-Encoding | 通知服务端可以发送的数据压缩格式 |
Accept-Language | 通知服务端可以发送的语言 |
5.3HTTP响应报文结构
服务器在收到客户端请求处理完需要响应并返回给客户端,而HTTP响应报文结构与请求结构体一致。
5.4HTTP响应实例
状态行
:状态行由协议版本,状态码,状态码描述三部分组成。
响应头
:响应头与请求头部类似,为响应报文添加了一些附加信息。
空行
:响应头部的最后会有一个空行,表示响应头部结束。
响应体
:服务器返回的相应 HTML 数据,浏览器对其解析后显示页面。
常用的响应头:
响应头 | 描述 |
---|---|
Server | 服务器应用程序软件的名称和版本 |
Content-Type | 响应正文的类型(是图片还是二进制字符串) |
Content-Length | 响应正文长度 |
Content-Charset | 响应正文使用的编码 |
Content-Encoding | 响应正文使用的数据压缩格式 |
Content-Language | 响应正文使用的语言 |