【工程】域名与DNS

1、HTTP协议

HTTP 协议主要用于客户端和服务器之间的网络通信,是目前应用非常广泛的一种通信协议。我们常见的网站、手机应用等于服务器的通信大都采用 HTTP 协议。

那什么是客户端和服务器端?

  • 客户端:
    请求访问网站、图片、视频等资源的一端。比如你在浏览器上访问一个网站,浏览器就是客户端;或者比如你使用淘宝的客户端购买商品的时候,你的手机上的淘宝 App 就是客户端;
  • 服务器端:
    提供资源的一端。比如京东的服务器,淘宝的服务器。你在淘宝上购物的时候,你访问到的商品信息、图片、视频等就是由淘宝的服务器提供的资源。

在 HTTP 协议通信时,必定有一台计算机作为客户端,而必定有另一台计算机作为服务器端。

HTTP 协议中,必定是由客户端发起请求,由服务器端响应请求。也就是说,HTTP 是一个单向通信,只能由客户端发起。

 

HTTP 协议的作用呢?

客户端通过 HTTP 协议发起请求,告诉服务器端自己想要什么。服务器端根据客户端的需要提供对应的资源,并由 HTTP 协议将服务器端提供的资源运回给客户端。

这就类似早期邮递员,你写一封信,由邮递员按地址送到对方的住处并把对方给你的回信带回给你。可以理解 HTTP 协议就是类似邮递员或者运输物流这样的角色。

2、FORM表单

HTML 表单用于收集不同类型的用户输入。

POST 和 GET 完成的任务是一样的,都是将表单数据浏览器发送到服务器,不过采用了两种不同的方式。

POST会打包你的表单变量,在后台把它们发送到服务器;

GET 也会打包你的表单变量,但会把这些数据追加到 URL 的最后,然后向服务器发送一个请求。

3、URL

4、DNS

DNS域名解析服务, 就是将域名指向网站空间IP,让人们通过注册的域名就可以方便地访问到网站的一种服务。

浏览器中输入URL到返回页面的全过程?

  • 1.根据域名,进行DNS域名解析;
  • 2.拿到解析的IP地址,建立TCP连接;
  • 3.向IP地址,发送HTTP请求;
  • 4.服务器处理请求;
  • 5.返回响应结果;
  • 6.关闭TCP连接;
  • 7.浏览器解析HTML;
  • 8.浏览器布局渲染;

DNS解析

如图所示,大致就是:浏览器输入地址,然后浏览器这个进程去调操作系统某个库里的gethostbyname函数(例如,Linux GNU glibc标准库的gethostbyname函数),然后呢这个函数通过网卡给DNS服务器发UDP请求,接收结果,然后将结果给返回给浏览器。

这张图其实已经讲明白大致的流程,但是细节上可能有些差异。 例如

  • (1)我们在用chrome浏览器的时候,其实会先去浏览器的dns缓存里头查询,dns缓存中没有,再去调用gethostbyname函数
  • (2)gethostbyname函数在试图进行DNS解析之前首先检查域名是否在本地 Hosts 里,如果没找到再去DNS服务器上查。

 

域名与DNS

我们访问一个网站的时候,往往使用的是域名(相对IP来说更加语义清晰、更加容易记忆,例如 http://www.baidu.com)。

域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区。

然而计算机之间的通信网络通信是通过IP进行的, 因此需要将域名解析为对应的IP,DNS就是进行域名解析的服务器。

DNS 维护着 域名(domain name)和IP地址 (IP address)的对照表表,以解析消息的域名。

DNS 查询的过程如下图所示

DNS 维护着 域名(domain name)和IP地址 (IP address)的对照表表,以解析消息的域名。

1、在浏览器中输入http://www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。

2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。

3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。

5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(http://qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找http://qq.com域服务器,重复上面的动作,进行查询,直至找到http://www.qq.com主机。

6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

Hosts

 

域名

 

IP在网络通信中的作用


参考: 

接口测试教程 - HTTP 协议 - 什么是 HTTP

HTML 表单

面试官:讲讲DNS的原理? - 孤独烟的文章 - 知乎

DNS解析的过程是什么,求详细的? - wuxinliulei的回答 - 知乎

计算机网络: IP地址,子网掩码,网段表示法,默认网关,DNS服务器详解 - 遇上方知有的文章 - 知乎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值