您的位置:首页 > 理论基础 > 计算机网络

http协议web服务器

2015-10-31 11:44 435 查看
HTTP
HTTP:Hyertext Transfer Protocol:超文本传输协议(超链接)
超链接:在文档中实现跳转,(基于链接,能在文档中跳转)
Web:
http/0.9:早期:仅支持纯文本(超链接,ASCII,
HTML:编写超文本的语言,超文本标记语言(将分散在多个服务器中的资源整合成为一个页面并被浏览器使用)。

Browser:浏览器:客户端代理(火狐,IE)

URI:统一资源标识符----定义全局范围内,独立唯一资源的命名方式

统一:路径格式上的统一
URI的子对象-->URL:统一资源定位符 ----用来描述 在互联网上的资源的统一表现格式--获取这个资源的格式和路径

protocol://host:port/path/to/file
例如: http://www.magedu.com/download/linux.tar.gz
web资源(web对象):可以让客户端进行访问的文件 http://www.magedu.com/logo.gif 多个资源被整合为一个html文档
HTML语言:将分散在多个服务器上的资源整合成一个页面,并且能够在浏览器页面上进行显示!

资源获取的方式:http方法/1.0:PUT(从远程服务器获取一个文件到本地),POST(可以向服务器进行文件的上传),GET(从远程服务器获取文件在页面上进行显示),DELETE
http/1.0引进了MIME:多用途互联网邮件扩展

SMTP:简单邮件传输协议,早期:(传文本)

MIME:将非文本数据在传输前重新编码为文本格式,接收方能够用相反的方式将其重新还原为原来的格式,还能够调用相应的程序来打开此文件

协议首部:
image(图片)/jpeg
浏览器有插件可以解析对应MIME传来各种格式的数据,(fLush插件)
动态网页:activeX,在服务器端存储的文档非HTML格式,而是编程语言开发的脚本,脚本接受参数(客户端的地址和浏览器类型)之后在服务器上运行,完成之后,会生成HTML文档,并把这个生成的文档发给客户端,

Java,Applet,JRE(环境)
web:index.php
web-->procotol(协议)-->php(运行index.php)-->生成HTML文档再返回给web服务器-->再返回给客户端
流程:客户端进行客户请求的时候,不是纯文本文档,是index.PHP格式文档,此时web服务器会调用PHP解释器来运行index.php格式的文档,生成HTML格式的文档再返回给web服务器,再返回给客户端,再通过客户端浏览器的插件进行解析成该客户端请求格式的内容!!)

index.html:
一个网页 引用N个web对象:URL

动态网页:包含静态内容和动态内容

动态内容部分才需运行才能返回给客户端

http--1.0/1、添加了缓存:
2、引入了长连接的机制
IP:首部 source IP Destination IP
TCP:首部 source port Destination port
HTTP首部 GET 2.html(具体路径)
host:www.magedu.com

HTTP报文:请求报文,响应报文

请求报文语法:
<method-资源获取方法> <request-URL-请求的资源是什么> <version资源协议的版本号>
<headers--HTTP协议的首部>
空白行
<entity-body-->报文主体
服务器相应相应报文:

<version--协议><status--状态码> <reason-phrase--解释status的意义>
<headers--相应报文的格式>
<entity-body>
status ----- 状态代码:
1xx:纯信息
2xx:"成功"类的信息(202)
3xx:重定向类的信息(301--永久重定向,302--临时重定向,304--没有发生任何改变)
4xx:客户端错误类的信息(404--客户端错误)
5xx服务器端错误的信息 (501,502,503。。。。。。)

请求报文:
GET /HTTP/1.1
host:www.magedu.com
connection: keep-alive

相应报文:
/HTTP/1.1 200 OK
x-Powered-By:php/5.2.17

上面两个报文的第一行通常称作报文“起始行(start line)”:后面的标签格式的内容称作首部域(header field),每个首部域都由名称(name)和值(value)组成,中间用逗号分隔,另外,响应报文通常还有一个称为body 的信息主体,即响应给客户端的内容,

web服务器的主要操作
1、建立连接--接受或者拒绝可独断连接请求
2、接受请求--通过网络读取HTTP请求报文
3、处理请求--解析请求报文并做出相应的动作
4、访问资源--访问请求报文中相关的资源
5、构建相应--使用正确的首部生成HTTP相应报文
6、发送相应--向客户端发送生成的相应报文
7、记录日志--当已经完成的HTTP事务记录进日志文件

C/S
C:Clinet Agentg (browser(浏览器),spider(搜索引擎))
S:Server

Client->request-server-->

标记用户资源@URL --报文请求格式
server-response->client

获取资源的方法 @GET ,HEAD POST PUT ,DELETE,TRACE,OPITIONS, connection.
协议首部
Name:Value
host:www.magedu.com
connection:keep-alive

