apache服务的原理解析

IANA:互联网地址分配机构

0-1023:众所周知,永久地分配给固定的应用使用,特权端口;

1024-41951:亦为注册端口,但要求不是特别严格,分配给程序注册为某应用使用;3306/tcp, 11211/tcp;

41952+:客户端程序随机使用的端口,动态端口,或私有端口;其范围定义在

/proc/sys/net/ipv4/ip_local_port_range;

BSD Socket:IPC的一种实现,允许位于不同主机(也可以是同一主机)上的进程之间进行通信;

Socket API(封装了内核中的socket通信相关的系统调用)

SOCK_STREAM: tcp套接字

SOCK_DGRAM: UDP套接字

SOCK_RAW:raw套按字

根据套按字所使用的地址格式,Socket Domain:

AF_INET:Address Family,IPv4

AF_INET6:ipv6

AF_UNIX:同一主机上的不同进程间基于socket套接字通信使用的一种地址;Unix_SOCK

TCP FSM: CLOSED, LISTEN,SYN_SENT, SYN_RECV, ESTABLISHED, FIN_WAIT1, CLOSE_WAIT, FIN_WAIT2, LAST_ACK, TIMEWAIT,  CLOSED

TCP协议的特性:

建立连接:三次握手;

将数据打包成段:校验和(CRC32)

确认、重传及超时;

排序:逻辑序号;

流量控制:滑动窗口算法;

拥塞控制:慢启动和拥塞避免算法;

http:hyper text transfer protocol超文本传输协议,是一种应用层协议, 端口是80/tcp,  文本协议

[扩展]

html:hyper text mark language, 编程语言,超文本标记语言;

<html>
	<head>
	<title>TITLE</title>
	</head>
	<body>
	    <h1></h1>
	    <p> blabla... <a href="http://www.magedu.com/download.html"> bla... </a> </p>
	    <h2>...</h2>
	</body>
</html>

css: Cascading Style Sheet

js:JavaScript, 客户端脚本;

http协议版本:

http/0.9:原型版本,功能简陋

http/1.0: cache, MIME, method,

MIME:Multipurpose Internet Mail Extesion

method:GET, POST, HEAD,PUT, DELETE,TRACE, OPTIONS

http/1.1:增强了缓存功能;

spdy

http/2.0:

rfc

工作模式:

http请求报文:http request

http响应报文: http response

一次http事务:请求<-->响应

web资源:web resource

静态资源(无须服务端做出额外处理): .jpg, .png, .gif, .html, txt, .js, .css, .mp3, .avi

动态资源(服务端需要通过执行程序做出处理,发送给客户端的是程序的运行结果): .php, .jsp

注意:一个页面中展示的资源可能有多个;每个资源都需要单独请求;

资源的标识机制:URL

Uniform Resource Locator统一资源定位符:用于描述服务器某特定资源的位置;

例如:  http://www.sina.com.cn/index.html

Scheme://Server[:Port][/PATH/TO/SOME_RESOURCE]

一次完整的http请求处理过程

(1) 建立或处理连接:接收请求或拒绝请求;

(2) 接收请求:接收来自于网络上的主机请求报文中对某特定资源的一次请求的过程;

(3) 处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息;

(4) 访问资源:获取请求报文中请求的资源;

(5) 构建响应报文:

(6) 发送响应报文:

(7) 记录日志:

接收请求的模型:

并发访问响应模型:

单进程I/O模型:启动一个进程处理用户请求;这意味着,一次只能处理一个请求,多个请求被串行响应;

多进程I/O结构:并行启动多个进程,每个进程响应一个请求;

复用的I/O结构:一个进程响应n个请求;

多线程模式:一个进程生成n个线程,一个线程处理一个请求;

事件驱动(event-driven):一个进程直接n个请求;

复用的多进程I/O结构:启动多个(m)个进程,每个进程生成(n)个线程;

响应的请求的数量:m*n

处理请求:分析请求报文的http请求报文首部

http协议:

http请求报文首部

http响应报文首部

请求报文首部的格式:

<method> <URL> <VERSION>

HEADERS: (name: value)

<request body>

访问资源:获取请求报文中请求的资源

web服务器,即存放了web资源的主机,负责向请求者提供对方请求的静态资源,或动态资源运行生成的结果;这些资源通常应该放置于本地文件系统某路径下;此路径称为DocRoot;

/var/www/html/:

web服务器的资源路径映射方式:

(a) docroot

(b) alias

(c) 虚拟主机的docroot

(d) 用户家目录的docroot

http请求处理中的连接模式:

保持连接(长连接):keep-alive

时间:

数量:

非保持连接(短连接):

http服务器程序:

httpd (apache)

nginx

lighttpd(轻量级)

应用程序服务器:

IIS: .Net 都是微软的

tomcat: .jsp

httpd的安装和使用:

ASF: apache software foundation(apache软件基金会)

httpd:apache

a patchy server = apache

