Chinaunix首页 | 论坛 | 博客
  • 博客访问: 114830
  • 博文数量: 42
  • 博客积分: 932
  • 博客等级: 准尉
  • 技术积分: 470
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-18 22:33
文章分类
文章存档

2011年(42)

分类: LINUX

2011-08-12 22:18:46

   今天开始学习网络部分关于web方面的知识!
基础知TCP/IP 7层模型(http协议只包含5层除去会话层和表示层)
应用层
传输层
网络层
数据链路层
(会话层)
(表示层) 能决定数据的传输形式(加密解密)
物理层识:
 
URL 统一资源定位符
URI 统一资源标志符
对于web服务器来说核心的协议有俩个http协议和https这是俩种不同的协议
https协议需要到ca申请证书,一般免费证书很少,需要交费。
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
http协议是基于tcp的协议,这是因为http传输数据的时候是有序的可靠的!
http中有多个web object 每个object有多个网页元素构成每个object是独立传输的因此要基于tcp防止数据丢失!
http常用的版本1.0版本 非持久连接
              1.1版本 持久连接
tcp每次建立连接的时候要建立3次握手!持久连接只在第一个object传输的时候建立3次握手而非持久连接每个object都要进行3次握手!
HTTP/1.1说明:HTTP/1.1(超文本链接协议1.1版本)是HTTP协议的最新版本。HTTP协议是运行在TCP/IP协议组上的万维网应用协议。HTTP/1.1提供了比前一版本更快的访问网站速度,同时针对网络资源进行优化,降低了网络流量。HTTP/1.1由互联网工程任务组开发。现在大部分服务器和网站都支持HTTP/1.1协议。
下面是一些HTTP/1.1能够加快网页访问速度的原因。
(1)以往的HTTP协议每次访问应用程序时,都会进行创立及撤销链接的步骤。HTTP/1.1在首次访问网站时建立持久链接,将多个请求批量或通过管道发送到输出缓冲区内。TCP协议允许将多个来自IP层的数据包请求或回复命令集中到一个TCP段中。因此减少了反复建立链接所需的时间,同时由于没有了不必要的申请链接数据包,也降低了网络流量。由于将命令通过管道输送,大大提高了TCP段的效率。总之,网络流量降低了,性能提高了。
(2)当支持HTTP/1.1的浏览器发现网页是未压缩网页时,会将网页进行压缩后进行传输,这样可以节约更多流量空间,不过由于网页中的图片文件一般都已经被压缩过,因此,这种压缩对图片多的网页不太有效。除持久链接及其他改进后的性能之外,HTTP/1.1还允许多个域名共享同一IP地址。这简化了网络服务器对虚拟主机(下面会涉及这部分内容)数目管理的处理量。
常见的web服务器软件:
Apache,IIS,Sun One
常见的能够实现访问web服务的浏览器
IE,firefox,chrome,safari,opera(注:国内的大多都是基于IE内核的太多了不说了)
web服务诞生于1989年3月,1993年左右http协议正式解决了传输图像等多媒体信息并修正了一些字符显示中的错误使web服务迅猛发展!下面就说说这个蓬勃发展的事物吧!
http协议本身是C/S架构的即客户端/服务器的架构而建立在此之上的服务是B/S架构的!这也是现在我们都理解为B/S的原因。
数据交换的过程,由客户端对服务器监听的某个端口发起请求,服务器接受到请求后将请求的资源响应给客户端!而在此过程中服务器通常会响应给客户端一个状态码!用来表示资源的信息等!
web服务器的响应的状态码有5大类:以1 2 3 4 5 开头的状态码
1 普通信息
2 正确信息
3 资源重定向:301(永久重定向) ,302(临时重定向)
4 客户端错误
5 服务器端发生错误
在linux中可以使用命令 curl 来查看服务器响应的状态码
                      -I 的选项用于只显示http协议的头部信息 显示服务器的版本 状态码
