> 文章列表 > Web与HTTP协议

Web与HTTP协议

Web与HTTP协议

Web与HTTP协议

域名的概念

  • IP地址不易记忆

早期使用Hosts文件解析域名

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

DNS(Domain Name System 域名系统)

  • 分布式
  • 层次性

域名空间结构

主机名.子域[.二级域].顶级域.(.根域)

  • 根域
  • 顶级域
  • 组织域
  • 国家/地区域名
  • 二级域名
  • FQDN=主机名.DNS后缀(完整合格域名)

递归:先找本地域名缓存,如果有的话,直接返回缓存记录;如果没有则转发给根域服务器解析,根域服务器根据顶级域.cn转发给顶级域解析,顶级域转发给二级域.com,二级域服务器转发给子域服务器(三级),子域根据主机名找到解析,向上一层层返回,最后返回给客户端。

迭代:先找本地解析,本地解析会回复去找根域服务器,根域服务器让找顶级服务器,顶级服务器让找二级...直到子域服务器,最终获得解析。

网页

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

网站:多个网页的结合体

主页:打开网站后出现的第一个网页

域名:浏览网页时输入的网址

HTTP:用来传输网页的通信协议(传输层tcp协议,80端口)

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

URI是URL的一部分

HTML叫做超文本标记语言,是一种规范也是一种标准,通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过文本文件中添加标记符,可以告诉浏览器如何显示器中的内容。

html的基本标签

语法规则:

HTML采用双标记符的形式,前后标记符相对应,分别表示标记开始和结束,标记符中间的内容被标签描述。前标记符由“<xxx>”表示,结尾标“</xxx>”

HTML最外层由<html></html>表示,说明该文件是用HTML语言描述的。里面包括head body

结构如下:

<html>

<head>xxxxxx</head>

<body>网页显示的内容

</body>

</html>

头标签中常用标签:

<title>

<base>

<link>

<meta>

<script>

<style>

内容标签中常用标签:

<table> 定义一个表格

<tr> 定义表格中的一行

<td> 定义表格某一行的一列

<img> 定义一个图像

<a> 定义一个超链接

<p> 定义了一行

<br> 换行

<font> 定义了字体

<h1> 定义了字体大小

静态网页与动态网页

静态网页

在网站设计中,纯粹HTML格式的网页通常被称为“静态网页”,静态网页的标准时HTML文件,他的文件扩展名是:htm、html。静态网页是网站建设的基础,早期的网站一般都是有静态网页制作的。有些动图,也是静态页面中的一些动态元素。

动态页面

是指跟静态页面相对的一种网页编程技术。动态页面,页面代码虽然没有变,但是现实的内容会随着时间、环境或者数据库操作的结果而发生改变的。

后缀通常:aspx jsp perl cgi php等。凡是结合了HTML以外的高级程序设计语言和数据库技术进行的网页编程技术生成的网页都是动态网页。动态网页网址中有一个标志性的符号-----“?”

HTTP协议概述:

HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求包头包含请求的方法、URL、协议版本,以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为相应,相应的内容包括消息协议的版本,成功或错误编码加上服务器信息、实体元信息以及可能的实体内容。

HTTP版本向下兼容

现在用的比较多的HTTP1.0 1.1 2.0

HTTP1.0 和 2.0区别:

HTTP/1.0 只能在一个tcp连接完成一次http请求和响应(http响应后立即关闭tcp连接);添加了http头部信息和协议版本号;纯文本传输。

HTTP/2.0 支持持久连接(可以在一个TCP中响应多个连接);支持完全多路复用(可以不按照顺序一一对应,同时发送多次http请求和响应);支持网页头部压缩功能;支持服务端主动推送功能;二进制传输。

HTTP/1.1 支持连接保持;支持管道机制(同时发送多个http请求)

 HTTP方法:

HTTP支持几种不同的强求命令,这些命令被称为HTTP方法:GET 、PUT 、DELETE 、POST 、HEAD

 1、GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,影响资源内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。

2、与GET不同的是,PUT请求事向服务器端发送数据,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等。

3、POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像是数据库的insert操作一样,会创建新的内容。机会目前所有的提交操作都是用POST请求。

4、DELETE请求就是用来删除某一个资源的,该请求就像数据库的delete操作。

GET:从指定的服务器上获得数据,请求能被缓存,请求会被保存在浏览器的浏览记录里,请求有长度限制。

只要用于获取数据,查询的字符串会显示在URL后缀中不安全。

POST:提交数据给指定服务器处理,请求不能被缓存,也不会被保存在浏览器的记录里,没有长度限制。

HTTP状态码

通常正常的状态码为2xx ,3xx

如果出现异常会返回4xx,5xx

1xx 100-101 信息提示

2xx 200-206 成功

3xx 300-305 重定向

4xx 400-415 客户端错误

5xx 500-505 服务器错误

200 一切正常

301 永久重定向

302 临时重定向

400 请求错误(客户端发送的请求有语法错误)

401 用户名或密码错误

403 被禁止访问(客户端IP被拉黑)

404 请求的文件不存在

414 请求的URI头部过长

500 服务器内部错误,服务器端程序存在错误

502 无效网关,代理服务器收到了来自上游服务器的
无效响应

503 当前服务不可用(超载或者系统维护)

504 网关请求超时(充当网关或者代理的服务器无法
在规定时间内收到来自上有服务器的响应)

请求报文

请求行:请求方法、URL、协议版本

请求头:为请求报文添加附加信息,由“名/值”对组成,冒号分隔。

请求体:请求提交的参数

空行:请求头部的最后会有一个空行,表示请求头部结束,接下来为请求体。

常用的请求头:

Host 接受请求的服务器地址

User-Agent 发送请求的应用程序名称

Connection 指定与连接相关的属性

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

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

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

响应报文:

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

常见响应头:
响应头                描述
Server                服务器应用程序软件的名称和版本
Content-Type        响应正文的类型(是图片还是二进制字符串)
Content-Length        响应正文长度
Content-Charset     响应正文使用的编码
Content-Encoding    响应正文使用的数据压缩格式
Content-Language    响应正文使用的语言