Web基础与HTTP协议

目录

前言

一、Web基础

1.1 域名概述

域名的概念

1.2 域名空间结构

1.3   域名注册

1.4    网页的概念

1.5  HTML概述

1.5.1 HTML超文本标记语言

1.5.2  HTML文档的结构

​编辑 1.6  网页基本标签

1.7   Web概述 

1.7.1  web 介绍

1.7.3  Web2.0

1.8   静态网页

1.8.1  静态网页的特点

1.9 动态网页

1.9.1  动态网页的特点

二、 HTTP协议

2.1 HTTP协议介绍

2.2 HTTP方法

2.3   GET和POST 比较

2.4 HTTP 状态码

生产环境常见的HTTP状态码

2.5 HTTP请求流程分析

2.5.1  请求报文

2.5.2  响应报文

2.6   HTTP请求流程

 三、总结


前言

对于我们学习云计算的人来说,服务是很重要的知识,这章将详细介绍一下web基础知识和HTTP协议的概念和作用。

一、Web基础

1.1 域名概述

域名的概念

IP地址不易记忆


早期使用Hosts文件解析域名、

主机名称重复
主机维护困难

/etc/hosts#配置文件
IP地址 主机名/域名 ……#组成Hosts文件

DNS (Domain Name System域名系统)

分布式
层次性

扩展:DNS解析的三种方法

① /etc/hosts
linux系统中负责快速解析的文件,包含了ip与主机名的映射关系,在没有DNS服务器的情况下,
使用本地/etc/hosts完成解析/映射,实现快速访问
PS: 主要用于主机之间(IP和主机名)的映射/解析关系,示例:
192.168.111.15 ceshi
192.168.111.100 node1
192.168.111.120 node2

② /etc/resolv.conf
DNS客户端配置文件,主要用于设置DNS服务器的IP和域名,还包含了主机域名的搜索顺序等等,
这个文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。
PS:主要用与匹配DNS服务器,示例:
nameserver 114.114.114.114
nameserver 8.8.8.8

③ /etc/sysconfig/network-scripts/ifcfg-ens33
我们也可以在网卡配置文件中定义DNS1= DNS2=

生效顺序 1 hosts文件 2 网卡配置文件 3 /etc/resolv.conf

1.2 域名空间结构

定义:表示一组主机并提供它们的有关信息的树形结构

www.baidu.com

域名服务器(分布式,每台主机维护一个部分):

① 保持和维护域名空间的程序

② 响应解析器的请求

域名空间结构(从右网左看)

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

1.3   域名注册

域名注册是Internet中用于解决地址对应问题的一种方法

遵循先申请先注册原则

域名注册步骤

注:域名注册是Internet  中用于解决地址对应问题的一种方法 ; 遵循先申请先注册原则

扩展:阿里云域名怎么申请的?

申请--》查询重名--》给钱(20-60元)--》备案(阿里云)拍照(负责人拍照人)--》 10-20天   申请之后就可以解析和使用,但是如果有问题就会被封

1.4    网页的概念

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

网站
●由一个一个页面构成的,是多个网页的结合体主页
●打开网站后出现的第一个网页称为网站主页(或首页)

域名
●浏览网页时输入的网址
HTTP
●用来传输网页的通信协议

URL
●是一种万维网寻址系统

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

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

发布
●是一种万维网寻址系统

1.5  HTML概述

1.5.1 HTML超文本标记语言

  • Hyper text markup language
  • 网页的“源码”

浏览器:“解释和执行” HTML源码的工具

1.5.2  HTML文档的结构

HTML网页
       头部部分
       标题部分
       主体部分
       网页内容,包括文本、图像等

<htm|>
<head>
<title>我的第一个网页</title>
</head>#标签内容
#主题代码部分    
<body>
    Hello World!
</body>

</htm|>

 1.6  网页基本标签

 网页摘要信息的作用

            有利于浏览器解析
            有利于搜索引擎搜索

<title>标签
<meta> 标签
<head>
 <title> 搜狐-中国最大的门户网站
 </title>
</head>
<head>
 <meta name="keywords">
 content="挖掘机哪家强!"/>
</head>

标题标签

行控制相关标签

范围标签

图像标签

超链接标签

特殊符号

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>第一个网页</title>
	</head>
	<body>
		<h2 style="color:blue">静夜思</h2>
		<h3>床前明月光</h3>
		<h3>疑是地上霜</h3>
		<h3>举头望明月</h3>
		<h3>低头思故乡</h3>
		<img src="xx.jpg" width="250px" high="300px" />
	</body>
</html>

头标签中常用标签:

标签        描述
<title>       定义了文档的标题
<base>        定义了页面链接标签的默认链接地址
<link>        定义了一个文档和外部资源之间的关系
<meta>        定义了 HTML 文档中的元数据
<script>      定义了客户端的脚本文件
<style>       定义了 HTML 文档的样式文件

内容标签常用标签:

<table>       定义一个表格
<tr>        定义了表格中的一行
<td>        定义了表格中某一行的一列
<img>       定义了一个图像
<a>         定义了一个超链接
<p>         定义了一行
<br>        定义了换行
<font>        定义了字体

