当前位置: 首页 > news >正文

【Linux网络篇】:网络中的其他重要协议或技术——DNS,ICMP协议,NAT技术等

✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨
✨ 个人主页:余辉zmh–CSDN博客
✨ 文章所属专栏:Linux篇–CSDN博客

在这里插入图片描述

文章目录

  • 其他重要协议或技术
    • 1.DNS
    • 2.ICMP协议
    • 3.NAT技术
    • 4.代理服务器

其他重要协议或技术

1.DNS

什么是DNS?

DNS(域名解析系统)是互联网的“电话簿”。它的作用是将人们易于记忆的域名(比如www.baidu.com)转换为计算机可以识别的IP地址,从而实现网络通信。

DNS的工作原理

  1. 用户输入域名

    用户在浏览器中输入一个网址(如 www.baidu.com)。

  2. 本地DNS缓存查询

    操作系统会先检查本地是否有该域名的IP地址缓存。如果有,直接返回IP地址。

  3. 递归查询

    如果本地没有缓存,系统会向本地DNS服务器(通常由网络运营商提供)发起查询请求。

  4. 本地DNS服务器查询

    • 本地DNS服务器先查找自己的缓存。
    • 如果没有,再向根DNS服务器发起请求。
  5. 根DNS服务器

    根服务器告诉本地DNS服务器,负责该顶级域(如.com、.cn)的顶级域名服务器(TLD)的地址。

  6. 顶级域名服务器(TLD)

    TLD服务器告诉本地DNS服务器,负责该具体域名(如baidu.com)的权威DNS服务器的地址。

  7. 权威DNS服务器

    权威DNS服务器返回该域名对应的IP地址。

  8. 返回结果

    本地DNS服务器将IP地址返回给用户的电脑,电脑再与目标服务器建立连接。

DNS解析的类型

  • 正向解析:域名->IP地址(最常见);
  • 反向解析:IP地址->域名;

DNS的层级结构

  1. 根域(Root):全球只有13组根服务器,负责顶级域的管理;
  2. 顶级域(TLD):比如.com,.net,.cn等;
  3. 二级域:比如baidu.com中的baidu;
  4. 子域:比如www.baidu.com中的www;

2.ICMP协议

ICMP是一个网络层协议

一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否通畅;但是IP协议并不提供可靠传输;如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。

而ICMP正是提供这种功能的协议;ICMP主要功能包括

  • 确认IP包是否成功达到目标地址;
  • 通知在发送过程中IP包被丢弃的原因;
  • ICMP也是基于IP协议工作的,但是他并不是传输层的功能,因此人们仍然把它归结为网络层协议;
  • ICMP只能搭配IPv4使用,如果是IPv6的请求下,需要使用ICMPv6;

在这里插入图片描述

ping命令

基于ICMP协议实现的,可以验证网络的连通性。

在这里插入图片描述

  • 注意,此处ping的是域名,而不是URL,一个域名可以通过DNS解析成IP地址;
  • ping命令不光能验证网络的连通性,同时也会统计响应时间和TTL(IP包的生存周期);
  • ping命令会发送一个ICMP Echo Request给对端;
  • 对端接收到之后,会返回一个ICMP Echo Reply

在这里插入图片描述

问题:telnet的端口号是23,ssh的端口号是22,那ping的端口号是多少?

ping没有端口号;因为端口号是TCP或UDP协议用来区分上层的不同应用进程的,属于传输层协议的概念,telnet和ssh都是基于TCP协议的应用层服务,所以有端口号;而ping命令是基于网络层的ICMP协议实现的,并不使用端口号,它实际上是向目标主机发送回显请求报文(ICMP Echo Request),对方收到之后回复回显应答报文(ICMP Echo Reply)。ping命令无法指定端口号,只能测试目标主机的网络连通性,而不能测试某个具体服务是否可用。

traceroute命令

也是基于ICMP协议实现,能够打印出可执行程序主机,一直到目标主机之前经历多少路由器。

在这里插入图片描述

3.NAT技术

1.NAT技术背景

之前讲解网络层时提到过IPv4协议中,IP地址数量不充足的问题;而NAT技术是当前解决IP地址不够用的主要手段,是路由器的一个重要功能

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

