【网络】DNS | ICMP | NAT | 代理服务器

这篇具有很好参考价值的文章主要介绍了【网络】DNS | ICMP | NAT | 代理服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🐱作者:一只大喵咪1201
🐱专栏:《网络》
🔥格言:你只管努力,剩下的交给时间!
【网络】DNS | ICMP | NAT | 代理服务器,网络,网络

前面几篇文章虽然讲介绍了整个网络通信的协议栈,我们也知道了完整的网络通信过程,但是还有几个坑没填,以及一些重要的协议和技术没有讲解。

😽DNS

  • DNS是一整套从域名映射到IP地址的系统,也就是域名解析服务。
  • DNS服务的默认端口号是53。

本喵在讲解网络通信的时候,都是说的IP地址,但是我们生活中访问一些网站时都用的域名,如www.baidu.com访问的就是百度的服务器。

在整个网络通信的协议栈中我们也并没有看到和域名有关的任何东西,因为网络通信的实现就是通过IP地址,并不是域名,域名也需要转换成IP地址,然后再进行通信。

对于使用网络的人来说,IP地址并不方便记忆,因为它是数字性的东西,所以将域名和IP地址映射起来,形成一一对应的关系,在是使用的时候直接使用域名字符串就行。

【网络】DNS | ICMP | NAT | 代理服务器,网络,网络
最初,在每个人的主机上都存在一个hosts文件文件,该文件中存放的就是域名和IP地址的映射关系,如上图所示,主机名host-a对应着IP地址172.20.2.1

这个hosts文件是由互联网中心(SRI-NIC)来管理的:

  • 如果一个新计算机要接入网络,或者某个计算机IP变更,都需要到信息中心申请变更hosts文件。
  • 其他计算机也需要定期下载更新新版本的hosts文件才能正确上网。

每当我们访问一个服务器输入域名的时候,浏览器都会自动去本地的hosts文件中查找对应的IP地址,然后再进行绑定创建套接字等发起网络请求。
【网络】DNS | ICMP | NAT | 代理服务器,网络,网络
如上图所示,查看/etc/hosts路径的文件,可以看到hosts文件中的内容,红色框中的是IP地址,绿色框中是与之映射的域名,也就是字符串。


但是这样的方式太麻烦了,需要定期去更新hosts文件,增加时还要修改再提交申请等等,所以就产生了DNS系统。

  • DNS:一个组织的系统管理机构,维护系统内的每个主机的IP和域名的对应关系,该机构就像CA机构一样,具有权威性。
  • 如果新计算机接入网络,需要将这个信息注册到数据库中。
  • 用户输入域名的时候,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址,返回给用户。

域名简介:

既然有了一个权威性的机构来提供域名解析服务,所以域名也有命名规则,以www.baidu.com为例:

  • com: 一级域名,表示这是一个企业域名,同级的还有 net(网络提供商), org(非盈利组织) 等。
  • baidu:二级域名,一般是公司名或者组织的名称。
  • www:只是一种习惯用法,不写都可以,直接使用baidu.com也可以访问百度的服务器。

域名解析过程:

在Linux机器上使用yum -y install bind-utils指令可以安装一个dig工具,可以看到域名解析的过程。
【网络】DNS | ICMP | NAT | 代理服务器,网络,网络
如上图,是解析域名www.baidu.com的过程。

  • 第一个绿色框中的内容是dig工具的版本号等信息。
  • 第二个绿色框是域名解析的结果,NOERROR表示解析成功。
  • 第三个绿色框是要解析的域名。
  • 第四个绿色框是解析后的结果,在解析时,先将www.baidu.com解析成了www.a.shifen.com,然后再将www.a.shifen.com解析成了两个IP地址。
  • 最后一个绿色框是解析后的结构统计,包括解析时长,DNS服务器的IP地址等信息。

