[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的原理和工作流程

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

难以重现的 Bug如何处理

对很多测试人员(尤其是对新手来说)在工作过程中最不愿遇到的一件事情就是:在测试过 程中发现了一个问题,觉得是 bug,再试的时候又正常了。 碰到这样的事情,职业素养和测试人员长期养成的死磕的习性会让她…

SpringBoot工程引用其他工程构建的jar包

1、问题 存在A、B两个工程,其中B工程需要引用A工程的jar包。 2、解决办法 A工程 (1)自动配置bean。 Configuration ComponentScan("cn.ac.trimps.auth.**") public class AuthClientConfig {} Retention(RetentionPolicy.RUNTIME…

Android Studio开发之路(十)app中使用aar以及报错记录

书接上文:Android Studio开发之路(九)创建android library以及生成aar文件 五、app中使用aar文件的方法 先复制一下上面生成的aar文件。然后在你要添加到的app左上角选择“project”模式,然后找到libs文件夹,点击右键…

全自动封箱机:智能包装与物流领域的新引擎,助力产业升级

在智能化、自动化的浪潮下,全自动封箱机以其高效、精准的特点,正逐渐成为智能包装和物流领域的新宠。这种先进的机械设备不仅提升了包装效率,还大大地推动了物流行业的现代化进程,为产业升级注入了新动力。 全自动封箱机的重要性不…

Centos中将UTC的时区改为CTS时区

date命令可以看到现在的时间以及时区,可以看到现在是UTC时区 而想要更改时区那么就要了解tzselect命令 tzselect 是一个 Linux 命令行工具,用于交互式地帮助用户选择并设置系统的时区。这个程序会通过一系列的问题引导用户,从而确定用户所在的…

【Linux网络】HTTPS【上】{运营商劫持/加密方式/数据摘要/https的诞生}

文章目录 1.引入1.1http与https1.2SSL/TLS1.3VPN1.4认识1.5密码学1.6为什么要加密?运营商 1.7常见的加密方式对称加密非对称加密 2.加密与解密3.数据摘要 && 数据指纹MD5 数字 签名理解三者数据摘要(Digital Digest):数字…

实现echarts地图

效果图: 2.echarts.registerMap("xizang", XZ) 注册了一个名为 "xizang" 的地图,其中 XZ 是地图数据。 接下来是 option 对象,包含了图表的配置信息,比如图表的布局、提示框样式、地理组件配置和系列数据配置等。 在 t…

Linux 第二十九章

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…

分布式光伏管理系统的意义与核心技术

分布式光伏管理系统遵循安全可靠、经济合理原则,满足电力系统自动化总体规划要求,且充分考虑光伏发电的因素,对分布式光伏发电、用电进行集中监控、统一调度、统一运维。为用户提供运维服务,实现能源互联,信息互通&…

软件安全测试可以检测软件哪些安全问题?

软件安全测试是一种旨在发现和评估软件应用程序中的安全漏洞和隐患的测试方法。通过安全测试,可以发现并修复潜在的安全问题,从而提高软件应用程序的可靠性和安全性。下面将介绍软件安全测试可以检测到的几种主要安全问题。 身份验证漏洞:身份…

如何将 DFMini player MP3 模块与 Arduino 结合使用

要创建此项目,您将使用: DFPlayer迷你MP3模块 10kΩ电阻 开关按钮 面包板 Arduino UNO 杜邦线 现在,我们将学习如何构建该项目。 什么是DF Mini Player MP3模块 DFMini Player 模块是一个小型音乐播放器。它成本低、功耗低,可…

五月采购节 | 全场板卡八七折起

淘宝搜索【北京迅为电子官方企业】 5月13日~5月15日 海量优惠券等你拿! 复制下方链接到淘宝 直接进入店铺! https://shop459378556.taobao.com

空号检测-号码批量检测API接口-关机停机风险号检测

手机空号检测分为普通空号检测和实时检测两种类型: 普通空号检测返回结果:实号、风险号、空号、沉默号 。 1.普通版的检测不会实时更新数据,因此其数据库中的信息可能不是最新的。 2.覆盖基础运营商的数据库,检测范围相对有限&…

Spring Boot整合ElasticSearch实战 - 第511篇

历史文章(文章累计500) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 《…

呼叫中心系统选pscc好还是okcc好

选择PSCC(商业软件呼叫中心)还是OKCC(开源呼叫中心),应基于以下几个关键因素来决定: 技术能力:如果企业拥有或愿意投入资源培养内部技术团队,开源解决方案可能更合适,因为…

软件设计中的数字:7

“ 使软件更易理解的秘密:米勒法则” 小游戏 学习之前先一起玩一个小游戏。 3秒钟时间,看看下面的图片中有多少个小块? 3秒到了,数出来了吗?22个。 没数出来也没关系,我也没数出来o(╥﹏╥)o 现在&…

牛客热题:比较版本号

📟作者主页:慢热的陕西人 🌴专栏链接:力扣刷题日记 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 文章目录 牛客热题:比较版本号题目链接方法一:暴力…

电商平台接口自动化框架实践||电商API数据采集接口

电商数据采集接口 语言:python 接口自动化实现流程 红色为可实现/尚未完成 绿色为需要人工干预部分 自动生成测试用例模板(俩种方式二选一): mimproxy,通过浏览器代理抓包方式,访问 H5 或者 web 页面&a…

processing完整教程

概述:processing在我眼里就是libgdx的高度封装,如果各位会libgdx,学processing应该可以说是无师自通,当然processing是java语言那边的。 processing是什么? 官网是这样解释的:Processing 是一本灵活的软件…

每周一算法:无向图的最小环

题目链接 观光之旅 题目描述 给定一张无向图,求图中一个至少包含 3 3 3 个点的环,环上的节点不重复,并且环上的边的长度之和最小。 该问题称为无向图的最小环问题。 你需要输出最小环的方案,若最小环不唯一,输出…