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

目录

其他重要协议或技术

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

域名的解析流程

NAT/NAPT

代理服务


其他重要协议或技术

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

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

DNS工作在应用层 .

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

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

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

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

                                      

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

域名的解析流程

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

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

递归查询 : 

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

迭代查询 : 

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

相关概念 :

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

2. 本机的hosts文件 : 

hosts文件格式 : 

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

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

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

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

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

因为在本地的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,网络地址转换).

所以, 我们自己在家用无线路由器上网时的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的时候如何将大量的不同用户的请求分发到集群中不同的机器上呢, 这就是负载均衡在做的事情.
发布了234 篇原创文章 · 获赞 732 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/qq_41071068/article/details/105627804
今日推荐