【网络】DNS | ICMP | NAT | 代理服务器,网络,网络
如上图所示,在浏览器中输入解析出来的IP地址112.80.248.76,也可以直接访问到百度的首页,和输入域名www.baidu.com结果一样,区别在于:

  • 使用IP地址访问时,浏览器自动采用HTTP协议。
  • 使用域名访问时,浏览器自动采用HTTPS协议。

😽ICMP协议

【网络】DNS | ICMP | NAT | 代理服务器,网络,网络
如上图所示,主机A向主机B发送数据,数据经过多次局域网转发后到了路由器2,路由器2为了获取主机B的MAC地址,发送ARP请求,但是发送了多次都没有收到主机B的ARP应答。

此时路由器2会返回一个Destination Unreachable结果给主机A,主机A收到以后就知道了数据传送错误的原因。

这种返回错误的功能之前IP协议是没有的,如果发送不成功,传输层就会触发超时重传再次发送。这种方式对于使用者来说是没有问题的,但是对于网络管理员来说不够。

他们需要知道错误的原因从而进行修复,让网络通信正常,此时ICMP协议就派上了用场。

  • ICMP协议是一个网络层协议,它能确认IP数据包是否成功到达目标地址。
  • 如果没有发送成功,通知发送端IP数据包被丢弃的原因。
  • ICMP协议也是基于IP协议工作的,它并不是传输层的功能,所以我们把它归结为网络层协议。

ICMP只能搭配IPv4使用,如果是IPv6的情况,需要使用ICMPv6协议。

协议格式(了解):

【网络】DNS | ICMP | NAT | 代理服务器,网络,网络
关于协议格式,本喵不会详细讲解,有个了解就可以,ICMP报文大致分为两类,一类是通知出错原因,一类是用于诊断查询。

【网络】DNS | ICMP | NAT | 代理服务器,网络,网络

如上图表所示便是ICMP常见代码和代码所代表的内容。

ping命令:

我们在验证一个机器的网络是否连接成功时,通常都会使用ping

【网络】DNS | ICMP | NAT | 代理服务器,网络,网络
如上图就是本喵在对www.baidu.com使用ping命令,可以在Linux上进行,也可以在Windows上进行。

  • 此处ping的是一个域名,而不是url(服务器web文件路径),域名可以通过DNS解析成IP地址。
  • ping命令不仅能验证网络的连通性,而且也会统计响应的时间和TTL(IP协议中的生存时间,也就是跳数)。
  • ping命令会先发送一个IMCP的Echo Request给对端,对端接收到之后会返回一个IMCP的Echo Reply

ping命令是通过ICMP协议实现的,是网络层的协议,所以没有端口号,它绕过了应用层和传输层,直接从网络层开始。

【网络】DNS | ICMP | NAT | 代理服务器,网络,网络
如上图所示,traceroute 域名指令可以查询当前主机当目标主机之前经历了多少路由器,这也是基于ICMP协议实现的。

😽NAT技术

前面本喵在讲解IP协议数据发送的时候的时候,数据从局域网发送到公网服务器的过程中,每经过一个入口路由器,就会将IP报头中的目的IP地址替换成当前路由器的WAN口IP。

  • NAT能够将私有IP对外通信时转为公网IP,也就是一种将私有IP和公网IP相互转化的技术方法。

【网络】DNS | ICMP | NAT | 代理服务器,网络,网络
如上图所示,此时局域网的客户端A向公网中的服务器发送数据,客户端A将数据在网络层的时候封装IP报头,其中目的IP地址是服务器的公网IP地址163.221.120.9,源IP地址是自己的私有IP地址10.0.0.10,数据最后以MAC帧的形式发送到NAT路由器。

  • NAT路由器的内网LAN口IP地址是10.0.0.1,公网WAN口IP地址是202.244.174.37

数据帧被路由器进行解包分用交给自己的网络层后,将IP报头中的源IP地址换成了WAN口IP地址,然后再封装成数据帧发送给公网中的服务器。

