DNS/ICMP协议、NAT技术

目录

  • DNS协议
    • DNS背景
    • 域名简介
  • ICMP协议
    • ICMP功能
    • ping命令
    • traceroute命令
  • NAT技术
    • NAT技术背景
    • NAT IP转换过程
    • NAPT
    • NAT技术的缺陷
    • NAT和代理服务器
  • 网络协议总结
    • 应用层
    • 传输层
    • 网络层
    • 数据链路层

DNS协议

DNS(Domain Name System,域名系统)协议,是一个用来将域名转化为IP地址的应用层协议。

DNS背景

TCP/IP中通过IP地址和端口号的方式,来确定网络中一个主机上的一个程序。但IP地址是一长串数字,并不便于人们记忆,于是人们发明了一种叫做主机名的东西,并用hosts文件夹来描述主机名和IP地址之间的对应关系。

在这里插入图片描述
最初, 通过互连网信息中心(SRI-NIC)来管理这个hosts文件的:

  • 如果一个新计算机要接入网络,或者某个计算机IP变更,都需要到信息中心申请变更hosts文件;
  • 其他计算机也需要定期下载更新版本的hosts文件才能正确上网。
  • 当用户通过域名访问互联网服务时,会先通过域名在本地的hosts文件中找到其对应的IP地址,然后再用这个IP地址去访问对应的服务。

这样就太麻烦了, 于是产生了DNS系统:

  • 由一个组织的系统管理机构,维护系统内的每个主机的IP和主机名的对应关系;
  • 如果新计算机要接入网络,或者某个计算机IP变更,就需要将对应信息注册到数据库中;
  • 当用户通过域名访问互联网服务时,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址。

至今,我们的计算机上仍然保留了hosts文件,这个hosts文件当中一般存储的是主机名与IP地址之间的映射,用户也可以在hosts文件中自主添加域名和IP映射关系,在域名解析的过程中会优先查找hosts文件的内容,通过cat /etc/hosts可以查看hosts文件当中的内容。

在这里插入图片描述

域名简介

域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称,例如www.baidu.com。

  • com:一级域名,表示这是一个工商企业域名。同级的还有.net(网络提供商)和.org(开源组织或非盈利组织)等。
  • baidu:二级域名,一般对应的就是公司名。
  • www:只是一种习惯用法,之前人们在使用域名时,往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式,来表示主机支持的协议。

ICMP协议

ICMP(Internet Control Message Protoco)Internet控制报文协议,用于在IP主机、路由器之间传递控制信息,是一个TCP/IP协议。

ICMP、IGMP和IP协议虽然都属于网络层的协议,但ICMP协议和IGMP协议属于IP的上层协议。

  • 也就是说,IP的上层协议不一定就直接是传输层的协议,IP的上层协议有可能也属于网络层的协议,但就是位于IP的上层。
  • 与之类似的,数据链路层当中的ARP协议和RARP协议,这两个协议虽然与MAC帧协议都属于数据链路层,但这两个协议属于MAC帧的上层协议。

ICMP功能

ICMP的主要功能包括:

  • 确认IP包是否成功到达目标地址;
  • 通知在发送过程中IP包丢弃的原因;
  • ICMP只能搭配IPv4使用,如果是IPv6的情况下,需要使用ICMPv6。

ping命令

ping命令是基于ICMP协议实现的,通常用于测试本地主机与另一台主机之间的通信信道是否正常。

例如,使用ping www.baidu.com命令,测试本地主机与百度服务器之间的通信信道是否正常。

在这里插入图片描述

  • 注意,此处ping的是百度的域名,该域名会由DNS解析成IP地址。
  • ping命令不仅能验证网络的连通性,同时也会统计响应时间和TTL(IP包中的Time To Live,生存时间)。
  • ping命令会先发送一个ICMP Echo Request给对端。
  • 对端接收到之后,会返回一个ICMP Echo Reply。

telnet对应的端口号是23,ssh对应的端口号是22,那ping对应的端口号是多少?

ping命令是基于网络层的ICMP协议,而端口号是属于传输层的内容,因此ICMP协议根本就不关心端口号这样的信息。

traceroute命令

traceroute命令也是基于ICMP协议实现的,traceroute命令可以遍历数据包传送到目标主机所经过的所有路由器。

