【HTTP权威指南】笔记之二,HTTP结构

一. Web服务器

Web服务器一般来说主要指代服务器软件(apache一类),也指一些嵌入式的计算机


Web服务器主要任务为:

1. 建立连接

通过TCP建立起链接,判断对方客户端。当然可以选择拒绝或者关闭连接。对于客户端主机名可以通过反向DNS识别,但是会花费一定时间。不过可以通过ident协议找到发起HTTP链接的用户名。

2. 接收请求

在接收请求的时候,可以单线程 / 多线程 / IO复用 / 复用的多线程 (CSAPP上讲得很详细了)

3. 处理请求

4. 访问资源

docroot —— web服务器可以访问的的“根目录”。一台主机可以有多个虚拟docroot.

5. 构建响应

MIME类型来标记传输的内容。 一般通过文件的货站明来说明,也可以通过模式表或者显示分类来标记MIME类型。

重定向时一般除了永久搬离外,使用情况有:临时维护、负载均衡、服务器关联,和最常见的规范目录(加上最后的‘/’)

6. 发送响应

7. 记录日志


二. 代理

虽然现在也将代理用作HTTP/HTTPS等服务的转换,但通常代理还是指代单纯的HTTP代理,进行服务协议转换的为网关!


代理获取流量的方式:

1. 修改客户端(显示地获取)

2. 修改网络,在客户端和服务器都不知道的情况下拦截(伪装)

3. 修改DNS

4. 修改web服务器,通过服务器将之后的流量重定向到代理上


客户端显示连接代理和连接服务器的URI是不同的,连接服务器的时候更多的请求时相对URI,但是连接代理的时候会是绝对的。

当某些时候客户端不知道自己连接代理时也会发送相对的URI,这时候代理会根据header中的host字段找到服务器。


代理不应该修改URI中的任何信息(包括显示地添加:80端口),除了补充绝对路径的'/'


追踪报文,每次经过代理,代理应该在header的via字段中添加其协议名/版本号 节点名和节点注释。


测试代理时经常使用TRACE方法来查看header


三. 缓存

缓存的处理步骤:

1. 接收

2. 解析

3. 查询

4. 新鲜度检测

HTTP/1.1 header中的Cache-Control: max-age用来指定过期日期,其使用绝对时钟(倒计时)来标识过期日期。HTTP/1.0+中使用expire指定一个绝对的日期,可能因为服务器时钟的不同步而造成问题。

期中计算使用期时,将会减去文档传输的时间。

也可以发送if-modified-since: date来进行再验证

5. 创建响应

6. 发送

7. 记录日志

命中的日志一般要发送给服务器(服务器有权利知道哪些客户端在什么时间试图访问他,并且有些广告以浏览次数收费)


服务器可以在文档的header修改cache-control的值来告诉客户端对缓存的处理

no-store:不要存储

no-cache:可以存储,但是在进行下一次新鲜度再验证之前,缓存不可用


四. 集成电路:网关、隧道及中继

网关用于将HTTP请求解析以调用其他协议、应用程序,最后又包装秤HTTP返回。

最常见的是CGI


隧道通常是对HTTP连接进行盲传输,但是也可以将非HTTP协议的流量进行传输。


HTTPS协议即是SSL上的HTTP


中继是非管饭的HTTP代理,将对字节进行盲转发(会造成盲代理问题)


五. Web机器人(爬虫)

网络爬虫是通过根集的URL获取页面,再对页面解析获取其中的URL,以此递归获取大数量的网络数据。


网络爬虫应当对遍历过得节点进行记录,以此来避免环路出现,一般有以下方法:

1. tree和hash表记录,但是会耗费大量的内存

2. 存在位,类似于hash function之后对数组中的一位置位,以此标记被访问过,这种方法是有损的

3. 广搜!


robots.txt为存储在服务器根目录下的文件,又来标识爬虫的黑白名单、访问权限。


六. HTTP-NG

(一个已经解散的小组对HTTP发展的一些展望,主要思想为模块化)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值