Web基础和HTTP协议

133 阅读8分钟

Web基础

DNS

  • 分布式:将一个硬盘为9G,分为3个3G去提高利用率与时间
  • 层次性:DNS解析过程

域名映射

  1. 映射完之后,
  2. 访问A机器时候就相当于访问B机器
  3. 访问A机器就会跳转到B机器
  4. 所以黑客攻击时候,会攻击A机器,就算是访问B机器,但是访问的文件都在B机

网页的组成

网页

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

网站

有一个一个页面构成的,十多个网页的结合体

主页

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

域名

浏览网页时输入的网址

HTTP/HTTPS

用来纯属网页的通信协议(是否加密),是一种通讯/交互的标准/规范

URL

是一种万维网寻址系统

HTML

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

超链接

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

发布

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

HTML

  • HTML超文本标记语言
  • 网页的“源码”
  • 浏览器:“解释和执行”HTML源码的工具

专业术语:

  • 白屏(相当于图形化界面的点点)
  • 黑屏或者字符(相当于虚拟机外连接的终端)

HTML文档结构

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

http的文件在/var/www/html,可以在/etc/httpd/conf/conf.d里面找到

示例:

先安装httpd服务,并开启

image.png

image.png 进入/var/www/html目录里面,此目录为http目录的家目录,访问的时候,就是从这个目录里面找文件。

编辑一个文件必须是要以 .html 结尾

  • index.html文件名字,一般作为主页使用
  • 不使用index.html就需要在ip地址前面加上绝对路径
  • 编辑完成,给编辑的.html文件一个执行的权限。

image.png

image.png

  • 再打开浏览器,输入本机的ip地址,就可以看见,编辑的内容

image.png

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的区别

  1. 缓存处理
  • 3.0里面有缓存功能
  1. 带宽优化及网络连接的使用
  • 1.0有带宽浪费的现象
  • 1.1则只请求资源的某个部分,返回码是206,方便开发者自由的选择以便于充分利用带宽和连接
  1. 错误通知的管理
  • 1.1中新增24个错误状态响应码,如409和410
  • 409表示请求的资源与资源的当前状态发生冲突
  • 410表示服务器上的某个资源被永久性的删除
  1. Host头处理
  • 1.0中认为每台服务器绑定一个唯一的IP地址,请求消息中 RZ没有主机名
  • 1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有host头域会报告一个错误(400)
  1. 长连接
  • 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)

状态码首位已定义范围分类
1xx100-101信息提示
2xx200-206成功
3xx300-305重定向
4xx400-415客户端错误
5xx500-505服务端错误

生产环境常见的HTTP状态码

消息描述含义
200ok请求成功(后面是对GET和POST请求的应答文档)
301Moved Permanently请求的永久页面跳转
403Forbidden禁止访问该页面
404Not Found服务器无法找到被请求的页面
500Internal Server Error内部服务器错误
502Bad Gateway无效网关
503Service Unavailable当前服务不可用
504Gateway Timeout网关请求超时

HTTP请求百度的过程

image.png 上述过程就是两次HTTP请求,其详细过程如下:

  1. 客户端想服务器发起HTTPS的请求,连接到服务器的443端口;
  2. 服务器将非对称加密的公钥传递给客户端,以证书的形式回传到客户端
  3. 服务器接受到该公钥进行验证,就是验证2中证书,如果有问题,则HTTPS请求无法继续;如果没有问题,则上述公钥是合格的。(第一次HTTP请求)客户端这个时候随机生成一个私钥,成为client key,客户端私钥,用于对称加密数据的。使用前面的公钥对client key进行非对称加密;
  4. 进行二次HTTP请求,将加密之后的client key传递给服务器;
  5. 服务器使用私钥进行解密,得到client key,使用client key对数据进行对称加密
  6. 将对称加密的数据传递给客户端,客户端使用非对称解密,得到服务器发送的数据,完成第二次HTTP请求。