[Linux][网络][协议技术][DNS][ICMP][ping][traceroute][NAT]详细讲解

2024-05-13 07:04

本文主要是介绍[Linux][网络][协议技术][DNS][ICMP][ping][traceroute][NAT]详细讲解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 1.DNS
    • 1.DNS背景
    • 2.域名简介
  • 2.ICMP协议
    • 1.ICMP功能
    • 2.ICMP两类报文
  • 3.ping命令
  • 4.traceroute
  • 5.NAT技术
    • 1.NAT技术背景
    • 2.NAT IP转换过程
    • 3.静态地址NAT && 动态地址NAT
    • 4.网络地址端口转换NAPT
    • 5.NAT技术的缺陷
    • 6.NAT和代理服务器
  • 6.总结
    • 1.数据链路层
    • 2.网络层
    • 3.传输层
    • 4.应用层


1.DNS

  • DNS(Domain Name System)(是一整套从域名映射到IP的系统)
  • DNS 的默认端口:53
  • DNS协议规范使用UDP进行传输

1.DNS背景

  • TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序
  • 但是IP地址不方便记忆,于是人们发明了一种叫主机名的东西,是一个字符串,并且使用hosts文件来描述主机名和IP地址的关系
  • 最初,通过互连网信息中心(SRI-NIC)来管理这个hosts文件
    • 如果一个新计算机要接入网络,或者某个计算机IP变更,都需要到信息中心申请变更hosts文件
    • 其他计算机也需要定期下载更新新版本的hosts文件才能正确上网
  • 这样就太麻烦了,于是产生了DNS系统
    • 一个组织的系统管理机构,维护系统内的每个主机的IP和主机名的对应关系
    • 如果新计算机接入网络,将这个信息注册到数据库中
    • 用户输入域名的时候,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址
  • 至今,我们的计算机上仍然保留了hosts文件,在域名解析的过程中仍然会优先查找hosts文件的内容

2.域名简介

  • 域名组成:主机名.结构名.网络名.最高层域名
  • 主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称
    • 如:www.baidu.com
  • 域名使用 . 连接
    • com:一级域名,表示这是一个企业域名,同级的还有"net"(网络提供商),“org”(非盈利组织)等
    • baidu:二级域名,公司名
    • www:只是一种习惯用法,之前人们在使用域名时,往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式,来表示主机支持的协议

2.ICMP协议

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

1.ICMP功能

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

2.ICMP两类报文

  • 一类是通知出错原因
  • 一类是用于诊断查询
    请添加图片描述

3.ping命令

  • 注意,此处ping的是域名,而不是url,一个域名可以通过DNS解析成IP地址

  • ping命令不光能验证网络的连通性,同时也会统计响应时间和TTL(IP包中的Time To Live,生存周期)

  • ping命令会先发送一个ICMP Echo Request给对端,对端接收到之后,会返回一个ICMP Echo Reply
    ![[Pasted image 20240225085550.png]]

  • 一个值得注意的坑

    • 有些面试官可能会问:telnet是23端口,ssh是22端口,那么ping是什么端口?
    • 千万注意,这是面试官的圈套
    • ping命令基于ICMP,是在网络层,而端口号是传输层的内容,在ICMP中根本就不关注端口号这样的信息

4.traceroute

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

5.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替换成全局的IP 202.244.174.37
  • NAT路由器收到外部的数据时,又会把目标IP从202.244.174.37替换回10.0.0.10
  • 在NAT路由器内, 有一张自动生成的,用于地址转换的表
  • 当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系
    请添加图片描述

3.静态地址NAT && 动态地址NAT

  • 静态地址NAT
    • 将内部网络的私有的IP地址转换为公有IP地址,IP地址是一对一的,是一直不变的
    • 实现固定私网主机地址到公网地址的一对一转换,适用于上网用户少,且同时上网用户数量与公网地址数量相同的场景
  • 动态地址NAT
    • 将内部网络的私有的IP地址转换为公有IP地址时,IP地址时不确定,随机的
    • 私网主机地址与公网地址的动态转换,并没有固定映射关系

