• 【计算机网络】第三讲网络相关协议讲解(DNS、NAT、ICMP、总结)


    000

    1.DNS域名解析协议

    DNS代表域名系统(Domain Name System),它是互联网上用于将人类可读的域名(如www.example.com)映射到计算机可理解的IP地址(如192.168.1.1)的一种分布式命名系统。DNS是互联网的关键基础设施之一,它允许我们使用易记的域名来访问网站、发送电子邮件等,而不必记住复杂的数字IP地址。

    DNS的主要功能包括:

    1. 域名解析:DNS将用户输入的域名翻译成相应的IP地址,以便网络路由器可以将数据包正确地传递到目标服务器。

    2. 反向解析:DNS还支持反向查询,允许根据IP地址查找关联的域名。

    3. 分布式数据库:DNS数据存储在全球范围内的多个DNS服务器上,这些服务器之间相互协作,以提供域名到IP地址的映射。这种分布式数据库提高了DNS的可伸缩性和可靠性。

    4. 负载均衡:DNS还可以用于实现负载均衡。例如,一个域名可以映射到多个IP地址,以将流量分散到不同的服务器上,从而提高性能和可用性。

    DNS(Domain Name System)负载均衡是通过DNS服务的配置来分配流量到多个服务器,以实现负载均衡。DNS负载均衡通常用于将同一个域名解析到多个不同的IP地址,以便分发流量到多台服务器上。下面是DNS负载均衡的一般实现方式:

    多个A记录:DNS负载均衡可以通过为同一个域名配置多个A记录(地址记录)来实现。每个A记录对应一个服务器的IP地址。当客户端发起DNS查询请求时,DNS服务器会随机选择一个A记录并返回对应的IP地址给客户端。客户端将使用此IP地址与服务器建立连接。这种方法也被称为“轮询DNS”或“基于Round Robin的DNS负载均衡”。

    基于权重的A记录:除了简单的轮询方式,DNS服务器还可以为每个A记录分配不同的权重。这样,具有较高权重的服务器将获得更多的流量。这可以用于实现服务器的不同性能分配,以确保高性能服务器获得更多的请求。

    健康检查:DNS负载均衡也可以结合健康检查来确保服务器的可用性。DNS服务器可以定期向后端服务器发送健康检查请求,如果服务器未响应或宕机,DNS服务器将不再返回该服务器的IP地址,从而防止流量被分配到不可用的服务器上。

    TTL设置:TTL(Time to Live)是DNS记录的生存时间,用于指定DNS解析结果在客户端缓存中的保留时间。通过调整TTL值,可以控制客户端多久重新查询DNS并获得新的IP地址。这可以用于快速切换流量到新的服务器。

    Anycast:在某些情况下,DNS负载均衡还可以与Anycast结合使用。Anycast是一种网络配置,它允许多台服务器使用相同的IP地址。客户端的DNS查询将被路由到距离最近的服务器,从而实现负载均衡和故障恢复。

    需要注意的是,DNS负载均衡主要用于分发请求到不同的服务器,但不能实时监控服务器的负载情况。对于需要更精细的负载均衡和健康检查的情况,通常会使用专门的负载均衡设备或负载均衡软件,如前面提到的硬件负载均衡器或反向代理服务器。这些设备可以根据服务器的实际负载情况来动态调整流量分发策略。

    DNS的工作原理通常涉及以下主要组件:

    1. DNS客户端:用户的计算机或设备上运行的应用程序,它向DNS服务器发送查询以解析域名。

    2. 本地DNS服务器:通常由Internet服务提供商(ISP)提供,用于缓存DNS查询结果,以减少对根DNS服务器的查询负载。

    3. 根DNS服务器:全球分布的一组顶级DNS服务器,它们位于DNS层次结构的顶部,负责返回顶级域名服务器的IP地址。

    4. 顶级域名服务器:管理顶级域名(如.com、.org、.net等)的DNS服务器。

    5. 权威DNS服务器:管理特定域名的DNS服务器,它们存储有关该域名的DNS记录。

    6. 递归DNS查询:当本地DNS服务器无法回答客户端的查询时,它将执行递归查询,向根DNS服务器、顶级域名服务器和权威DNS服务器发出查询,直到找到答案或确定该域名不存在。

    总之,DNS是互联网基础架构的关键组成部分,它使我们能够使用容易记忆的域名来访问互联网上的资源,而无需记住复杂的IP地址。无论何时您在Web浏览器中键入网址,发送电子邮件或访问任何互联网服务时,都在使用DNS来实现域名解析。

    域名解析过程: DNS域名详细解析过程(最全面,看这一篇就够)

    2.ICMP协议

    ICMP(Internet Control Message Protocol是一种网络协议,用于在IP网络上传递错误消息和操作状态信息。它是TCP/IP协议族的一部分,通常工作在网络层(OSI模型的第三层)。

    以下是 ICMP 协议的一些主要功能和用途:

    错误报告:ICMP主要用于传递网络错误消息,例如,当目标不可达、主机或网络不可达、TTL(生存时间)超时、重定向消息等。这些错误消息通常由网络设备(如路由器)生成,并传递给源主机或路由器,以便源主机可以采取适当的操作来解决问题。

    Ping和Traceroute:Ping工具使用ICMP Echo请求和响应消息来测试目标主机的可达性和响应时间。Traceroute工具则使用ICMP Time Exceeded消息来确定到目标主机的路径。这些工具通常用于网络故障排除和性能测试。

    MTU路径发现:ICMP包括路径MTU发现机制,它允许主机发现到目标主机的路径上可以传输的最大传输单元(Maximum Transmission Unit,MTU)。这有助于防止IP分组在传输过程中被分段,提高了数据传输的效率。

    ICMP重定向:当路由器接收到一个数据包,并且它知道下一跳路由器的IP地址,但数据包不是应该发送给路由器的时候,路由器可以发送ICMP重定向消息,通知源主机将数据包直接发送到下一跳路由器而不经过自己。

    网络诊断:ICMP还用于网络诊断和性能监测。网络管理员可以使用ICMP来检查网络设备的健康状态、测量网络延迟、跟踪数据包路径等。

    需要注意的是,ICMP消息是一种控制消息,通常不被用于传输应用层数据。它是一种无连接协议,不提供数据隐私或身份验证。 ICMP消息通常由网络设备生成和处理,而不是应用程序。

    总之,ICMP协议在互联网中起着重要的作用,它帮助诊断和维护网络,同时也有助于确保网络通信的可靠性和效率。
    0001
    ping命令
    0002
    注意, 此处 ping 的是域名, 而不是url! 一个域名可以通过DNS解析成IP地址.
    ping命令不光能验证网络的连通性, 同时也会统计响应时间和TTL(IP包中的Time To Live, 生存周期).
    ping命令会先发送一个 ICMP Echo Request给对端;
    对端接收到之后, 会返回一个ICMP Echo Reply;

    0003

    • 一个值得注意的坑
      有些面试官可能会问: telnet是23端口, ssh是22端口, 那么ping是什么端口?
      千万注意!!! 这是面试官的圈套
      0006
    • traceroute命令
    • 也是基于ICMP协议实现, 能够打印出可执行程序主机, 一直到目标主机之前经历多少路由器.

    3.NAT技术

    **NAT(Network Address Translation,网络地址转换)**是一种网络技术,通常用于将私有网络(如局域网)内部的多个设备共享单个公共IP地址的情况。NAT主要有以下几种类型:

    静态NAT:在静态NAT中,网络管理员手动配置了一个静态映射表,将内部私有IP地址与公共IP地址进行一对一的映射。这意味着每个内部设备都有自己唯一的公共IP地址。静态NAT对于需要从外部访问内部设备的情况非常有用。

    动态NAT:动态NAT会动态地为内部设备分配公共IP地址,通常使用一个IP地址池。当内部设备发出请求时,NAT会为其分配一个可用的公共IP地址,该映射在一段时间后会过期并被释放回IP地址池。这样,多个内部设备可以共享一组公共IP地址。

    PAT(Port Address Translation):PAT是一种特殊的NAT,它不仅将内部设备的IP地址转换为公共IP地址,还会为每个内部设备使用不同的端口号。这允许多个内部设备共享单个公共IP地址,并通过不同的端口号来区分数据流。

    NAT技术的主要目的是解决IPv4地址短缺的问题,因为公共IPv4地址数量有限,而连接到互联网的设备数量不断增加。通过使用NAT,多个设备可以共享一个或一组公共IP地址,从而减缓了IPv4地址耗尽问题。

    NAT技术还提供了一定程度的网络安全性,因为它隐藏了内部网络的拓扑结构,使外部网络无法直接访问内部设备。这有助于防止恶意访问和攻击。

    总之,NAT技术是一种重要的网络技术,用于地址转换和共享,使得多个内部设备可以访问互联网,同时减轻了IPv4地址短缺问题。

    Q:NAT怎么维护这张映射表的?局域网各个主机经过NAT转换之后传输给外网都是一个相同的ip,那么外网响应回来的数据也是给到这个IP,那么怎么知道该响应是给哪一台主机的?

    NAT维护映射表以跟踪内部网络设备与外部网络之间的通信。映射表中存储了以下信息:
    内部私有IP地址:每个内部设备的私有IP地址。
    内部端口号:每个内部设备使用的端口号(在PAT中,用于区分不同设备的端口号)。
    外部公共IP地址:NAT设备的外部接口IP地址。
    外部端口号:NAT设备为内部设备分配的外部端口号。

    当内部设备发出请求时,NAT会将内部IP地址和端口号转换为外部IP地址和端口号,并在映射表中创建相应的条目。这个映射表的维护包括以下操作:

    创建映射:当内部设备发出请求时,NAT会在映射表中创建一个新的映射条目,将内部IP地址和端口号与外部IP地址和端口号关联起来。
    更新映射:NAT会定期检查映射表中的条目,以确保它们仍然有效。如果一个映射超时或不再使用,NAT可能会将其从映射表中删除。
    端口转发:对于传入的数据包(响应),NAT会查找映射表以确定将数据包转发到哪个内部设备。这是通过查找外部端口号和IP地址来完成的,以确定它们在映射表中的对应关系。
    唯一性检查:NAT确保在同一时间不会分配相同的外部端口号给两个不同的内部设备。
    对于传入的响应数据包,NAT使用映射表中的信息将其转发到正确的内部设备。每个内部设备在发送请求时都使用了不同的内部端口号,因此NAT可以根据外部端口号来确定将响应数据包发送给哪个内部设备。

    这种方式允许多个内部设备共享相同的外部IP地址,同时通过不同的端口号来区分数据流,确保响应正确地传递回每个内部设备。这就是NAT维护映射表的基本原理。

    Q:介绍一下局域网内主机A给外网服务器B发送消息和B响应消息的过程,在此过程中NAT做了什么

    当局域网内的主机A想要与外部服务器B进行通信时,通常会经历以下步骤,其中涉及到NAT(Network Address Translation)的操作:

    主机A发起请求:主机A首先创建一个数据包,该数据包包含目标服务器B的IP地址和端口号,以及主机A的私有IP地址和源端口号。然后,它将该数据包发送到它的默认网关,即NAT设备。

    NAT设备接收数据包:NAT设备接收到来自主机A的数据包。此时,NAT设备要做以下操作:

    1.查找映射表:NAT设备查找映射表以确定是否已经为主机A创建了一个映射。如果没有,它将创建一个新的映射。
    2.分配外部IP和端口号:NAT设备为主机A分配一个外部IP地址和端口号(通常是NAT设备的外部IP地址和一个唯一的端口号)。这将用于在内部网络和外部网络之间进行唯一标识。
    3.修改数据包头:NAT设备修改数据包的源IP地址和源端口号,将其替换为NAT设备的外部IP地址和分配的外部端口号。目标IP地址和端口号保持不变。
    4.NAT设备转发请求:NAT设备将修改后的数据包转发到外部服务器B,就好像是NAT设备自己发起的请求一样。
    5.服务器B接收请求:外部服务器B接收到数据包,它认为请求来自NAT设备的外部IP地址和端口号。
    6.服务器B响应:服务器B处理请求,并生成响应数据包。响应数据包的目标地址是NAT设备的外部IP地址和端口号(来自请求中的源地址和端口号)。
    7.NAT设备接收响应:NAT设备接收到来自服务器B的响应数据包。此时,NAT设备要做以下操作:
    8.查找映射表:NAT设备查找映射表以确定哪个内部设备拥有此映射。
    9.修改数据包头:NAT设备修改数据包的目标IP地址和端口号,将其替换为对应于内部设备的私有IP地址和端口号。
    10.NAT设备转发响应:NAT设备将修改后的响应数据包转发给主机A,同时维护着映射表以确保正确的转发。

    通过这个过程,NAT设备允许多个内部设备共享相同的外部IP地址,同时通过不同的端口号来区分数据流。这有助于在局域网内部实现多个设备的访问外部网络,同时保护了内部设备的私有IP地址。这就是NAT在局域网和外部网络通信中的工作原理。

    3.1安全隐患

    **NAT(Network Address Translation)**有一些潜在的安全隐患,其中包括:

    1. 端口暴露:当多个内部设备共享同一个外部IP地址时,它们之间的区分是通过端口号来实现的。如果某个恶意应用程序或设备能够访问NAT设备并知道其他内部设备的端口映射,它可能会尝试攻击这些设备,因为它知道它们的地址。

    2. 限制访问控制:NAT设备通常执行一定程度的访问控制,但这些规则可能不够灵活或不够严格,可能会导致一些不受欢迎的流量通过NAT设备进入内部网络。

    3. 单点故障:如果NAT设备发生故障或崩溃,将导致所有内部设备失去对外部网络的访问。

    3.2安全策略

    网络安全策略是组织用来保护其信息和资源免受网络威胁的一系列措施和实践。以下是一些常见的网络安全策略:

    1. 访问控制策略:限制谁可以访问网络和系统资源。这可以通过用户身份验证、授权、角色分配和访问审计来实现。

    2. 防火墙策略:配置和维护防火墙以过滤入站和出站流量,确保只有授权的流量可以通过。这包括设置规则和策略,识别和拦截恶意流量。

    3. 加密策略:对敏感数据进行加密,包括存储在磁盘上的数据和在传输过程中的数据。TLS/SSL等协议用于安全地传输数据。

    4. 漏洞管理策略:定期扫描和评估系统和应用程序以发现和修补潜在的漏洞。及时更新操作系统、应用程序和第三方库以保持安全。

    5. 身份和访问管理策略:确保只有经过授权的用户和设备能够访问系统和数据。这包括强密码策略、多因素身份验证和访问审计。

    6. 安全培训和教育策略:培训员工和用户,提高他们的网络安全意识,教授如何避免社交工程、钓鱼攻击等威胁。

    7. 物理安全策略:确保服务器和网络设备存放在安全的地方,只有经过授权的人员可以访问。这包括控制机房访问和设备锁定。

    8. 响应计划策略:制定网络安全事件的响应计划,包括如何检测、报告和应对安全事件,以减少潜在的损害。

    9. 备份和灾难恢复策略:定期备份关键数据,确保可以快速恢复系统和数据。测试恢复过程以确保有效性。

    10. 监控和审计策略:实施监控解决方案,以监视网络流量、系统活动和异常行为。进行定期审计以验证合规性和安全性。

    11. 供应商和第三方管理策略:确保与供应商和第三方合作时,他们也遵循适当的网络安全标准和最佳实践。

    12. 更新和升级策略:及时应用操作系统、应用程序和设备的安全更新和补丁,以修复已知漏洞。

    这些策略通常需要根据组织的需求和威胁环境进行定制。同时,网络安全策略应不断演化,以适应不断变化的威胁和技术发展。

    3.3正反向代理理解

    关于代理服务器,正向代理和反向代理的理解如下:

    正向代理:正向代理是一种代理服务器,它代表客户端进行请求,隐藏了客户端的真实IP地址。当客户端希望访问互联网上的资源时,它发送请求给正向代理服务器,然后由代理服务器将请求发送到目标服务器,目标服务器认为请求来自代理服务器,而不是客户端。正向代理通常用于绕过公司或学校的防火墙,或者保护客户端的隐私。

    反向代理:反向代理是一种代理服务器,它代表服务器接收请求。它位于内部网络和外部网络之间,用于将客户端的请求分发到多个内部服务器。当客户端发送请求时,它不直接与内部服务器通信,而是与反向代理服务器通信。反向代理服务器根据一些规则(如负载均衡)将请求转发到内部服务器,然后将内部服务器的响应返回给客户端。客户端不知道实际提供服务的内部服务器是哪一个。

    在正向代理中,代理服务器代表客户端向外部服务器发送请求。在反向代理中,代理服务器代表外部客户端向内部服务器发送请求。这两种代理类型在网络中的应用场景和工作方式有所不同。

    4.总结

    数据链路层
    数据链路层的作用: 两个设备(同一种数据链路节点)之间进行传递数据
    以太网是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;

    1. 以太网帧格式
    2. 理解mac地址
    3. 理解arp协议
    4. 理解MTU
      网络层
      网络层的作用: 在复杂的网络环境中确定一个合适的路径.
      理解IP地址, 理解IP地址和MAC地址的区别.
      理解IP协议格式.
      了解网段划分方法
      理解如何解决IP数目不足的问题, 掌握网段划分的两种方案.
      理解私有IP和公网IP
      理解网络层的IP地址路由过程. 理解一个数据包如何跨越网段到达最终目的地.
      理解IP数据包分包的原因.
      了解ICMP协议.
      了解NAT设备的工作原理.
      传输层
      传输层的作用: 负责数据能够从发送端传输接收端.
      理解端口号的概念.
      认识UDP协议, 了解UDP协议的特点.
      花王尿不湿是一个很经典的尿不湿品牌, 产自日本.
      我自己去日本买尿不湿比较不方便, 但是可以让我在日本工作的表姐去超市买了快递给我. 此时超市看到的买家是我表
      姐, 我的表姐就是 “正向代理”;
      后来找我表姐买尿不湿的人太多了, 我表姐觉得天天去超市太麻烦, 干脆去超市买了一大批尿不湿屯在家里, 如果有人
      来找她代购, 就直接把屯在家里的货发出去, 而不必再去超市. 此时我表姐就是 “反向代理”

    认识TCP协议, 理解TCP协议的可靠性. 理解TCP协议的状态转化.
    掌握TCP的连接管理, 确认应答, 超时重传, 滑动窗口, 流量控制, 拥塞控制, 延迟应答, 捎带应答特性.
    理解TCP面向字节流, 理解粘包问题和解决方案.
    能够基于UDP实现可靠传输.
    理解MTU对UDP/TCP的影响.
    应用层
    应用层的作用: 满足我们日常需求的网络程序, 都是在应用层
    能够根据自己的需求, 设计应用层协议.
    了解HTTP协议.
    理解DNS的原理和工作流程.

  • 相关阅读:
    1024节日快乐
    vue3使用vant4的列表vant-list点击进入详情自动滚动到对应位置,踩坑日记(一天半的踩坑经历)
    springboot--任务
    计算机毕设(附源码)JAVA-SSM基于框架的秧苗以及农产品交易网站
    Android 事件分发介绍
    UE 智能指针的介绍
    【Kafka专题】Kafka收发消息核心参数详解
    Dubbo 3 易用性升级之 Dubbo 官网大改版
    # 学习 Prolog 和 离散逻辑的16个等价公式:一趟有趣的逻辑之旅
    ElementUI之动态树及书籍的分页查询
  • 原文地址:https://blog.csdn.net/weixin_62892290/article/details/133161896