网络层协议IP

对于网络层我们直接通过IP协议来了解其内容

一.IP协议

首先我们先来了解几个概念:

主机:配有IP地址,但是不进行路由控制的设备

路由器:配有IP地址,同时进行路由控制的设备

节点:主机和路由器的统称

所以现在我们的重点就是IP的了解,什么是IP???

结合前面我们学过的应用层和传输层,和容易得出IP也是存在协议格式的,下面我们来重点学习IP协议的格式:

下面我们来一一解释其作用:

4 位版本号(version):表示指定IP协议的版本,现在是存在IPv4和IPv6两种的,对于 IPv4 来说, 就是 4.

4 位头部长度(header length):指的是IP头部的长度,一般是以32bit为单位的,由于长度只有四个bit,所以最大可以表示的字节数为60
8 位服务类型(Type Of Service):3 位优先权字段(已经弃用), 4 位 TOS 字段, 和1 位保留字段(必须置为 0). 4 位 TOS 分别表示: 最小延时, 最大吞吐量, 最高可靠性,最小成本. 这四者相互冲突, 只能选择一个. 对于 ssh/telnet 这样的应用程序, 最小延时比较重要; 对于 ftp 这样的程序, 最大吞吐量比较重要.
16 位总长度(total length): IP 数据报整体占多少个字节.
16 位标识(id): 唯一的标识主机发送的报文. 如果 IP 报文在数据链路层被分片了, 那么每一个片里面的这个 id 都是相同的.
3 位标志字段: 第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到). 第二位置为 1 表示禁止分片, 这时候如果报文长度超过 MTU, IP 模块就会丢弃报文. 第三位表示"更多分片", 如果分片了的话, 最后一个分片置为 0, 其他是 1. 类似于一个结束标记.
13 位分片偏移(framegament offset): 是分片相对于原始 IP 报文开始处的偏移.其实就是在表示当前分片在原报文中处在哪个位置. 实际偏移的字节数是这个值 8得到的. 因此, 除了最后一个报文之外, 其他报文的长度必须是 8 的整数倍(否则报文就不连续了).
8 位生存时间(Time To Live, TTL): 数据报到达目的地的最大报文跳数. 一般是64. 每次经过一个路由, TTL -= 1, 一直减到 0 还没到达, 那么就丢弃了. 这个字段主要是用来防止出现路由循环
 8 位协议: 表示上层协议的类型
16 位头部校验和: 使用 CRC 进行校验, 来鉴别头部是否损坏.
32 位源地址和 32 位目标地址: 表示发送端和接收端.
选项字段(不定长, 最多 40 字节):一般不涉及,大家可以后序自己学习

IP我们现在已经做到简单了解了,现在我们再来学习IP的划分:

IP地址一般分为:网络号+主机号

网络号: 保证相互连接的两个网段具有不同的标识
主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号
在同一网段中网络号是相同的,但是主机号是不同的,所以网络号+主机号可以表示网络中唯一一台主机

所以,我们常说的子网,实际上是指将网络号相同的主机放在一起组成的网络,当一台主机入子网,实际上是将该主机的网络号设置为与子网中其他主机一样,而主机号必须与其他主机不同

补充:手动分配入网的主机过于麻烦,所以存在一种叫DHCP,可以给主机给分配ip

下面我们再来看一种IP划分规则:

A 类 0.0.0.0 到 127.255.255.255
B 类 128.0.0.0 到 191.255.255.255
C 类 192.0.0.0 到 223.255.255.255
D 类 224.0.0.0 到 239.255.255.255
E 类 240.0.0.0 到 247.255.255.255
大家很显然发现不同的类别后序由于网络号和主机号长度问题可以划分的种类差别非常大,所以大部分都是申请了B类,这也导致B 类地址很快就分配完了, 而 A 类却浪费了大量地址

因此这种方案被抛弃,出现了一种新的方案:

CIDR:

该方案是如何实现网段划分的呢??

该方案通过引入一个额外的子网掩码(subnet mask)来区分网络号和主机号,子网掩码也是一个 32 位的正整数. 通常用一串 "0" 来结尾,将 IP 地址和子网掩码进行 "按位与" 操作, 得到的结果就是网络号,网络号和主机号的划分与这个 IP 地址是 A 类、 B 类还是 C 类无关;
可见,IP 地址与子网掩码做与运算可以得到网络号, 主机号从全 0 到全 1 就是子网的地址范围



二.IP协议扩展

将IP地址中主机部分全部设置为0,就是一个网络号,这可以表示一个局域网

将IP地址中主机部分全部设置为1,就是一个广播地址,用于给同一个链路中相互连接的所有主机发送数据包

127.*的 IP 地址用于本机环回(loop back)测试,通常是 127.0.0.1
我们知道IP地址是存在数量限制的,现在我们来仔细计算下IP的大小:IP是4字节32比特位大小,即2^32次方,大约43亿左右,由于每台主机都需要一个IP地址,这表明我们大约只有43亿左右的主机可以接入网络,对于全球70亿以上来说是远远不够的,所以我们需要想到一定的解决方案,实际上我们确实有接剧情方案:

1.动态分配 IP 地址: 只给接入网络的设备分配 IP 地址. 因此同一个 MAC 地址的设备, 每次接入互联网中, 得到的 IP 地址不一定是相同的;

2.NAT技术

3.IPv6: IPv6 并不是 IPv4 的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6 用 16 字节 128 位来表示一个 IP 地址; 但是目前 IPv6 还没有普及

关于动态分配IP和IPv6大家可以自行去了解,后面我们来重点讲解NAT这种技术



三.NAT技术

在学习NAT技术之前,我们先来学习公网IP地址和私有IP地址

我们知道IP地址间可以没什么区别的,但是RFC 1918 规定了用于组建局域网的私有 IP 地
址,所以出现了某些IP地址只能用来构建私有IP,其他来构建公有IP

下面我们来看看私有IP:

10.*,前 8 位是网络号,共 16,777,216 个地址
172.16.*到 172.31.*,前 12 位是网络号,共 1,048,576 个地址
192.168.*,前 16 位是网络号,共 65,536 个地址
包含在这个范围中的, 都成为私有 IP, 其余的则称为全局 IP(或公网 IP)

那么区分公有IP和私有IP有什么意义呢?

简单来说,私有IP是可以重复出现的,即在多个局域网中私有IP是可以相同的,下面我们就来详细讲解:

首先,我们要想知道路由器这个设备:

配置两个 IP 地址, 一个是 WAN 口 IP, 一个是 LAN 口 IP(子网IP)
LAN 口连接的主机, 都从属于当前这个路由器的子网中
路由器 LAN 口连接的主机, 都从属于当前这个路由器的子网中
不同的路由器, 子网 IP 其实都是一样的(通常都是 192.168.1.1). 子网内的主机IP 地址不能重复. 但是子网之间的 IP 地址就可以重复了

如下图:

我们结合上图发现,不同的主机的ip存在相同,但是相同的ip所在的局域网不同,这样我们就可以大大缓解ipv4数量不足的问题:即通过局域网ip规范使网络中所需ip数量大大减少的技术,简称NAT技术

现在问题来了,我们的网络中存在主机IP相同情况,那么该如何解决网络传输的问题,即如何在网络中识别不同的主机(该不同主机ip相同)???

子网内的主机需要和外网进行通信时, 路由器将 IP 首部中的 IP 地址进行替换(替换成 WAN 口 IP), 而WANip一定不同,这样逐级替换, 最终数据包中的 IP 地址成为一个公网 IP. 这种
技术称为 NAT(Network Address Translation, 网络地址转换),这也是解决上述问题的方案:即通过IP替换来解决不同局域网IP相同情况

 

总而言之,网络是经过精心设计的,蕴含无穷的奥妙与智慧,希望大家可以更加深入学习。

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

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

相关文章

道品智能科技移动式水肥一体机:农业灌溉施肥的革新之选

在现代农业的发展进程中,科技的力量正日益凸显。其中,移动式水肥一体机以其独特的可移动性、智能化以及实现水肥一体化的卓越性能,成为了农业领域的一颗璀璨新星。它不仅改变了传统的农业灌溉施肥方式,更为农业生产带来了高效、精…

数据结构 (10)队列

