IP协议的特性总结

news2024/10/6 7:38:34

目录

1. 地址管理

1.1 动态分配

1.2 NAT(网络地址转换)机制

1.3 IP地址的组成

1.4 IP地址网络号和主机号的划分

1.4.1 IP地址分类(ABCDE类)

1.4.2 子网掩码

1.5 特殊的IP地址

2. 路径规划

3. IP协议报文格式

3.1 分包

3.2 组包


1. 地址管理

      IP地址在之前跟大家简单介绍了一下:网络基本知识分享_Crystal_bit的博客-CSDN博客

IPv4是传统的IP协议,是4个字节,这个32位整数能表示的地址数为2^32个,是不足以我们全世界的人使用的,所以在IPv4中,我们通过两种方法去解决,分别是动态分配IP地址和NAT机制.IPv6是比IPv4更新的IP协议,是16个字节,有128位去表示IP地址.

注:IPv6从根本上解决(可以表示的地址数是2^128个)了IP地址不够分配的问题.

1.1 动态分配

        动态分配指只有某个设备上网才给它分配对应的ip地址,如果不是上网状态,那么就不给它分配ip,简单来说,就是不多就省着点用.

注:只是缓解ip地址不够用的问题,但是不能根本上解决该问题.

1.2 NAT(网络地址转换)机制

         将所有ip地址分为两大类,分别是内网IP(在不同局域网可以重复)和外网IP(必须唯一).该机制提高ip利用率.

内网ip:10.*  172.16.* ~ 172.31.*  192.168.*,除内网ip之外,其余都是外网ip.而内网设备不能直接被外网设备访问(当然内网设备访问其他内网设备),不然我们的本地数据就会不安全,但是内网设备是可以访问外网设备的.

注:之前博客中我们说过端口号可以拿来区分同一个主机的不同程序,但是它也可以用来区分不同主机的不同程序,比如多个主机将数据发送给同一个路由器时,路由器就会记下是主机哪个程序发送的数据,返回数据的时候也根据记下的端口号返回给该主机的程序.

1.3 IP地址的组成

        主要分为网络号和主机号,网络号用于标识一个局域网,主机号用于标识一个局域网内部的主机.

注:一个路由器有两个在不同的局域网的ip地址,可以用它将两个局域网连起来.

1.4 IP地址网络号和主机号的划分

         一个IP地址的前三个字节不一定就是网络号,网络号和主机号的划分有两种方式:一种是根据IP地址进行分类,这种方式一般出现在教科书或者我们笔试面试中,实际我们使用的是另一种叫子网掩码的方式,并且家用网络的子网掩码一般都是255.255.255.0.

1.4.1 IP地址分类(ABCDE类)

           A类:0 + 7位网络号 + 24位主机号.      B类:10 + 14位网络号 + 16位主机号.

           C类:110 + 21位网络号 + 8位主机号.  D类:1110 + 28位多播组号.

           E类:11110 + 27位(留待后用)

         每个类别的网络号和主机号长度固定.

1.4.2 子网掩码

           子网掩码是一个32位的整数(二进制),左侧有多少个1,那么ip地址的哪些位就是网络号.比如255.255.255.0,一个255以二进制表示就是八个1,也就是一个字节,三个255,就是24个1,一共就是3个字节,所以前三个字节就是网络号,最后一个字节是主机号.

注:左侧都是1,右侧都是0,不会出现1010的混合情况.

1.5 特殊的IP地址

        ● 主机号为0(192.168.0.0)的ip就是网络号,局域网里不应该存在某个主机号为1的主机.

        ● 主机号为全1(192.168..0.255)为广播地址,在不知道目标ip是什么时,靠广播功能去探测.

往广播地址上发送udp数据报,该数据报会被转发给整个局域网的所有主机.

        ● 环回ip(127.*),对应特殊的虚拟网卡,通过虚拟网卡传输数据属于纯内存操作,比普通ip传输数据的速度要更快.

        ● 主机号为1(192.168.0.1) 大部分情况下一般作为"网关ip",并不强制约定.网关是局域网的出入口.

注:Tcp不支持广播.


