[转]常识:输入网址之后发出了何等(常识,可是何人又能说领悟啊?)

1. 先是是输入网址

  以 www.facebook.com 为例

  2. 浏览器查找域名对应 IP

  2. 1 DNS 查找过程:

  浏览器缓存——浏览器会记录 DNS 一段时间(2-30 分钟不等,视浏览器而定)

  系统缓存——浏览器里没找到 DNS 缓存,此事浏览器做一个类别调用(window
下是 gethostbyname)。如觉察匹配则利用。(与此对应当 host
恶意威胁更改攻击)

  路由器缓存——路由器也会有 DNS
缓存(缓存你上过的网站,所以有时路由器需要举办 DNS 刷新)

  ISP DNS 缓存——接下去是在 ISP(互联网服务提供商)的 DNS
服务器的缓存上摸索。

  递归查找——DNS 缓存里没有的话,ISP DNS
服务器会先后从根域名服务器(root)、.com 顶级域名服务器、Facebook域名服务器获取 IP(一般缓存内都会有,所以这一步一般不会暴发)

  2. 2 多 IP 域名 DNS 查询解决方案

  循环 DNS——单个域名、两个 IP 列表循环应对 DNS 查询

  负载均衡器——一个一定 IP
的负载均衡服务器(例如:反向代理服务器)负责监听请求并转发给前边的五个服务器集群的某一个,实现五个服务器负荷均衡

  地理 DNS——依照用户所处地理地点,重临不同的 IP(应用:CDN)

  anycast——一个 IP 地址映射四个大体主机的路由技术

  3. 发送请求

  拿到域名对应的 IP 后,就起来发送 HTTP (S)请求了.

  请求头详解:

  GET http://facebook.com/ HTTP/1.1

  Accept: application/x-ms-application, image/jpeg,
application/xaml+xml, […]

  User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1;
WOW64; […]

  Accept-Encoding: gzip, deflate

  Connection: Keep-Alive

  Host: facebook.com

  Cookie: datr=1265876274-[…]; locale=en_US; lsd=WW[…];
c_user=2101[…]

  请求告诉服务器:

  1. 自己要拿走(GET) http://facebook.com/ (GET 的 URL)这几个页面

  2. Accept:我能经受这一个类此外文本

  3. 我动用的是何种操作系统上的哪些项目这么些版本的浏览器

  4. 肯定接受何种措施的压缩文件

  5. 连连类型:短连接?长连接?

  6. 主机域名

  7. 发送存储在本机的 cookies 音讯给服务器

  除了发送获取请求,还是能发送提交响应请求(如:搜索时要把搜索的始末一并发放服务器举办处理(在哀求URL 前面扩张一定的用户参数),以博取特定的始末)

  注意:URL 前面加斜杠与不加斜杠的分别(文件夹与单个文件的分别)

  http://www.facebook.com

  http://www.facebook.com/

  当我们输入 http://www.facebook.com 时,浏览器会自动添加斜杠,保证
URL 的谨慎。

  当我们输入:http://www.facebook.com/folderOrFile 时,因为浏览器不晓得
folderOrFile
到底是文本夹仍旧文本,所以不可以自动添加斜杠。这时,浏览器就不加斜杠直接访问地址,服务器会响应一个重定向,结果导致一遍不必要的抓手。

  4. 重定向

  当我们输入不完整的网址 http://www.facebook.com 时,或者网站迁移做了重定向设置时,服务器会展开一次重定向响应。

  下面是重定向之后再次来到的响应头:

  HTTP/1.1 301 Moved Permanently

  Cache-Control: private, no-store, no-cache, must-revalidate,
post-check=0,pre-check=0

  Expires: Sat, 01 Jan 2000 00:00:00 GMT

  Location: http://www.facebook.com/

  P3P: CP=”DSP LAW”

  Pragma: no-cache

  Set-Cookie: made_write_conn=deleted; expires=Thu, 12-Feb-2009