例如,使用traceroute www.baidu.com命令,遍历数据包传送到百度服务器所经过的所有路由器。

在这里插入图片描述

NAT技术

NAT(Network Address Translation,网络地址转换)技术,是解决IP地址不足的主要手段,并且能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

NAT技术背景

NAT技术当前解决IP地址不够用的主要手段,是路由器的一个重要功能;

  • NAT能够将私有IP对外通信时转为全局IP,也就是就是一种将私有IP和全局IP相互转化的技术方法;
  • 很多学校,家庭,公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全局IP;
  • 全局IP要求唯一,但是私有IP不需要,在不同的局域网中出现相同的私有IP是完全不影响的。

NAT IP转换过程

在这里插入图片描述

数据报从局域网到公网过程

  • 当客户端A向服务器发送数据时,最开始数据报中源IP地址为客户端A的私有IP地址,目的IP地址为公网IP地址;
  • 当数据包经过NAT路由器时,此时路由器就会将源IP地址转换为自己的WAN口IP地址,然后数据包的源IP地址和目的IP地址就都变为了公网IP地址了;
  • 此后在互联网中转发,最终到达客户端。

数据报从公网到局域网过程

服务器收到客户端A的数据请求并处理后,就会对客户端A发来的请求进行响应。

  • 最开始数据包中的源IP地址是公网IP地址,目的IP地址是WAN口IP地址;
  • 当服务端向客户端A进行响应时,数据包经过NAT路由器,会将目的IP地址转换为客户端A的私有IP地址;
  • 最终数据包会发送到客户端A。

NAPT

地址转换表

NAT路由器是如何判断,应该将从外网收到的响应数据包转发给局域网中的哪一台主机呢?

  • NAT路由器的内部,有一张自动生成,用于转换地址的表;
  • 该表维护的就是局域网中主机的私有IP,与其对应访问的外网当中的某个公网IP之间的映射关系;
  • 局域网中的主机第一次向外网发起数据请求时,就会生成表中的映射关系;
  • 比如在TCP建立连接时,会建立对应的映射关系,在TCP断开连接后,就会删除对应的映射关系。

例如当客户端A要访问服务端时,路由表会建立以下映射关系。

在这里插入图片描述
当NAT路由器收到客户端向服务端A发来的响应时,就会在转换表中查找到该数据是发送给服务端A的。

如果局域网中的服务端A和服务端B同时都在访问该服务器,那么此时转换表中就会建立如下两对映射关系:

在这里插入图片描述
此时就只能保证从左到右的映射关系,从右到左的映射关系就得不到保证了,当服务端发来响应数据时,该数据包中的目的IP地址都是路由器的WAN口IP,此时NAT路由器就无法判断该数据包应该转发给客户端A还是客户端B,此时就需要用到NAPT技术。

NAPT

NAPT(Network Address Port Translation,网络地址端口转换),可以将多个内部地址映射为一个合法公网地址。

  • 为了解决服务端在响应过程中无法判断数据包发送谁的问题,此时就会当NAPT建立映射关系时,在建立局域网中私有IP与其公有IP的映射关系以外,还会增加一个NAT路由器选定的端口号;
  • 此时局域网中多台主机访问一个服务器时,虽然后服务器响应发送给每个主机的目的IP地址都是WAN口IP地址,但是对应的目的端口号是不同的,此时路由器就能通过IP+Port的方式来区分发给不同主机的数据包。

如果此时客户端A和客户端B同时访问一个服务器,他们的端口号是1025;

  • 假设客户端A发送的数据包先到达路由器,此时路由器将数据包的源IP地址替换成自己的WAN口IP地址,由于路由器用于访问该服务器的1025号端口没有被使用,因此该数据包的源端口号可以不变。
  • 当客户端B发来的数据包到达路由器时,路由器同样将数据包的源IP地址替换成自己的WAN口IP地址,但此时路由器用于访问该服务器的1025号端口已经被主机A使用了,因此路由器会重新选定一个端口号对数据包的源端口号进行替换。

此时转换表中就会建立如下两队映射关系:

在这里插入图片描述
此时这张转换表既能保证从左到右的唯一性,也能保证从右到左的唯一性。

NAT技术的缺陷