连接状态 等信息
HTTP/1.1 协议中共定义了8种动作(方法)来表明Request-URL指定的资源的不同操作方式。
 OPTIONS: 返回服务器针对特定资源所支持的HTTP请求方法,也可以利用想Web服务器发送“*”的请求来测试服务器的功能性
 HEAD:向服务器所要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
 GET:向特定的资源发出请求
 POST:想指定资源提交数据进行处理请求(比如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源建立或已有资源的修改
 PUT: 向指定资源位置上传其最新内容(一般不允许客户端项服务器上传内容)
 DELETE:删除指定资源
 TRACE :回显服务器收到的请求
 CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
最常用的 HEAD GET POST
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL。那么什么是SSL呢?Secure Sockets Layer 安全套接层。https实际上就是在http协议的应用层和传输层之间添加了半个层的SSL安全套接层
用于实现web传输的数据加密。
客户端在使用HTTPS方式与Web服务器通信时的步骤
(1)客户端使用https的URL访问Web服务器,要求与Web服务器建立SSL俩接
 (2)Web服务器收到客户端请求后,会将网站的证书信息(包含公钥)传送一份给客户端
 (3)客户端的刘拉起与Web服务器开始协商SSL链接的安全等级,也就是加密的等级
 (4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站
 (5)Web服务器利用自己的撕咬解密出会话密钥
 (6)Web服务器利用会话密钥加密与客户端之间通信

现在常见能够提供web服务器的常见软件有:
httpd(我们俗称的Apache)这只是Apache的一个项目!最早是被戏称为a patchy server一个充满了补丁的服务。而Apache成长为了一个基金会旗下维护者众多的开源软件!
(e)Nginx 俄罗斯一牛人发明的 强大的反向代理 静态页面的解析速度无与伦比 
lighttpd 德国公司研发的轻量级的web服务器软件 强大的反向代理与Nglinx相似 不过Nglinx现在发展很快给大家发张图看看吧!
最后一个还有个Sun One
 
从图中可以看出Apache的霸主地位啊!35%的市场份额就可以称之为自然垄断,而2011年8月Apache的市场份额占有63%!然而可以从图中看出Nginx不的不说是新贵 ,从2007年诞生至今已占有10%的市场份额!
除此之外还有一些应用程序服务器软件简单说下吧!
Websphere  40%的市场份额 IBM公司研发 巨牛无比的软件啊!
Weblogic   早期属于BEA公司 被Orecle以83亿收购 30%的市场份额
AppServer  Orecle自己的 10%的市场份额加上收购的Weblogic可以与IBM相抗衡了!
JBoss      redhat 的开源服务软件 新版问题多多 虽然开源也不被看好!
Tomcat     轻量级完整的服务器应用软件 属于 Apache (中小型企业应用广泛)
Resin      轻量级的开源服务器软件
 
下面说说Web服务器如何响应客户端请求的:
一般是
客户端发送http请求(tcp 80)到服务器端,tcp连接建立之后,通过http的动作get获得页面信息
这个过程中服务器会在内存中开启一个独立的进程来响应一个客户端的请求,这就意味着每个客户端的请求都会在服务器内存中开启一个进程,这就势必会占用大量的内存空间!
主要解释下Apache的工作原理!
apache会随时保持一部分空闲进程来等待客户端发送请求实现快速响应。
apache还有俩种多到处理模式!
prefork模式 一个请求产生一个独立进程 内存占用率大 但是稳定即一个进程崩溃不会影响其他进程的正常访问!服务器的稳定性高于一切这是apache高居不下的原因!
work模式 服务器开启后会开启俩个work进程每个客户端的请求会被分配到其中一个产生一个线程(可以共享资源) LINUX一般不使用work方式(LINUX的线程是模拟出来的而windows对线程支持的很好)。
以上都说的是静态页面的传输!现在纯静服务器端的动态技术:该技术指在服务器端发生的动态改变,改变后的结果仍然以HTML形式发回服务器,常见的Web数据库查询都要用到服务器端动态技术。常用的技术有:CGI(通用网关接口)、ISAPI(Internet服务器应用程序接口)、服务器端脚本。
态页面已经很少了!然而动态页面是怎么样产生的呢?
动态:是根据客户端请求来源的不同返回不同的页面的方式(不要理解为会动的页面就是动态页面..)
服务器端的动态技术:该技术指在服务器端发生的动态改变,改变后的结果仍然以HTML形式发回服务器,常见的Web数据库查询都要用到服务器端动态技术。常用的技术有:CGI(通用网关接口)、ISAPI(Internet服务器应用程序接口)、服务器端脚本。
最早的动态页面都是基于CGI实现的,发展到后来Apache 上的2次开发 新增一个解析动态页面的模块 以模块的方式来实现动态页面解析,再后来fastcgi 自己作为一个独立的服务器软件 监听在特定的端口上来处理请求!
接下来的内容都是围绕一个开源的黄金组合AMP即:Apache,MySQL,PHP展开的,在接下来的博客中将对这几个软件的安装与配置进行介绍!写在一起可能比较乱所以打算分开写!
 
 
阅读(1147) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~