05:09:50 GMT;

  path=/; domain=.facebook.com; httponly

  Content-Type: text/html; charset=utf-8

  X-Cnection: close

  Date: Fri, 12 Feb 2010 05:09:51 GMT

  Content-Length: 0

  1. 301 永久重定向

  2. 新的 Location:……

  为何要重定向,而不直接重临用户想看的始末吧?(既然服务器已经通过重定向知道了用户需要咋样)

  答:原因之一:与寻找引擎排行有关。你看,如若一个页面有五个地方,就像 http://www.igoro.com/ 和 http://igoro.com/,搜索引擎会认为它们是五个网站,结果导致每一个的搜寻链接都缩减从而降低名次。而搜索引擎知道
301 永久重定向是什么意思,这样就会把走访带 www 的和不带 www
的地址归到同一个网站名次下。

  5. 新的伸手

  重定向之后会宣布一个新的拿到请求

  6. 服务器处理请求

  6. 1 web 服务器软件

  服务器操作系统序列:Linux(一般是厂家按照开源定制)、windows server
系列(微软)

  首要的服务器软件:IIS、Apache、汤姆(Tom)cat、JBOSS、Nginx、lighttpd、Tetty

  服务器软件的法力:接收、处理与响应请求(精通 CGI 的机能)

  6. 2 处理流程:

  web 服务器软件(如 IIS 或者 Apache)接收到 HTTP 请求

  确定实施那几个请求处理程序(一个能读懂请求并且能生成 HTML
来拓展响应的顺序)(例如:Asp.Net,PHP,RUBY……)来拍卖它

  请求处理器阅读请求头的参数和 cookies 信息

  更新服务器上的音讯:例如更新数据库音信、服务端 cookies

  生成 HTML,压缩(gzip 或任何),响应请求发送给用户

  7. 服务器发回一个 HTML 响应

  响应包括响应头(响应参数与音信)、响应包(主体文件)

  响应包拔取一定措施压缩,整个响应以 blob
类型传输,响应头提示响应包以何种措施缩小

  这一个响应头与重定向的响应头不太一样,这多少个响应头还富含着缓存选项,cookies
设置和隐私新闻等

  8. 浏览器起头显得 HTML

  浏览器在一向不完整接收全体 HTML 文件,就曾经先河显得页面了

  9. 浏览器获取其他文件

  浏览器解析 HTML
遭遇需要下载的文书时,便再也向服务器(CDN)发送获取文件的乞求。

  注意:

  1. 动态页面无法缓存,静态文件允许浏览器举行缓存。

  2. 静态文件本地有缓存时一贯从本土读取

  3.
伸手响应头内含有着静态文件保留的期限,浏览器知道下载的静态文件要静默保留多长时间。

  4. 响应头还会有静态文件的
ETag(相当于版本号),当浏览器发现呼吁的静态文件的响应头的 ETag
与存活的缓存文件不符时,便会再度向服务器获取静态文件。

  10. 浏览器发送异步(AJAX)请求

  web 2.0
的一大特征就是页面呈现完全后客户端依旧与服务器端保持联系(keep-alive)

  浏览器执行一定的 JS
代码会给服务器发送异步请求,获取最新的动态音讯,使得页面能维持较新的意况。

  HTTP
是一个请求-响应协议,只有在客户端发送请求,服务器端才能做出响应,而不可能主动把信息仍然文档发给客户因而,要想维持页面处于最新的场所,需要定时举行轮询(定时发送
AJAX 请求以更新页面内容)

  AJAX 请求卓殊便于更改,且用户万分容易自己打造和殡葬 AJAX
请求,所以并未验证码的远非 IP
限制条件的投票就是一个小游戏了(参照工作室一遍刷票:自己定义
IP,自己定时发送 AJAX 请求,然后票就哗哗的上了)。

  优化小方案:假诺服务器被轮询时从没新新闻,它就不理那一个客户端。而当呼吁没有超时的景色下一旦接受了该客户的新信息,服务器就找到未形成的呼吁,把新音讯作为响应发送给客户端(那样就无需频繁地响应请求了)

 

 

来自: www.jianshu.com

 

相关文章