http 协议:
1)http协议格式:
URL:scheme://server[:port]/path/to/source (服务器上的每一个资源都有一个对应的url与之对应)
request:
<method> <url> <version>
<HEADERA>
<body>
response:
<verion> <status> <reason phrase>
<HEADERS>
<body>
其中:
method:
除了get,head,post,put,delete,trace,options还有很多其他的方法
status:
1XX:信息类
2XX:成功类,200
3XX:重定向类301,302,304
4XX:客户端错误类,403,404
5XX:服务端错误类,502
HEADER:
通用首部(请求/响应都可以使用)
请求首部
If-Modified-Since,If-None-Match
响应首部
实体首部(用在body中)
扩展首部
协议格式:文本、二进制
2)Web页面:一个页面通常含有多个资源,也就是说我们浏览器访问的是一个页面的入口,在页面被浏览器加载显示的过程中,又会向服务器发送请求,将页面中包含的资源显示完毕
为了加速页面的打开使用的机制:
缓存,
并发多线程发起请求,
同一个页面的不同资源放在不同的域名下(配置浏览器针对同一个域名线程并发上限实现的)
以上机制,会导致服务器面临大量并发请求的压力
pv:page view
uv:user view
3)认证:
基于IP认证:
基于用户认证:
basic认证
digest认证
4)资源映射:
Alias(别名)
DocumentRoot
5)httpd:MPM(多路处理模块)
prefork:主进程生成多个子进程,每个子进程处理一个请求。使用复用型IO
worker:主进程生成多个子进程,每个子进程生成多个线程,每个线程响应一个请求。
event:主进程生成多个子进程,每个子进程响应多个请求。使用事件驱动式IO
I/O类型:
a.同步(synchronous)和异步(asynchronous):
关注的是消息通知机制
同步:调用发出之后不会立即返回,但一旦返回,则返回的是最终结果
异步:调用发出之后,被调用方立即返回消息,但返回的并非最终结果,被调用者通过状态,通知机制等来通知调用者,或者通过回调函数来处理结果
b.阻塞(block)和非阻塞(nonblock):
关注的是调用者等待被调用者返回调用结果是的状态
阻塞:调用结果返回之前,调用者会被挂起,调用者只有在得到返回结果之后才能继续
非阻塞:调用者在结果返回之前,不会被挂起,即调用不会阻塞调用者
I/O模型:(IO有:网络io和磁盘io之分,某一时刻只能处理一种IO。一次IO处理分俩个阶段:第一个阶段是接受请求的进程将请求交给内核进程,内核进程将数据从磁盘读取到内核内存;第二阶段是将数据从内核内存拷贝到接受请求的进程中返回给调用者)
阻塞式IO(blocking io):效率较低
非阻塞式IO(nonblocking io):效率较低
复用型IO(io mutliplexing):效率较低
select(),poll()
事件驱动式IO(signal driven io):第一阶段异步,第二阶段阻塞
通知:水平触发:多次通知
边缘触发:只通知一次
异步IO(asynchronous io):效率最高