HTTP协议中支持代理和压缩的相关字段
以前一直搞不清http协议如何支持代理的,今天看了一下恍然大悟。
http协议有一个host字段。
如果我们想访问 http://www.sohu.com
一般就是 GET http://www.sohu.com HTTP/1.1
这样就直接连接www.sohu.com主机。如果host为www.sohu.com那么request-uri可以为相对路径,比如 GET / HTTP/1.1
如果我们有个局域网代理服务器192.168.1.2 端口为80
//下面应该写错了,host应该与代理无关,??
那么我们在构造http请求的时候,就需要设置一下request-header中的host字段。
这样http协议就知道是向192168.1.2的80端口发送http请求,请求目标是http://www.sohu.com。
//---------------
我们只需要向 192.168.1.2 的80端口发起TCP连接,并将 GET http://www.sohu.com HTTP/1.1发送给它就可以了。
至于192.168.1.2如何帮我们拿到http://www.sohu.com,那么是它的事情了,管理员需要配置一台http代理服务器咯,有响应的代理协议。
我们知道http(超文本协议)的传输内容大多是文本的,如果能够进行压缩的话,那么就大大节省流量了。
为此http协议中有相关字段,比如Entity header中的content-encoding, General header中的transfer-encoding, 前者对应entity body,后者对应message body.
若没有后者的话,message body 与 entity body等价。
content-encoding, transfer-encoding的参数有chunked, gzip等。一般的http服务器都支持gzip压缩咯,多好阿。
因此在移动互联网时代,如果我们要快速开发,节省流量
建议用http协议,首先天然支持代理和压缩。
如果用原生的tcp协议的话,这些都需要自己额外进行开发工作。特别是代理较为麻烦。