1.访问网站流程。(以访问http://12042068.blog.51cto.com/为例)
第一步:从浏览器输入网址http://12042068.blog.51cto.com/,会车后,系统先查找hosts文件和本地的DNS缓存。
确定是否存在http://12042068.blog.51cto.com/这个域名对应的IP地址。一般hosts都是局域网做测试用(ip
域名),第一次访问一般不会有DNS缓存。
第二步:由于本地hosts和DNS缓存没有http://12042068.blog.51cto.com/域名对应的解析记录,那么。系统把浏览
器需要解析的内容发送给本地配置的DNS服务器。(LDNS即local DNS)如果没有,会继续请求别的DNS服务器。
第三步:LDNS服务器会从DNS系统的(".")根服务器查找,但是根服务器没有12042068.blog.51cto.com域名对应的解析
记录。但是,根下面有12042068.blog.51cto.com对应的顶级域.com的的解析记录,根会把.com的服务器的地址返回给
LDNS服务器。
第四步:LDNS获取.com对应的DNS服务器地址后,会请求.com服务器解析12042068.blog.51cto.com域名。不过,.com服务
器没有12042068.blog.51cto.com域名的解析记录。但是,.com会包含51cto.com域名所对应的域名,并返回给LDNS。
第五步:LNDS获取51cto.com的对应的域名地址,去请求51cto.com解析12042068.blog.51cto.com。51cto.com对应的
域名DNS服务器是授权DNS服务器(一般这个域名服务都是购买域名时,用于域名解析的服务器。)如果,没有解析成功
可能是该域名没有被授权(没有被购买使用)或是网站没有假设好。
(也又可能接着向51cto.com请求.blog.51cto.com的解析记录。就这样。从后向前逐级发起请求,直到找到)
第六步:51cto.com域名DNS服务器把12042068.blog.51cto.com对应的IP解析发送给LDNS
第七步:LDNS把来自授权域名服务器51cto.com对应的ip解析记录发送浏览器,并且把该域名和ip缓存起来,(这些缓存有NDS TTL
控制在指定TTL内不过期)
第八步:浏览器获取到12042068.blog.51cto.com对应的ip,对改ip发起请求,网站服务器响应请求并处理。将客户请求内容返回
给浏览器。
(第一次访问是这样:连续访问后,本地系统和LDNS层级都会有缓存,再次访问的话,就直接读取缓存记录)
2.所谓的翻墙访问Google等网站。
一般免费的都是直接写入hosts文件。把ip和对应的域名做号本地解析。访问的时候直接读取本地解析。不用查询LNDS服务器
巧妙的躲过DNS防火墙(防火长城)。还有我们访问的Google不可能是官网。大多是和官网有关联的镜像站点。
3.关于根DNS服务器
根域名服务器(root name server) 是互联网域名解析中最高级的域名服务器。返回顶级域名的地址。截至,2014年10月全球共有
504台服务器,被编号为A-M共13个编号大部分借由任播(Anycast)技术(根据路由拓扑图,开决定最快,最好的路线),
编号相同的根服务器使用同一个IP,504台根服务器总共只使用13个IP。其中A-M这13台服务器大都在美国(军方,互联网
及相关权威部门,大学)荷兰和瑞典及日本各有一台。
前面提及的504,只有13台是独立的。余下的都是镜像站点。(也就是拷贝13台主机的内容共享)。
中国大陆在北京有三台编号为L的镜像,编号为F、I、J的镜像各一台,共6台;
香港有编号为D、J的镜像各2台,编号为A、F、I、L的镜像各一台,共8台;
台湾则有编号为F、I、J各一台,共3台。
4.下面是chrome浏览器解析出来的访问http://12042068.blog.51cto.com/的HTTP协议的请求头部信息和返回的头部信息
返回头部的主要信息:
Request URL:http://12042068.blog.51cto.com/
Request Method:GET
Status Code:200 OK
Remote Address:120.55.238.29:80
请求头部;
GET / HTTP/1.1
Host: 12042068.blog.51cto.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8
Cookie: _ourplusFirstTime=117-1-17-16-7-31; www51cto=D9E6C415373C4981F6F5E2778D62624BABwY; _ourplusReturnCount=7; _ourplusReturnTime=117-1-18-9-38-32; pub_cookietime=864000; refreshlimit=1484800933%09%2Fuser_index.php%3Faction%3Daddblog_new; Hm_lvt_2283d46608159c3b39fc9f1178809c21=1484964849,1484964919,1484970898,1484971967; Cto_lvt_d2cb9d6ccefce8d1e89582c2a2a24cc0=1484964850,1484964919,1484970898,1484971967; lastvisit=0%091484971964%09%2Fmod%2Fedu_void.php%3F
响应头部的详细信息
HTTP/1.1 200 OK
Date: Sat, 28 Jan 2017 09:02:43 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: aliyungf_tc=AQAAAC36Jk9mLAoAUihGei5+IG/9P2ni; Path=/; HttpOnly
Set-Cookie: acw_tc=AQAAAFI79XO2LgoAUihGeuYewiNEfQa3; Path=/; HttpOnly
Set-Cookie: PHPSESSID=40e4c04395327fe99a6362caff1ee99f; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: lastvisit=0%091485594163%09%2Findex.php%3F; expires=Sun, 28-Jan-2018 09:02:43 GMT; path=/; domain=.blog.51cto.com
If-Modified-Since: Sat, 21 Jan 2017 16:00:00 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Vary: Accept-Encoding
Load-Balancing: web06
Load-Balancing: web06
5.浅谈HTTP协议
HTTP协议,全称(HyperText Transfer Protocol 超文本传输协议)该协议主要是:发布和接收HTML页面的。
目前广泛用于:web浏览器和web服务器之间的通信。目前版本是HTTP/1.1.HTTP协议的重要应用WWW服务的
端口号80.还有另一个加密的web服务https的端口号443(主要用于支付)。
HTTP报文一般分为2种:requset message 请求报文 和 response message 响应报文
1.请求报文。
包含一系列的动作:以前面的举例说明:
GET / HTTP/1.1
请求的方法 和http的版本
Host: 12042068.blog.51cto.com
请求的主机
Connection: keep-alive
发送本次连接后,返回信息后继续链接。如果参数:close 则关闭连接
Pragma: no-cache
Cache-Control: no-cache
缓存的机制 no-cache 一般就是不缓存。(包括上面的)
Upgrade-Insecure-Requests: 1
(这个是W3C最新的修订。原本是HTTPS :1 为了支持https 的。这里更名为Upgrade-Insecure-Requests)
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
发起请求的客户端浏览器的信息
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
请求的内容
Accept-Encoding: gzip, deflate, sdch
请求支持的内容:比如gzip 压缩传输
Accept-Language: zh-CN,zh;q=0.8
请求支持的语言。
Cookie:
服务器生成的代码,服务器会回收的。cookie(一般会在本地缓存。有些需要用户名密码的网站。我们输入一次。点击记录密码
再次进入的时候就不需要再次输入了。就是cookie起到的作用)便于服务器和浏览用户交互。
2.响应报文。
HTTP/1.1 200 OK
http协议 返回的状态码和 状态信息
Date: Sat, 28 Jan 2017 09:02:43 GMT
时间
Content-Type: text/html
传输文件的类型
Transfer-Encoding: chunked
Connection: keep-alive
响应连接并传输信息后,继续保持连接
当然,只有头部信息是不可以。这些头部信息是浏览器读取的。我们看到的页面才是主体内容。
6.HTTP的响应状态码:HTTP status code 由三位数字组成。用于判断请求的是否成功,和不成功的原因。
总体来判断:500的代码多与服务器相关。
状态码 |
简单描述 |
200-OK |
代表访问成功 |
301 |
永久跳转。一般是网站更换域名或者输入baidu.com (省去www) |
403-Forbidden |
禁止访问,可能是服务器预先配置了策略 |
404-not Found |
服务器上找不到页面(可能服务器的路径有问题) |
500 |
可能服务器的安全策略没有关闭。如selinux在作怪 |
501 |
通常是代理服务器的节点问题 |
503 |
服务器宕机或是代理节点有问题 |
504 |
网关超时,多半是服务器过载,没有在规定时间内把数据传给前端 |
7.网址(学名 URL uniform resource location 统一资源定位符)
一般有3部分组成:协议 ip地址 资源目录地址
协议 |
分隔符 |
Ip地址或域名 |
分隔符 |
资源目录地址 |
http |
:// |
12042068.blog.51cto.com |
/ |
12032068/1894334 |
8.静态网页VS动态网页
本质区别是否需要后端数据库的支持。
从URL形式上看。动态的一般含有 ?或 & 之类的特殊符号。
https://www.kernel.org/这个网站页面就是静态的
http://12042068.blog.51cto.com/12032068/1894334就是典型的动态网站
在用浏览器查看加载元素的时候,发现好多这样的引用
https://tongji.51cto.com/frontend/index?cc=0&ck=1&cl=24-bit&ds=1366x768&ep=44&et=3&fl=24.0&ja=0&ln=zh-CN<=1485594167&nv=0&rnd=788547715&si=d2cb9d6ccefce8d1e89582c2a2a24cc0&st=3&su=http%3A%2F%2F12042068.blog.51cto.com%2F&v=1.1.0&lv=3&ft=1485599898&u=http%3A%2F%2F12042068.blog.51cto.com%2F12032068%2F1894334&fft=1485599943
但是,为什么这个看起来像是静态的呢。
这个是伪静态技术。大多网站靠访问量生存。而带来访问量的源头是互联网引擎(百度就是考引擎成暴发户的)的收录
搜索引擎对静态网页的收录十分友好。所有,大家就把动态网站伪装成静态。
9.网站流量术语
IP(独立IP)指独立ip数。国内大多是通过局域网共享上网。即路由器NAT地址转换上网,每个计算机在局域网的ip都独立,但是
在公网上,必须把每个私网地址转换成路由器接口的固定公网ip。所有,公用一个公网ip上网的人数无论多少。在统计IP时,都
算作一个ip。
PV (page view) 即页面浏览。只要打开一个页面就算一个PV。一般逛个淘宝。几百个PV(页面)都不止吧。
UV(Unique visitor 独立访客)是指访问的浏览器的客户端媒介(如笔记本,手机)比如你电脑手机都访问一个网站。就算2个UV。
举个例子:你们宿舍6个人,都拿一个笔记本电脑浏览同一个电影网站。一小时内都看了30个网页。
那么该网站的数据是:IP为1 (你们宿舍只能有一个公网ip出入)UV 为 6X1=6 PV 6X1X30=180.