发现论坛很多同学根本不了解这个,还有很多同学无法理解这些内容,或者理解的内容根本就是错误的,这是由于完全不了解HTTP协议导致的,通俗的说就是:你知道得太少了……,囧……

作为一个 Web 安全方面的论坛,居然不了解 HTTP 协议,这真是好蛋疼的一件事。。。

我这里用通俗的语言简单的解释一下。

0x00、解析操作(这个都一样的,就不解释了):

用户对浏览器发出指令:我要浏览网站:https://lcx.cc/index.asp

用户浏览器询问当前系统默认的 DNS 服务器,lcx.cc 这个域名对应的IP是多少啊?

DNS 服务器回答:对应的IP是:8.8.8.8。

用户浏览器:我知道了!我去找这个服务器。

如果此域名不存在,那又是这样的:

DNS 服务器回答:木有找到对应 IP……

用户浏览器:囧……,同时显示:该页无法访问……,网站访问到此终止。

还有一种情况是这样的,如果你是用的 DNS 服务器存在域名劫持的话(也可以被某些人用来屏蔽某些网站):

DNS 服务器在自己的数据库里没有没有找到相关记录,DNS 心想:恩,主人说了,凡是不存在的域名都给转向到 IP:1.1.1.1 (某邪恶的主人的广告服务器地址)。

于是 DNS 说:哥找到了!这个域名对应的 IP 是:1.1.1.1。

呆呆用户浏览器:嗯,我收到了!拜拜……

于是乎,用户的浏览器傻乎乎的去访问这个 IP,于是乎,用户电脑屏幕被铺天盖地的广告霸占了。。。。。。。。

PS:

    这里不吐不快,操他妈的陕西电信西安分公司,都 DNS 劫持很多年了,我日!这是违法的!非法变更正常的互联网数据通讯数据包,可惜中国的法律对某些人无效……

2011-08-29 10:52,陕西电信屏蔽工信部的投诉页面是自取其辱:https://lcx.cc/post/1728/

2011-01-13 00:41,陕西西安电信公然劫持淘宝主页,强行推广!:https://lcx.cc/post/1086/ 

2010-10-06 05:02,电信陕西分公司ISP劫持域名地址更新:https://lcx.cc/post/725/

2010-08-28 09:50,垃圾电信换新手法网页右下角狂弹广告:https://lcx.cc/post/450/

2009-09-20 05:16,中国电信超级无耻卑鄙下流,搞DNS劫持:https://lcx.cc/post/49/

0x01、正常浏览:

用户浏览器对服务器说:我要访问这个网站:lcx.cc (Http 头中的 host 值,也就是主机名、域名)。

服务器在他的资料中查找这个网站,恩,找到了,对用户浏览器说,我找到了!(http 状态码:200 ok),这个网站数据是这样的,我发了,你接好!

用户浏览器回答:我收到了!,同时处理数据进行显示等操作。

0x02、当域名对应的网站没有找到时:

用户浏览器对服务器说:我要访问这个网站:This is sibada! (Http 头中的 host 值,只不过这里是“伪造”的值)。

服务器在他的资料中找这个网站,没找到,服务器对浏览器说:访问你妹啊,老子这没有这个站!(http 状态码:400 bad request,如果是访问页面页面的话,HTTP 状态码就是:404 Not Found。),老子给你默认数据(例如 IIS 的: 建设中……,这个值可以自己随便定义),你接好了。

用户浏览器:囧~~~,同时进行一系列显示操作。

0x03、当服务器不判断HOST头时,也就是输入IP可以直接访问的站:

用户浏览器对服务器说:我要访问这个网站:lcx.cc 或 this is sibada!(正常或者“伪造”的)。

服务器心想:老子的主人说了,不管谁来都给一样的值。然后对用户浏览器说:我找到了!(http 状态码:200 ok),这个网站数据是这样的,我发了,你接好!

用户浏览器回答:我收到了!,同时处理数据进行显示等操作。

HTTP 协议就是这样……,这次应该懂了吧。。。。

当然,这只是极其简单的一部分内容,完整的 HTTP 协议有数百个页面状态(可以自定义),几十个HTTP头(可以自定义),还有各种自定义的东西,完全了解还需要一段时间。

总体来说,HTTP 协议是基于 TCP 协议的一种算是比较简单的通讯协议,这个协议比较简单,有兴趣的同学自己可以找找相关资料看看。

DNS 查询协议就复杂很多了,这个需要一定的基础才可以看得懂,参考资料:

DNS协议报文(RFC1035) DNS报文解析 DNS协议详解:https://lcx.cc/post/1247/

DNS查询报文和应答报文抓包分析:https://lcx.cc/post/1854/