本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处!
网络请求经过客户端请求,发送数据包、代理(转发)、隧道(信道)、网关(DNS),最终到服务器。我们都知道网址要通过DNS解析成IP才能到达服务器,也就说IP变化其实到达的是不同的服务器;而这里就涉及到三个问题,第一DNS怎样解析为IP,第二怎样防止IP被篡改,第三IP是否需要缓存。
首先DNS解析的目的是为了得到用户IP,将服务交给距离最近的服务器处理;使用IP直连可以减少解析等待时间,httpdns工具可以解析网址获得IP,例如DnsPod,好处是绕过运营商的LocalDNS,减少域名解析异常情况的出现。
其次IP被篡改,往往由于DNS解析过程出错或者被劫持,这时可以使用本地代理来处理网络请求,将网络请求的数据+签名信息进行校验,同时使用dnspod解析出ip进行校验是否是合法ip,最后使用https的方法发起网络请求。
接着DNS一般都存在缓存时间,放置在java.net.InetAddress和虚拟机层,如果没有则查询DNS服务器获取。通过如下代码设置虚拟机层的DNS缓存时间。
Security.setProperty("networkaddress.cache.ttl", String.valueOf(-1));//查询成功的缓存 -1表示久缓存 Security.setProperty("networkaddress.cache.negative.ttl", String.valueOf(0));//查询失败的缓存 0代表永不缓存
单位是秒,其他时间代表缓存时间,而4.0以前是永久缓存,4.0以后默认为2秒
顺便讲下Http请求
get可以加入书签在浏览器端做缓存,意思是从服务器获取数据(查)
post不可以加入书签,意思是向服务器传输数据(改)
put(增)
delete(删)
http://www.w3school.com.cn/tags/html_ref_httpmethods.asp
弱网情况下,只好通过压缩数据包来增加请求成功率,详见:
http://www.cnblogs.com/answer1991/archive/2012/05/07/2487052.html
UTC:原子时
GMT:格林威治时间
Http和Socket通信均属于TCP通信,均是三次握手,四次关闭。
JsConsole:body.contentEditable=true使Elements变的可写入
http://blog.csdn.net/u010983881/article/details/52692788