IP 协议的相关特性

1. IP协议定义和特性

  IP(Internet Protocol)协议是互联网中使用的网络协议之一,它的特性包括:

1. 无连接性:IP协议是一种无连接协议,每个数据包都是独立发送和处理的。因此,每个数据包都需要包含完整的源和目的地址信息,以便被正确路由到目的地。
2. 不可靠性:IP协议不提供任何可靠性保证,数据包在传输过程中可能会在网络拥塞、链路故障等情况下丢失或重复,需要应用层自行处理数据的可靠性。
3. 分组交换:IP协议使用分组交换技术,将数据分成若干个固定大小的数据包进行传输,每个数据包都有其独立的路由路径和传输时间。
4. 网络层协议:IP协议在OSI模型中属于网络层,主要负责数据包的寻址和路由选择。
5. IPv4和IPv6:IP协议有两个版本,IPv4和IPv6,其中IPv4是现有网络中广泛使用的版本,而IPv6则是一种新的IP协议版本,主要为了解决IPv4枯竭的地址问题。
6. 头部格式:IP协议的数据包头部包括源地址、目的地址、协议类型、TTL等信息,具体数据包头部格式不同于IPv4和IPv6版本的不同而有所区别。

格式: 

 

4位版本号:指定IP协议的版本,对于IPv4来说,就是4。

4位头部长度:IP头部的长度是多少个32bit,也就是 length * 4 的字节数。4bit表示最大的数字是15,因此IP头部最大长度是60字节。

8位服务类型:3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。 这四者相互冲突,只能选择一个。(这个可以理解成选择一个作为IP协议的特点,类似一些角色的变换形态)

16位总长度:IP数据报整体占多少个字节。

16位标识:唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每 一个片里面的这个id都是相同的。(用于拆包合包时的身份标识,同一个包的标识是一致的)

3位标志字段:第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。 第二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位 表示"更多分片",如果分片了的话,最后一个分片置为1,其他是0。类似于一个结束标记。

13位分片偏移:是分片相对于原始IP报文开始处的偏移。其实就是 在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此, 除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了,这个偏移量越小代表这个包的顺序越前)。

8位生存时间:数据报到达目的地的最大报文跳数。一般是64或者128。每次经过一个路由,TTL就会减一,一直减到0还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环。

8位协议:表示上层协议的类型。

16位头部校验和:使用CRC进行校验,来鉴别头部是否损坏(报文部分的完整性校验已经由传输层协议校验过了,所以不需要再次校验)。

32位源地址和32位目标地址:表示发送端和接收端。

选项字段(不定长,最多40字节):略。

2. IP协议的作用 

 2.1 地址管理

  IP地址本质上是一个32位整数,为了方便,就会把IP表示成点分十进制的方式,那32位整数,能表示多大的范围呢?大概为42亿9千万,这个数字看起来很大,大师其实并不算很大,发展太快了,人人都有手机,总的设备的数量达到百亿级别还是可能,如何解决IP地址不够用,就成了上个世纪90年代非常严峻的问题了。

  2.1.1 动态分配IP地址

  全世界的设备,也不是同一时刻都在上网,更充分的利用现有的IP地址(并没有从根本上解决问题)。

 2.1.2 NAT机制(网络地址映射)

 NAT 机制的工作流-CSDN博客

 2.1.3 IPV6(从根本上解决问题的方案,增加IP地址个数)

  IPv6使用了16个字节表示IP地址。(2^128)但是IPv6的报头结构和IPv4 是不兼容的。引入IPv6就意味着当前网络设备(路由器,就不能支持)就需要更换支持IPv6的设备,那就需要多花钱!!

 2.2 路由选择

  简单来说就是规划出一条路,网路结构太复杂了,每个路由器都无法掌握全局的信息,只能掌握一部分局部信息,此时路由器出来规划出来的线路,只能是一个“较优解”。数据包中包含了“目的IP”字段就是要问路的目标,每个路由器对于网络环境(和他相邻的设备情况)有一定的了解,此时就可以,根据他了解告诉我们下一步往哪个方向走。

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

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

相关文章

米哈游(原神)终面算法原题

恒大正式破产 准确来说,是中国恒大(恒大汽车、恒大物业已于 2024-01-30 复牌)。 恒大破产,注定成为历史的注目焦点。 作为首个宣布破产的房地产企业,恒大的破产规模也创历史新高。 房地产作为曾推动中国三分之一经济增…

AI在线写作软件推荐:5款不可错过的写作工具

现在人工智能(AI)技术已经渗透到了各个领域,包括写作。AI在线写作软件的出现,为我们提供了更加高效、准确的写作工具。在本文中,我将向大家推荐5款功能强大的AI在线写作软件,这些软件可以帮助我们提高写作效…

python nacos-sdk-python 连接 nacos2.x版本,鉴权403解决办法

看nacos-sdk-python 的git项目提交记录,应该是已经解决了nacos2.x权限问题,但为什么还连接不上呢?因为最新代码,居然把以前鉴权代码删除了,具体原因不得而知。 解决办法: 1.把nacos-sdk-python里面params.…

redis 6.x集群搭建

redis6集群搭建 安装文件下载 redis-6.2.6.tar.gz 编译 tar -zxvf redis-6.2.6.tar.gz cd redis-6.2.6/ make MALLOClibc make install PREFIX/opt/soft/redis复制可执行文件 cp /opt/soft/redis/redis-cli /usr/bin/redis-cli cp /opt/soft/redis/redis-server /usr/bi…

小鱼深度产品测评之:阿里云自研PolarDBMySQL 版 Serverless,真正达到100%兼容 MySQL,分析性能达到开源数据400倍。

