资源描述:
《网络架构概述》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、B/S网络架构概述 1.目前B/S网络架构大都采用类似下图所示的架构 2.如何发起一个HTTP请求就是建立一个Socket通信的通过 Java代码 1.浏览器在建立Socket连接连接之前,必须根据地址栏输入的URL的域名DNS解析出IP地址,再根据这个IP地址和默认的80 端口与远程服务器简历Socket连接,然后再根据这个URL组装成一个get类型的Http请求头,通过outputStream.write 发送到目标服务器,服务器等待inputStream.rea放回数据,最后断开这个连接. 不同的
2、浏览简历连接的方式不同,管理连接的方式也不同.既然发送一个Http请求就是简历一个Socket通信,那么我们就可以不利用浏览器手动就可以发送一个Http请求了. Java代码 1.1.使用 HttpClient 2.2.linux 中 使用 curl +URL 就能够发起一个Http请求 可以加上 -I 来查看http协议头的信息,或者 -H来添加 HTTP 3.Http协议的解析 4.在浏览器中查看http头的信息 Java代码 1.1.Firefox中可以使用 firebug ,Httpfo
3、x这些插件来看看请求和返回的信息 2.2.IE 中可使用 httpWatch,httpfox , 3.3.Google中自带了F12 就可以打开了. 5.浏览器的缓存 Java代码 1.1.为了获取最新的数据,我们可以使用Ctrl+F5 来直接向目标URL发送请求.这样就不会使用浏览器缓存数据. 2.2.如果服务器前端部署了一个缓存服务器,比如 Varnish代理,也可能直接使用缓存数据. 3.3.所以为了保存能够看到最新的数据,必须通过Http协议来控制了. 在发送http请求的请求头中加入
4、 Cache-Control(控制浏览器) 和 Pragma (控制服务器) 两个参数来控制,浏览器和缓存代理服务器 必须服从命令请求最新的数据. HTTP的请求头中会增加一些请求头 1.Cache-Control/Pragma Java代码 1. 2. 这个HTTP Head 字段用于指定所有缓存机制在整个请求/ 响应链中必须服从的指令, 3.如果知道该页面是否为缓存,不仅可以控制浏览器,还可以控制和HTTP 协议相关的缓存 4.或代理服务器。HTTP Head 字段有一些可
5、选值 2.Expires Java代码 1.Expires 通常的使用格式是Expires : Sat, 25 Feb 2012 12:22:17 GMT ,后面跟着一个日期和时间,超过这个时间值后,缓存的内容将失效,也就是浏览器在发出请求之前检查这 2.这个字段,看该页面是否已经过期了,过期了就重新向服务器发起请求。 3.Last-Modified / Etag Java代码 1.Last-Modified 字段一般用于表示一个服务器上的资源的最后修改时间,资源可以是静态(静态内容自动
6、加上 Last-Modified字段)或者动态的内容(如 Servlet 提供了一个 getLastModified 方法用于检查某个动态内容是否已经更新),通过这个最后修改时间可以判断当前请求的资源是否是最新的。一般服务端在响应头中返回一个 Last-Modified字段,告诉浏览器这个页面的最后修改时间. 2.Etag: 与 Last-Modified 字段有类似功能的还有一个 Etag 字段,这个字段的作用是让服务端 给每个页面分配一个唯一的编号,然后通过这个编号来区分当前这个页面是否是最新的。
7、 3.这种方式比使用Last-Modified 更加灵活,但是在后端的Web 服务器有多台时比较难处理, 4.因为每个Web 服务器都要记住网站的所有资源,否则浏览器返回这个编号就没有意义 6.DNS域名解析 Java代码 1.1.将域名解析成IP就属于DN解析的工作范畴.目前世界上整个互联网有几个DNS根域名服务器. 2.步骤 3.1.用户输入域名--->浏览器检测缓存(查看有无此域名解析过的IP地址)--->有(解析结束) 4. 浏览器的缓存域名是有限制的,大小限制,时间限制.时间的
8、限制可以通过TTL(Time To Live) 属性来设置.(TTL的初值通常是系统缺省值,是包头中的8位的域) 5. 6.2.如果用户浏览器缓存中没有,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果一般在 C:WindowSystem32driversetchosts 文件里面.如果有 浏览器就会使用这个ip地址. 在linux 中这个配置文件是/etc/named.conf 修改这个文件可以达到