IP协议相关特性

news2024/11/15 11:20:03

日升时奋斗,日落时自省 

目录

1、地址管理

1.1、子网掩码

2、路由选择

针对网络层的IP协议理解

TCP/IP协议栈==TCP+IP

此处详细解析IPv4协议(v4版本)

 4位版本:此处的取值只有两个v4 ,v6

4位首部长度 :描述了IP报头多长(IP报头是变长的)报头中有一个选项部分,是变长的,是可有可无的,选项的长度会影响首部长度,此处的单位也是4字节

8位服务类型(TOS) : 8位大小,实际上只有4位有效,这4位中只有1位可以是1,其他的都是0.4位就表示IP协议的四种形态/四种工作模式;

四种形态:最小延时,最大吞吐量,最高可靠性,最小成本

针对以上四种形态实际开发中就可以根据需要,来切换IP的模式,达到最优效果

对此处的形态理解:

举个例子:类似于动作游戏,打斗中切换不同的形态,攻击形态、速度形态、防御形态

16位总长度(字节数):描述了一个IP数据包的长度(头+载荷)

这个长度减去前面的IP报头长度,剩下的就是载荷长度,一个完整的TCP/UDP数据报长度,16位总长度,是否意味着一个IP数据报,最大只能支持64KB,但这就是一个限制,但是IP自身就支持对包的拆分和组装(接收来的数据总不能都是下于64KB)

以下也是分包的原因???

一个IP数据报携带的数据载荷太长了,超过64KB,就会在网络层针对数据进行拆分,把一个数据拆成多个IP数据报,再分别发送,然后接收方,重新拼接

例如:

发送方:把200KB的数据报,交给传输层(封装),传输层交给网络层(封装),网络层就把这个200KB的数据拆包(比如拆成两份)64KB+64KB+64KB+8KB

分包为四份后交给数据链路层,由以太网分装成四个个数据帧

接收方:数据链路层,针对四个数据帧进行分用,得到四个IP数据报,交给网络层,网络层针对这四个IP数据报进行解析,把里面的载荷拼成一个,向后进行以后的操作

此处说是64kb ,实际上,IP协议包不一定就按照64kb为单位进行拆分,实际的单位往往更小(取决数据链路层的情况)

16位标识:同一数据拆分成的多个包标识是一样的

3位标志:结束标志

13位片偏移:标识了多个包的先后顺序

8位生存时间(TTL):一个数据报在网络上能够传输的最大时间,这个时间的单位不是“秒”,而是“次数”,一个数据报构造出来,会有一个初始的TTL数值(比如32或者64,或者128...)这个报每次经过一个路由器转发,TTL-1(生存时间不如说是生存次数)

如果一直减到0了,还没有到达目标,此时就认为这个包永远也到不了了,就可以丢弃了。

8位协议:描述了当前载荷部分内容是属于那个协议(例如:TCP/UDP)

16位首部检验和:此处只需要针对首部进行校验,因为其余层面也有校验载荷部分(TCP/UDP数据报)

32位源IP地址这个是IP协议中,最重要的部分,此处地址是32位的整数,但是我们看见的IP地址是一串数字 此处随便举一个例子(不一定存在):222.111.123.108;

使用三个点把32位的4个字节的数字给分割开,分成4个部分,每个部分分别使用0-255十进制整数表示

 地址,期望每个设备都不相同,但是32位数字,只能表示42亿9千万数字,这个数字表示了全世界所有的上网设备(智能手机+PC+服务器等等)

但是联想42亿数字相较于世界人口都比较小,上网设备数量更甚,那IP地址肯定是不够用的。

IP地址不够用有以下三种方法:

(1)动态分配IP地址.此时就可以剩下一批ip地址了(因为不是所有设备都在使用,所以一批一批轮换)这个方案没有从根本上增加IP地址,只是提高了利用率

注:此方法有一个弊端,在时间发展下,上网设备数量增长,根本上不能解决

(2)NAT网络地址转换,本质是使用一个IP代表一批设备也能提高利用率,使用端口号区分

网络也有分别,所以NAT就针对IP地址分为两类

<1>内网IP(私有IP)  10.0.*开头 或者 172.16.* -172.31.* 或者192.168.*

<2>外网IP(公网IP) 除以上IP其他的是公网IP

