httpd 属于C/S架构,基于套接字实现进程间通信
回顾一下进程间的通信 IPC :Inter Process Communication 进程间通信 同一主机进程间通信依靠:信号、旗语、shm、Unix Sock 跨主机的进程间通信依靠:rpc、socket
1 、套接字和C/S模型
Unix Sock :服务器和客户端属于同一机器上,通过Unix Sock 文件系统实现通信
Socket :服务器和客户端不属于同一机器,通过IP地址和port端口实现进程间通信
由目标端口、目标ip地址、源端口、源ip地址组成完整的进程间通信
(1)用户进程和内核之间 应用层和通信层之间
套接字类型:Tcp套接字、UDP套接字 、raw套接字
http:C/S
通信子网:传输
应用层协议:应用 (http、https、smtp、pop、imap、ftp、ldap)
Client:
GUI(图形界面):IE、Firefox、Safari、chrome、Opera
CLI(命令行):elinks、curl
Server:
httpd、nginx、lighttpd、gws
App Server:
IIS、tomcat、jetty、resin
2、http和html
2.1 http (hypertext trasport protocol 超文本传输协议)
http协议:是一种stateless 无状态协议,一次http事务结束后, 连接即行断开 http协议的版本 http/0.9 仅用于传输html文档 http/1.0 支持多媒体数据的处理 http/1.1 更多的请求方法,更精细的缓存控制,持久链接 http协议加速方式 并行请求 持久连接(限定请求次数;限定访问时间)
2.2 html (hypertext mark language 超文本标记语言)
①URI Uniform Resource Idenfitier 统一资源标识符
URL Uniform Resource Locator 统一资源定位符,属于URI的一个子集
例如:http://www/jungege.com:80 /p_w_picpaths/game.gif
http 协议
/p_w_picpaths/game.gif 资源路径,属于相对路径
② MIME Multipurpose Internet Mail Extension 多用途多功能网页邮件拓展,基于base64
③ client:Browser 浏览器
server:http server http服务器
④ html文件内容格式
<html>
<head>
<title>
</title>
</head>
<body>
<h1></h1>
<p></p>
<h2></h2>
<p> <a href="a.html" >abc </a> </p>
</body>
</html>
⑤css :cascading style sheet 层叠样式表
⑥CGI:common gateway interface 公共网关接口
⑦一个页面中可能会包含多个页面对象
3、http报文
http 事务(一次请求以及与其对应的响应)
http方法:GET、PUT、HEAD、POST、DELETE
3.1 HTTP请求(request)
HTTP请求报文格式:
<headers>
空白行
<entity-body>
3.2 HTTP响应(response)
HTTP响应报文格式
<headers>
空白行
<entity-body>
报文格式参数
<method>: 请求方法, 希望服务器端执行的动作,如GET、HEAD、POST等
(一) 首部 <headers>
格式: Name:Value
例如:Content-type:p_w_picpaths/game.gif
分类:通用首部、请求首部、响应首部、实体首部、拓展首部
①通用首部:请求和相应都可以使用
格式:
Pragma
②请求首部
格式:
Client-IP:
②① Aonccetp首部:y用户表明客户自己更倾向于支持的能力
②② 条件请求首部 :
If-None-Match
②③ 跟安全相关的请求首部:
③ 响应首部
格式:
Age:时间
Server:向客户端表明服务器程序名称和版本
③① 协商首部
③② 跟安全相关的响应首部
Set-Cookie: 服务器端在某客户端第一次请求时发给令牌
④ 实体首部
Location: 资源的新位置
④① 内容首部
④② 缓存首部
(二) HTTP请求方法
(三) HTTP报文状态码<status>
1xx: 信息性状态码
4、一次Web请求的基本过程
5、 Web服务器输入/输出结构:
单线程I/O结构 多线程I/O结构 复用的I/O结构:单个线程响应多个请求 复用多线程I/O结构:多个线程,每个线程响应多个请求
6、httpd (又名apache)
apache:a pachey server
6.1 httpd的高度模块化
core + modules 内核+模块
MPM: Multipath Processing Module 多道处理模块(并非一个模块,而是对一种特性的称呼)
prefork 模块:一个进程一个请求;由主进程提前生成多个空闲的进程来应对即将到来的用户请求
主进程--->空闲子进程
worker 模块: 一个进程多个线程,一个线程对应一个请求;由主进程生出若干子进程,每个子进程
再生出多个线程 主进程--->若干子进程---->N个线程
event 模块: 一个线程响应多个请求,由事件驱动(evendriven)实现单线程响应多个请求
6.2 httpd版本
httpd-1.3
httpd-2.0
httpd-2.2
httpd-2.4
6.3 httpd 功能特性
CGI:Common Gateway Interface 公共网关接口
6.4 安装httpd
# yum -y install httpd
6.5 httpd 服务器脚本 运行目录 配置文件
CGI目录:/var/www/cgi-bin/
6.5 配置文件
####绝大多数配置修改后,可以通过service httpd reload来生效;
####如果修改了监听的地址或端口,必须重启服务service httpd restart才能生效.
6.6 httpd日志文件
技术有限,望路过的大神指点;
PS: 后续会推出httpd配置文件的详细讲解,敬请期待~
转载于:https://blog.51cto.com/jungege/1379633