当目标IP地址的服务器响应时,同样也需要封装IP报头,其中目的IP就填路由器的WAN口IP,路由器拿到这个响应后,再将IP报头中的目的IP改成客户端A的IP地址10.0.0.10,再发送给客户端A。


问题来了,如果局域网中有多台客户端主机都访问这同一个服务器,甚至每台主机上有多个进程在访问这个服务器,请求数据包都可以通过NAT路由器发送给服务器,服务器也可以将响应返回给路由器。

  • 但是,路由器收到数据包后,所有数据的IP报头中的目的IP地址都是WAN口IP,路由器如何判断这个数据是给局域网中的哪个主机呢?又是该给主机上的哪个进程呢?

NAPT:

这个时候NAT就来解决问题了,采用的是IP + port的方式建立一个转换表。

【网络】DNS | ICMP | NAT | 代理服务器,网络,网络
如上图所示,局域网中的每台客户端的IP地址都是唯一的,一台客户端上每个进程的端口号又是唯一的,所以将IP地址和端口号组合成IP:port也是唯一的。

所有客户端,所有进程访问的都是同一台服务器的同一个服务进程,所以它们的目的IP和端口都是相同的。

  • 源IP:源port目的IP:目的port组合在一起形成一个四元组,这个四元组在局域网中也是唯一的。

一个四元组其实就是IP报头中的一部分,当数据传送到NAT路由器以后,路由器会维护一份转换表,如上图所示。

转换表中,将局域网四元组的源IP地址替换成WAN口IP,四元组中的端口号也替换成一个唯一的数字,此时就形成了一个新的四元组,该四元组在公网中是唯一的,然后和旧的四元组形成一个映射关系。

  • 这个映射关系是互为键值的。

路由器也是一个主机,客户端A的数据包和客户端B的数据包,它们的四元组不同,路由器就好像是创建了两个“进程”来转发这两个数据包,并且将这两个数据包的源IP地址替换,端口号替换。

由于是路由器的不同“进程”在转发数据包,所以每一对映射关系中,路由器的四元组中的端口号都是不同的,和操作系统分配端口号是一个规则。

当服务器响应多个数据包给NAT路由器的时候,虽然目的IP地址都是WAN口IP,但是端口号不同。

路由器再根据不同端口号的公网四元组找到对应的局域网四元组,将数据发给相应客户端的相应进程。

  • NAT路由器中的映射关系转换表是由路由器自动维护的。
  • 假设使用TCP协议,当连接建立时,路由器中就会生成这对通信双方的映射表项,断开连接后就会删除这个表项。

路由器通常情况下都带有NAT功能,否则无法完成内网和公网的IP地址转换问题。

NAT技术的缺陷:

由于NAT技术非常依赖映射转换表,所以就有诸多限制:

  • 服务器无法从公网主动给内网中的客户端发数据,因为路由器中没有映射关系,映射关系是在客户端给服务端发送数据时建立的。
  • 转换表的生成和销毁都需要一定的开销,会增大路由器的负担。
  • 通信过程中,一旦NAT设备异常,所有的TCP连接就会出现异常。

😽代理服务器

假设你想买一些韩国的化妆品,但是你去韩国不方便,正好有个同学在韩国留学,此时你就可以让他帮你去实体店买,然后再给你。这个过程中,你同学扮演的就是正向代理的角色。

由于这个化妆品很好,所以你周围有很多人都让你同学帮代购,你同学觉得不停的去买比较麻烦,所以就在他国内的家里屯了一堆化妆品,有人让他代购的时候,他就将家里的化妆品给它,此时你同学扮演的就是反向代理的角色。


【网络】DNS | ICMP | NAT | 代理服务器,网络,网络
假设现在你的学校里办活动需要自己买一些东西,你和你的同学们一起从淘宝买,此时你们使用的都是校园网,淘宝为了满足大量客户的访问,所以它的服务器不止一台,而是一个服务器机群。