NAT要求,公网IP必须是唯一的,私网IP可以在不同的局域网中重复出现

内网IP只要在局域网内部不重复即可,不同局域网中则是允许重复的

私网访问公网设备,需要NAT对应NAT设备(路由器),把IP地址进行映射,从而完成网络访问,反之,公网的设备,无法直接访问私网的设备的,私网的设备,也无法直接相互访问

这里能够看到自己电脑的IP地址是,我们自己的电脑都是私有IP地址

想查看私有IP地址 使用win + r 打开运行框 输入cmd  打开命令行输入 ipconfig 

 局域网内部的私有IP

这些接入与运营商路由器的电脑,去访问 外部服务器都会先将自己的电脑的IP转换成路由器的外网IP(图解)

 每个私网电脑想要访问运营商服务器都需要经过运营商路由器转发个服务器,服务器看到的源IP1就都一样。

试问:如果多台电脑访问,服务器看到的源IP都是一样的了,那怎么知道返回数据的是给谁的??
答:服务器的响应会先给路由器,路由器根据这些电脑不同的端口号来区分,决定发给哪个设备(传输层的端口号的端口)

可能会担心的自己的IP被发现然后被攻击(一般是不会的,因为价值不高)

还有就是服务器拿到的只是路由器的IP不能拿到电脑的内网IP如果我电脑不主动和服务器联系,服务器也就不知道我的端口了从而就无法主动找到自己(就是一般不要点击陌生的网站或者二维码)

NAT机制能够有效的解决IP不够用的问题(副作用:网络环境更加复杂)

(3)IPv6直接解决根本问题

IPv6相比IPv4更大(不兼容),IPv6为16字节表示IP地址128位,16字节表示的地址的个数,是比4字节表示的个数,大的4次方

一个4字节是42亿 16个字节相当于是 4字节*4字节*4字节*4字节 =42亿*42亿*42亿*42亿数字相当大,就够用

1、地址管理

网络号:标识网段 ,保证相互连接的两个网段具有不同的表示

主机号:标识主机,同一网段内,主机之间具有相同的网络号

把一个IP地址,分成了两个部分,一个叫做网络号,一个叫做主机号

举个例子:192.168.1.12 一个常见的设定,网络号是192.168.1 主机号是 12

一个典型的局域网环境

WAN口连接运营商设备,LAN口连接有线终端 (针对路由器后面的接口)

1.1、子网掩码

一个IP地址中那部分是网络号,那部分是主机号,如何进行分界??

此处引入一个单独的概念:子网掩码

格式:

子网掩码格式和IP地址一样,也是一个32位的二进制数,其中左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目等于主机为的长度

此时,IP地址组成为:网络号+子网号+主机号,网络号和子网号统一为网络标识

网络号怎么计算???

IP地址子网掩码进行“按位与”操作,得到的结果就是网络号

子网掩码二进制按位取反,再与IP地址位与计算,得到的就是主机号

查看子网掩码的步骤:

win+r 打开了运行窗口:然后输入cmd 后打开命令行 :输入ipconfig/all

 一般的家用网络都是以上子网掩码

<1>将IP地址中的主机地址全部设为0,成为了网络号,代表这个局域网

<2>将IP地址中的主机地址全部设为1,变为了广播地址,用于给同一个链路中相互连接的所有主机发送数据

<3>127.*的IP地址用于本机环回测试,通常是127.0.0.1(测试程序是否能正常工作)

192.168.0.2 主机号为 2  

2、路由选择

路由选择就是规划路径,正所谓条条大路通罗马,我们也会尽可能的选择比较好走的路,网络环境非常复杂,任何一个节点(路由器)都是无法感知到网络环境的全貌的一个路由器最多只能到相邻的节点进行一个比较长的路径的转发

这里只是简单解析路由选择,基本的走法(并不详细)

核心思路:

每个路由器都会保存一定的周围设备的信息(路由表),每次有一个IP数据报经过路由器,就需要匹配路由器,看看接下来回怎么走;如果路由表上有匹配的项(该路由器认识路其实就是有衔接的路径)按照要求直接走,如果没有匹配的项(路由器不认识路也就是没有可以依附的节点),但还是会提供一个默认路径,大体方向是不会错的,继续一问一走