1.7   Web概述 

1.7.1  web 介绍

Web (World Wide Web)即全球广域网,也称为万维网

一种分布式图形信息系统。

建立在Internet上的一种网络服务

1.7.2 Web 1.0 

以编辑为特征,网站提供给用户的内容是编辑处理后的,然后用户阅读网站提供的内容

这个过程是网站到用户的单向行为

1.7.3  Web2.0

更注重用户的交互作用,用户既是网站内容的消费者(浏览者),也是网站内容的制造者

加强了网站与用户之间的互动,网站内容基于用户提供,网站的诸多功能也由用户参与建设,实现了网站与用户双向的交流与

Web2.0特征

用户分享、以兴趣为聚合点的社群、开放的平台,活跃的用户

1.8   静态网页

 静态网页是标准的HTML文件

  • 扩展名是.htm、.html
  •              文本、图像、声音、FLASH动画、客户端脚本和Activex控件及JAVA小程序等
  • 是网站建设的基础,早期网站一般都有静态网页制作
  • 没有后台数据库、不含程序和不可交互的网页
  • 相对更新起来比较麻烦,适用于一般更新较少的展示型网站

1.8.1  静态网页的特点

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

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

1.9 动态网页

  • 网页URL不固定,能通过后台与用户交互
  • 在动态网页网址中有一个标志性的符号——“?”
  • 常用的语言有PHP、JSP、Python、Ruby等

1.9.1  动态网页的特点

交互性

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

自动更新

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

因时因人而变

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

扩展:目前常用的动态网页编程语言如下:

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协议

2.1 HTTP协议介绍

HTTP(超文本传输协议HyperText  Transfer   Protocol)协议是互联网上应用最为广泛的一种网络协议,是基于TCP设计的应用层传输协议,这个协议的目的是为了发布和接受web服务器上的HTML页面。

HTTP/HTTPS是应用层上的协议,建立在传输层TCP之上,客户端通过与服务端进行tcp连接(三次握手),之后发送http请求与接收http响应都是通过socket接口来调用tcp 协议实现。

HTTP 是一种无状态(stateless)的协议,它本身不会对发送过的请求和响应的通信状态进行持久化处理(处理,保存)。目的是为了保持HTTP协议的简单性,从而更够快速处理大量事务,提高效率。然而,在许多的应用场景中,我们需要保持用户登录的专题或记录用户购物车中的商品。所以必须引入一些计数来记录管理状态,例如:cookie

cookie 和session 都是为了实现HTTP短期的持久化(内存/缓存方式,查询快,效率比较高);

cookie 是缓存在用户端浏览器中的(默认缓存一天),当下次客户端通过同一个浏览器访问客户端的时候,会有限读取cookie中的缓存信息,项服务端进行请求,同时服务器收到客户端请求的时候,读取到cookie 文件,知道客户端之前找的是服务器A处理的任务,为了省事,省资源,干脆直接将请求交给服务器A处理。

两者对比:

cookie : 省服务器性能

session : 更安全

HTTP协议的版本

  • HTTP 0.9       已过时
  • HTTP 1.0       完善的请求,响应模型,并且协议补充完整,如:get 、post、head方法
  • HTTP 1.1       在1.0 基础上进行更新,新增无助请求方式:OPTIONS, PUT , DELETTE, TRACE ,  CONNECT
  • HTTP 2.0

2.2 HTTP方法

HTTP支持几种不同的请求命令,这些命令被称为HTTP方法(HTTP method)

每条HTTP请求报文都包含一个方法,告诉服务器要执行什么动作
获取一个Web页面
运行一个网关程序
删除一个文件等

HTTP协议有多种获得Web资源的方法

常用的方法:GET和POST

HTTP方法

描述

GET

请求获取Request-URI所标识的资源

PUT

请求服务器存储一个资源,并用Request-URI作为其标识

DELETE

请求服务器删除Request-URI所1标识的资源

POST

在Request-URI所标识的资源后附加新的数据

HEAD

请求获取由Request-URI所标识的资源的响应消息报头

1、GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样, 只是用来查询一 下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。
2、与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作–样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。
3、POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样, 会创建新的内容。几乎目前所有的提交操作都是用POST请求的。
4、DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作

2.3   GET和POST 比较

GET方法:从指定的服务器上获得数据

  • GET请求能被缓存
  • GET请求会保存在浏览器的浏览纪录里
  • GET请求有长度的限制
  • 主要用于获取数据
  • 查询的字符串会显示在URL中,不安全

POST方法:提交数据给指定服务器处理

  • POST请求不能被缓存
  • POST请求不会保存在浏览器的浏览纪录里
  • POST请求没有长度长度限制
  • 查询的字符串不会显示在URL中,比较安全

2.4 HTTP 状态码

HTTP状态码(HTTP Status Code) 是用以表示网页服务器HTTP 响应状态的3位数字代码,当浏览器请求某一URL时,服务器根据处理情况返回相应的处理状态。
通常正常的状态码为2xx,3xx (如200),如果出现异常会返回4xx,5xx (如404) 。

状态码首位

已定义范围

分类

1xx

100-101