很多学校,家庭,公司内部采用每个终端设置私用IP,而在路由器或必要的服务器上设置公网IP;

公网IP要求唯一性,但是私有IP只在同一局域网中要求唯一性,在不同的局域网中出现相同的私有IP是完全不影响的。

2.NAT IP转换过程

在这里插入图片描述

  • NAT路由器将源地址从10.0.0.10替换成公网IP202.244.174.27
  • NAT路由器收到外部的数据时,又会把目标IP从202.244.174.47替换成10.0.010
  • 在NAT路由器内部,有一张自动生成,用于地址转换的表;
  • 10.0.0.0第一次向163.221.120.9发送数据时就会生成表中的映射关系;

3.NAPT

但是这里就有个疑问了:

假设局域网中有3台主机,IP分别为A,B,C;他们通过同一个路由器(NAT设备)访问同一个公网服务器;路由器只有一个公网IP;所以服务器的应答包返回时,都是先发给这个公网IP对应的路由器,那路由器如何知道这些应答包应该转发给A,B,C中的哪一个呢?

所以这里要讲解一个关键点:

NAT设备不仅仅转化IP地址,还会转化端口号,这就是端口地址转化技术,也叫NAPT

具体过程如下

  1. 内网主机发起连接

    • A主机10.0.0.10:1025->服务器163.221.120.9:80
    • B主机10.0.0.11:1025->服务器163.221.120.9:80
    • C主机10.0.0.12:1025->服务器163.221.120.9:80
  2. NAT设备转化内

    路由器将每个连接的源IP和源端口号,转换为自己的公网IP和唯一的端口号,并建立映射表。

    • 10.0.0.10:1025—>202.244.174.37:1025
    • 10.0.0.11:1025—>202.244.174.37:1026
    • 10.0.0.12:1025—>202.244.174.37:1027
  3. 服务器应答

    • 服务器收到请求后,回复数据包到路由器
  4. NAT设备查表转发

    路由器收到应答包后,根据端口号查找映射表:

    • 202.244.174.37:1025—>10.0.0.10:1025
    • 202.244.174.37:1026—>10.0.0.11:1025
    • 202.244.174.37:1027—>10.0.0.12:1025

    然后将数据包转发给对应的内网主机;

在这里插入图片描述

一个注意点:

路由器收到来自内网主机的数据包时,会为每个连接分配一个唯一的公网端口号;这个公网端口号不是用来区分路由器上的不同应用进程的(端口号在主机上的作用),而是用来在NAT转换表中区分不同的连接,即区分不同的内网主机和它们的会话,(端口号在路由器上的作用)

4.代理服务器

1.什么是代理服务器?

代理服务器是一种位于客户端和目标服务器之间的中间服务器。客户端通过代理服务器访问目标资源,代理服务器会转发请求并返回结果。

代理服务器的作用包括:隐藏真实IP,访问受限资源,缓存加速,负载均衡,安全防护。

2.正向代理

  • 定义

正向代理是指客户端知道目标服务器的地址,但不能直接访问,需要通过代理服务器“代为”访问

代理服务器位于客户端和目标服务器之间,代表客户端向外部发起请求。

  • 典型应用场景
    • 访问被屏蔽的网站(比如翻墙);
    • 隐藏客户端真实IP;
    • 突破内网访问限制;
  • 例子:学校里的正向代理服务器

场景描述

学校内部网络处于安全或管理原因,禁止学生电脑直接访问外网。学校部署了一台代理服务器,所有学生上网时,必须先把请求发给这台代理服务器,由它去访问外网,再把结果返回给学生。

说明

  • 学生电脑配置了代理服务器的地址;
  • 代理服务器收到请求后,代表学生去访问外网;
  • 外网服务器看到的请求来源是学校代理服务器的IP,而不是学生的真实IP;

3.反向代理

  • 定义

反向代理是指客户端并不知道目标服务器的真实地址,只知道代理服务器的地址。

代理服务器位于外部网络和内部服务器之间,代表内部服务器接收外部请求,并将请求转发到后端服务器。

  • 典型应用场景

    • 负载均衡(分布请求到多台后端服务器)
    • 安全防护(隐藏真实服务器IP,防止攻击)
    • 缓存加速(代理服务器缓存静态资源)
  • 例子:公司里的负载均衡反向代理服务器