IP是有生存时间的(TTL) ,路由器问以一次,生命周期的次数-1也就是TTL-1 如果减到0了,还没送往目的地,说明这个包就永远也到不了,找不到也就意味着放弃

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

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

相关文章

【WPF】WindowChrome 自定义窗口完美实现

WindowChrome 自定义窗口完美实现简介效果图自定义最小化、最大化、关闭按钮布局实现结语简介 Microsoft官网关于 WindowChome 的介绍 截取Microsoft文章的一段话&#xff1a;   若要在保留其标准功能时自定义窗口&#xff0c;可以使用该 WindowChrome 类。 该 WindowChrome…

多元回归分析 | CNN-BiLSTM卷积双向长短期记忆神经网络多输入单输出预测(Matlab完整程序)

多元回归分析 | CNN-BiLSTM卷积双向长短期记忆神经网络多输入单输出预测(Matlab完整程序) 目录 多元回归分析 | CNN-BiLSTM卷积双向长短期记忆神经网络多输入单输出预测(Matlab完整程序)预测结果评价指标基本介绍程序设计参考资料预测结果 评价指标 训练结束: 已完成最大轮…

新建一个完整的react项目和完善初始项目

一&#xff1a;新建一个完整的react项目 1.环境准备 目前我的环境是 node&#xff1a;16.17.1 npm&#xff1a; 8.15.0 查看环境&#xff1a;1)&#xff1a;打开命令提示符工具&#xff0c;利用node -v和npm -v 查看一下自己的环境&#xff0c;如果觉得重新卸载、安装node比较…

用记事本实现“HelloWorld”输出

一、在任意文件夹中创建一个新的文本文档文件并写入以下代码 public class Hello{public static void main (String[] args){System.out.print("Hello,World!");} } 二、修改文件名称及文件类型为 Hello.java 特别注意&#xff1a;文件命名必须与代码中类的名称相同…

为什么伟大的产品只专注做一件事

uber 不允许你预订出租车。亚马逊一开始只是卖书。谷歌只是一个搜索引擎。麦当劳没有餐具。不知为什么&#xff0c;我们仍然相信一个产品要想成功&#xff0c;它必须做很多事情。这通常发生在两种情况下&#xff1a;当新产品试图让市场相信它们是值得的&#xff0c;或者当公司提…

儿童蜡笔出口美国CPC认证CPSIA+ASTM963测试

蜡笔是将颜料掺在蜡里制成的笔&#xff0c;可有数十种颜色&#xff0c;画画用。蜡笔没有渗透性&#xff0c;是靠附着力固定在画面上&#xff0c;不适宜用过于光滑的纸、板&#xff0c;亦不能通过色彩的反复叠加求得复合色。它是儿童学习色彩画的理想工具&#xff0c;一些画家用…

【Spark分布式内存计算框架——Spark SQL】5. DataFrame(下)

3.3 Row DataFrame中每条数据封装在Row中&#xff0c;Row表示每行数据&#xff0c;具体哪些字段位置&#xff0c;获取DataFrame中第一条数据。 如何构建Row对象&#xff1a;要么是传递value&#xff0c;要么传递Seq&#xff0c;官方实例代码&#xff1a; import org.apache.…

百分点科技宣布接入百度文心一言能力

2月16日&#xff0c; 百分点科技宣布成为百度文心一言&#xff08;英文名&#xff1a;ERNIE Bot&#xff09;首批生态合作伙伴。后续&#xff0c;百分点科技将全面体验并接入文心一言的能力。百分点科技专注于数据科学理论和技术的创新实践&#xff0c;长期坚持基础技术和行业应…

初始QML

Qt Quick的介绍 &#xff1a; Qt Quick是QML的标准类型和功能库。它包括视觉类型&#xff0c;交互类型&#xff0c;动画&#xff0c;模型和视图&#xff0c;粒子效果和着色器效果。QML 应用程序开发人员可以通过单个导入语句访问所有这些功能&#xff0c;简单来说Qt Quick是一…

使用 Hashnode API、Typescript 和 GraphQL 将博客文章添加到您的 React 站点

