HTTP协议与apache
1. http相关概念
- 互联网:是网络的网络,是所有类型网络的母集
- 因特网:世界上最大的互联网网络。即因特网概念从属于互联网概念。习惯上,大家把连接在因特网上的计算机都成为主机。
- 万维网:WWW(world wide web)万维网并非某种特殊的计算机网络,是一个大规模的、联机式的信息贮藏库,使用链接的方法能非常方便地从因特网上的一个站点访问另一个站点(超链技术),具有提供分布式服务的特点。万维网是一个分布式的超媒体系统,是超文本系统的扩充,基于B/S架构实现
- 因特网就是最大的互联网,以太网是局域网
2. http相关技术
2.1 web开发语言
WEB前端开发语言
- html
Hyper Text Markup Language 超文本标记语言,编程语言,主要负责实现页面的结构 - css
Cascading Style Sheet 层叠样式表, 定义了如何显示(装扮) HTML 元素 - javascript
javascript,实现网页的动画效果,但实属于静态资源
Java和javascript的关系: 周杰和周杰伦的关系
2.2 MIME
Multipurpose Internet Mail Extensions 多用途互联网邮件扩展
文件 /etc/mime.types ,来自于mailcap包
MIME格式:type/subtype 主要类型/次要类型
有该文件类型就打开,没有文件就是下载
2.3 URI(i)统一资源标识
- URI(Uniform Resource Identifier)统一资源标识,分为URN和URL
- URN(Uniform Resource Naming):统一资源命名:描述资源名字,没有明确该资源在哪里
- URL(Uniform Resorce Locator):统一资源定位符,描述某服务器某特定资源位置
2.4 HTTP工作机制
静态资源:服务器上什么样,传给用户什么样(如图片)
- 无需服务端做出额外处理,服务器端和客户端的文件内容相同
常见文件后缀:.html, .txt, .jpg, .js, .css, .mp3, .avi
动态资源:经过服务器加工处理,传给用户
- 服务端执行程序,返回执行的结果,服务器端和客户端的文件内容不相同
常见文件后缀:.php, .jsp ,.asp
提高HTTP连接性能
- 并行连接:通过多条TCP连接发起并发的HTTP请求
- 持久连接:keep-alive,重用TCP连接,以消除连接和关闭的时延,以事务个数和时间来决定是否关闭连接
- 管道化连接:通过共享TCP连接,发起并发的HTTP请求
- 复用的连接:交替传送请求和响应报文(实验阶段)
长连接 一次三次握手,多次下载
2.5 HTTP协议版本
http 0.9、1.0、1.1区别
-
http/0.9
功能简陋,只有一个命令GET。 -
http/1.0
除了有GET,还引入了POST命令和HEAD命令 -
http/1.1
引入了持久连接(persistent connection),即TCP连接默认不关闭,可以被多个请求复用
2.6 HTTP请求访问的完整过程
建立连接
接收请求
处理请求
访问资源
构建响应报文
发送响应报文
记录日志
2.7 状态码
http协议状态码分类
状态码头部 | 状态码范围 | 状态码含义 |
---|---|---|
1xx | 100-101 | 信息提示 |
2xx | 200-206 | 成功 |
3xx | 300-307 | 重定向 |
4xx | 400-415 | 错误类信息,客户端错误 |
5xx | 500-505 | 错误类信息,服务器端错误 |
http协议常用的状态码
状态码 | 状态码含义 |
---|---|
200 | 成功,请求数据通过响应报文的entity-body部分发送;OK |
301 | 请求的URL指向的资源已经被删除;但在响应报文中通过首部Location指明了资源现在所处的新位置;Moved Permanently |
302 | 响应报文Location指明资源临时新位置 Moved Temporarily |
304 | 客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端;Not Modified |
307 | 浏览器内部重定向 |
401 | 需要输入账号和密码认证方能访问资源;Unauthorized |
403 | 请求被禁止;Forbidden |
404 | 服务器无法找到客户端请求的资源;Not Found |
500 | 服务器内部错误;Internal Server Error,比如:cgi程序没有执行权限 |
502 | 代理服务器从后端服务器收到了一条伪响应,如无法连接到网关;Bad Gateway |
503 | 服务不可用,临时服务器维护或过载,服务器无法处理请求,比如:php服务停止,无法处理php程序 |
504 | 网关超时 |
3. Cookie和session
Cookie主要用于以下三个方面:
- 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
- 个性化设置(如用户自定义设置、主题等)
- 浏览器行为跟踪(如跟踪分析用户行为等)
cookie和session的相同和不同:
- cookie通常是在服务器生成,但也可以在客户端生成,session是在服务器端生成的
- session 将数据信息保存在服务器端,可以是内存,文件,数据库等多种形式,cookie 将数据保存在客户端的内存或文件中
- 单个cookie保存的数据不能超过4K,每个站点cookie个数有限制,比如IE8为50个、Firefox为50个、Opera为30个;session存储在服务器,没有容量限制
- cookie存放在用户本地,可以被轻松访问和修改,安全性不高;session存储于服务器,比较安全
- cookie有会话 cookie 和 持久 cookie,生命周期为浏览器会话期的会话cookie保存在缓存,关闭浏览器窗口就消失,持久cookie被保存在硬盘,知道超过设定的过期时间;随着服务端session存储压力增大,会根据需要定期清理session数据
- session中有众多数据,只将sessionID这一项可以通过cookie发送至客户端进行保留,客户端下次访问时,在请求报文中的cookie会自动携带sessionID,从而和服务器上的的session进行关联
cookie缺点:
-
使用cookie来传递信息,随着cookie个数的增多和访问量的增加,它占用的网络带宽也很大,试想假如cookie占用200字节,如果一天的PV有几个亿,那么它要占用多少带宽?
-
cookie并不安全,因为cookie是存放在客户端的,所以这些cookie可以被访问到,设置可以通过插件添加、修改cookie。所以从这个角度来说,我们要使用sesssion,session是将数据保存在服务端的,只是通过cookie传递一个sessionId而已,所以session更适合存储用户隐私和重要的数据
session 缺点:
-
不容易在多台服务器之间共享,可以使用session绑定,session复制,session共享解决
-
session存放在服务器中,所以session如果太多会非常消耗服务器的性能cookie和session各有优缺点,在大型互联网系统中,单独使用cookie和session都是不可行的
http是一个无状态协议,通过什么样的方式,让他保持状态?
使用cookie或者session技术