栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

网络层的解析与协议

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

网络层的解析与协议

作者:V7

博客:https://www.jvmstack.cn

URL解析与构造 网络

  说到网络,顾名思义就是让原本不相干的独立计算机让它们之间可以实现数据的传输、信息的沟通,这样原本单独的机器就可以操作它能够接触到的网络上其他计算机的资源,网络中计算机能够接触到的资源就大大提高了。

  平时我们常见的网络应用就是浏览器,当我们在浏览器当中输入了一段网址访问,接下来一个新的网页就会展示在浏览器上,当我们摁下回车之后,直到网页加载完成这段时间究竟发生了哪些事情呢?例如在浏览器中输入如下网址:http://www.google.com,浏览器第一件事情就是要解析这段地址

  真实搜索的的URL格式如下:

 - 协议: 开头是http是协议的部分,更准确的来说这是应用协议,这里使用http那就说明浏览器和服务器进行数据交互使用的协议是http,我们平时浏览网页的内容一般都是http协议,还有其他的比如说收发邮件的STMP协议、文件传输FTP协议等;

 - 域名/IP地址: 声明和网络中的那台计算机进行数据交换,上面示例说明要和Google的服务器进行数据交换;

 - 端口: 在第二步浏览器知道了要和指定服务器进行数据交互,但是服务器上一般都运行着非常多的应用,不一定所有的进程都是用来提供搜索服务的,使用端口就可以明确的表示要和指定服务器上的特定进程进行数据交互,注:一般80端口不需要显式输入,不输入浏览器默认会带这个端口;

 - 路径:一个进程可以提供多种服务,指定路径就是告诉进程要和特定的服务进行通信,示例中就是搜索服务;

 - 参数: 指定交互的内容,在浏览器中搜索就是我们键入的搜索内容。

 注: 我们平时所遇到的URL基本上都包含上述内容,只有知道了这几个部分所代表的意思,浏览器才能知道我们输入的这个URL想要得到什么样的结果。

DNS解析

  仅仅知道了URL怎么解析还不够,还需要DNS解析,也就是域名解析(Domain Name Server)。上述例子中要访问Google的服务器,我们知道Google不可能只有一台服务器,如果在搜索的时候让用户指定IP地址显然好似不现实的,一般使用浏览器访问一个服务器,都会键入一个人类能够看得懂的域名,浏览器在传送数据给Google的服务器之前,要将域名转换成特定的Google服务器的IP地址,如下:

  每一个IP地址就可以对应网络中特定的某一台服务器,IP地址只是一串数字,对于人类而且太难记忆,所以使用域名帮助我们更好的和不同的服务器去进行数据交换。

从右向左解析域名

  一般我们看到的域名包含三段(www.baidu.com、www.google.com等)信息,在解析的时候不是我们感官上的从左向右,二是从右向左进行解析。在平时搜索的时候我们一般键入的实www.google.com,其实完整的域名是www.google.com.root这样的,

域名的层级

 - 根域名: 通常在输入网络地址的时候会被省略掉,省略掉的原因是所有的域名中的根域名都是.root,这就是域名最右边的部分;

 - 顶级域名: 顶级域名有不同的种类,一般常见的.com、.org、.edu等,上述示例中的Google搜索的顶级域名就是.com;

 - 次级域名: 顶级域名往下就是次级域名,次级域名非常多,次级域名是可以按照自己的需求申请,只要不装车就可以了,比如.google、.baidu等;

 - 主机名: 如果你是一个网站的发布者,主机名就可以按照自己想法自由发挥了,比如www、wechat等。

 注: 整个域名的层级就像一棵树一样是一个树形图,根节点大家都一样,再往下就发散出了更多的类型。域名分层是相当于给网络中的所有域名做了个索引的工作,当需要查找某个特定的域名的时候可以从根域名层层递进更有效率的查找到特定的域名。

域名DNS的两种查询方式

  DNS本质上是一个分布式的数据库,上面已经说过域名是分不同的层级的,在存储域名和IP真实对应关系的时候也是存储在不同的域名服务器上面的,所有域名服务器组合在一起所组成的DNS系统就相当于是一个分布式的数据库,当有一个域名要查询对应IP地址的时候,总体来说有两种不同的查询方式:递归、迭代。

