2011年6月20日星期一

笔记:HTTP The Definitive Guide

Media Types:browser根据指定的MIME类型处理收到的数据

100 Continue :  收到request的一部分内容,client得继续交

101 Switching Protocols : server按client要求的换协议了

如果client没发entity,就不要发100-continue的Expect头给server

如果server没收到client的100-continue Expect头,就不能发100 Continue的状态码给client

如果中间节点收到的response包含Connection header,它会按Connection header的做,然后把Connection头删掉再传给用户

中间透明代理如果不看Connection:Keep-Alive就转发给server,就会导致server一直到超时都不关连接,同时client给proxy的keep-alive信息被proxy忽略。因此,代理绝对不能转发Connection头

Proxy-Connection头,绕过上述问题:如果代理不认识Proxy-Connection,就当传了一个未知头;如果中间代理支持Connection:keep-alive,就把Proxy-Connection换成Connection传给server

连接方式:

    Parallel connection 同时起多个TCP连接,对内存/CPU要求高
    Persisten connection  延长TCP连接使用时间,重用已有TCP连接发起新的HTTP请求,keep-alive;一次发一个request;server返回的内容要在length
    Pipeline connection :只有确认已经使用了持久连接,才能用pipeline;不需等前一个request的response返回,就可以发新的request

Keep-Alive: max=5,timeout=120 最多5个HTTP会话,120秒超时

Chapter 5 - 10

web server 处理并发连接的方式:
  • single thread
  • multiprocess and multithread
  • multiplex i/o
  • multiplexed multithread
几种proxy:
  • surrogate,或称reverse proxy、server acccelerator
  • transcoder,可以修改server给的response,比如原来给的是png,把它压缩成jpg传给用户
  • anonymizer,把用户个人标识、referer、email、cookie等涉及隐私的头部都去掉
怎么配置才能让用户用上代理:
  • client 指定代理服务器
  • 路由设备监听请求,转移到代理,又称intercepting proxy
  • 在用户使用的DNS SERVER上改IP
  • web server把用户重定向到proxy
客户端自动设代理的配置文件PAC
客户端自动配置代理的协议 WPAD,为客户端自动寻找可用的PAC file,支持好几种配置:
DHCP
  • SLP
  • DNS well-known hostnames
  • DNS SRV records
  • DNS service URIS in TXT records
HTTP TUNNEL:CONNECT 连外面的SSL,RESPONSE返回的时候,不用带Content-Type头,因为连接成功后,就开始传二进制流了
SSL TUNNEL:HTTP头套在SSL数据的外面

Chapter 11 - End

包含用户状态信息的url称为fat url,最好别用
Content-Encoding 取 identity 表示没编码
Delta Encoding :server只传更新的那部分内容给client,不用把全部内容往回传。client先发A-IM请求给server,server返回IM、Etag、Delta-base头信息,返回码226
Delta-base 表示与当前最新内容生成delta信息的源内容的Etag版本号
WCCP (web cache coordination protocol) 路由器重定向web流量到代理缓存
GRE(generic router encapsulation):支持WCCP重定向HTTP数据包到一个特殊的server,IP头是到那个server的
Internet Cache Protocol (ICP):问临近的cache是否有client请求的数据,邻居返回一个HIT或MISS的应答;用UDP通信,挨个问一圈,实在没有再自己去源server请求内容
Cache Array Routing Protocol(CARP):对url做hash,一个cache server存一部分内容,每个cache server存的url各不相同;问题是,如果一个cache server挂掉,hash要打乱重来,消耗较大;
Hyper Text Caching Protocol (HTCP):允许通过url、http request、http response头查询邻居是否有请求的数据;与ICP的差别在于request和response的详细程度
Hit Metering Protocol:扩展HTTP协议,在cache与server之间传递一些信息
几个代理相关的头Via/X-Cache/X-Forwarded-For/
APPENDIX B是HTTP状态码说明
APPENDIX E是BASE64是编码方案说明,比较简单,把8位bit合并,再拆分成6位一组,映射到一个字符表中;最后的生成的bit串长必须是24整数位(6和8的最小公倍数),不足的部分用=号填充

没有评论:

发表评论