NAT技术进行私有IP和公网之间的替换,主要就是依赖NAT路由器当中维护的网络地址转换表,但这张转换表也体现出了NAT的一些缺陷:

  • 无法从NAT外部向内部服务器建立连接,因为外部无法知道内部的私网IP,也就无法主动与内部服务器建立连接。
  • 转换表的生成和销毁都需要额外开销。
  • 通信过程中一旦NAT设备异常,即使存在热备,所有的TCP连接也都会断开。+

NAT和代理服务器

路由器往往都具备NAT设备的功能,通过NAT设备进行中转,完成子网设备和其他子网设备的通信过程。

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

正向代理

正向代理,是一个位于客户端和目标服务器之间的服务器,客户端并不直接访问目标服务器,而是先访问代理服务器,由代理服务器代替客户端去访问对应的目标服务器,并将目标服务器的响应结果返回给客户端。

在这里插入图片描述
比如公司内部一般都会有自己的服务器,当我们使用公司内网上网时。

  • 我们对外网发起的数据请求,首先会转发到公司的这台服务器上,然后由公司的这台服务器代替你对外网进行访问。

  • 当公司的服务器收到对应外网的响应数据后,再由公司的这台服务器将数据转发给你。
    正向代理的好处:

  • 正向代理最大的一个好处就是可以加速资源访问。

  • 比如公司中大量员工都要访问外网的同一个资源,那么正向代理服务器就可以将对应的资源缓存到本地,此时当其他人要访问该资源时,直接在正向代理服务器就可以获取,而不需要再次进行外网访问。

  • 正向代理在最开始对使用者的身份进行认证,也会对发送到内容进行审核等作用。

反向代理

反向代理,也是一个位于客户端和目标服务器之间的服务器,对于客户端而言,反向代理服务器就相当于目标服务器,用户不需要知道目标服务器的地址,用户只需要访问反向代理服务器,再由反向代理服务器将客户端的请求转发给真正的目标服务器进行处理,数据处理完毕后反向代理服务器再将数据结果返回给客户端。

在这里插入图片描述
反向代理的好处:

  • 反向代理可以起到负载均衡的作用。比如不设置反向代理服务器,那么用户在访问百度时,就会随机访问到百度内部的某台服务器,此时就可能导致某些服务器压力太大,而某些服务器却处于闲置状态。而设置了反向代理服务器后,我们就能够通过某些方法让用户的数据请求较为平均的落到每台服务器上。
  • 反向代理还能起到安全防护的作用。有了方向代理服务器后,我们不需要直接将提供服务的服务器对应的信息暴露出去,此外,当由非法请求发送到反向代理服务器时,反向代理服务器就相当于一层软件屏障,可以在反向代理服务器当中部署一些防护措施,让这些非法请求在反向代理服务器这里就被过滤掉,而不会影响内部实际提供服务的服务器。

注意,代理服务器不左任何业务的处理,只负责将请求推送到后端的主机。

正向代理和反向代理的异同

相同点:

  • 正向代理服务器和反向代理服务器都是位于客户端和服务器之间的。
  • 正向代理服务器和反向代理服务器的主要工作,都是把客户端的请求转发给服务器,再把服务器的响应转发给客户端。

不同点:

  • 正向代理是客户端的代理,帮助客户端访问其无法访问的服务器资源的,而反向代理则是服务器的代理,帮助服务器做负载均衡、安全防护等工作的。
  • 正向代理一般是客户端架设的,比如公司的正向代理服务器是公司作为客户端架设的,而反向代理一般是服务端架设的,比如百度的反向代理服务器是百度作为服务端架设的。
  • 正向代理中,服务器不知道真正的客户端到底是谁,服务器认为正向代理服务器就是真实的客户端,而反向代理中,客户端不知道真正的服务器是谁,客户端认为反向代理服务器就是真实的服务器。

NAT和代理服务器的区别

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

网络协议总结

应用层

  • 应用层的作用:负责应用程序间沟通,完成一系列业务处理所需服务。
  • 能够根据自己的需求,设计对应的应用层协议。
  • 了解HTTP协议。
  • 理解DNS的原理和工作流程。

传输层

  • 传输层的作用:负责为两个网络通信进程之间的通信提供服务,更多的是为数据的传输提供一些策略。
  • 理解端口号的概念。
  • 认识TCP协议,理解TCP协议的可靠性,理解TCP协议的状态转化。
  • 掌握TCP的连接管理、确认应答、超时重传、滑动窗口、流量控制、拥塞控制、延迟应答、捎带应答特性。
  • 理解TCP面向字节流,理解粘包问题和解决方案。
  • 能够基于UDP实现可靠传输。
  • 理解MTU对UDP/TCP的影响。

