DJ4-4 NAT、ICMP、IPv6

目录

一、NAT:网络地址转换

1、工作原理

2、NAT 的限制

二、ICMP

1、ICMP 协议

2、ICMP 类型和代码

3、Traceroute 命令

三、IPv6 地址

1、IPv6 的引入

2、IPv6 的表示


一、NAT:网络地址转换

动机:对外部网络来讲,本地网络只用一个 IP 地址。

  • 不需要从 ISP 分配一系列地址,只需要一个 IP 地址用于所有的设备
  • 在本地网络,改变设备的 IP 地址不用通知外部世界
  • 可以变更 ISP,同时又不用改变本地网络的设备地址
  • 本地网络内部设备不能被外部世界明确寻址或不可见

增加了安全性

1、工作原理

① 外出的分组

  1. 在 NAT 转换表中记录每个 (源 IP 地址,端口号) 到 (NAT IP 地址,新端口号) 转换配对
  2. 替换每个外出的分组的 (源 IP 地址,端口号) 为 (NAT IP 地址,新端口号)
  3. 远程客户/服务器用 (NAT IP 地址,新端口号) 作为目的地来响应

② 进来的分组

  • 替换每个进来的分组的 (NAT IP 地址,新端口号) 为 (源 IP 地址,端口号)

采用 16 位端口号:一个局域网地址可以同时支持 60,000 个并发连接!

2、NAT 的限制

NAT 存在争议:路由器只应该处理到第三层,违反了端到端主张,应用程序设计者在设计时不得不将 NAT 加以考虑,如:P2P 应用程序。

应使用 IPv6 来解决地址短缺问题。

二、ICMP

1、ICMP 协议

Internet Control Message Protocol,因特网控制报文协议

功能:用于主机路由器之间彼此交流网络层信息。

  • 差错报告:不可到达的主机、网络、端口、协议
  • 请求和应答(用 于 ping、traceroute)

位于 IP 之上:因为 ICMP 消息是装载在 IP 分组里的。

可见,同一层的协议可以相互封装

2、ICMP 类型和代码

主打一个:探测网络连通性

3、Traceroute 命令

源端发送一系列的 UDP 分组给目的端:

  • 第一个分组的 TTL=1
  • 第二个分组的 TTL=2,等等

考虑第 n 个分组到达第 n 个路由器时,

  • 由于 TTL=0 ,因此路由器丢弃该分组
  • 并给源端发送一个 ICMP 报文 (type 11,code 0)
  • 该报文包含了路由器的名称和 IP 地址

当源端收到 ICMP 报文时,计算传输 RTT 往返时间。

事实上,对应每个 TTL 都发送了三次分组

回顾:路由器每次将 TTL-1 后,都要重新计算校验和。

源端停止发送的依据:

  1. UDP 报文最终到达目的端
  2. 目的端返回应答的 ICMP 报文 (type 3, code 3)
  3. 源端收到应答 ICMP 报文后停止发送

三、IPv6 地址

1、IPv6 的引入

引入的原因:

  • (初始动机) 32位的 IPv4 地址空间即将用尽。
  • 首部格式可帮助加速处理和转发
  • 改变首部利于 QoS 要求

IPv6 数据报格式:

  • 固定长度的 40 字节首部
  • 不允许分片

2、IPv6 的表示

① 冒号十六进制表示法

例如:104.220.136.100.254.254.254.255.0.0.18.128.140.10.254.255

用冒号十六进制表示为:69DC:8864:FFFF:FFFF:0:1280:8C0A:FFFF

② 零压缩表示法

例如:FF0C:0:0:0:0:0:B1

零压缩表示为:FF0C::B1

即使有两段可以进行压缩,也只能选择其中一个进行压缩。

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

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

相关文章

11-高性能JSON库——fastjson2

目录 1.具体使用 1.1.添加fastjson2依赖 1.2.常用类和方法 1.3.将JSON字符串转换成对象 1.3.1.JSON字符串转换成对象 1.3.2.JSON字符串转换成数组 1.4.将对象转换成JSON字符串 1.4.1.将对象转换成JSON字符串 1.4.2.将数组转换成 JSON 字符串 2.性能测试报告 3.总结 …

Prompt Engineering 面面观

作者:紫气东来 项目地址:https://zhuanlan.zhihu.com/p/632369186 一、概述 提示工程(Prompt Engineering),也称为 In-Context Prompting,是指在不更新模型权重的情况下如何与 LLM 交互以引导其行为以获得…

总结905

今日已做: 1.核聚课程 2.进步本回顾,重做8道题,有两道还没掌握,记录3页。 3.线性代数第5讲 4.三大计算,刷题15道,纠错。 5.每日长难句。 6.考研常识课 明日必做 1.熟练背诵《the king’s speech》并默写 2…

字符设备驱动内部实现原理解析

字符设备驱动内部实现原理解析 一. 字符设备驱动对象内部实现原理解析二. 字符设备驱动的注册流程三. 代码示例 一. 字符设备驱动对象内部实现原理解析 用户层: ​ 当用户打开(open)一个文件时,会生成一个文件描述符表 内核层: 内…

spark 和 flink 的对比

一、设计理念 Spark 的数据模型是 弹性分布式数据集 RDD(Resilient Distributed Dattsets),这个内存数据结构使得spark可以通过固定内存做大批量计算。初期的 Spark Streaming 是通过将数据流转成批 (micro-batches),即收集一段时间(time-window)内到达的…

