httpd整理

http协议:超文本传输协议

  • html:超文本标记语言;

  • 应用层协议格式:文本(http/sftp),二进制(memcache)

  • http服务器程序:
    httpd
    Nginx
    lighttpd 轻量级

  • 应用程序服务器:不仅能处理静态资源,还能处理动态资源;
    IIS .net
    Tomcat jsp

  • http协议版本:
    HTTP/0.9 只支持GET方法
    HTTP/1.0 引入MIME,支持传输多媒体;引入cache,支持更多的Method
    HTTP/1.1 增强了缓存,开始支持持久连接功能;
    HTTP/2.0 借鉴了SPDY,增强了性能;

MIME:多用途互联网邮件扩展;Multipurpose Internet Mail Extension
主要作用:传输非文本格式的数据;
major/minor
HTML格式的文本:text/html
普通ASCII文本:text/plain
JPEG格式的图片:image/jpeg

WEB资源的分类:

  • 静态资源:图片,txt文本,css,mp3,html
  • 动态资源:客户端请求的是程序文件,需要服务器端的应用程序运行后返回运行的结果;
    注意:一个站点由众多的资源构成,每个资源都需要单独请求;

URL:唯一标识服务器端某特定资源的存放位置;

  • 语法格式:scheme://server[:port]/path/to/source
    。 URI 统一资源标识符;URL和URN(统一资源名)是URI的子集;

  • httpd协议本事是无状态的,无法永久存储用户的信息,所以引用了cookie和session机制
    。Cookie:保存在客户端;由服务器发送给客户端,唯一标识用户的信息;
    。 胖cookie 信息量大,可能会泄露用户信息
    。瘦cookie 仅记录个人用户信息

  • Session:保存在服务器端

一次完整的http请求过程:

1.接收客户端的连接,如果不希望与这个客户端建立连接,就直接关闭;
2.接收来自客户端的http请求;
3.处理请求:分析请求报文中的首部信息,并采取相应的行动;
4.访问资源:发起系统调用,获取请求的资源;
5.构建http响应报文并发送给客户端;
6.记录到日志文件中

并发响应模型:(c10K问题)

1.单进程i/o模型:启动一个进程处理所有用户的请求;
2.多进程i/o模型:并行启动多个进程,每个进程处理一个请求;
3.复用的i/o模型:
多线程模型:一个进程产生多个线程,一个线程处理一个请求;
事件驱动机制:一个进程直接响应n个请求;
4.复用的多进程i/o模型:启动m个进程,每个进程生成n个线程;则,响应请求数量为m*n

  • http事务:一次http事务=一次请求+一次响应的过程;

。 request报文首部:

    <method><URL><vsersion>
    <HEADERS>(name:value)
    
    
   <request body>

。 response报文首部:

<vsrsion><status><reson-phrase>
<HEADERS>