httpd

httpd的特性:

高度模块化: core + modules

DSO:dynamic shared object

MPM:Multipath processing Modules (多路处理模块)

prefork:多进程模型,每个进程响应一个请求;

一个主进程:负责生成子进程及回收子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理;

n个子进程:每个子进程处理一个请求;

工作模型:会预先生成几个空闲进程,随时等待用于响应用户请求;最大空闲和最小空闲;

worker:多进程多线程模型,每线程处理一个用户请求;

一个主进程:负责生成子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理;

多个子进程:每个子进程负责生成多个线程;

每个线程:负责响应用户请求;

并发响应数量:m*n

m:子进程数量

n:每个子进程所能创建的最大线程数量;

event:事件驱动模型,多进程模型,每个进程响应多个请求;

一个主进程 :负责生成子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理;

子进程:基于事件驱动机制直接响应多个请求;

httpd-2.2: 仍为测试使用模型;

httpd-2.4:event可生产环境中使用;

httpd的功能特性:

  • CGI:Common Gateway Interface公共网管接口
  • 虚拟主机:IP,PORT, FQDN
  • 反向代理
  • 负载均衡
  • 路径别名

丰富的用户认证机制

    • basic
    • digest
    • 支持第三方模块

安装httpd:

rpm包:CentOS 发行版中直接提供;

[[email protected] ~]# yum info httpd
Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile
 * base: mirrors.pubyun.com
 * extras: mirrors.btte.net
 * updates: mirrors.neusoft.edu.cn
Installed Packages
Name       : httpd
Arch       : x86_64
Version    : 2.2.15
Release    : 5.el6.centos
Size       : 2.9 M
Repo       : installed
From repo  : anaconda-CentOS-201106060106.x86_64
Summary    : Apache HTTP Server
URL        : http://httpd.apache.org/
License    : ASL 2.0
Description: The Apache HTTP Server is a powerful, efficient, and extensible
           : web server.

编译安装:定制新功能,或其它原因;

CentOS 6:httpd-2.2

[[email protected] ~]# rpm -ql httpd | less
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
/etc/httpd/logs
/etc/httpd/modules
/etc/httpd/run
/etc/logrotate.d/httpd
/etc/rc.d/init.d/httpd
/etc/sysconfig/httpd
/usr/lib64/httpd
/usr/lib64/httpd/modules
/usr/lib64/httpd/modules/mod_actions.so
/usr/lib64/httpd/modules/mod_alias.so
/usr/lib64/httpd/modules/mod_asis.so
/usr/lib64/httpd/modules/mod_auth_basic.so
/usr/lib64/httpd/modules/mod_auth_digest.so
/usr/lib64/httpd/modules/mod_authn_alias.so
/usr/lib64/httpd/modules/mod_authn_anon.so
/usr/lib64/httpd/modules/mod_authn_dbd.so
/usr/lib64/httpd/modules/mod_authn_dbm.so
/usr/lib64/httpd/modules/mod_authn_default.so
/usr/lib64/httpd/modules/mod_authn_file.so
/usr/lib64/httpd/modules/mod_authnz_ldap.so
/usr/lib64/httpd/modules/mod_authz_dbm.so
/usr/lib64/httpd/modules/mod_authz_default.so
/usr/lib64/httpd/modules/mod_authz_groupfile.so
/usr/lib64/httpd/modules/mod_authz_host.so
/usr/lib64/httpd/modules/mod_authz_owner.so
/usr/lib64/httpd/modules/mod_authz_user.so
/usr/lib64/httpd/modules/mod_autoindex.so
/usr/lib64/httpd/modules/mod_cache.so
/usr/lib64/httpd/modules/mod_cern_meta.so
/usr/lib64/httpd/modules/mod_cgi.so
/usr/lib64/httpd/modules/mod_cgid.so
/usr/lib64/httpd/modules/mod_dav.so
/usr/lib64/httpd/modules/mod_dav_fs.so
/usr/lib64/httpd/modules/mod_dbd.so

程序环境:

配置文件:

/etc/httpd/conf/httpd.conf