4.网络地址端口转换NAPT

  • 那么问题来了,如果局域网内,有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,目的IP都是相同的,那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?
    • 这时候NAPT来解决这个问题了,使用IP+Port来建立这个关联关系
      • 在进行源地址转换的过程中,不一定只替换源IP,必要的时候,源端口也要被替换
      • 路由器在NAT转换的过程中,除了单纯的替换,还会为用户根据报文请求的四元组,构建一个映射关系
      • 无论从内向外,还是从外向内,都能在各自的网络中表示唯一性,所以,这个映射关系是互为KEY值
  • 这种关联关系也是由NAT路由器自动维护的
    • **例如:**在TCP的情况下,建立连接时,就会生成这个表项,在断开连接后,就会删除这个表项
      请添加图片描述

5.NAT技术的缺陷

  • 由于NAT依赖这个转换表,所以有诸多限制
    • 无法从NAT外部向内部服务器建立连接
    • 装换表的生成和销毁都需要额外开销
    • 通信过程中一旦NAT设备异常,即使存在热备,所有的TCP连接也都会断开

6.NAT和代理服务器

  • 路由器往往都具备NAT设备的功能,通过NAT设备进行中转,完成子网设备和其他子网设备的通信过程
  • 代理服务器看起来和NAT设备有一点像,客户端向代理服务器发送请求,代理服务器将请求转发给真正要请求的服务器,服务器返回结果后,代理服务器又把结果回传给客户端
  • 那么NAT和代理服务器的区别有哪些呢?
    • 从应用上讲
      • NAT设备是网络基础设备之一,解决的是IP不足的问题
      • 代理服务器则是更贴近具体应用
        • 通过代理服务器进行翻墙,
        • 另外像网易UU这样的加速器,也是使用代理服务器
    • 从底层实现上讲
      • NAT是工作在网络层,直接对IP地址进行替换
      • 代理服务器往往工作在应用层
    • 从使用范围上讲
      • NAT一般在局域网的出口部署
      • 代理服务器可以在局域网做,也可以在广域网做,也可以跨网
  • 从部署位置上看
    • NAT一般集成在防火墙,路由器等硬件设备上
    • 代理服务器则是一个软件程序,需要部署在服务器上
  • 代理服务器是一种应用比较广的技术
    • 翻墙:广域网中的代理 – 正向代理
    • 负载均衡:局域网中的代理 – 反向代理
  • 代理服务器又分为正向代理和反向代理
    • 正向代理用于请求的转发
    • 反向代理往往作为一个缓存

6.总结

1.数据链路层

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

2.网络层

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

3.传输层

  • 传输层的作用:负责数据能够从发送端传输接收端
  • 理解端口号的概念
  • 认识UDP协议,了解UDP协议的特点
  • 认识TCP协议,理解TCP协议的可靠性,理解TCP协议的状态转化
  • 掌握TCP的连接管理,确认应答,超时重传,滑动窗口,流量控制,拥塞控制,延迟应答,捎带应答特性
  • 理解TCP面向字节流,理解粘包问题和解决方案
  • 能够基于UDP实现可靠传输
  • 理解MTU对UDP/TCP的影响

4.应用层

  • 应用层的作用:满足日常需求的网络程序,都是在应用层
  • 能够根据自己的需求,设计应用层协议
  • 了解HTTP协议
  • 理解DNS的原理和工作流程

这篇关于[Linux][网络][协议技术][DNS][ICMP][ping][traceroute][NAT]详细讲解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/985000

相关文章

Linux中shell解析脚本的通配符、元字符、转义符说明

《Linux中shell解析脚本的通配符、元字符、转义符说明》:本文主要介绍shell通配符、元字符、转义符以及shell解析脚本的过程,通配符用于路径扩展,元字符用于多命令分割,转义符用于将特殊... 目录一、linux shell通配符(wildcard)二、shell元字符(特殊字符 Meta)三、s

Linux之软件包管理器yum详解

《Linux之软件包管理器yum详解》文章介绍了现代类Unix操作系统中软件包管理和包存储库的工作原理,以及如何使用包管理器如yum来安装、更新和卸载软件,文章还介绍了如何配置yum源,更新系统软件包... 目录软件包yumyum语法yum常用命令yum源配置文件介绍更新yum源查看已经安装软件的方法总结软

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

Linux:alias如何设置永久生效

《Linux:alias如何设置永久生效》在Linux中设置别名永久生效的步骤包括:在/root/.bashrc文件中配置别名,保存并退出,然后使用source命令(或点命令)使配置立即生效,这样,别... 目录linux:alias设置永久生效步骤保存退出后功能总结Linux:alias设置永久生效步骤

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用