首先,你需要了解三个基础网络知识。
1dns
1.1dns简单说就是你给它一个域名,它解析一个ip给你。但是实际上情况不是这么简单的。
客户端发起一个dns查询请求,提交一个完整主机名(例如ame。a记录表示是一个ipv4的地址,cname表示为另外一个主机名(例如server1.realserver.com)。a记录允许同名存在,多个不同的ip被对应到同一个主机名上,也允许使用根记录,本例中即为abc.com,不带任何前缀;cname不允许同名存在,不允许根记录,也不允许与a记录同名。如果客户端得到的返回是一个cname,则会重新再来一次dns查询去解析这个cname的ip。对于这个cname的查询,可能返回另外的cname,则这个过程会很长,直至解析出a记录。
1.2如果dns服务器上没有查询到相关记录,则会询问上一层的dns服务器。如果上一层服务器解析出结果,则它在返回给用户结果时,顺便自己缓存一份。缓存的时间由域名的ttl决定。
1.3每个域名首先要注册在跟dns上ns服务器名称。当一个区域中最顶层的dns也没有用户查询的主机名记录时,则会首先向internet跟dns获取这个ns服务器名称,并尝试向这个ns服务器发起查询请求。ns服务器必须响应并响应这个查询。如果dns跟服务器无法被连接到、ns无法被找到、无法被连接到或者ns服务器无法解析,则本主机名最终解析失败。
1.4dns如果返回多条a记录时,会生成一个有序集合。这个排序根据历史查询散列,并根据访问者的ip所在区域优化。客户端拿到的集合中的第一条ip通常为一个优化后的地址,但其他地址依旧可作为备选使用。
1.5dns服务器通常不归主机管理商所有,并且由于需要快速响应,在查询的时候是无法判断主机状态和负载的。但一些较大的机构,会自己拥有一个重新设计的dns服务器,考虑到这些信息。而对于这种情况,外部公网的dns只能解析出一个cname,并交由这个dns来进行后续解析(这个dns被注册为这个cname对应的ns)。这种设计下的dns通常被认为是nlb(网络负载均衡)设计的一部份。
1.6由于1.2提及的代理查询以及ttl的机制,dns其实并不能良好的实现服务器的轮询负载均衡,但是可以实现区域优化查询,即对某个特定区域尽量返回其区域内的ip结果。
2http头
在发起http请求时,客户端会同时提交要访问的文件(一般在get命令后)以及主机名(host字段),对方服务器会根据这个host来确定它要访问的域名。所以一个主机在一个ip上并行存在多个不同的主机地址。
3nlb
通常的nlb有三种解决办法。
3.1本地dns加速,如1.5所述的方法。
3.2cdn(内容分发网络)。cdn可以被看做是一个独立的http代理网络。使用cdn的时候,dns应把域名解析到某个cdn的全球ip群上。cdn服务器得到http请求后,会在转发原真实服务器的数据时,本地缓存一份。甚至可以实现数据的预推送。因此cdn非常适合于静态数据的全球化缓存。例如微软发布补丁、苹果发布新产品、wordpress、amazon网站的图片缓存都是使用了cdn技术。
3.3虚拟ip地址。通常情况下,一个ip不应该被设置到超过一个设备上,因为超过这个设置后,上层的路由器就不知道如何转发这个包了。但是,如果路由器经过了设置(例如bgp协议或者专门设计的路由软件等),是可以在多个设备下共享同一个ip的。这种共享既可以是物理的(多个设备同时使用一个ip,由上层路由进行分支选择或者广播、组播数据包),或者是轮询的(多个设备轮流使用一个ip,同时只有一个设备使用这个ip,而这个ip可以在多个设备间高速切换)。如果某个应用必须基于ip地址(例如dns服务本身),只能使用这种方式来处理。
那么回头看你三个问题。
q1返回多个a纪录后,客户端会按照集合的顺序依次尝试访问。这些数据在ns服务器上是单一存在的,但是会被多层dns缓存。
q2http头段已经讲述。
q3希望你看过nlb段后能理解。
网友解答:这个问题必须要解答下,小编也有做过一些网站,对这块也有相对的理解,从域名到网站虽然整体来说较为简单,梳理起来涵盖了很多技术知识,下面我们来区分下域名、服务器主机、ip和公网ip、网站程序服务等等。
域名是互联网上某个计算机或组的一种身份标识,用于在传输数据时的电子方位标识,服务器主机就是用于服务于互联网的pc的计算机服务设备,ip有内网ip和公网ip,内网ip是在一个路由下的设备的ip,公网ip是全球互联网的一个设备终端身份标识,公网ip是有全球互联网根服务器管理着,网站程序是我们通过各种编程语言编写的服务程序。
一个网站的形成服务是这样联系的,首先就是你的服务器主机通过相关服务程序开放所需的服务和端口,如网站服务程序基本端口如80443这些端口开放出来,然后把相应的程序系统(如iis)会有一个绑定域名(服务的名称)服务,主机和路由器之间再映射一个服务器主机的ip(内网ip)对应相对的端口给对外服务的ip,只要有用户通过相应的公网ip就可以访问你的服务了。
但是题主说了,如果一台主机一个端口多个站点那怎么办,这就是要域名的电子标识,域名是通过互联网的某台dns域名解析服务器指向你这台主机的,但是指向这台服务器,那得有个电子标识才能知道是哪个服务程序的请求,所以就要用域名和相关服务程序之间去绑定。
像百度等大型的网站域名一个,服务器很多,这个就要涉及到分发服务器和cdn缓存加速服务,就是有一台超级的服务器,他自身多级管理着下面很多台服务器,通过服务器的相关分发系统对应出的每个请求分发到相应的服务器如工作,说的笼统点就是超级克隆同样的服务,这样更加保障的数据的安全和输出的能力。
所涉及的技术一下也说不完,但是无论多服务器或多服务网站,相对的标识(ip域名)只有一个,是通过各种协议和技术服务程序把他们统一起来,不是域名通过起来,域名和ip是身份的标识而已,底下工作的人可以是很多,如一个大公司的boos,我们知道公司的名字和相关创始人,工作的机制都有相对的人和物去完成。
原文标题:域名、主机服务器、ip、网卡与网站之间的关系是什么?,如若转载,请注明出处:https://www.saibowen.com/wenda/23547.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。