1.
icap分块传输编码:
--使用Content-Length消息头传输的数据,可以创建一个大的块来传输,这个块的大小和Content-Length消息头中提到的大小相同。
--对于通过关闭TCP连接来标示结束的数据,每一批从操作系统传入的字节组可以转换成一个块。(通过在这些字节数据后面写入读取的字节长度)
--通过分块传输编码的数据,可以照原来的样子不重新分块来转发。
icap的封装消息头不分块,封装的消息体分块。icap可以直接转发分块的http消息体,而且很多解析器不支持解析分块的http消息头。
2.
icap服务器应该让不同的服务对应不同的URI,甚至是同一个服务内的不同方法对应不同的URI。应该避免HTTP协议中使用同一个URI来实现GET和POST方法的情况。
3.
204 No Content 错误,ICAP client 要在请求的消息头中包含【Allow:204】后,ICAP server 才允许在对象不需要修改时候发送“204 No Content”响应。
消息的Preview除外,Preview中没有【Allow:204】也可以发送204响应。
4.
~~~请求响应模式:
在REQMOD中
ICAP 请求:必须包括封装的http请求,消息头和消息体都必须被封装。
ICAP服务器返回给ICAP客户端的响应:返回内容可能有四种:
~错误信息
~204码,代表ICAP客户端的请求不需要适配。
~一个封装的修改过的请求
~一个封装的HTTP错误信息响应。
响应消息必须第一行为状态行,如果返回的状态码是2XX,ICAP client 应该继续正常执行请求,如果ICAP client是一个代理,那么可能它会包含来自它的缓存中的服务对象,或者把修改过的request转发给一个origin server。
至于其他代表错误的状态吗,ICAP client可能会把这些错误返回给下面的客户端或者用户。
——————
对于GET方式的请求,Encapsulated消息头中有null-body属性,对于POST方式,Encapsulated消息头中有req-body属性,表示request中封装的http message有消息体。
5.
什么是 Hop By Hop
(TCP/IP协议中)在由一个路由器连接的两种物理网中应用层和运输层使用END-TO-END协议.网络层使用的是HOP-BY-HOP协议