SD/StableDiffusion模型,ai绘画部署教程,谷歌云端零成本部署,支持中文

目录 前言 准备前提 说明 开始搭建 1、第一步,下载ipynb脚本文件 2、第二步,上传一键脚本文件到谷歌云盘 3、选择该.ipynb文件--右键--打开方式--关联更多应用 4、输入框搜索Colaboratory找到该应用,安装 5、安装过程中,…

Linux网络基础

网络基础 认识 "协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型 网络传输基本流程网络传输流程图数据包封装和分用 网络中的地址管理认识IP地址认识MAC地址 认识 “协议” “协议” 是一种约定。 举个栗子,你和好友之间提前约好在某个地方…

第九章 形态学图像处理

文章目录 9形态学图像处理9.1预备知识9.2腐蚀与膨胀9.2.1腐蚀9.2.2膨胀9.2.3对偶性 9.3开操作和闭操作9.4击中或击不中变换9.5一些基本形态学方法9.5.1边界提取9.5.2空洞填充9.5.3连通分量的提取9.5.4凸壳9.5.5细化9.5.6粗化 9.6灰度级形态学9.6.3一些基本的形态学算法 9形态学…

kotlin从入门到精通之内置类型

基本类型 声明变量 val(value的简写)用来声明一个不可变的变量,这种变量在初始赋值之后就再也不能重新赋值,对应Java中的final变量。 var(variable的简写)用来声明一个可变的变量,这种变量在初始…

C51单片机期末复习第八章单片机接口技术

一 总线: 传送同类信息的连线 三总线: 地址总线AB,数据总线DB,控制总线CB 目录(ppt给的没啥用,乱还不全): 8.1 单片机的系统总线 8.2 简单并行I/O口扩展 8.3 可编程并行I/O口扩展 8.4 D/A转换与DAC0832应用 8…

衣服面料相关基础

总结自 BiliBili视频:原来衣服的面料还能这么选,几个方法教你买到优质的短袖,再也不怕买衣服踩坑了 面子里子 既不能皱巴巴 又不能不透气 混纺 涤纶 粘纤 氨纶 涤纶 不变性 挺阔感 氨纶 弹性 粘纤 吸水透气40-50% 怕热 真丝与亚麻 …

【python】js逆向基础案例——有道翻译

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 课程亮点: 1、爬虫的基本流程 2、反爬的基本原理 3、nodejs的使用 4、抠代码基本思路 环境介绍: python 3.8 pycharm 2022专业版 >>> 免费使用教程文末名片获取 requests >>> pip install req…

软件设计原则与设计模式

设计中各各原则同时兼有或冲突,不存在包含所有原则的设计 一:单一职责原则又称单一功能原则 核心:解耦和增强内聚性(高内聚,低耦合) 描述:类被修改的几率很大,因此应该专注于单一的…

Android 窗口实现原理

一、基本概念 1、窗口显示架构图 多窗口的核心原理其实就是分栈和设置栈边界2、Android的窗口分类 Android应用程序窗口,这个是最常见的(拥有自己的WindowToken)譬如:Activity与Dialog Android应用程序子窗口(必须依附到其他非子窗口才能存…

【刷题笔记】牛客网:链表指定区间内反转

【刷题笔记】牛客网:链表指定区间内反转 一、题目描述及示例 二、思路分析 1、首先,我们来定义一个虚拟的头节点tempHead(原因:如果从第一个位置开始反转,则可以不用进行特殊情况考虑),并使te…

IOS工程使用OpenCV库完整步聚

1.打开Xcode15并点击Create New Project 2.引用编译好的opencv2.framework框架 选择添加其它库 选择Add Files ... 选择OpenCV源码编译生成输入的IOS平台的opencv2.framework库 opencv库要放在工程目录下,不然会找不到 成功添加opencv库的引用,现在可在工程中使用opencv库…

基于深度学习的高精度蜜蜂检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度蜜蜂检测识别系统可用于日常生活中或野外来检测与定位蜜蜂目标,利用深度学习算法可实现图片、视频、摄像头等方式的蜜蜂目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

【C++】auto_ptr为何被唾弃?以及其他智能指针的学习

搭配异常可以让异常的代码更简洁 文章目录 智能指针 内存泄漏的危害 1.auto_ptr(非常不建议使用) 2.unique_ptr 3.shared_ptr 4.weak_ptr总结 智能指针 C中为什么会需要智能指针呢?下面我们看一下样例: int div() {int a, b;cin >&g…

ThreadPoolExecutor源码剖析

ThreadPoolExecutor源码涉及到的内容比较多,需要一点点的去啃和查看… ThreadPoolExecutor的核心属性 ThreadPoolExecutor的核心属性主要就是CTL。基于CTL获取到线程池的状态以及工作线程个数。 ctl是一个int类型的整数,內部基于AtomicInteger&#xff0…

STM32开发——ADC(烟雾传感器)

目录 1.ADC简介 2.项目简介 3.CubeMX设置 4.函数代码 1.ADC简介 作用:用于读取电压值,然后转换为数字量传给单片机,单片机再通过计算,可以得到电压值。 ADC的性能指标 量程:能测量的电压范围分辨率:A…