[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-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能