求助——DNS域名解析的问题

totola147 2012-04-25 03:18:38
在做一个爬虫,为了避免DNS解析阻塞带来的瓶颈,设计了异步非阻塞DNS服务
但是获取到的ip地址普遍不可以访问网站

可能的原因:
1 网站使用了web应用安全防火墙,隐藏了真实的IP,例如使用360的网站宝
参考:http://lb.360wzb.com/
2 网站的服务器位于一个虚拟机上,多个站点共用一个IP,访问需要端口号
3 网站使用了反向代理
参考:http://hi.baidu.com/danghj/blog/item/613c8dca01533081c91768a2.html

提问:
1 那浏览器是如何做到的,浏览器的访问web的流程不是,先将域名解析请求发送到DNS服务器,获取到ip,然后用这个ip建立到web服务器的连接

2 DNS解析只提供域名解析的映射关系,那如果访问一个ip上的不同虚拟机,如何实现呢?

问题重现:
在cmd 中 输入nslookup
输入www.39.net
得到ip 59.42.249.74在浏览器中输入这个ip地址并不能访问web服务
为什么呢?
怎么样才可以呢
...全文
341 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gzpbx 2012-12-18
  • 打赏
  • 举报
回复
简单说,如果你的IIS站点通过不同的主机头绑定了多于一个Site,那么你这个机器就不能通过IP访问了~~ 因为当http请求到这台机器的时候,IIS无法区分应该由哪个站点负责你的请求~~ 但是通过域名过来,IIS 通过header 可以知道这个请求应该归属哪个站点,就可以访问了~~~
usherz 2012-04-27
  • 打赏
  • 举报
回复
你的问题,本身就是矛盾的,你想要把httpclient的url访问行为拆分做异步实现,于是你独立完成了DNS解析,但是你又想用原本未拆分的HTTPclient

所以要想能够利用实现的异步DNS解析,只需要将异步DNS做成一个DNS代理 架设到爬虫和DNS服务器中间就可以了
totola147 2012-04-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
iis里面任何网站设置都包含,IP地址,端口和主机头值,主机头值一般就是网站的域名,这种情况下,一个IP对应多个域名非常正常,这三个值不和其他网站冲突,就表示这个网站可以访问,但你输入http://IP来访问,问题IP在iis没有设置主机头,当然就访问不了啊,要是这样说你还不清楚,你可以电话我18926554966,或者qq171156544来讨论
[/Quote]
在http头文件中是有 host:这个数据的
totola147 2012-04-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
iis里面任何网站设置都包含,IP地址,端口和主机头值,主机头值一般就是网站的域名,这种情况下,一个IP对应多个域名非常正常,这三个值不和其他网站冲突,就表示这个网站可以访问,但你输入http://IP来访问,问题IP在iis没有设置主机头,当然就访问不了啊,要是这样说你还不清楚,你可以电话我18926554966,或者qq171156544来讨论
[/Quote]
非常感谢您!!!

我加了您Q,但是Q上没有回复,而我上班从来不带手机所以电话也没法打,我就先用消息回复的方式了 这样可能会慢 不好意思

按照您的解释,结合DNS的解释
使用域名可以访问,而使用ip不可以访问,我的这么理解的
当使用域名的时候,浏览器会先向域名服务器发送域名解析请求,得到了解析的ip地址后,浏览器制作http头文件,包含域名 发送到指定的ip主机上,web服务所在主机接收到数据包,iis解析出头文件中的域名信息,从而指定服务内容
而当使用ip访问时,不知道浏览器会不会还去解析DNS,如果解析的话,将ip发给域名服务器,也将返回查询无结果的信息,即使忽略这样的错误,依然像指定ip的主机发送请求,头文件中也没有包含域名信息,web服务器接收到请求,也就无法判断提供那种服务

是这样吗?
如果是这样,那我不明白的就是,为什么百度的,csdn的可以通过ip访问
nslookup
www.baidu.com
119.75.218.77
www.csdn.net
117.79.157.249
是不是说百度和CSDN的iis的主机头值用的就是ip

还有,如果web服务器用的不是IIS 而是apache、tomcat、servlet 是不是也有主机头值得概念
摩西云 2012-04-25
  • 打赏
  • 举报
回复
iis里面任何网站设置都包含,IP地址,端口和主机头值,主机头值一般就是网站的域名,这种情况下,一个IP对应多个域名非常正常,这三个值不和其他网站冲突,就表示这个网站可以访问,但你输入http://IP来访问,问题IP在iis没有设置主机头,当然就访问不了啊,要是这样说你还不清楚,你可以电话我18926554966,或者qq171156544来讨论
totola147 2012-04-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
如果这样就能访问这个网站才怪,网站域名都绑定的,我输入域名,对应服务器根据域名反馈我需要的网站服务,但输入IP,iis并没有提供任何IP服务,你当然访问不了网站啊
[/Quote]
可是你看一下http协议DNS协议,整个过程是通过UDP发送DNS查询请求到域名服务器,找到对应的ip地址,然后在建立tcp连接通过IP地址,既然是web服务,当然会在80端口监听,于是监听到我的请求
提供什么服务是通过端口映射的吧,web服务默认是80
浏览器会自动添加http:// 和 :80
网站都存在,怎么会没有提供服务呢?

您的意思我没有理解 您能说的在详细一些吗
摩西云 2012-04-25
  • 打赏
  • 举报
回复
如果这样就能访问这个网站才怪,网站域名都绑定的,我输入域名,对应服务器根据域名反馈我需要的网站服务,但输入IP,iis并没有提供任何IP服务,你当然访问不了网站啊

5,655

社区成员

发帖
与我相关
我的任务
社区描述
Web开发应用服务器相关讨论专区
社区管理员
  • 应用服务器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