你和同学在访问淘宝服务器时,其实并不是你的客户端在直接访问,而是你将自己的请求交给学校的正向代理服务器,然后正向代理服务器代替你去请求淘宝。

当多个请求发送给淘宝服务器时,并不是直接发给了机群中的某台服务器,这样会导致服务器扛不住压力而奔溃。所以这些请求都是交给了淘宝的反向代理服务器。

反向代理服务器通过一些均衡策略,让这些大量的请求去访问不同的服务器,将请求压力分摊给每一台服务器,保证它的正常服务。

  • 比如Nginx就是专门用来做负载均衡,以及支持大量线程并发访问的服务器。
  • 这也就是为什么我们在访问淘宝时,并不需要区分具体哪个服务器,只需要访问淘宝即可。
  • 因为我们访问的实际上是淘宝的反向代理服务器。

上面过程中,学校的代理服务器离我们近,它是正向代理服务器,淘宝的代理服务器离我们远,它是反向代理服务器。


【网络】DNS | ICMP | NAT | 代理服务器,网络,网络
如上图所示,假设你用学校的校园网去看《战狼2》电影,你从客户端向腾讯视频发起请求,你的请求会被学校的代理服务器拦截下来,然后由代理服务器替你向腾讯视频发起请求。

腾讯视频收到代理服务器的请求后,将对应的电影资源响应给代理服务器,代理服务器收到响应后再将这个响应转发给你,并且将这个电影的响应缓存到代理服务器中。

你给你的同学推荐了这个电影,你的同学也用腾讯视频看这个电影,当他发起请求后,同样会被代理服务器拦截,然后发现本地有这个电影的缓存资源,就直接将这个资源给他返回了,代理服务器也不再向腾讯视频的服务器发起代理请求了。

这个过程中,你的同学拿到这个电影的资源比你会快很多,因为学校的代理服务器离你们更近。

  • 代替客户端发起请求的,就是正向代理服务器
  • 用来作缓存的一般就是反向代理服务器

实际上,正向代理服务器和反向代理服务器并没有非常明确的界限,就像上面例子中,学校的代理服务器既代替我们发起请求,也缓存了电影资源,它既是一个正向代理服务器也是一个反向代理服务器。

NAT和代理服务器:

代理服务器看起来和NAT设备有一点像,客户端向代理服务器发送请求,代理服务器将请求转发给真正要请求的服务器; 服务器返回结果后,代理服务器又把结果回传给客户端。

局域网中的客户端将请求交给NAT设备,NAT设备再将请求通过路由发送给目标服务器,目标服务器再将响应发送给NAT设备,NAT设备再将响应转发给局域网中的客户端。

二者的区别:

  • 从应用上讲,NAT设备是网络基础设备之一,解决的是IP不足的问题。代理服务器则是更贴近具体应用,像迅游这样的加速器,也是通过代理服务器缓存数据来达到加速的目的。
  • 从底层实现上讲,NAT是工作在网络层,直接对IP地址进行替换。代理服务器工作在应用层。
  • 从使用范围上讲,NAT一般在局域网的出口部署。代理服务器可以在局域网,也可以在广域网,也可以跨网。
  • 从部署位置上看,NAT一般集成在防火墙,路由器等硬件设备上,代理服务器则是一个软件程序,需要部署在服务器上。

😽总结

这篇文章填了一些前面的坑,还介绍了网络中常用的技术和协议,是用来完善网络体系才写的,这些内容仅作为了解,并不是重点内容。文章来源地址https://www.toymoban.com/news/detail-674180.html

