网络基础 -- 其他重要协议或技术(DNS/NAT/NAPT/代理服务)

目录

其他重要协议或技术

DNS -- 域名系统(服务)协议

域名的解析流程

NAT/NAPT

代理服务


其他重要协议或技术

DNS -- 域名系统(服务)协议

DNS : 域名系统 (服务) 协议:是一种分布式网络目录服务, 主要用于域名与 IP 地址的相互转换, 以及控制因特网的电子邮件的发送域名系统作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.

DNS工作在应用层 .

域名(英语:Domain Name), 又称网域,是由一串用点分隔的名字组成的internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)

由于IP地址不方便记忆并且不能显示地址组织的名称和性质等缺点, 人们设计出了域名, 并通过域名称系统来将域名和IP地址相互映射, 使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址.

就比如百度是 : 14.215.177.39 , 一个两个还好, 这要是多了, 谁记得住啊.

互联网中的域名系统 DNS 被设计成一个层次树状结构的联机分布式数据库系统,并且采取的是客户服务器的方式. DNS 使大多数名字都在本地进行解析, 只有少量的解析需要在互联网通信, 因此效率很高. 采取分布式的一个好处是,即使单个计算机出了故障, 也不会妨碍 DNS 系统的正常运行(增强了容灾/访问压力).

                                      网络基础 -- 其他重要协议或技术(DNS/NAT/NAPT/代理服务)_第1张图片

其中顶级域名中, 以类型主要划分为商业性质的.com, 政府性质的.gov, 教育性质的.edu, 各种组织机构(国际组织, 非营利组织等).org, 还有根据地域划分的如中国的.cn, 日本的.jp

域名的解析流程

当我们在浏览器中输入一个域名www.taobao.com时, 是怎样进行域名解析的呢?

浏览器会先在浏览器缓存中解析域名, 如果并没有对应的域名解析, 就在本机的hosts文件中查询, 如果还没有, 就到本地的dns服务器中查询, 接下来有两种方式, 递归查询和迭代查询

递归查询 : 

本地dns服务器中若没有, 则请求根域名服务器, 跟域名服务器若没有, 根域名服务器则请求顶级域名服务器...., 当某一步查询到了域名对应的IP, 则逐级返回给浏览器. 如图 :

网络基础 -- 其他重要协议或技术(DNS/NAT/NAPT/代理服务)_第2张图片

迭代查询 : 

本地dns服务器中若没有, 则请求根域名服务器, 跟域名服务器若没有, 根域名服务器就就告诉本地dns服务器, 我没找到, 但是你可以去顶级域名服务器上查询, 此时本地dns服务器就又去顶级域名服务器查询, ....,  当某一步查询到了域名对应的IP, 则直接返回给本地dns服务器, 然后返回给浏览器 . 如图 :

网络基础 -- 其他重要协议或技术(DNS/NAT/NAPT/代理服务)_第3张图片

相关概念 :

1. 浏览器缓存 : 如果浏览器有缓存, 就直接在缓存中解析出www.taobao.com对应的IP地址

2. 本机的hosts文件 : 

hosts文件格式 : 

网络基础 -- 其他重要协议或技术(DNS/NAT/NAPT/代理服务)_第4张图片

Windows中在以下位置, 在本机hosts文件中解析

网络基础 -- 其他重要协议或技术(DNS/NAT/NAPT/代理服务)_第5张图片

网络基础 -- 其他重要协议或技术(DNS/NAT/NAPT/代理服务)_第6张图片

我们以Edge浏览器为例, 我们先访问一下百度, 发现是可以访问的

网络基础 -- 其他重要协议或技术(DNS/NAT/NAPT/代理服务)_第7张图片

然后我们载清除浏览器的数据, 也就是在这一步清除了浏览器缓存, 不让域名在浏览器缓存中直接被解析.

网络基础 -- 其他重要协议或技术(DNS/NAT/NAPT/代理服务)_第8张图片

关闭浏览器, 再修改hosts文件 , 在hosts文件末尾, 添加172.0.0.1 www.baidu.com

网络基础 -- 其他重要协议或技术(DNS/NAT/NAPT/代理服务)_第9张图片

再打开浏览器访问百度, 我们发现就访问不了了

网络基础 -- 其他重要协议或技术(DNS/NAT/NAPT/代理服务)_第10张图片

因为在本地的hosts文件中, 百度的域名已经被设置成了对应的127.0.0.1


NAT/NAPT