信息提示

2xx

200-206

成功

3xx

300-305

重定向

4xx

400-415

客户端错误

5xx

500-505

服务器错误

生产环境常见的HTTP状态码

消息

描述

200 OK

请求成功

301  Moved Permantly

请求的永久页面跳转

403  Forbidden

禁止访问该页面

404  Not Found

服务器无法找到被请求的页面

500 Internal Server Error

内部服务器错误

502  Bad Gateway

无效网关

503 Service Unavailable

当前服务器不可用

504  Gateway Timeout

网关请求超时

2.5 HTTP请求流程分析

用户在浏览器输入URL访问时,发起HTTP请求报文,请求中包括请求行、请求头、请求体,服务器收到请求后返回响应报文,包括状态行、响应头、响应体。

2.5.1  请求报文

请求行:请求行由请求方法、URL 以及协议版本三部分组成。
请求头:请求头为请求报文添加了- -些附加信息,由“名/值"对组成,每行一-对,名和值之间使用冒号分隔。
空行:请求头部的最后会有一-个空行,表示请求头部结束,接下来为请求体,这- -行非常重要,必不可少。
请求体:请求体是请求提交的参数,GET方法已经在URL中指明了参数,所以提交时没有数据。POST 方法提交的参数在请求体中。

常用的请求头:

请求头

描述

Host

接受请求的服务器地址,可以是 IP:端口号,也可以是域名

User-Agent

发送请求的应用程序名称

Connection

指定与连接相关的属性,如 Connection:Keep-Alive

Accept-Charset

通知服务端可以发送的编码格式

Accept-Encoding

通知服务端可以发送的数据压缩格式

Accept-Language

通知服务端可以发送的语言

2.5.2  响应报文

状态行:状态行由协议版本,状态码,状态码描述三部分组成。
响应头:响应头与请求头部类似,为响应报文添加了–些附加信息。
空行:响应头部的最后会有一一个空行,表示响应头部结束。
响应体:服务器返回的相应HTML数据,浏览器对其解析后显示页面。

常见响应头:

响应头

描述

Server

服务器应用程序软件的名称和版本

Content-Type

响应正文的类型(是图片还是二进制字符串)

Content-Length

响应正文长度

Content-Charset

响应正文使用的编码

Content-Encoding

响应正文使用的数据压缩格式

Content-Language

响应正文使用的语言

2.6   HTTP请求流程

 HTTP请求是指 : 
客户端通过发送 HTTP 请求向服务器请求对资源的访问。 
它向服务器传递了一个数据块,也就是请求信息,
HTTP 请求由三部分组成:请求行、请求头和请求正文。

用户输入URL(地址链接)(http://www.baidu.com:80/tools.html)客户端获取到端口及主机名后,客户端利用DNS解析域名,首先客户端的浏览器会先找自身的缓存,如果有解析结束,如果没有客户端会去找host文件,如果host文件没有的话,客户端会去找本地的DNS缓存服务器,本地的DNS缓存服务器没有的话,缓存服务器会去找根域,根域没有,会返回一个.com.然后本地缓存服务器会去找顶级域,顶级域没有的话会返回baidu.com.,然后本地缓存服务器会去找二级域,二级域解析完后会返回客户端。

客户端解析到IP地址后会通过TCP的三次握手与服务器建立连接,首先客户端向服务器发送请求连接报文,SYN=1初始序号seq为x,这时客户端进入SYN-SENT状态,服务器确认请求报文ACK=1,SYN=1,确认序号ACK=X+1,服务器产生的初始序号seq=y,回复客户端确认连接,此时服务器进入SYN-RCVD状态,客户端接受后确认报文ACK=1,ACK=y+1,客户端又重组序号为x+1。TCP连接已经建立,客户端进入ESTABLISHED 状态,当服务器收到客户端的确认后,也会进入 ESTABLISHED 状态。客户端连接到IP地址,发送httpGET的请求,从服务器读取http响应。

之后断开连接时,需要通过TCP的四次挥手完成,客户端向服务器发送断开连接请求报文,FIN=1,ACK=1,序号为u,客户端处于FIN—WAIT-1(终止等待1)状态,服务器确认报文ACK=1,确认序号为ACK=u+1,服务器的序号为v,回复客户端,服务器服务端处于CLOSE—WAIT(关闭等待)状态,客户端接受确认报文ACK=1,确认序号ACK=v+1,客户端重组序号为seq=u+1,客户端处于FIN—WAIT-2(终止等待2)状态,然后服务器也想让客户端断开连接,就发送了断开连接请求,FIN=1,ACK=1,服务器重组序号为w,服务器服务端处于LAST—ACK(最后确认)状态,客户端接受后确认报文ACK=1.确认序号为ACK=w+1,客户端序号为u+1,客户端进入CLOSED(时间等待)状态,等待最长报文段寿命2*MSL,服务器确认后,立即进入关闭状态。然后进行关闭连接。

 三、总结

1.  域名空间结构

2. HTML 文档结构

3.  网页的基本标签

4. Web1.0 与Web 2.0 区别

5. Post 与Get 方法区别

6. HTTP协议报文格式

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值