前言 队列是一种特殊的数据结构,它遵循先进先出(FIFO,First In First Out)的原则。 一、定义与基本概念 定义:队列是一种只允许在一端(队尾)进行插入操作,而在另一端(队头…

【数据分享】2001-2023年我国30米分辨率冬小麦种植分布栅格数据(免费获取)

小麦、玉米、水稻等各类农作物的种植分布数据在农业、环境、国土等很多专业都经常用到! 本次给大家分享的是我国2001-2023年逐年的30米分辨率冬小麦种植分布栅格数据!数据格式为TIFF格式,数据坐标为GCS_WGS_1984。该数据包括我国11个省份的冬…

17.5k Star,ThingsBoard 一款开源、免费、功能全面的物联网 IoT 平台 -慧知开源充电桩平台

项目介绍 ThingsBoard是一个开源、免费、功能全面、灵活易用的物联网(IoT)平台,专注于数据收集、处理、可视化以及设备管理。它提供了一个全面的解决方案,用于构建和管理物联网应用。支持从各种设备收集数据,通过内置…

力扣面试150 填充每个节点的下一个右侧节点指针 II BFS 逐层构建法

Problem: 117. 填充每个节点的下一个右侧节点指针 II 🍻 BFS 空间优化 👩‍🏫 参考题解 ⏰ 时间复杂度: O ( n ) O(n) O(n)🌎 空间复杂度: O ( 1 ) O(1) O(1) class Solution {public Node connect(Node root) {if (root …

ElasticSearch学习篇18_《检索技术核心20讲》LevelDB设计思想

目录 一些常见的设计思想以及基于LSM树的LevelDB是如何利用这些设计思想优化存储、检索效率的。 几种常见的设计思想 索引和数据分离减少磁盘IO读写分离分层思想 LevelDB的设计思想 读写分离设计分层设计与延迟合并LRU缓存加速检索 几种常见设计思想 索引与数据分离 索引…

LabVIEW Real-Time 的特点

LabVIEW Real-Time(简称 LabVIEW RT)是为实时系统设计的软件平台,结合 NI 硬件(如 CompactRIO 和 PXI 系列),能够在高可靠性、高性能要求的场景中实现稳定的实时控制与数据处理。以下是它的主要用处和特点&…

使用脚本实现hadoop-yarn-flink自动化部署

本文使用脚本实现hadoop-yarn-flink的快速部署(单机部署)。 环境:①操作系统:CentOS 7.6;②CPU:x86;③用户:root。 1.前置条件 把下面的的脚本保存到“pre-install.sh”文件&#x…

【JUC-Interrupt】中断相关概念

线程中断 一、相关概念二、API2.1、isInterrupted方法2.2、interrupted方法2.3、interrupt 三、总结: 一、相关概念 一个线程不应该由其他线程中断或停止,应该有线程自己来决定。 在Java中没有办法立即停止一个线程,因此提供了用于停止线程…

javascript基础学习

什么是伪代码 伪代码(Pseudocode)是一种介于自然语言和编程语言之间的算法描述方式。它使用类似自然语言的语句来描述程序的逻辑和流程,但又采用了编程语言中的一些结构和控制语句,如循环、条件判断等。 伪代码的目的是在不涉及具体编程语言语法细节的情况下,清晰地表达…

Django+Nginx+uwsgi网站Channels+redis+daphne多人在线聊天实现粘贴上传图片

在DjangoNginxuwsgi网站Channelsredisdaphne多人在线的基础上(详见DjangoNginxuwsgi网站使用Channelsredisdaphne实现简单的多人在线聊天及消息存储功能-CSDN博客),实现在输入框粘贴或打开本地图片,上传到网站后返回图片路径&…

C++ —— 以真我之名 如飞花般绚丽 - 智能指针

目录 1. RAII和智能指针的设计思路 2. C标准库智能指针的使用 2.1 auto_ptr 2.2 unique_ptr 2.3 简单模拟实现auto_ptr和unique_ptr的核心功能 2.4 shared_ptr 2.4.1 make_shared 2.5 weak_ptr 2.6 shared_ptr的缺陷:循环引用问题 3. shared_ptr 和 unique_…

vulnhub靶场之breakout

empire靶场2 前言 靶机:breakout 攻击:kali 续接上个靶场empire1的继续学习 主机发现 使用arp-scan扫描或者直接查看虚拟机的ip地址 信息收集 使用nmap扫描 端口80apache 2.4.51开启smb服务的两个端口139、445,版本4.6.2两个http服务采…

今天你学C++了吗?——C++中的类与对象(第二集)

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…

聚划算!一区算法!双分解+牛顿拉夫逊优化+深度学习!CEEMDAN-VMD-NRBO-Transformer多元时序预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CEEMDAN-Kmeans-VMD-NRBO-Transformer融合K均值聚类的数据双重分解牛顿-拉夫逊优化算法Transformer多元时间序列预测(完整源码和数据)运行环境Matlab2023b及以上。 2.CEEMDAN分解…

C++设计模式-中介者模式

动机(Motivation) 多个对象相互关联的情况,对象之间常常会维持一种复杂的引用关系,如果遇到一些需求的更改,这种直接的引用关系将面临不断的变化。在这种情况下,可以使用一种”中介对象“来管理对象间的关联关系,避免…

滑动窗口篇——如行云流水般的高效解法与智能之道(2)

前言: 上篇我们介绍了滑动窗口的含义并结合基础题型加以练习,本篇将以进阶难度的题目为索引,深化对于滑动窗口的运用与理解。 一. 将x减到0的最小操作数 题目链接:1658. 将 x 减到 0 的最小操作数 - 力扣(LeetCode&am…

EG3D: Efficient Geometry-aware 3D Generative Adversarial Networks 学习笔记

1 Contributions 混合显式-隐式网络架构:提出了一种 Tri-plane 的3D表征方法,结合显式体素网格与隐式解码器的优点 速度快,内存效率高; 支持高分辨率生成,保持3D表征的灵活性和表达能力。与纯显式或隐式方法相比&#…

⭐ Unity 资源管理解决方案:Addressable_ Demo演示

一、使用Addressable插件的好处: 1.自动管理依赖关系 2.方便资源卸载 3.自带整合好的资源管理界面 4.支持远程资源加载和热更新 二、使用步骤 安装组件 1.创建资源分组 2.将资源加入资源组 3.打包资源 4.加载资源 三种方式可以加载 using System.Collections…

C++《二叉搜索树》

在初阶数据结构中我学习了树基础的概念以及了解了顺序结构的二叉树——堆和链式结构二叉树该如何实现,那么接下来我们将进一步的学习二叉树,在此会先后学习到二叉搜索树、AVL树、红黑树;通过这些的学习将让我们更易于理解后面set、map、哈希等…