Web基础
DNS
- 分布式:将一个硬盘为9G,分为3个3G去提高利用率与时间
- 层次性:DNS解析过程
域名映射
- 映射完之后,
- 访问A机器时候就相当于访问B机器
- 访问A机器就会跳转到B机器
- 所以黑客攻击时候,会攻击A机器,就算是访问B机器,但是访问的文件都在B机
网页的组成
网页
- 纯文本格式
- 编写语言:HTML
- 在用户的浏览器中被“翻译”成网页形式显示出来
网站
有一个一个页面构成的,十多个网页的结合体
主页
打开网站后出现的第一个网页称为网站主页(或首页)
域名
浏览网页时输入的网址
HTTP/HTTPS
用来纯属网页的通信协议(是否加密),是一种通讯/交互的标准/规范
URL
是一种万维网寻址系统
HTML
用来编写网页的超文本标记语言
超链接
超链接是将网站中不同网页连接起来的功能
发布
将制作好的网页上传到服务器供用户访问的过程
HTML
- HTML超文本标记语言
- 网页的“源码”
- 浏览器:“解释和执行”HTML源码的工具
专业术语:
- 白屏(相当于图形化界面的点点)
- 黑屏或者字符(相当于虚拟机外连接的终端)
HTML文档结构
- HTML网页
- 头部部分
- 标题部分
- 主体部分
- 网页内容,包括文本、图像等
http的文件在/var/www/html,可以在/etc/httpd/conf/conf.d里面找到
示例:
先安装httpd服务,并开启
进入/var/www/html目录里面,此目录为http目录的家目录,访问的时候,就是从这个目录里面找文件。
编辑一个文件必须是要以 .html 结尾
- index.html文件名字,一般作为主页使用
- 不使用index.html就需要在ip地址前面加上绝对路径
- 编辑完成,给编辑的.html文件一个执行的权限。
- 再打开浏览器,输入本机的ip地址,就可以看见,编辑的内容
web版本
-
Web1.0
- 以编辑为特征,用户编辑处理后,然后用户阅读网站提供的内容
- 过程是网站到用户只能单向
Web2.0
- 注重用户的交互作用,用户是网站内容的消费者,也是制造者
- 加强了网站与用户之间的互动,实现了网站与用户的双向交流
Web2.0特征
用户分享、以兴趣为聚合点的社群、开放的平台、活跃的用户
静态网页
- 静态网页是标准的html文件
- 扩展名是.htm、.html
- 是网站建设的基础,早起网站一般都有静态网页制作
- 没有后台数据库、不含程序和不可交互的网页
- 相对更新
特点1
- 每个静态网页都有一个固定的URL,且URL以.htm、.html、.shtml等常见形式为后缀,不含有“?”
- 网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态页面都会绑定在网站服务器上
- 静态网页的内容相对稳定,容易被搜索引擎检索
特点2
- 静态网页没有数据库的支持,网站制作和维护方面工作量很大
- 交互性很差,功能方面有较大的限制
- 静态网页浏览速度快于动态页面
动态页面
- 网页的URL不固定,能够通过后台与用户交互
- 有一个标志性的符号“?”
- 常用语言:PHP、JSP、Python、Ruby等
- Python语言很重要
特点
- 交互性
- 自动更新
- 因时因人而变:随时更新
HTTP协议
版本:
- HTTP 0.9
- HTTP 1.0
- HTTP 1.1
- HTTP 1.2
其中HTTP 1.1版本用的最多
HTTP/HTTPS 在应用层,建立在传输层TCP之上,客户端通过与服务器进行TCP连接(三次握手), 之后发送HTTP请求与接受HTTP响应都是通过访问Socket接口来调用TCP协议实现
cookie缓存
- cookie作为缓存
- session也作为缓存
- 访问一个软件,缓存最多可以保持一天
缓存的用意:
可以节省系统层次CPU的资源
cookie与session对比:
cookie更省事
HTTP1.0与1.1的区别
- 缓存处理
- 3.0里面有缓存功能
- 带宽优化及网络连接的使用
- 1.0有带宽浪费的现象
- 1.1则只请求资源的某个部分,返回码是206,方便开发者自由的选择以便于充分利用带宽和连接
- 错误通知的管理
- 1.1中新增24个错误状态响应码,如409和410
- 409表示请求的资源与资源的当前状态发生冲突
- 410表示服务器上的某个资源被永久性的删除
- Host头处理
- 1.0中认为每台服务器绑定一个唯一的IP地址,请求消息中 RZ没有主机名
- 1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有host头域会报告一个错误(400)
- 长连接
- 1.1可以访问长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,
- 减少了建立的延迟,
- 1.0不能长连接,并且每次请求处理都需要创建连接
HTTP请求格式
1,GET方式 2,请求头(描述信息/标准化信息)
GET和POST区别
- 区别一:语义上的区别
Get向服务器请求数据,依照HTTP协议,get使用来请求数据
Post向服务器发数据,依照HTTP协议,Post的语义是向服务器添加数据,也就是说按照Post的语义,该操作是会修改服务器上的数据
- 区别二:服务器请求的区别
Get请求是可以被缓存
访问百度,就是使用Get访问,访问后的内容会被缓存在浏览器中,短时间再次访问,其实是被拿到浏览器的缓存中,所以可以立即打开 另外Get请求只能接受ASCII码的回复
Post请求是不可以被缓存的。
对于Post方式提交的表单,刷新页面浏览器会弹出提示框“是否重新提交表单”, Post可以接受二进制等各种数据形式,所以上传文件一般用Post请求
- 区别三:参数放在请求头和请求体的差别
get请求通常没有请求体(可以有程序员心情改变),在TCP传输中只需要传输一次(而不是一个包), 所以Get请求效率相对高
Post请求将数据放在请求体中,实际传输中,会先传输请求头,再传输请求体,分两次传输,不是两个包
Post请求头会比Get更小(一般不带参数),请求头更容易在一个TCP包中完成传输,请求头中还有Content-Length的表示,可以更好的保证Http包的完整性
GET方法
- 从指定的服务器上获得数据
- GET请求能被缓存
- GET请求会被保存在浏览器的浏览记录李(cookie)
- GET请求有长度的限制
- 主要用于获取数据
- 查询的字符串会显示在URL中,不安全
POST方法
- 提交数据给指定服务器处理
- POST请求不能被缓存
- POST请求不会保存在浏览器的浏览记录里
- POST请求没有长度限制
- 查询的字符串不会显示在URL中,比较安全
HTTP状态码;
当时用浏览器访问某一个URL,会根据处理情况返回响应的处理状态 通常正常的状态码为2xx,3xx(如200)
| 状态码首位 | 已定义范围 | 分类 |
|---|---|---|
| 1xx | 100-101 | 信息提示 |
| 2xx | 200-206 | 成功 |
| 3xx | 300-305 | 重定向 |
| 4xx | 400-415 | 客户端错误 |
| 5xx | 500-505 | 服务端错误 |
生产环境常见的HTTP状态码
| 消息 | 描述 | 含义 |
|---|---|---|
| 200 | ok | 请求成功(后面是对GET和POST请求的应答文档) |
| 301 | Moved Permanently | 请求的永久页面跳转 |
| 403 | Forbidden | 禁止访问该页面 |
| 404 | Not Found | 服务器无法找到被请求的页面 |
| 500 | Internal Server Error | 内部服务器错误 |
| 502 | Bad Gateway | 无效网关 |
| 503 | Service Unavailable | 当前服务不可用 |
| 504 | Gateway Timeout | 网关请求超时 |
HTTP请求百度的过程
上述过程就是两次HTTP请求,其详细过程如下:
- 客户端想服务器发起HTTPS的请求,连接到服务器的443端口;
- 服务器将非对称加密的公钥传递给客户端,以证书的形式回传到客户端
- 服务器接受到该公钥进行验证,就是验证2中证书,如果有问题,则HTTPS请求无法继续;如果没有问题,则上述公钥是合格的。(第一次HTTP请求)客户端这个时候随机生成一个私钥,成为client key,客户端私钥,用于对称加密数据的。使用前面的公钥对client key进行非对称加密;
- 进行二次HTTP请求,将加密之后的client key传递给服务器;
- 服务器使用私钥进行解密,得到client key,使用client key对数据进行对称加密
- 将对称加密的数据传递给客户端,客户端使用非对称解密,得到服务器发送的数据,完成第二次HTTP请求。