在本文中&#xff0c;我们将&#xff1a;使用 Next.js 引导一个 React.js Typescript 项目。设置 Apollo GraphQL 客户端并将其集成到我们的项目中。设置 GraphQL Codegen 以生成我们可以在整个应用程序中使用的类型、类型安全查询和自定义挂钩。创建一个索引页面&#xff0c;其…

Failed at the node-sass@4.14.1 postinstall script

vue项目启动&#xff0c;安装node14.18.0版本&#xff0c;构建时报错&#xff1a; Failed at the node-sass4.14.1 postinstall script 其实在构建过程中&#xff0c;还出现了其他组件的各种报错&#xff0c;最后反思了一下&#xff0c;觉得是nodeJs的版本问题&#xff0c;最…

BIM技巧 | Revit中如何给房间填充颜色?就5步

大家在Revit平面创建好房间后&#xff0c;有没有觉得各房间因为没有着色而区分不明显、视觉效果一般呢&#xff1f; 一、今天就教给大家如何给房间填充上颜色。 01 第一步 首先&#xff0c;将各个房间创建好&#xff1b; 02 第二步 在【建筑】-【房间和面积】单击下拉菜单…

深入理解vue2.x中Object.defineproperty()和vue3.x中Proxy

前言 vue2.x中数据的双向绑定主要通过Object.defineproperty()方法实现&#xff0c;data中的数据改变通过Object.defineProperty()对属性设置set属性&#xff0c;获取通过get属性&#xff0c;Object.defineProperty的作用就是劫持一个对象的属性,通常我们对属性的getter和sett…

魔兽世界私服架设教程——如何搭建魔兽世界私服

TrinityCore是一个魔兽世界服务端模拟器&#xff0c;我们可以通过TrinityCore来学习大型网络游戏服务端的编写&#xff0c;从中汲取营养来编写我们自己的游戏。一、前期准备工作CPU需要支持SSE2指令集Boost版本大于等于1.59.0MySQL数据库版本大于等于5.1.0OpenSSL版本为1.0.xCM…

基于机器学习LSTM的古代汉语切分标注算法及语料库研究 完整代码+数据+论文

完整代码&#xff1a;https://download.csdn.net/download/qq_38735017/87382302摘 要近年来&#xff0c;深度学习的浪潮渗透在科研和生活领域的方方面面&#xff0c;本文主要研究深度学习在自然语言处理&#xff0c;尤其是古汉语自然语言处理方面的应用。本文旨在利用计算机帮…

C#中GDI+的矩形功能扩展

原文出处&#xff1a;https://haigear.blog.csdn.net/article/details/129060020 GDI发展到GDI绘制函数中的参数往往都有矩形这个参数&#xff08;除绘制直线和路径&#xff09;&#xff0c;所以我们用好了矩形绘图就容易多了。 一、中心定位绘制图形 但当我们绘制一个图形时…

Towards Adversarial Attack on Vision-Language Pre-training Models

摘要虽然视觉-语言预训练模型(VLP)在各种视觉-语言(VL)任务上表现出革命性的改进&#xff0c;但关于其对抗鲁棒性的研究在很大程度上仍未被探索。本文研究了常用VLP模型和VL任务的对抗性攻击。首先&#xff0c;我们分析了不同设置下对抗性攻击的性能。通过研究不同扰动对象和攻…

HHDESK图片管理——批量重命名及递归搜索

HHDESK作为一款国产桌面软件&#xff0c;考虑到国人的操作及阅读习惯。因此我们开发了一些有意义的新功能&#xff0c;比如今天要介绍的图片批量重命名及递归搜索功能 1.图片批量重命名功能 网上下载的图片名称大多杂乱无章&#xff0c;一眼望去毫无头绪。 而windows自带的…

第41天|LeetCode198. 打家劫舍、LeetCode213. 打家劫舍II、LeetCode337. 打家劫舍III

1.题目链接&#xff1a;198. 打家劫舍 题目描述&#xff1a; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&a…

Ubuntu中利用aircrack-ng和Wireshark抓空口包

系统&#xff1a;Ubuntu20.04网卡&#xff1a;RTL8188CUS USB网卡工具安装sudo apt-get install aircrack-ngsudo add-apt-repository ppa:wireshark-dev/stable sudo apt update sudo apt install -y wireshark网卡确认网卡是否支持monitor模式&#xff0c;输入iw list命令&am…