<body>
  • Method:
    GET,HEAD,POST,PUT,DELETE,TRACE(跟踪资源经过的代理服务器),OPTIONS(返回服务器对资源支持使用的method)

  • status:
    。 1xx 信息类
    。2xx 成功类
    。 3xx 重定向类;
    。 4xx 客户端错误
    。 5xx 服务器端错误

  • 常用状态玛:
    。200 请求成功;OK
    。301 永久重定向;Moved Permanently
    。302 临时重定向;Found
    。304 请求资源未发生改变;Not Modified
    。401 输入账号密码后才能访问资源;Unauthorized
    。403 请求被禁止;Forbidden
    。404 服务器找不到客户端请求的资源;Not Found
    。500 服务器内部错误;Internal Server Error
    。502 代理服务器从后端服务器收到一条伪响应;Bad Gateway
    。504 超时
    。499 Nginx自定义状态码;客户端向Nginx服务器发请求,服务端还未处理完成,响应还没完成。客户端就主动断开了;

  • HEADER:
    通用首部:
    请求首部:
    条件式请求首部:IF-Modified-Since,If-None-Match
    响应首部:
    实体首部:
    扩展首部:

  • 通用首部:既可以用在请求报文中又可以用在响应报文中
    Date:报文的创建时间
    Connection:连接方式,如keep-alive,Close
    Via:显示报文经过的中间节点
    Cache-Control:控制缓存的生效机制
    Pragma:兼容Http 1.0,缓存相关

  • 请求首部
    Accept:通知服务器自己可以接受的媒体类型
    Accept-Charset:可以接受的字符集
    Accept-Encoding:通知服务器自己接受的编码格式,如gzip
    Accept-Language:接受的语言
    Client-IP:客户端IP
    Host:请求的服务器名称和端口号
    Referer:包含当前正在请求资源的上一级资源
    User-Agent:客户端代理

  • 条件式请求首部
    Expect 期望服务器端发送什么类型信息
    If-Modified-Since 自从指定的时间之后,请求的资源是否发生过修改
    If-Unmodfied-Since 自从指定的时间之后,请求的资源是否没有修改
    If-None-Match 缓存中存储的文档ETag标签是否与服务器端文档Etag不匹配

  • 安全请求首部
    Authorization 向服务器发送认证信息
    Cookie/Cookie2 客户端向服务器发送Cookie

  • 代理请求首部
    Proxy-Authorization:向代理服务器认证

  • 响应首部:
    。信息性
    Age:响应持续时长
    Server:服务器程序软件名称和版本

  • 协商首部:某资源有多种表示方法时使用
    Accept-Ranges:服务器可接受的请求范围类型
    Vary:服务器查看的其他首部列表,服务器根据首部内容挑选出最合适的资源版本发送给客户端(当代理服务器收到了客户端的请求时候,如果请求首部字段的值与?Vary?的值相同,才会从代理服务器的缓存中返回请求,反之就会向源服务器重新发送请求)

  • 安全响应首部
    Set-Cookie:向客户端设置Cookie
    Set-Cookie2
    WWW-Authenticate:来自服务器的对客户端的质询认证表单

  • 实体首部
    。 Allow 列出对此实体可使用的请求方法
    。 Location 告诉客户端真正的实体位于何处
    。Content-Encoding 内容的编码格式
    。Content-Language 内容的使用语言
    。 Content-Length 主体的长度
    。 Content-Location 实体真正所处位置
    。 Content-type 主体的对象类型

  • 缓存相关
    。 Etag 实体的扩展标签
    。 Expires 实体的过期时间
    。 Last-Modified 最后一次修改的时间

  • Web页面:
    。一个页面由多个资源组成;

。PV:page view 入口页面被视为一个pv
。UV:user view 每个独立的ip地址被视为一个uv;

  • 认证:
    。基于ip认证:
    。基于用户认证:basic,digest

  • 资源映射:
    。 Alias
    。 DocumentRoot

  • httpd:MPM
    。prefork:一个主进程,生成多个子进程,每个子进程处理一个请求;
    。 worker:一个主进程,生成多个子进程,每个子进程生成多个线程,每个线程处理一个请求;
    。 event:一个主进程,生成多个子进程,每个子进程处理多个请求;

  • I/O类型:

    • 同步和异步:
      --关注的是消息通知机制:被调用者的状态
      。同步:调用发出之后不会立即返回,但一旦返回,则返回既是最终结果;
      。异步:调用发出之后,被调用方立即返回消息,但返回的并非是最终结果:被调用者通过状态,通知机制等来通知调用者,或通过回掉函数来处理结果;

    • 阻塞和非阻塞:block,nonblock
      -- 关注的是调用者等待被调用者返回调用结果使得状态;
      。 阻塞:调用结果返回之前,调用者会被挂起;调用者只有在得到返回结果之后才能继续;
      。非阻塞:调用者在结果返回之前,不会被挂起,即调用不会阻塞调用者;

  • I/O模型:
    。 blocking IO 阻塞式IO
    。 nonblocking IO 非阻塞式I/O
    。 IO multiplexing 复用型IO
    。 signal dirven IO 事件驱动式IO
    。 asynchronous IO 异步IO

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容