阿里云自研PolarDBMySQL 版 Serverless测评 一、 开箱二、 试用教程三、 使用感受3.1 查看资源包信息3.2 列表3.2.1 列表展示3.2.2 集群名称 3.3创建账号3.4 实例配置3.5 Serverless弹性压测3.5.1 遇到问题3.5.2 实操 四、 总结 一、 开箱 又到了体验新产品的时候了。 话不多说…

基于Python的招聘网站爬虫及可视化的设计与实现

摘要:现在,随着互联网网络的飞速发展,人们获取信息的最重要来源也由报纸、电视转变为了互联网。互联网的广泛应用使网络的数据量呈指数增长,让人们得到了更新、更完整的海量信息的同时,也使得人们在提取自己最想要的信…

tcpdump在手机上的使用

首先手机得root才可以,主要分析手机与手机的通信协议 我使用的是一加9pro, root方法参考一加全能盒子、一加全能工具箱官方网站——大侠阿木 (daxiaamu.com)https://optool.daxiaamu.com/index.php tcpdump,要安装在/data/local/tmp下要arm6…

JProfiler for Mac/win:深度探索Java性能的终极工具

随着Java应用的日益普及,性能优化成为开发人员的重要任务。在众多性能分析工具中,JProfiler以其强大的功能和直观的界面脱颖而出。本文将深入探讨JProfiler的优势,以及如何利用它来提升Java应用的性能。 一、JProfiler的核心优势 全面性能监…

备战蓝桥杯---搜索(DFS基础2)

下面我主要介绍一下深搜的简单应用吧: 下面是分析: 我们对每行遍历一下,跟求排列差不多。在判断条件上,我们可以放一个存列的数组,对于对角线的判断,我们可以发现在主对角线上,列数-dep为恒定值…

Swift 入门之自定义类型的模式匹配(Pattern Matching)

概览 小伙伴们都知道 Swift 是一门简洁、类型安全、极富表现力以及“性感迷人”的编程语言。 和大多数语言一样,在 Swift 中也有一些隐藏着的、不为人知的宝藏特性。利用它们我们可以极大增加撸码的愉悦和成就感。 其中,模式匹配(Pattern …

Linux---动静态库

动静态库的相关概念 静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的…

2024 年 11 款值得收藏的 iPhone 数据恢复软件和应用

数据丢失是任何人都无法承受的,因为它对每个人都至关重要。但是数据丢失的原因有很多,一些常见的原因是数据意外删除、设备被盗、iOS 越狱、硬件损坏、病毒感染等。我们列出了 iOS 的顶级恢复工具,其中将帮助您方便地恢复数据。 这是 11 款最…

k8s之安装部署及kuboard发布应用

目录 环境准备 系统规划 配置免密 将桥接的IPv4流量传递到iptables的链 系统基础配置 安装docker 安装docker及基础依赖 配置docker的仓库下载地址 部署k8s 添加阿里云的k8s源 安装kubeadm,kubelet和kubectl 初始化masteer节点 部署node节点 部署flanne…

docker相关问题解决(file exists、not a directory

背景 以下环境为wsl file exists 缓存没删干净 docker-compose down -v not a directory flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? 明明我确定报错指示的位置就是文件而不是文件夹...相当神奇的错误 …

MyBatis-Plus的saveBatch批量插入为何效率很低耗时长详解及解决方案

MySQL数据库 针对MySQL数据库saveBatch批量插入效率比较低,是比较好解决的,一般都是由于数据库连接url上没有配置批量操作的属性,只需要在url上加上如下属性即可: rewriteBatchedStatementstruejdbc:mysql://数据库地址/数据库名…

【C++初阶】--入门基础(二)

目录 一.C输出与输入 二.缺省参数 1.概念 2.缺省参数分类 (1) 全缺省参数 (2)半缺省参数 三.函数重载 1.概念 2.C支持函数重载的原理--名字修饰 四.引用 1.概念 2.语法 3.引用的特性 (1)引用在定义时必须初始化 (2)引用时不能改变指向 (3)一个变量…

java—vector文档与集合框架

一.构造器 Constructor and DescriptionVector() 构造一个空向量&#xff0c;使其内部数据数组的大小为 10 &#xff0c;标准容量增量为零。 Vector(Collection<? extends E> c) 构造一个包含指定集合元素的向量&#xff0c;按照集合的迭代器返回的顺序。 Vector(int in…

“挖金矿”系列:Python的标准库的快速调用

Python的标准库包含了众多功能强大的模块&#xff0c;以下是一些常用模块及其主要功能&#xff1a; os&#xff1a;提供了与操作系统交互的各种功能&#xff0c;如文件和目录操作&#xff08;创建、删除、重命名等&#xff09;、环境变量读取、进程管理等。 示例&#xff1a; …

《Python基础教程》05 算术运算符

05 算术运算符 《Python基础教程》05 算术运算符 算术运算符 在Python中&#xff0c;使用以下符号进行算术运算&#xff1a; &#xff1a;加法-&#xff1a;减法*&#xff1a;乘法/&#xff1a;除法&#xff0c;得到的结果是一个小数%&#xff1a;取余&#xff0c;得到的是…

安装Debian 11 留档

在清华、中科大、山大 163等镜像里&#xff0c;竟然那没有找到debian11的安装盘&#xff0c;只有10或者只2&#xff0c;真奇怪&#xff0c;后来是在csdn发现有人推荐了华为源&#xff0c;才找到下载的地方。 https://repo.huaweicloud.com/debian-cd/11.0.0/amd64/iso-cd/ 我…