NAT(Network Address Translation,网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法.

这种方法需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接.

另外,这种通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用的IP地址空间的枯竭.

NAT/NAPT 工作在网络层

简单来说, 一个局域网内的所有主机使用的都是本地的私有IP, 在局域网内可以唯一标识一个主机, 但局域网内的主机需要和外网进行通信时, 私有地址在会在可能就会发生冲突, 所以NAT路由器将IP首部中的IP地址进行替换(替换成WAN口IP), 这样逐级替换, 最终数据包中的IP地址成为一个公网IP. 这种技术称为NAT(Network Address Translation,网络地址转换).

网络基础 -- 其他重要协议或技术(DNS/NAT/NAPT/代理服务)_第11张图片

所以, 我们自己在家用无线路由器上网时的IP一般总是从192.168.0.1往后的, 但我们使用这个IP却可以在互联网中畅游的原因就是NAT技术, 那么这样, 问题就来了, 当一个有公网IP的NAT路由器下, 只有一个局域网, 这个局域网中只有一台主机上网时, 我们发送给服务器一个请求数据时, 服务器收到的数据的源IP地址是一个公网IP, 那么服务器的响应数据的目的IP就是一个公网IP, 那么当地址是公网IP的路由器收到这个数据时, 就将数据发送给自己惟一的局域网中, 那唯一的局域网中也只有一台主机, 那这个数据就是这台主机的. 但现实中有公网IP的路由器可能不止只有1个局域网, 局域网内也不只有1台主机, 那么当有多个局域网, 局域网下有多个主机时, NAT路由器怎么知这数据时谁的呢? 

NAPT(Network Address Port Translation),即网络地址端口转换技术,可将多个内部地址映射为一个合法公网地址, 但以不同的协议端口号与不同的内部地址相对应,也就是<内部地址+内部端口>与<外部地址+外部端口>之间的转换. NAPT普遍用于接入设备中,它可以将中小型的网络隐藏在一个合法的IP地址后面. NAPT也被称为“多对一”的NAT, 或者叫PAT(Port Address Translations,端口地址转换), 地址超载(address overloading).

NAPT与动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的TCP端口号. NAPT算得上是一种较流行的NAT变体, 通过转换TCP或UDP协议端口号以及地址来提供并发性. 除了一对源和目的IP地址以外,这个表还包括一对源协议和目的协议端口号, 以及NAT盒使用的一个协议端口号.

NAPT的主要优势在于,能够使用一个全球有效IP地址获得通用性. 主要缺点在于其通信仅限于TCP或UDP. 当所有通信都采用TCP或UDP, NAPT允许一台内部计算机访问多台外部计算机, 并允许多台内部主机访问同一台外部计算机, 相互之间不会发生冲突.

简单来说, 就是在NAT路由器中维护着一张自动生成, 用于地址转换的表, 使用IP地址和端口号来建立表的映射关系, 比如有一个局域网的IP是192.168.0.1, 连接着两台主机A和B, IP分别是192.168.0.2, 192.168.0.3, 当着两台主机各自用TCP/UDP协议时发送一个网络数据, A的地址信息 : IP : 192.168.0.2 port : 9000, B的地址信息 : IP : 192.168.0.3 port :9000 , 不管这两条数据是否同时到达NAT路由器, NAT路由器对其的处理肯定有先后, 那么假设A的数据先处理, 在NAT路由器中就会将A的地址信息与转换后的192,168.0.1:9000建立在转换表中的映射. 那么在处理B的数据时, 我们发现, B的地址信息转换后和A转换后是一样的, 9000端口已经被占了, 那么NAT路由器就会往后再找一个没有用的端口, 来建立映射关系, 这样当A, B主机发送的数据有服务器对其响应时, 到路由器得响应信息就会根据转换表中的映射关系, 直到这个响应要给那个主机.

NAT技术缺陷(因为太过于依赖这个转换表)

  • 无法从NAT外部向内部服务器进行连接
  • 装换表的生成和销毁都需要开销
  • 通信过程中一旦NAT设备异常,即使存在热备,所有的TCP连接也会断开

代理服务

我们平时最常见游戏网络极速器和"" 都是代理服务

代理服务器(Proxy Server)的功能是代理网络用户去取得网络信息. 形象地说,它是网络信息的中转站,是个人网络和Internet服务商之间的中间代理机构,负责转发合法的网络信息,对转发进行控制和登记

举个简单的例子, 我国为了国内互联网的安全发展, 给我国的互联网建了一堵"墙", 这堵墙让我们直接访问不了谷歌, 推特, 脸书, 等国外网站, 但我们可以通过所谓的 "" 来访问这些网站, 这是怎么做到的呢? 虽然我们自己访问不了这些网站, 但比如我们的港澳台地区都是可以访问的, 那如果在我们的在港澳台地区有一个我们大陆可以访问的的服务器, 那我们就可以通过这个服务器代理我们去访问谷歌等网站. 简单来说, 我们先把请求发送给代理服务器, 代理服务器再把请求发送给目标服务器, 代理服务器得到的目标服务器的响应, 代理服务器再发送给我们.

代理服务器的应用 :

  • ""技术
  • 负载均衡 : 举个最简单的例子, 当地铁口人流量特别大时, 会有地铁口出口人流分布不均, 导致特别云集==拥挤的现象, 这时就会有工作人员引导分流, 将人群分散给各个出口. 那负载均衡技术也是这个道理, 为了提升网站的各方面能力, 人们一般会把多台机器组成一个集群对外提供服务. 然而, 网站对外提供的访问入口都是一个的, 比如www.百度.com. 那么当用户在浏览器输入www.baidu.com的时候如何将大量的不同用户的请求分发到集群中不同的机器上呢, 这就是负载均衡在做的事情.

 

 

 

你可能感兴趣的:(网络基础)