2. 路径规划

      我们做旅游攻略的时候,我们从源目的前往旅游地的路线肯定不止一条,那路径规划就是给我们指明具体应该走哪一条路. 网络环境下是很复杂的,我们没办法把整个网络环境记录在某一个路由器下,路由器只能记录邻居的信息(通过路由表整个数据结构),转发数据的过程是渐进式的,类似于问路的过程,比如你去到一个陌生的地方,一般会找附近的人问路,附近的人不一定知道你的目的地究竟在哪里(该路由器的路由表中没有目的ip),但是会指引你一条他们认为更接近目的地的路径(相当于路由器的指出的默认路径-->在路由表的"下一跳表项"),会将你指向更上级的路由器(路由表的ip会更多,匹配到目的ip的几率会更大),就这样逐渐问路,然后找到目的ip主机.

注:此外还有诸多细节,比如路由表如何匹配?路由表如何生成?这里还涉及很多复杂的生成算法,我就不进行拓展学习了.


3. IP协议报文格式

在网络层,IP协议会完成分包和组包的功能(如果承载数据长度超过数据链路层数据帧的最大载荷长度(MTU),就会在IP层分包,使分出来的数据长度都能在MTU之内).

3.1 分包

        一个大的IP数据报拆分成多个小的数据报之后,对应的16位标识这个字段值都是一样的, IP虽然能拆包,但是传输的UDP最大长度也是64k,拆分出来的IP数据报只有一份UDP首部,该首部UDP长度还是只有2个字节.

3.2 组包

        多个小的ip数据报通过自己的13位片偏移来确定它们之间的先后顺序是什么样的,然后用来组包.而3位标志位,1位是不用,有1位表示是否分包了,最后1位表示当前包是否是最后一个子包(结束组包的标记).


总结完毕~撒花~

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

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

相关文章

mfc读取obj格式文件初步

3dmax做一个box; 导出为cube1.obj; 记事本打开看一下该obj文件; # 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware # File Created: 10.06.2023 23:16:04mtllib cube1.mtl# # object Box001 #v -41.2323 0.0000 31.8849 v -4…

chatgpt赋能python:Python如何反向排序

Python如何反向排序 在Python中,排序是一项常见的任务。通常情况下,我们想对一组数据按照升序进行排序。但有时候,我们需要对这些数据进行反向排序,也就是按照降序进行排序。那么,Python该如何实现反向排序呢&#xf…

chatgpt赋能python:Python如何取出int内的个位数

Python如何取出int内的个位数 Python已经成为全球范围内最受欢迎的编程语言之一,它具有简单易学,可读性高和可扩展性等特点,因此它被广泛应用于数据科学、人工智能、网络编程、物联网和Web开发等领域。在Python编程中,有时需要从…

第七十天学习记录:高等数学:微分(宋浩板书)

微分的定义 基本微分公式与法则 复合函数的微分 微分的几何意义 微分在近似计算中应用 sin(xy) sin(x)cos(y) cos(x)sin(y)可以用三角形的几何图形来进行证明。 假设在一个单位圆上,点A(x,y)的坐标为(x,y),点B(x’, y’)的坐标为(x’, y’)。则以两点…

44--Django-项目实战-全栈开发-基于django+drf+vue+elementUI企业级项目开发流程-支付宝二次封装、支付成功页面以及后台设计

一、支付宝支付介绍 需求:购买课程,付款 现在主流支付有支付宝支付、微信支持、银联支付 申请使用支付宝支付,需要有商户号(用户把钱付款到你的商户号中) 收手续费商户号要申请,需要有公司的营业执照(不需要营业执照也可以申请–》笔记)我们开发,需要商户号,公钥,…

Spring的数据访问哲学

目录 设计思路 了解Spring的数据访问异常体系 数据访问模板化 设计思路 Spring的目标之一就是允许我们在开发应用程序时,能够遵循面向对象(OO)原则中的“针对接口编程”Spring对数据访问的支持也不例外像很多应用程序一样,Spittr应用需要从某种类型的…

chatgpt赋能python:Python中使用Numpy获取数组元素的方法

Python中使用Numpy获取数组元素的方法 作为一种高级数据处理和科学计算库,numpy在python中被广泛使用。对于从事科研数据处理工作的工程师和研究人员来说,numpy已经成为必须要掌握的工具之一。 本文将讨论如何在Python中使用Numpy获取数组元素。我们将…

理解分布式锁的实现过程

背景:分布式锁在后端开发者会用到,它有哪些特点呢? 在分布式系统中,一个应用部署在多台机器当中,在某些场景下, 为了保证数据一致性,要求在同一时刻,同一任务只在一个节点上运行&am…

