标签:internet 互联网 protocol 服务器 实验室
HTTP:HyperText Transfer Protocol,超文件传输协议
上世纪90年代初,诞生于量子实验室
http/09版本:仅支持纯文件(超连接),ASCII
HTML:编写超文本的语言 ,HyperText mark Language
URI:统一资源标识符,Uniform Resource Indentifier
URL:是URI的一个子集,Uniform resource locater
HTTP资源获取的方法:(method)
1、GET(0.9版本)
2、PUT,POST DELETE(1.0版本)HEAD(只返回首部,不返回主体)trace options connection
MIME机制:Multipurpose Internet Mail extension,多用途互联网邮件扩展
MIME:将非文件数据在传输前重新编码为文件格式再传输。接收方能够用相反的方式将其重新还原为 原来的格式,还能够调用相应的程序来打开此文件
SMTP:Simple mail transmission protocol
动态网页:在服务器端存储的文档非HTML格式,而是编程语言开发的脚本,脚本接受参数之后在服务器运行一次,运行完成后会生成HTML格式文档,把生成的文档发给客户端
HTTP客户端数据报文:
1、包含IP协议信息
source IP
destination IP
2、TCP协议信息
source port
destination port
3、http协议信息
GET /file.html
Host:www.btsbox.com(WEB虚拟主机机制,所以有添加此信息)
请求报文语法
<method> <request-URL><version> # 获得方法 请求的资源 http版本
<headers> #http协议首部
#空白行
<entity-body> #报文主体
#空白行
响应报文语法:
<version> <status><reason-phrase> #http版本 状态码 成功或失败的解释
<headers> #响应报文首部
#空白行
<entity-body>
#空白行
状态代码:
1XX:纯信息
2XX:成功类的状态信息
3XX:重定向类的信息(301永久重定向,302临时重定向,304内容没有发生改变,使用本地缓存)
4XX:客户端错误类的信息(404不存在的文件)
5XX:服务器端错误类的信息
报文示例:
请求报文:
GET / HTTP/1.1 #说明协议 和请求的路径 "/"一般为主页
Host:www.mageedua.com #报文首部都是以HOST:这类格式出现,既以这类格式出现的,都为报文首部
Connection:keep-aliv #连接方式为长连接,不断开连接
#空白行
响应报文:
HTTP/1.1 200 OK #返回成功状态码
X-powered-By:PHP/5.2.17 #说明是一个PHP动态网页
Vary:Accep-Encodeing,cookie,User-Agent
Cache-Control:max-age=3,must-revalidate
Content-Encoding:gzip #网页压缩技术
Content-Length:6931 #网页长度
#空白行
上面两个报文的第一行通常称作报文“起始行(start line)",后面的标签格式的内容称作首部域(Header field),每个首部域都由名称(name)和值(value)组成,中间用逗号分隔。另外,响应报文通常还有一个称作body的信息主体,即响应给客户端的内容
web服务器的主要操作
1、建立连接-->接受或拒绝客户端连接请求
2、接收请求-->通过网络读取HTTP请求报文
3、处理请求-->解析请求报文并做出相应的动作
4、访问资源-->访问请求报文中相应的资源
5、构建响应-->使用正确的首部生成http响应报文
6、发送响应-->向客户端发送生成的响应报文
7、记录日志--当已经完成的http事务记录进日志文件
http/1.1
增强了缓存功能、
引入了长连接机制
长连接机制:
空闲超时
请求次数限制
WEB服务器模型:
单进程/单线程服务器模型
多进程/多线程服务器模型
事件驱动、状态通知服务器模型
多进程、响应多请求服务器模型
MPM:Multi path Modules (多道处理模块)
prefork(一个请求用一个进程响应)
work(一个请求用一个线程响应,启动多个进程,每个进程生成多个线程)
event(一个进程响应多个请求,基于事件处理模型)
winnt
Server soft:
httpd
IIS
nginx
lighttpd
thttpd
应用程序服务器
IIS
tomcat(apache,JSP,open source)
websphere(IBM,JSP,commodity)
weblogic(Oracle,JSP,commodity)
JBoss(Readhat,open source,commodity,核心是tomcat)
Apache
ASF:Apache software Foundation
httpd:
web server, Open source
version: 2.2 2.4
httpd特性:
事先创建进程
按需维持适当的进程
模块设计,核心比较小,各种功能都通过模块添加(包括PHP)
支持运行时配置,支持单独编译模块
支持多种方式的虚拟主机配置
虚拟主机:
基于IP的虚拟主机
基于端口的虚拟主机
基于域名的虚拟主机
支持https协议(mod_ssl)
支持用户认证
简单认证
摘要认证
基于表单认证
访问控制机制
基于IP或主机名的访问控制机制
基于每目录的访问控制
支持URL重写
httpd: SELinux(事先让其处于permssive,disabled)
httpd进程:
/usr/sbin/httpd(MPM:prefork)
httpd: root,root (master process)
httpd: apache,apache (worker process)
/etc/rc.d/init.d/httpd (服务脚本)
httpd 端口:
80/tcp, 443/tcp
httpd工作目录
/etc/httpd:工作根目录,相当于程序安装目录
/etc/httpd/conf:配置文件目录
主配置文件:httpd.conf
/etc/httpd/conf.d/*.conf :是对httpd.conf的分割
/etc/httpd/moduless:模块目录
/etc/httpd/logs --> /var/log/httpd:日志目录
日志文件有两类:访问日志access_log,错误日志:err_log
/var/www:网站存储位置
html:静态网站存储位置
cgi-bin:动态网站存储位置
cgi:可以让httpd调用其他程序的一种机制,Common Gateway Interface
cgi:Client-->httpd(index.cgi)-->Spwan process(Index.cgi)-->httpd-->Client
http以index.cgi文件中指定的程序调用程序转换,如在bash脚本的 #!/bin/bash
fastcgi:当用户请求动态网页,http将请求直接传递给cgi的子进程运行,这样可以实 现静态网页服务与动态服务物理分离。
/etc/httpd/conf/magic:定义如何识别MIME格式的文档
LAMP:apache+mysql+php
httpd的测试工具:
LoadRunner:专业级的HTTP性能测试工具
httpd的安装
[root@Centos6 dnstop-20140915]# yum install httpd
http.conf配置文件说明:
格式:directive value,指令不区分大小写, value则可能要区分大小写
ServerTokens OS #显示web的信息,可以接受多个参数 KeepAlive Off #是否打开长连接 MaxKeepAliveRequests 100 #请求的资源数 KeepAliveTimeout 15 #长连接的超时时间 # prefork MPM #定义MPM工作模型参数 # StartServers: number of server processes to start # MinSpareServers: minimum number of server processes which are kept spare # MaxSpareServers: maximum number of server processes which are kept spare # ServerLimit: maximum value for MaxClients for the lifetime of the server # MaxClients: maximum number of server processes allowed to start # MaxRequestsPerChild: maximum number of requests a server process serves <IfModule prefork.c> #perfork模型参数 StartServers 8 #启动进程数 MinSpareServers 5 #最小空闲进程 MaxSpareServers 20 #最大空闲进程 ServerLimit 256 #MaxClients的上限值,调整需先杀死所有进程,再设置启动,方生效 MaxClients 256 #最大客户端数 MaxRequestsPerChild 4000 #每个子进程最多响应多少用户请求 </IfModule> # worker MPM #worker工作模型 # StartServers: initial number of server processes to start # MaxClients: maximum number of simultaneous client connections # MinSpareThreads: minimum number of worker threads which are kept spare # MaxSpareThreads: maximum number of worker threads which are kept spare # ThreadsPerChild: constant number of worker threads in each server process # MaxRequestsPerChild: maximum number of requests a server process serves <IfModule worker.c> StartServers 4 #启动的进程数 MaxClients 300 #最大的客户端 MinSpareThreads 25 #最小线程数 MaxSpareThreads 75 #最大线程 ThreadsPerChild 25 #每个进程启动的线程数 MaxRequestsPerChild 0 #每个进程的最大请求 </IfModule> #Listen 12.34.56.78:80 Listen 80 #监听所有IP的80端口 # Dynamic Shared Object (DSO) Support #加载的模块 # # To be able to use the functionality of a module which was built as a DSO you # have to place corresponding `LoadModule‘ lines at this location so the # directives contained in it are actually available _before_ they are used. # Statically compiled modules (those listed by `httpd -l‘) do not need # to be loaded here. # # Example: # LoadModule foo_module modules/mod_foo.so # LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule auth_digest_module modules/mod_auth_digest.so LoadModule authn_file_module modules/mod_authn_file.so LoadModule authn_alias_module modules/mod_authn_alias.so LoadModule authn_anon_module modules/mod_authn_anon.so LoadModule authn_dbm_module modules/mod_authn_dbm.so LoadModule authn_default_module modules/mod_authn_default.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule authz_user_module modules/mod_authz_user.so LoadModule authz_owner_module modules/mod_authz_owner.so LoadModule authz_groupfile_module modules/mod_authz_groupfile.so LoadModule authz_dbm_module modules/mod_authz_dbm.so LoadModule authz_default_module modules/mod_authz_default.so LoadModule ldap_module modules/mod_ldap.so # Load config files from the config directory "/etc/httpd/conf.d". # Include conf.d/*.conf #加载的配置文件 If you wish httpd to run as a different user or group, you must run # httpd as root initially and it will switch. # # User/Group: The name (or #number) of the user/group to run httpd as. # . On SCO (ODT 3) use "User nouser" and "Group nogroup". # . On HPUX you may not be able to use shared memory as nobody, and the # suggested workaround is to create a user www and use that user. # NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET) # when the value of (unsigned)Group is above 60000; # don‘t use Group #-1 on these systems! # User apache #httpd启动的用户 Group apache #httpd启动的组
修改HTTP运行模型
[root@Centos6 conf.d]# httpd -l #查看httpd支持的模型 Compiled in modules: core.c prefork.c http_core.c mod_so.c [root@Centos6 conf.d]# httpd.event -l Compiled in modules: core.c event.c http_core.c mod_so.c [root@Centos6 conf.d]# httpd.worker -l Compiled in modules: core.c worker.c http_core.c mod_so.c [root@Centos6 conf.d]# vim /etc/sysconfig/httpd #启用worker模型 HTTPD=/usr/sbin/httpd.worker
标签:internet 互联网 protocol 服务器 实验室
原文地址:http://leozhenping.blog.51cto.com/10043183/1661370