网络层

  • 网络层的作用:在复杂的网络环境中确定一条合适的路径。
  • 理解IP地址,理解IP地址和MAC地址的区别。
  • 理解IP协议格式。
  • 理解如何解决IP数目不足的问题,掌握网段划分的两种方案,理解私有IP和公网IP。
  • 理解网络层的IP地址路由过程,理解一个数据包如何跨网段到达最终目的地。
  • 理解IP数据包分片的原因。
  • 了解ICMP协议。
  • 了解NAT设备的工作原理。

数据链路层

  • 数据链路层的作用:负责局域网内两个设备之间的数据传递。
  • 理解以太网通信原理
  • 以太网帧格式。
  • 理解MAC地址。
  • 理解ARP协议。
  • 理解MTU。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/187928.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【微服务专题】SpringBoot自动配置简单源码解析

目录 前言阅读对象阅读导航前置知识什么是自动配置0.1 基本概念0.2 SpringBoot中的【约定大于配置】0.3 从SpringMVC看【约定大于配置】0.4 从Redis看【约定大于配置】0.5 小结 笔记正文一、EnableAutoConfiguration源码解析二、SpringBoot常用条件注解源码解析2.1 自定义条件注…

thinkphp6遭遇500错误却没有任何报错解决办法

此问题多数出现在windows开发环境下。 先说原因,电脑设置-环境变量-path 混入了中文路径。需要删除掉。 或者看第二种解决办法: 找到vendor/topthink/framework/src/think/exception/Handle.php 在最后加上下面这个方法 /*** 将获取的服务器信息中的…

图片转换成pdf格式的软件ABBYY16

ABBYY PDF这款提供多种图像处理选项,可提高源图像的质量,便于准确地识别光学字符。我们扫描纸质文档或从图像文件创建 PDF 时,务必选择合适的图像处理选项。而在ABBYY PDF 中包含下列图像处理选项。 识别文本 — 选择此选项会将文本层放在图…

ubuntu22.04 arrch64版在线安装node

脚本 #安装node#下载node、npm国内镜像(推荐)# 判断是否安装了nodeif type -p node; thenecho "node has been installed."elsemkdir -p /home/zenglg cd /home/zenglgwget https://registry.npmmirror.com/-/binary/node/v10.14.1/node-v10.…

python操作redis

操作单redis 需要安装redis模块:pip install redis demo: #!/usr/bin/env python3 # coding utf-8import redis import threadingdef a():conn redis.Redis(host"192.168.1.66", port6379, password"123456", db6,# decode_res…

VS中如何使用Halcon

使用Halcon的本质就是调用Halcon的库,其主要步骤有: 1、将Halcon代码导出为C的.cpp文件 2、获取.cpp文件中的action函数的函数体 3、添加Halcon的动态库和静态库 4、添加action函数需要的头文件 导出halcon中的代码 a)导出代码 b&#x…

基础C语言编程题

int i,j; int a[3][3]; for(i0;i<3;i){for(j0;j<3;j){scanf("%d",&a[i][j]);a[i][j]a[i][j]*2;}} 6.功能&#xff1a;把20个随机数存入一个数组&#xff0c;然后输出该数组中的最大值。 int main(){int p[20];int i,max0;for(i0;i<20;i){scanf("…

【数据结构】树与二叉树(廿四):树搜索给定结点的父亲(算法FindFather)

文章目录 5.3.1 树的存储结构5. 左儿子右兄弟链接结构 5.3.2 获取结点的算法1. 获取大儿子、大兄弟结点2. 搜索给定结点的父亲a. 算法FindFatherb. 算法解析c. 代码实现 3. 代码整合 5.3.1 树的存储结构 5. 左儿子右兄弟链接结构 【数据结构】树与二叉树&#xff08;十九&…

评测|PolarDB MySQL 版 Serverless

评测&#xff5c;PolarDB MySQL 版 Serverless 目录 一、测试背景 1.1、云原生数据库 PolarDB Serverless新架构概念 1.2、Serverless资源弹性扩缩触发条件 二、PolarDB的Serverless能力与同类型产品进行对比 三、动态弹性升降资源的能力测试 3.1、测试资源 3.2、测试一…

pwn:[SWPUCTF 2021 新生赛]nc签到

题目 linux环境下显示为 配合题目的下载附件&#xff0c;发现过滤了一些&#xff0c;一旦输入这些会自动关闭程序 ls被过滤了&#xff0c;可以使用l\s cat和空格都被过滤了&#xff0c;cat可以换成c\at ,空格可以换成$IFS$9

【nacos】配置使用

nacos配置 遇见的问题 代码启动成功&#xff0c;但是配置文件未生效 观察报错 无报错&#xff0c;也看到了加载的配置文件路径&#xff0c;但是配置未生效 [main] [TID: N/A] c.a.c.n.refresh.NacosContextRefresher : [Nacos Config] Listening config: dataIda-servi…

Multi-modal brain tumor image segmentation based on improved U-net model

THE ARCHITECTURE OF IMPROVED NETWORK MODEL 作者未提供代码

LeetCode 1457. 二叉树中的伪回文路径:深度优先搜索(DFS) + 位运算优化

【LetMeFly】1457.二叉树中的伪回文路径&#xff1a;深度优先搜索(DFS) 位运算优化 力扣题目链接&#xff1a;https://leetcode.cn/problems/pseudo-palindromic-paths-in-a-binary-tree/ 给你一棵二叉树&#xff0c;每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「…

讲述 什么是鸿蒙 为什么需要鸿蒙 为什么要学习鸿蒙

首先 我们为什么要学习鸿蒙开发&#xff1f; 因为 鸿蒙发展前景巨大 鸿蒙自发布依赖 一直受社会各界关注 强两百的 App厂商 大部分接受了与鸿蒙的合作 硬件也有非常多与鸿蒙合作的厂商 鸿蒙的合作企业基本已经覆盖整个互联网客户的主流需求 所以鸿蒙的崛起不过是早晚的问题 …

英文文献阅读工具和经验分享

在搞学术的时候需要阅读大量的英文论文或者是英文原著&#xff0c;我也一直在摸索如何方便高效的阅读。本篇仅为个人经验之谈&#xff0c;大家还是要找到合适自己的方式。 方法一&#xff1a;deepLGoodNotes 优点&#xff1a; 可以各种划线标注、手写笔记&#xff0c;加入图片…

什么是AWS CodeWhisperer?

AWS CodeWhisperer https://aws.amazon.com/cn/codewhisperer/ CodeWhisperer 经过数十亿行代码的训练&#xff0c;可以根据您的评论和现有代码实时生成从代码片段到全函数的代码建议。 ✔ 为您量身定制的实时 AI 代码生成器 ✔ 支持热门编程语言和 IDE ✔ 针对 AWS 服务的优…

Python 安装Vue依赖包发生异常:npm ERR! notsup Required: {“node“:“^18.17.0 || >=20.5.0“}

异常&#xff1a; 原因&#xff1a;node和npm要求升级为高版本 解决&#xff1a;重新安装node环境 &#xff08;1&#xff09; 官网下载Node.js &#xff08;2&#xff09;双击安装node.js &#xff08;3&#xff09;运行查看

RESTful

RestFul API 何为 API&#xff1f; API&#xff08;Application Programming Interface&#xff09; 翻译过来是应用程序编程接口的意思。 我们在进行后端开发的时候&#xff0c;主要的工作就是为前端或者其他后端服务提供 API 比如查询用户数据的 API 。 但是&#xff0c; …

Vatee万腾独特科技力量的前沿探索:Vatee的数字化奇点

在当今科技的浪潮中&#xff0c;Vatee万腾以其独特的科技力量成为前沿探索的引领者&#xff0c;正迎来数字化奇点的新时代。Vatee万腾不仅仅是一家科技公司&#xff0c;更是一支探索未知领域、开创数字时代新局面的先锋力量。 Vatee万腾的数字化奇点体现在其对前沿技术的深刻理…

机器学习-线性模型·

线性模型是一类用于建模输入特征与输出之间线性关系的统计模型。这类模型的基本形式可以表示为&#xff1a; 其中&#xff1a; 是模型的输出&#xff08;目标变量&#xff09;。 是截距&#xff08;常数项&#xff0c;表示在所有输入特征都为零时的输出值&#xff09;。 是权重…