server 响应模型,

1单进程,单线程
2单进程,多线程
3多进程 ,单线程
4多进程,多线程
httpd: 1、prefork 2、work 3、event
客户端浏览器Client:
1、IE
2、Firefox 火狐

3、chrome 谷歌

4、Opera
5、Safari
服务器端软件 Server:

1、Apache-->httpd

2、nginx
3、lighttpd 德国研发的一个开源软件
4、thttpd 一个嵌入式的web服务器
应用程序服务器:
1、IIs ()
2、tomcat(apache,JSP,open source)
3、websphere(IBM,JSP,commodity)
4、weblogic(Oracle,JSP,commodity)
5、JBOSS(RedHat)重新封装的一个tomcat

www.netcraft.com 最近全球互联网上web服务器各产品的比例。
apache:
软件基金会:
FSF:GUN,GPL
ASF:apache software Fundation
web:httpd
1、Hadoop提供并行处理环境,提供高性能框架
2、tomcat:作为JSP实现规范和参照的应用程序
apahce基金会的主要项目访问路径 web:http://httpd.apache.org
httpd服务器软件:
web server,open Source
各种版本:2.2 2.4 2.0 1.3
httpd具有的特性:
1、事先创建进程----web相应用户请求的时候,已经启动进程,空闲状态,如有请求,即刻可有用
2、按需维持适当的进程----如有很大的访问请求,如完成请求,会适当关闭一些空闲的进程
3、模块设计,核心比较小,各种功能都模块添加(包括php)
------支持运行时配置,支持单独编译模块
4、支持多种方式的虚拟主机配置---
虚拟主机: 物理服务器只有一个,web程序也只有一个,根据用户不同的请求,但是可以有多个不同的站点(scoret:IP.port)
虚拟主机的类型: 1.基于IP的虚拟主机
2.基于端口的虚拟主机
3.基于域名的虚拟主机------

支持https协议 -----通过一个模块方式mod_ssl
支持用户认证---
支持基于IP或主机名的ACL(访问控制)
支持每目录的访问控制(访问特殊目录的时候需要账号和密码)
支持URL重写,/image/a.jpeg/bbs/images/abc.jpeg

dhcp的安装-----3

rpm包的安装:
源码编译安装
httpd:
/usr/sbin/httpd(多道处理模块--MPM:prefork)
httpd:root,root(master process--主导进程)
httpd:apache,apache(worker process--工作进程)
服务脚本---/etc/rc.d/init.d/httpd

port:(80/tcp),(ssl:443/tcp)
etc/httpd:工作根目录,相当于程序安装目录
/etc/httpd/conf:配置文件目录

主配置文件:httpd.conf
/etc/httpd/conf.d/*.conf 也是配置文件目录
/etc/httpd/modules:模块目录
/etc/httpd/log-->/var/log/httpd:日志目录
日志文件有两类:访问日志access_log,错误日志:err_log
客户端请求服务器的页面目录: /var/www/

---html
---cgi-bin 动态页面所提供的路径
cgi:common gateway Interface---通用网管接口--就是web服务器与应用程序交流的一种协议
----其实就是跟web服务器能够让额外的应用程序通信的一种机制,能够让web启动程序来处理动态内容。
Client -->httpd(index.cgi-动态内容)-->spawn Process(发起这个程序进程)(index.cgi)-->httpd-->client
cgi: perl,python,java,(servlet,jsp),php
web静态服务器与动态程序服务器通信称为:fastcgi
-----当用户发送请求当中,有静态和动态请求,静态请求,web服务器可以单独处理相应给用户,动态内容可以通过网络
发给动态程序服务器进行处理,从而可以把静态和动态分离处理再返回给客户,这就是静态和动态分层次处理,
程序:有指令和数据组成
专业管理数据服务的服务器是数据库服务器!

httpd:
指令 参数 directive value

指令不区分大小写,value则根据需要区分大小写!

MPM:Multi Path Modules 多道处理模块
1、mpm_winnet win上专用的线程处理机制
2、prefork 在Linux上预先生成进程 -----------一个请求用一个进程相应
3、worker 基于线程工作,一个进程相应多个用户请求,但是是多个线程来处理请求------一个请求用一个线程相应
4、event 基于事件的请求,一个进程处理多个用户请求-----一个进程处理多个请求

虚拟主机:

apache服务:
中心主机:

虚拟主机:
1、IP虚拟

2、端口虚拟
3、域名虚拟
一个站点需要哪些东西(独立的资源):
1、不同的目录--Documentroot
2、servername 主机名

虚拟主机与中心主机不能同时使用,得先取消中心主机,注释中心主机的DocumentRoot即可。
虚拟主机的定义:
< virtuahost host>
</virtuahost>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息