场景描述

公司有多个Web服务器对外提供服务,如果公司里所有用户都只访问某些个服务器,就会导致其余服务器一直处于闲置状态,分布不均衡;所以为了提升性能和可靠新,公司在外网部署了一台负载均衡服务器,所有用户访问公司网站时,先访问负载均衡服务器,由它根据负载情况把请求分布到后端的某一台服务器上。

说明

  • 用户只知道负载均衡服务器的IP,不知道后端Web服务器的真实IP;
  • 负载均衡服务器根据策略把请求转发到不同的Web服务器;
  • 后端服务器的安全性和可用性都得到了提升;

以上就是关于网络中其他重要的协议和技术的讲解,如果哪里有错的话,可以在评论区指正,也欢迎大家一起讨论学习,如果对你的学习有帮助的话,点点赞关注支持一下吧!!!


文章转载自:
http://belabor.tmizpp.cn
http://axle.tmizpp.cn
http://aok.tmizpp.cn
http://assemble.tmizpp.cn
http://astrocytoma.tmizpp.cn
http://astraphobia.tmizpp.cn
http://barrister.tmizpp.cn
http://accomplishment.tmizpp.cn
http://bardia.tmizpp.cn
http://chinghai.tmizpp.cn
http://ahwaz.tmizpp.cn
http://centimillionaire.tmizpp.cn
http://camelopard.tmizpp.cn
http://chemisette.tmizpp.cn
http://calceiform.tmizpp.cn
http://belladonna.tmizpp.cn
http://albeit.tmizpp.cn
http://aglossal.tmizpp.cn
http://auriculoventricular.tmizpp.cn
http://aphorism.tmizpp.cn
http://apprize.tmizpp.cn
http://causationist.tmizpp.cn
http://brew.tmizpp.cn
http://alive.tmizpp.cn
http://beerless.tmizpp.cn
http://amarelle.tmizpp.cn
http://anethole.tmizpp.cn
http://actaeon.tmizpp.cn
http://allegoric.tmizpp.cn
http://amban.tmizpp.cn
http://www.dtcms.com/a/267133.html

相关文章:

  • STM32第十四天串口
  • uniapp启动图被拉伸问题
  • 国产 OFD 标准公文软件数科 OFD 阅读器:OFD/PDF 双格式支持,公务办公必备
  • React Hooks 内部实现原理与函数组件更新机制
  • 【LeetCode 热题 100】73. 矩阵置零——(解法二)空间复杂度 O(1)
  • stm32的三种开发方式
  • Zigbee/Thread
  • 车载以太网-防火墙
  • 【深度学习】强化学习(Reinforcement Learning, RL)主流架构解析
  • 2025使用VM虚拟机安装配置Macos苹果系统下Flutter开发环境保姆级教程--下篇
  • React Native 开发环境搭建--mac--android--奔溃的一天
  • App爬虫实战篇-以华为真机手机爬取集换社的app为例
  • Pytest 测试发现机制详解:自动识别测试函数与模块
  • 在 Ubuntu 下配置 oh-my-posh —— 普通用户 + root 各自使用独立主题(共享可执行)
  • Redis Cluster 与 Sentinel 笔记
  • 文本方式和二进制方式打开文件的不同
  • Flutter 使用http库获取网络数据的方法(一)
  • Excel 数据透视表不够用时,如何处理来自多个数据源的数据?
  • MAX3485在MCU芯片AS32S601-485通信外设中的应用
  • 线程的礼让和加入
  • 1004、最大连续1的个数 III
  • SpringBatch使用介绍
  • 任务调度器(Scheduler)实现逻辑
  • Java 创建对象过程 JVM 内存分配并发安全笔记
  • JVM与JMM
  • Mysql底层专题(四)索引优化实战一
  • DeepSeek与诡秘之主
  • 在SoC数据加解密验证中使用 Python 的 gmssl 库
  • 03_性能优化:让软件呼吸更顺畅
  • 计算机网络(网页显示过程,TCP三次握手,HTTP1.0,1.1,2.0,3.0,JWT cookie)