【计算机网络复习】第七章 物理层

物理层的位置和基本功能 u 网络体系结构的最底层,实现真正的数据传输 u 将二进制数据编码或调制成信号,发送到传输介质(传输媒体); u 从传输介质接收信号,转换成二进制数据 物理层的主要功能 u 规定了与传输介质的接口的特…

chatgpt赋能python:判断Python中的字符类型

判断Python中的字符类型 在Python编程中,有时我们需要判断一个字符的类型。Python提供了几种方法来判断字符类型。本文将介绍这些方法并提供示例代码。 1. 使用内置函数ord() ord()函数可以返回一个字符的Unicode编码。使用这个方法我们可以判断一个字符是否是数…

【LGR-142-Div.4】洛谷入门赛 #13 考后分析与题解

洛谷入门赛 #Round 13 比赛分析与总结T1 魔方魔方题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示数据规模与约定 分析AC代码注意 T2 教学楼教学楼题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示样例…

尚硅谷甄选--更新中

文章目录 搭建后台管理系统模板项目初始化2.1.1环境准备2.1.2初始化项目2.2项目配置一、eslint配置1.1vue3环境代码校验插件1.2修改.eslintrc.cjs配置文件1.3.eslintignore忽略文件1.4运行脚本 二、配置**prettier**2.1安装依赖包2.2.prettierrc.json添加规则2.3.prettierignor…

Shell编程条件语句(if、case)

目录 一、Shell条件语句 1.条件表达式测试 2.文件测试 3.整数值比较 4.字符串比较 5.逻辑测试 二、if 条件语句(串行执行) (1)单分支结构 (2)双分支结构 (3)多分支结构 三…

C语言之数据在内存中的存储习题讲解

上个博客我们讲到了整型家族,对于整型家族来说有有符号和无符号之分 short signed short unsigned short int signed int unsigned int char在VS环境上其实是signed char unsigned char 对于有符号的char来说,把二进制位序列中的最高位当成符号位 对于无符号的char来…

【计算机组成原理与体系结构】控制器

目录 一、CPU的功能与基本结构 二、指令周期的数据流 三、数据通路 四、硬布线控制器 五、微程序控制器 六、微指令 一、CPU的功能与基本结构 运算器基本结构 控制器基本结构 CPU的基本结构 二、指令周期的数据流 取址周期 间址周期 中断周期 指令周期流程 三、数据通路 …

微信云开发

微信云数据库 快速开始:小程序/小游戏 | 微信开放文档 (qq.com) 首先微信云开发需要一个真实小程序的 AppID,而不能使用测试号。 然后点击这个开通云开发 云的环境大概是这样的 首先我们要初始化 否则会像这样,报错 写在app.js的 onLaunc…

LearnOpenGL-高级OpenGL-11.抗锯齿

本人初学者,文中定有代码、术语等错误,欢迎指正 文章目录 抗锯齿多重采样锯齿产生原因多重采样方式 OpenGL的MSAA例子:提示GLFW离屏MSAA例子1:多重采样帧缓冲传送到屏幕上例子2:采样多重采样帧缓冲的纹理缓冲与后期效果…

【华为OD统一考试B卷 | 100分】太阳能板最大面积(C++ Java JavaScript Python)

题目描述 给航天器一侧加装长方形或正方形的太阳能板(图中的红色斜线区域),需要先安装两个支柱(图中的黑色竖条),再在支柱的中间部分固定太阳能板。 但航天器不同位置的支柱长度不同,太阳能板的安装面积受限于最短一侧的那根支柱长度。如图: 现提供一组整形数组的支柱高…

chatgpt赋能python:如何升级你的Python到最新版本

如何升级你的Python到最新版本 Python作为一种强大的编程语言,拥有广泛的用途,从网站开发到数据科学,都可以使用它来实现。然而,Python不断更新,每个新版本都带来了新的功能和改进,因此升级Python到最新版…

二叉树概念(二)

平衡二叉树 AVL树(Adelson-Velsky 和 Landis) 左子树和右子树的高度之差的绝对值小于等于1 C++ 中,可以直接使用 std::set 类作为平衡二叉树;Java 中,可以直接使用 TreeSet。在 Python 中,没有内置的库可以用来模拟平衡二叉树。 力扣 红黑树 (Red-Black Tree) 是一种二…