第一章 深入Web 请求过程

  • 1.1 B/S网络架构概述
  • 1.2 如何发起一个请求

步骤:1)浏览器在建立Socket连接之前,先URL的域名DNS解析出IP地址

   2)根据IP和默认80端口与远程服务器建立Socket连接

   3)浏览器根据URL组装成一个get类型的HTTP请求头,通过outputstream.write发送到目标服务器,服务器等待inputstream.read返回数据

   4)最后断开连接   

HttpClient httpClient = createHttpClient();//创建Client  
PostMethod postMethod;
String domainName = Switcher.domain;
postMethod.addRequestHeader("Contend-Type", "application/x-www-form-urlencoded; charset=GBK");//创建请求头
for(FileerDate fileterDate : fileterDates) {
postMethod.addParameter("ip", fileterDate.ip);
postMethod.addParameter("count", String.valueOf(filterDate.count));
}
try {
httpClient.executeMethod(postMethod);
postMethod.getResponseBodyAsString();
} catch (Exception e) {
logger.error(e);
}
  • 1.3 HTTP解析
常见的HTTP请求头
请求头 说明
Accept-Charset 用于指定客户端接受的字符集
Accept-Encoding   用于指定可接受的内容编码,如Accept-Encoding:gzip.deflate
Accept-Language   用于指定一种自然语言,如Accept-Language:zh-cn
Host 用于指定被请求资源的Internet主机和端口号,如Host:www.taobao.com
User_Agent 客户端将它的操作系统、浏览器和其他属性告诉服务器
Connection 当前连接是否保持,如Connection:Keep-Alive

 

 

 

 

 

 

 

 

 

 

常见的HTTP响应头
响应头 说明
Server 使用的服务器名称,如Server:Apache/1.3.6
Content-Type  用来指明发送给接收者的实体正文的媒体类型,如Content-Type:text/html;charset=GBK
Content-Encoding   与请求报头Accept-Encoding对应,告诉服务器采用的是什么压缩编码
Content-Language 描述了资源所用的自然语言,与Accept-Language对应
Content-Length 指明实体正文的长度,用以字节方式存储的十进制数字来表示
Keep-Alive 保持连接的时间,如Keep-Alive:timeout=5,max=120

 

 

 

 

 

 

 

 

  • 1.4 DNS域名解析

步骤:

1)浏览器自动检查缓存有无该域名对应已解析过的IP

2)没有则浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果

3)无法解析则操作系统把域名发送给LDNS(本地区的域名服务器)

4)再无法解析则直接到Root Server根域名服务器请求解析

5)根域名服务器返回给LDNS一个所查询域的主域名服务器(gTLD Server)地址

6)LDNS再向gTLD Server发送请求

7)接受请求的gTLD Server查找并返回此域名对应的Name Server域名服务器地址,这个Name Server通常就是你注册的域名服务器地址

8)Name Server域名服务器会查询存储的域名和IP的映射关系表,在正常情况下都根据域名得到IP记录,连同一个TTL值返回给DNS Server

9)返回该域名对应的IP和TTL值,LDNS会缓存这个域名和IP的对应关系,缓存时间由TTL控制

10)把解析结果返回给用户,用户根据TTL值缓存在本地系统缓存中,域名解析过程结束

  • 1.5 CDN工作机制

CDN(内容分布网络)=镜像+缓存+整体负载均衡

相当于1.4步骤7)后增加一步:Name Server域名服务器把它重新解析到另一个域名,而这个域名最终被指向CDN全局中的DNS负载均衡服务器,再由这个GTM是哪个地方的访问用户,返回给离这个反问用户最近的CDN节点

  • 1.6 TCP建立连接三次握手、四次握手

参考http://blog.csdn.net/oney139/article/details/8103223

posted @ 2016-02-28 21:19  水底的土豆  阅读(448)  评论(5)    收藏  举报