/etc/httpd/conf.d/*.conf

服务脚本:

/etc/rc.d/init.d/httpd

脚本配置文件:/etc/sysconfig/httpd

主程序文件:

/usr/sbin/httpd

/usr/sbin/httpd.event

/usr/sbin/httpd.worker

日志文件:

/var/log/httpd:

access_log:访问日志

error_log:错误日志

站点文档:

/var/www/html

模块文件路径:

/usr/lib64/httpd/modules

服务控制和启动:

chkconfig  httpd  on|off

service  {start|stop|restart|status|configtest|reload}  httpd

CentOS 7:httpd-2.4

[[email protected] named]# yum info httpd
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: 
 * extras: mirrors.aliyun.com
Available Packages
Name        : httpd
Arch        : x86_64
Version     : 2.4.6
Release     : 40.el7.centos
Size        : 2.7 M
Repo        : base/7/x86_64
Summary     : Apache HTTP Server
URL         : http://httpd.apache.org/
License     : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
            : web server.

程序环境:

配置文件:

/etc/httpd/conf/httpd.conf

/etc/httpd/conf.d/*.conf

模块相关的配置文件:/etc/httpd/conf.modules.d/*.conf

systemd unit file:

/usr/lib/systemd/system/httpd.service

主程序文件:

/usr/sbin/httpd

httpd-2.4支持MPM的动态切换

日志文件:

/var/log/httpd:

access_log:访问日志

error_log:错误日志

站点文档:

/var/www/html

模块文件路径:

/usr/lib64/httpd/modules

服务控制:

systemctl  enable|disable  httpd.service

systemctl  {start|stop|restart|status}  httpd.service

时间: 2024-10-15 13:03:33

apache服务的原理解析的相关文章

自动化运维系列之SaltStack批量部署Apache服务

自动化运维系列之SaltStack批量部署Apache服务 saltstack原理 SalStack由master和minion构成,master是服务端,表示一台服务器:minion是客户端,表示多台服务器.在Master上发送命令给符合条件的minion,Minion就会执行相应的命令.Master和Minion之间是通过ZeroMQ(消息队列)进行通信的. SaltStack的Master端的监听端口是4505和4506,4505端口是Master和Minion认证通信端口:4506端口是

转:Apache和Nginx运行原理解析

Web服务器 Web服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务. 应用层使用HTTP协议. HTML文档格式. 浏览器统一资源定位器(URL). Web服务器常常以B/S(Browser/Server)方式提供服务.浏览器和服务器的交互方式如下: GET /index.php HTTP/1.1 +---------------+                   +----------------+  |               +------

Apache和Nginx运行原理解析

Web服务器 Web服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务. 应用层使用HTTP协议. HTML文档格式. 浏览器统一资源定位器(URL). Web服务器常常以B/S(Browser/Server)方式提供服务.浏览器和服务器的交互方式如下: GET /index.php HTTP/1.1 +---------------+                   +----------------+ |               +-------

(转)Apache和Nginx运行原理解析

Apache和Nginx运行原理解析 原文:https://www.server110.com/nginx/201402/6543.html Web服务器 Web服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务. 应用层使用HTTP协议. HTML文档格式. 浏览器统一资源定位器(URL). Web服务器常常以B/S(Browser/Server)方式提供服务.浏览器和服务器的交互方式如下: GET /index.php HTTP/1.1 +-------

【Apache服务补录 &nbsp; Squit正向解析】

[查询 APache 日志文件级别 ] ****Apache 服务补录***** 1.[关于 指定域在于https://下访问正确页面] [前置:https://-,访问不到指定页面是因为,指定域在ssl中写的,必须在ssl中添加的那些配置文件中开启443端口,才可以在浏览器中访问到] vim /etc/httpd/conf.d/music.conf [添加如下] ~~                  [前面做的Virtualhsot,Directory不要改] <Virtualhost *:

CGI原理解析之二------WEB服务和CGI交互数据

#include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/wait.h> #include <stdlib.h> #define    CGI_NAME "get_post.ums" #define    REQUEST_METHOD "REQUEST_METHOD=POST" #define REQUEST_PARAM

java网络编程客户端与服务端原理以及用URL解析HTTP协议

常见客户端与服务端 客户端: 浏览器:IE 服务端: 服务器:web服务器(Tomcat),存储服务器,数据库服务器. (注:会用到Tomact服务器,在webapps下有一个自己创建的目录myweb,下面有一个文件1.html) 服务端原理 自定义一个服务端,使用自己已有的客户端IE浏览器,了解一下客户端都发送了什么请求. 1 package cn.ie_server; 2 3 import java.io.IOException; 4 import java.io.InputStream;

Apache服务深入解析

一.Apache服务的安装.服务管理及相关文件!讲解Linux下Apache服务的安装.服务管理.配置文件及其他相关文件等信息.CentOS 6.3 ( RHEL 6)YUM中集成的是apache 2.2.15(httpd 2.2.15)使以下命令可以安装apache服务器:yum install -y httpd其他apache相关软件包:• httpd-devel - 开发相关头文件• httpd-tool - apache相关工具,如ab.htpasswd• httpd-manual -

Apache 运行PHP原理

php,apache和mysql组合的工作过程: PHP的所有应用程序都是通过WEB服务器(如IIS或Apache)和PHP引擎程序解释执行完成的,工作过程: (1)当用户在浏览器地址中输入要访问的PHP页面文件名,然后回车就会触发这个PHP请求,并将请求传送化支持PHP的WEB服务器. (2)WEB服务器接受这个请求,并根据其后缀进行判断如果是一个PHP请求,WEB服务器从硬盘或内存中取出用户要访问的PHP应用程序,并将其发送给PHP引擎程序. (3)PHP引擎程序将会对WEB服务器传送过来的