到了这里,关于【网络】DNS | ICMP | NAT | 代理服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【网络篇】如何搭建自己的DNS服务器

    平时练习域名解析,一般直接修改的/etc/hosts文件。对于服务器数量小的情况完全可以,但是如果服务器数量较多,每个都修改比较麻烦。 DNS是作为域名解析。在实际的生产过程中,尤其是对于内网搭建的情况,DNS不可能使用互联网的DNS,这时需要我们自行搭建。 我这里准备

    2024年02月05日
    浏览(30)
  • 网络技术学习十三:DNS(域名服务器)

    产生背景 通过IP地址访问目标主机,不便于记忆 通过容易记忆的域名来标识主机位置 域名的树形层次化结构 根域 领级域 主机所处的国家/区域,注册人的性质 二级域 注册人自行创建的名称 主机名 区域内部的主机的名称 由注册人自行创建和管理 用于域名和IP地址的互相解

    2024年02月09日
    浏览(32)
  • Linux服务器配置指南:网络、用户管理、共享服务及DNS配置详解

    💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】 🤟 基于Web端打造的:👉轻量化工具创作平台 💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 设置虚拟机的网卡为仅主机模式,并要求服务器采用双网卡, ens33 IP地址设置为192.168. 5.x/24(其中x学号),

    2024年02月05日
    浏览(40)
  • 【好书精读】网络是怎样连接的 向 DNS 服务器查询 Web 服务器的 IP 地址

    (该图由AI制作 学习AI绘图 联系我) 目录 IP 地址的基本知识 实际的 IP 地址 域名和 IP 地址并用的理由  Socket 库提供查询 IP 地址的功能 通过解析器向 DNS 服务器发出查询 解析器的内部原理 生成 HTTP 消息 根据域名查询 IP 地址 委托操作系统 消息发送给 Web 服务器 在委托操作

    2024年02月11日
    浏览(34)
  • 基于静态NAT的中小企业服务器网络端口映射与实现(完整文档+思科拓扑图)

    大家好,我是小华学长,一名计算机领域的博主。经过多年的学习和实践,我积累了丰富的计算机知识和经验,在这里我想与大家分享我的学习心得和技巧,帮助你成为更好的程序员。 作为一名计算机博主,我一直专注于编程、算法、软件开发等领域,在这些方面积累了大量

    2024年02月04日
    浏览(40)
  • 【网络面试(8)】防火墙原理、正向代理、反向代理、缓存服务器、负载均衡和内容分发服务器

     接上一篇:【网络面试必问(7)】聊聊集线器、交换机和路由器  作为一个程序员,其实很少去了解http请求消息在到达服务器之前,所经过的众多组件的,今天借着机会聊一聊标题中提到的正向代理、反向代理、缓存服务器、负载均衡和内容分发服务器等内容。 1.1 部署

    2024年02月22日
    浏览(34)
  • 把自己的电脑作为网络代理服务器

    背景:我手里有两台电脑,一个笔记本(可科学上网),一个台式机, 我想让这个笔记本成为台式机上网的代理服务器,这样我在使用台式机的时候也可以科学上网了。 设置完成后,台式机连上这个网络就ok了。

    2024年02月13日
    浏览(48)
  • Ubuntu 22.04网络配置指南:如何设置静态IP和自定义DNS服务器

    找到并打开Netplan配置文件 : 在Ubuntu终端中,输入以下命令来编辑Netplan的配置文件: 请确保文件名与您系统中实际的文件名匹配。 更新配置文件 : 使用以下内容替换文件中的内容(根据实际情况调整接口名称 enp0s3 、IP地址、网关和DNS服务器): 在这个配置中: enp0s3 是网

    2024年04月11日
    浏览(46)
  • 【网络】路由、交换机、集线器、DNS服务器、广域网/局域网、端口、MTU

    前言:网络名词术语解析(自行阅读扫盲), 推荐大家去读户根勤的《网络是怎样连接的》 路由(route):         数据包从源地址到目的地址所经过的路径,由一系列路由节点组成。某个路由节点为数据包选择投递方向的选路过程。 路由器工作原理         路由器(Ro

    2024年02月10日
    浏览(63)
  • 【计算机网络笔记】Web缓存/代理服务器技术

    什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)——时延带宽积、丢包率、吞吐量/率 计算机网络体系结构概念 OSI参考模型

    2024年02月08日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包