【网络】IP协议的地址管理

【网络】IP协议的地址管理

  • 一. IP协议格式
  • 二. 地址管理
    • 1.动态分配IP地址
    • 2.NAT机制
      • 2.1 NAT机制下网络的请求/响应
    • 3. 网段划分
      • 3.1 特殊的IP地址
    • 4.路由选择
    • 5.DNS域名解析系统

一. IP协议格式

在这里插入图片描述

  • 4位版本号(version): 指定IP协议的版本(IPv4/IPv6), 对于IPv4来说, 就是4.
  • 4位头部⻓度(header length): IP头部的⻓度,单位是4字节, IP头部最⼤⻓度是60字节.
  • 8位服务类型(Type Of Service): 3位优先权字段(已经弃⽤), 4位TOS字段, 和1位保留字段(必须置为0). 4位TOS分别表⽰: 最⼩延时, 最⼤吞吐量, 最⾼可靠性, 最⼩成本. 这四者相互冲突, 只能选择⼀个.
  • 16位总⻓度(total length): IP数据报整体占多少个字节. (最大64KB,虽然长度小,但是IP地址提供了拆包组包的机制
  • 16位标识(id): 唯⼀的标识主机发送的报⽂. 如果IP报⽂在数据链路层被分⽚了, 那么每⼀个⽚⾥⾯的这个id都是相同的.
  • 3位标志字段: 第⼀位保留(保留的意思是现在不⽤, 但是还没想好说不定以后要⽤到). 第⼆位置为1表⽰禁⽌分⽚, 这时候如果报⽂⻓度超过MTU, IP模块就会丢弃报⽂. 第三位表⽰"更多分⽚", 如果分⽚了的话, 最后⼀个分⽚置为1, 其他是0. 类似于⼀个结束标记.
  • 13位分⽚偏移(framegament offset): 是分⽚相对于原始IP报⽂开始处的偏移. 其实就是在表⽰当前分⽚在原报⽂中处在哪个位置.
  • 8位⽣存时间(Time To Live, TTL): 数据报到达⽬的地的最⼤报⽂跳数. ⼀般是64. 每次经过⼀个路由, TTL -= 1, ⼀直减到0还没到达, 那么就丢弃了. 这个字段主要是⽤来防⽌出现路由循环 .
  • 8位协议: 表⽰上层协议的类型 .
  • 16位头部校验和: 使⽤CRC进⾏校验, 来鉴别头部是否损坏.
  • 32位源地址和32位⽬标地址: 表⽰发送端和接收端.

二. 地址管理

IP地址是一个32位的整数,为了方便,将其表示成点分十进制的形式,通过3个点分成4个部分,每个部分1个字节,每个部分取值0-255。32位的整数所能表示的数据范围为大约为42亿9千万。那我们就会发现,全球70亿人,每人分配一个地址都不够用,况且我们很多人不止一台设备。因此地址管理应运而生。

1.动态分配IP地址

考虑到全世界的设备不是在同一时刻上网,采用用时分配、不用时回收的方式更充分地利用现有的IP地址。(权宜之计,并没有解决根本问题)。

2.NAT机制

在这里插入图片描述
⼀个路由器可以配置两个IP地址, ⼀个是WAN⼝IP, ⼀个是LAN⼝IP(⼦⽹IP).

⼦⽹内的主机需要和外⽹进⾏通信时, 路由器将IP⾸部中的IP地址进⾏替换(替换成WAN⼝IP), 这样逐级替换, 最终数据包中的IP地址成为⼀个公⽹IP. 这种技术称为NAT(Network Address Translation,⽹络地址转换).

先把IP地址分成两个大类,即私网IP和公网IP。

  1. 私网IP/局域网IP:10.、172.16-172.31.、192.168.这三类地址;
  2. 公网IP/广域网IP:剩下的IP。

要求公网上的设备,对应公网的IP,都必须是唯一的。但私网上的设备,使用私网IP,只需要保证私网内部的IP不重复即可,不同的局域网之内的IP允许重复,这样就大大提高了IP的复用率。

由于上述规定,就有一个重要的限制:

  1. 公网设备访问公网设备,没有任何问题,直接访问即可;
  2. 局域网设备访问局域网设备(同一个局域网内),允许访问;
  3. 局域网设备访问局域网设备(不同局域网内),不允许访问;
  4. 局域网设备访问公网设备,需要对局域网设备的IP地址进行转换;
  5. 公网设备访问局域网设备,不允许主动访问;

就比如说,某些校内资源,不使用校园网,就无法访问:此时你如果用的是家里的wifi,那就是不同局域网内,局域网设备不允许访问局域网设备;你如果使用流量,那就是公网设备不允许主动访问局域网设备。

2.1 NAT机制下网络的请求/响应

在这里插入图片描述
发送请求的过程其实很简单,只是需要在路由器处转换IP地址为公网地址。但是如何返回响应呢?返回的响应如何找到替换前的IP地址呢?
这就要求路由器在转换IP地址时要进行记录:

替换前的IP替换后的IP目的IP源端口目的端口
192.168.1.105.6.7.81.2.3.4100009090

如果有多条记录,又该怎么样进行区分呢:

  1. 如果局域网内的各个设备访问的是不同的服务器,路由器就可以通过服务器的IP地址来进行区分;
  2. 如果局域网的各个设备访问的是同一个服务器,路由器可以通过源端口进行区分;
  3. 如果局域网的各个设备访问的是同一个服务器,而且系统分配的端口又恰好一样,此时就要对端口进行映射,通过映射后的端口来进行区分。
替换前的IP替换后的IP目的IP源端口替换后的端口目的端口
192.168.1.105.6.7.81.2.3.410000100019090
192.168.1.205.6.7.81.2.3.410000100029090

3. 网段划分

把一个IP地址,分成两个部分。即网络号+主机号。
网络号:保证相互连接的两个⽹段具有不同的标识;
主机号:同⼀⽹段内, 主机之间具有相同的⽹络号, 但是必须有不同的主机号;
注意:
一个局域网中,网络号和主机号都相同,这个时候是无法上网的;
一个局域网中,网络号和主机号都不相同,也是无法上网的(无法与局域网内的设备通信,也无法通过连接的路由器与公网的设备通信);
两个相邻的局域网,网络号不能相同。

那在32位IP地址中,网络号和主机号是如何划分的呢?
通过子网掩码(subnet mask)来区分:

  • 子网掩码也是一个32位的正整数,通常用一串”0“来结尾;
  • 将IP地址和⼦⽹掩码进⾏ 按位与 操作, 得到的结果就是⽹络号;
    在这里插入图片描述
    比如这里,就是前24位(点分十进制的前三位)位网络号,最后8位位主机号。
    在这里插入图片描述
    再比如这个,255.255.255.240的二进制就是(11111111 11111111 11111111 1111 0000)就是前28位为网络号,最后4位为主机号。

3.1 特殊的IP地址

  • 将IP地址中的主机地址全部设为0, 就成为了⽹络号, 代表这个局域⽹;
  • 将IP地址中的主机地址全部设为1, 就成为了⼴播地址, ⽤于给同⼀个链路中相互连接的所有主机发送数据包;
  • 127.*的IP地址⽤于本机环回(loop back)测试,通常是127.0.0.1 ;

4.路由选择

此处的原则就是近处由MAC地址决定,总体由IP地址决定。

在这里插入图片描述

5.DNS域名解析系统

TCP/IP中使⽤IP地址和端⼝号来确定⽹络上的⼀台主机的⼀个程序. 但是IP地址不⽅便记忆。DNS域名解析就是用一个容易理解的字符串来代替IP地址,这样就不需要记忆IP地址也能访问对应的服务器。

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

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

相关文章

一起搭WPF架构之livechart的MVVM使用介绍

一起搭WPF架构之livechart使用介绍 前言ModelViewModelView界面设计界面后端 效果总结 前言 简单的架构搭建已经快接近尾声了,考虑设计使用图表的形式将SQLite数据库中的数据展示出来。前期已经介绍了livechart的安装,今天就详细介绍一下livechart的使用…

第6篇:无线与移动网络

目录 引言 6.1 无线网络的基础概念 6.2 无线局域网(WLAN)与IEEE 802.11 6.3 蓝牙与无线个域网(WPAN) 6.4 无线城域网(WMAN)与WiMax 6.5 ZigBee与智能家居 6.6 移动蜂窝网络(3G/4G/5G&…

SpringCloudStream使用StreamBridge实现延时队列

利用RabbitMQ实现消息的延迟队列 一、安装RabbitMQ 1、安装rabbitmq 安装可以看https://blog.csdn.net/qq_38618691/article/details/118223851,进行安装。 2、安装插件 安装完毕后,exchange是不支持延迟类型的,需要手动安装插件,需要和安装的rabbitmq版本一致 https:…

深入探讨C++多线程性能优化

深入探讨C多线程性能优化 在现代软件开发中,多线程编程已成为提升应用程序性能和响应速度的关键技术之一。尤其在C领域,多线程编程不仅能充分利用多核处理器的优势,还能显著提高计算密集型任务的效率。然而,多线程编程也带来了诸…

62天框架安全(学习)

发现学了之后没有去复习,每天都要问自己学了什么,复习了吗,下次还能记住吗 一下内容来自【小迪安全2023】第62天:服务攻防-框架安全&CVE复现&Spring&Struts&Laravel&ThinkPHP_小迪安全文档2023-CSDN博客 一个网站的源码…

排序算法 —— 直接插入排序

目录 1.直接插入排序的思想 2.直接插入排序的实现 实现分析 实现代码 3.直接插入排序的分析 时间复杂度分析 空间复杂度分析 稳定性 1.直接插入排序的思想 直接插入排序的思想就是把待排序的元素按其关键码值的大小依次插入到一个已经排好序的有序序列中&#xff0c…

一种基于OCR图像识别技术的发票采集管理系统及方法

一种基于OCR图像识别技术的发票采集管理系统及方法 摘要 本发明涉及了一种基于OCR图像识别技术的发票采集管理系统及方法,该系统的发票信息采集单元采集发票图片信息数据,OCR图像识别单元基于OCR图像识别技术并结合人工智能深度学习算法对发票图片信息数…

vscode默认添加python项目的源目录路径到执行环境(解决ModuleNotFoundError: No module named问题)

0. 问题描述 vscode中编写python脚本,导入工程目录下的其他模块,出现ModuleNotFoundError: No module named 错误 在test2的ccc.py文件中执行print(sys.path) 查看路径 返回结果发现并无’/home/xxx/first_demo’的路径,所以test2下面的文…

Vue-router 路由守卫执行流程图

vue-router 路由守卫执行的流程图(个人理解) 图1 - 图2

【MR开发】在Pico设备上接入MRTK3(一)——在Unity工程中导入MRTK3依赖

写在前面的话 在Pico上接入MRTK3,目前已有大佬开源。 https://github.com/Phantomxm2021/PicoMRTK3 也有值得推荐的文章。 MRTK3在PICO4上的使用小结 但由于在MacOS上使用MRTK3,无法通过Mixed Reality Feature Tool工具管理MRTK3安装包。 故记录一下…

jmeter使用文档

文章目录 一、安装使用1、下载2、bin/jmeter.properties介绍 二、windows使用1、微调(1)界面样式(2)修改语言 2、简单使用3、各组件详解(1)CSV 数据文件配置(2)BeanShell取样器 三、…

Pair的基本概念

概述 当一个方法需返回两个值、并且两个值都有重要意义时,我们一般会用Map的key、value来表达。 但是如果仅返回两个值,就用管理一堆key/value键值对的HashMap等结构,有点大材小用,增加了数据结构的复杂度。所以便出现了pair这个…

RAG流程的实现与改进

一、 RAG流程图 数据入库:读取本地数据并切成小块,并把这些小块经过编码embedding后,存储在一个向量数据库中(下图1——6步);相关性检索:用户提出问题,问题经过编码,再在…

探索Python中的多线程与多进程

在Python编程中,多线程和多进程是两个重要的概念,它们被用来提高程序的执行效率。本文将深入探讨这两个概念,并对比它们在Python中的实现方式。 一、多线程 多线程是一种并发执行的程序设计方法。在Python中,我们可以使用thread…

【C++_string类练习】仅仅反转字母

题目链接:仅仅反转字母 解题思路: 这种反转字符的题目我第一个想到的方法就是:双指针 一个指针在前start,一个指针在后back, 如果指针所指向的位置的值是字母,那么两个指针位置的值就进行交换&#xff0…

Leetcode 反转字符串中的单词

这个Java代码解决了“反转字符串中的单词顺序”的问题,具体思想如下: 1. 去除字符串首尾的空格 s.trim() 方法用于去除输入字符串 s 中的前导和尾随空格。这样做是为了防止在后续步骤中多余的空格对结果产生影响。 2. 按空格分割字符串 s.split(&quo…

Ingress-nginx中HTTPS的强制转发

文章目录 在使用aws 的NLB转发流量到ingress时,发现NLP上生成的转发配置不符合正常预期,如下图: ingress-nginx service 配置如下: apiVersion: v1 kind: Service metadata:annotations:service.beta.kubernetes.io/aws-load-b…

智能去毛刺:2D视觉引导机器人如何重塑制造业未来

机器人技术已经深入到各个工业领域中,为制造业带来了前所未有的变革。其中,2D视觉引导机器人技术以其精准、高效的特点,在去毛刺工艺中发挥着越来越重要的作用。本文将为您介绍2D视觉引导机器人技术的基本原理及其在去毛刺工艺中的应用&#…

Node.js学习笔记

回顾: javascript 可以在浏览器运行 (js代码会JavaScript的解析引擎执行)chrome 》V8 (性能最好)FireFox 》 奥丁猴safri 》JSCoreIE浏览器 》查克拉JavaScript可以在浏览器端操作DOM 和BOM每一个浏览器都内置了B…