1. DNS递归查询

  用户使用浏览器和网络中的服务器进行数据交互,输入的是一个域名,这个时候就要将域名发送给一个DNS服务器的客户端,任何家庭想要联网,都需要设置一个对应的DNS服务器,它是专门用来解析域名的,递归查询流程如下:

  • 递归1: 将查询请求发送给最高等级的根域名服务器,根域名如果查询到域名对应的IP地址,就会返回给DNS客户端,不会向下查找;
  • 递归2: 如果根域名服务器没有找到域名和IP的映射关系,由于根域名服务器存储了顶级域名服务器的映射,也就是下一个层级的DNS服务器信息,这时候就会将查询请求发送给顶级域名服务器,顶级域名服务器如果查询到域名和IP的映射关系,会返回给根域名服务器,根域名服务器返回给DNS客户端,不会再向下查找;
  • 递归3: 如果顶级域名服务器没有找到域名和IP的映射关系,由于顶级域名服务器存储了二级域名服务器的映射,也就是下一个层级的DNS服务器信息,这时候就会将查询请求发送给二级域名服务器,二级域名服务器如果查询到域名和IP的映射关系,会返回给顶级域名服务器,顶级域名服务器返回给根域名服务器,根域名服务器返回给DNS客户端,不会再向下查找;
  • 递归4: 如果二级域名服务器没有找到域名和IP的映射关系,由于二级域名服务器存储了三级域名服务器的映射,也就是下一个层级的DNS服务器信息,这时候就会将查询请求发送给三级域名服务器,三级域名服务器查询到域名和IP的映射关系,会返回一层层返回给浏览器,如果没找到,就会出现域名解析错误。
2. DNS迭代查询

  迭代查询获取域名和IP映射每次都需要DNS客户端获取到下次迭代的结果再去域名服务器查询,迭代查询流程如下:

  • 迭代1:,将查询请求发送给最高等级的根域名服务器,根域名如果查询到域名对应的IP地址,就会返回给DNS客户端,不会向下查找;
  • 迭代2:,如果根域名服务器没有找到域名和IP的映射关系,根域名服务就会将可以完成域名解析的顶级域名服务器信息返回给DNS客户端,由DNS客户端去顶级域名服务器去获取域名和IP的映射关系;
  • 迭代n(n<=三级域名代表的次数): 二级域名和三级域名迭代逻辑同上面1、2。

      注: 不管是递归查询还是迭代查询,在真实的实现上在浏览器、DNS客户端、各级域名服务器上都会有缓存,也就是说只要成功完成一次域名解析,域名和IP的映射关系都会被缓存在查询所经过的浏览器、DNS客户端、各级域名服务器上,以便在后面的二次或多次查询能够更快速的查询到结果。

      根域名服务器全球只有有限的十几台,根域名服务器的地址相对来说是非常固定的,所以DNS服务商都会内置根域名服务器的地址,不需要进行额外的查询了。
协议 四层系统

  我们通常所说的TCP/IP协议被认为是一个四层系统,主要分为以下四层:

  • 应用层: 负责处理特定的应用程序细节;
  • 传输层: 为两台主机上的应用程序提供端到端的通信;
  • 网络层: 主机到主机之间的联系,主机和主机之间要通信要遵循网络层的规则,处理分组在网络中的活动,网络协议包括IP协议(网际协议)、ICMP协议(Internet互联网控制报文协议)、IGMP协议(Internet组管理协议);
  • 链路层: 网卡和网卡之间信息的传输相关的规则,有时也被称作数据链路层或网络接口层。通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡硬件设备。

      四层系统如下所示:

  其中应用层术语用户进程(处理应用程序细节),传输层、网络层、链路层术语内核进程(处理通信细节)。

分层的好处

  这种分层模型每一层屏蔽了上层的实现逻辑,使得每一层的改变都不会影响其他层,如果不做分层处理,那么一个小的改动在网络中都是一个灾难。这就好比一个人要从一个国家到另一个国家,假如中间要在好几个国家转机停留,那么到不同的国家都要使用本国的语言和风土人情(这就相当于协议)。

总结

  上述对DNS解析、协议、网络分层做了介绍,在后面Java中BIO、NIO、AIO编程中是理论基础,是网络编程的基础内容。


 扫码关注编程之艺术一起学习、进步。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/880778.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号