IP报文格式、IPv6概述

news2024/11/25 16:39:08

IPv4报文格式

在这里插入图片描述
IPv4报文首部长度至少为20字节(没有可选字段和填充的情况下),下面来逐一介绍首部各个字段的含义

  • Version版本:表示采用哪一种具体的IP协议,对于IPv4来说该字段就填充4以表示,如果是IPv6就填充6
  • IHL首部长度:如果IP首部中出现了可选字段和填充,那么首部的长度是不固定的,需要根据该字段中的数值来表示首部的真实长度
  • TOS区分服务:表明服务质量,通过填充不同的数来改变最低延迟、最大吞吐、最大安全等权值,不过该字段在IPv4中一般都不被使用,原因在于TOS控制增加了太多复杂度难以维护
  • Total Length总长度:表明IP报文的总长度,如果想要得到正文部分的长度,只要将总长度(Total Length)减去首部长度(IHL)即可得到
  • Identification标识:用于分片重组,属于同一IP包的分片标识字段是相同的值,报文接受主机可以凭借该字段对分片进行重组
  • Flags标志:有3比特组成,第1位不使用恒定为0;第2位标识此IP报文是否允许被分片(0允许1拒绝),该位在确定路径MTU时有用;第3位标志IP在第2位为1时才有用,表示是否为最后一个分片(0是1非)
  • Fragment Offset片偏移:接受主机收到属于同一IP包的分片时,需要对其进行按序重组后才能向上交付,片偏移字段中记录了当前正文数据在完整数据正文中的偏移量
  • TTL生存时间:IP报文在网络中是有传输时间限制的,如果在范围之内没有到达目标,这个报文就被路由器丢弃不在转发(每经过一个路由器TTL减1,至0丢弃)
  • Protocol协议:指示上层采用的协议种类,是UDP填17,TCP填6
  • Header CheckSum首部校验和:用于检查报文有没有发生错误,如有则丢弃
  • SA源地址 DA目标地址:发送报文的主机IP和接受报文的主机IP
  • Option可选字段:可以设置安全级别、源路径、路径记录、时间戳等信息(一般不用)
  • Padding填充:如果IP报文具有可选字段,需要将首部长度调整为32的倍数

IPv6(仅作了解)

IPv6必要性
IP v6用以解决IP v4绝对数量不足的问题,一个IPv6的地址为16字节,其能够表示的范围远远大于IPv4。遗憾的是IPv6和IPv4不兼容,从IPv4过渡到IPv6是一项艰巨的任务

IPv6地址结构

IPv6地址以16比特为一组的点分十六进制表示,如FEDC:BA98:7654:3210:FEDC:BA98:7854:3211,与IPv4类似的也分为网络标识和主机标识

IPv6特点

  • IP地址扩大与路由控制表的聚合
  • 性能提升:首部采用固定40字节,无需首部校验码,不需要做分片处理
  • 即插即用:没有DHCP服务器也能自动分配IP地址
  • 安全性更高
  • 多播、Mobile IP成为扩展功能

IPv6报文格式

在这里插入图片描述

  • Version:填充6
  • 通信量类:等价于IP v4的TOS
  • 流标号:用于服务质量控制
  • 有效载荷长度:正文长度(不包括首部,因为首部固定40B)
  • 下一个首部:指示上层协议类型
  • 跳数限制:等价于TTL
  • 源地址目标地址:发送报文的主机IP和接受报文的主机IP

IP分片与重组

由于不同数据链路所支持的最大传输单元MTU不一致,当IP报文长度超过MTU时,需要将一个报文拆分为小于MTU的报文分批次传输,当这些分片到目标主机时被重组(注:分片由路由器完成,但重组必须由目标主机来完成)

在这里插入图片描述
分片的弊端很明显:就是增加了路由器负担和数据包丢包的概率,如果由一个分片丢失,那么整个IP报文全部作废,即使已经收到了其他分片,此时就需要发送端重传(需要可靠传输时),无疑提高了时间成本,因此需要通过一定的算法尽可能的减少分片

路径MTU

路径MTU是指从发送主机到目标主机之间不需要分片时的最大MTU大小(路径中存在的所有数据链路中最小的MTU),如果每一次发送的报文长度小于路径MTU,节点路由器就不需要分片操作,分片操作只会由发送主机进行(减少路由器压力)
**如何确定路径MTU:**通过试探性发送完整数据包给下一跳节点,下一跳节点会返回其所管理的网段的MTU,迭代操作直至发送主机不在收到MTU告知时就可以确定路径MTU
在这里插入图片描述
如果上层采用的是可靠传输TCP,那么通过MTU可以计算出MSS(最大段长度)的值,使得传输层每一次交给网络层的报文长度一定是小于MTU的,这样连发送主机都不用进行分片操作了。
在这里插入图片描述

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

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

相关文章

Android内容观察者(案例:监听数据库+代码+效果图)

目录 1.内容观察者概念 1. 什么是 ContentObserver? 2. 主要方法 3. 使用场景 4. 工作原理 5. 注册和注销 6. 实现步骤 7. 注意事项 2.创建内容观察者 3.注册内容观察者 4.取消注册内容观察者 5.完整的activity代码 6.案例:检测数据库 1)创建一个Android…

HTML(五)列表详解

在HTML中&#xff0c;列表可以分为两种&#xff0c;一种为有序列表。另一种为无序列表 今天就来详细讲解一下这两种列表如何实现&#xff0c;效果如何 1.有序列表 有序列表的标准格式如下&#xff1a; <ol><li>列表项一</li><li>列表项二</li>…

Linux下CMake入门

CMake的基础知识 什么是 CMake CMake 是一个跨平台的构建工具&#xff0c;主要用于管理构建过程。CMake 不直接构建项目&#xff0c;而是生成特定平台上的构建系统&#xff08;如 Unix 下的 Makefile&#xff0c;Windows 下的 Visual Studio 工程&#xff09;&#xff0c;然后…

《OpenCV计算机视觉》—— 人脸检测

文章目录 一、人脸检测流程介绍二、用于人脸检测的关键方法1.加载分类器&#xff08;cv2.CascadeClassifier()&#xff09;2.检测图像中的人脸&#xff08;cv2.CascadeClassifier.detectMultiscale()&#xff09; 三、代码实现 一、人脸检测流程介绍 下面是一张含有多个人脸的…

电子电气架构---软件定义汽车,产业变革

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c;多看一眼都是你的不…

影刀RPA实战:操作Mysql数据库

1.摘要 影刀RPA&#xff08;Robotic Process Automation&#xff09;是一种软件自动化工具&#xff0c;它可以模拟人类用户执行各种重复性任务&#xff0c;其中包括对数据库的操作。 我们可以使用软件自动化指令&#xff0c;通过获取数据库窗口对象来操作数据库&#xff0c;也…

JSP 的 response 和 session 内置对象

文章目录 前言一、response 内置对象 1.重定向网页2.处理 HTTP 文件头3.设置输出缓存二、session 内置对象 1.创建及获取客户会话2.会话中移动指定的绑定对象3.销毁 session 内置对象4.会话超时的管理5. session 对象的应用总结 前言 JSP 的 response 和 session 内置对像&…

linux tar 打包文件去掉文件所在路径

一、准备目录 /root/tmp/images /root/tmp/images2 执行命令打包目录/root/tmp/images 到 /root/tmp/images.tar.gz 再解压到/root/tmp/images2 cd /root/tmp/images && tar -cvzf images.tar.gz * && mv images.tar.gz /root/tmp/ tar -C /root/tmp/image…

ctf.bugku-baby lfi 2

题目来源&#xff1a;baby lfi 2 - Bugku CTF平台 访问页面 翻译解析&#xff1a;百度翻译-您的超级翻译伙伴&#xff08;文本、文档翻译&#xff09; (baidu.com) LFI Warmups- level 2 -本地文件包含&#xff08;Local File Inclusion&#xff0c;简称LFI&#xff09; Hello…

力扣面试150 交错字符串 二维DP

Problem: 97. 交错字符串 &#x1f468;‍&#x1f3eb; 参考题解 class Solution {public boolean isInterleave(String s1, String s2, String s3) {int m s1.length();int n s2.length();if(s3.length() ! m n) return false;boolean[][] dp new boolean[m1][n1];dp[0]…

ZYNQ使用XGPIO驱动外设模块(后半部分)

目录 注意重点&#xff1a; 一、SDK代码开发部分&#xff1a; 显示所需的字符编码&#xff1a; 1.用于显示8x16的字符函数&#xff1a; 2.绘制图片: 3.清楚给定两个坐标之间的显示&#xff1a; 4.显示16*32的阿拉伯数字字符&#xff1a; 5.显示16*32的整型数字&#xff…

Excel:vlookup函数实现查找

1.要查找宋江的英语&#xff0c;把鼠标放在对应单元格然后开始编辑 2.选中所选区域&#xff0c;点击F4锁定区域&#xff0c;不然下拉填充的时候会变VLOOKUP 在查找时有严格要求&#xff0c;查找值必须在所选区域的第一列&#xff0c;因此如果你的查找值不在第一列&#xff0c;可…

TGRS 2024 面向雾天遥感图像的定向目标检测算法

TGRS 2024 | 面向雾天遥感图像的定向目标检测算法 论文信息 摘要 目前&#xff0c;大量工作集中在航空目标检测上&#xff0c;并取得了良好的结果。尽管这些方法在传统数据集上取得了有希望的结果&#xff0c;但在恶劣天气条件下捕获的低质量图像中定位对象仍然具有挑战性。目…

RabbitMQ 入门(四)SpringAMQP五种消息类型

一、WorkQueue(工作消息队列) Work queues&#xff0c;也被称为&#xff08;Task queues&#xff09;&#xff0c;任务模型。简单来说就是让多个消费者绑定到一个队列&#xff0c;共同消费队列中的消息。 当消息处理比较耗时的时候&#xff0c;可能生产消息的速度会远远大于…

【亲测可行】ubuntu下载安装c++版opencv4.7.0和4.5.0 安装opencv4.5.0报错及解决方法

文章目录 &#x1f315;系统配置&#x1f315;打开终端&#xff0c;退出anacoda激活环境(如果有的话)&#x1f315;安装依赖&#x1f319;安装g, cmake, make, wget, unzip&#xff0c;若已安装&#xff0c;此步跳过&#x1f319;安装opencv依赖的库&#x1f319;安装可选依赖 …

关于md5强比较和弱比较绕过的实验

在ctf比赛题中我们的md5强弱比较的绕过题型很多&#xff0c;大部分都是结合了PHP来进行一个考核。这一篇文章我将讲解一下最基础的绕过知识。 MD5弱比较 比较的步骤 在进行弱比较时&#xff0c;PHP会按照以下步骤执行&#xff1a; 确定数据类型&#xff1a;检查参与比较的两…

要笑死了java

有一天&#xff0c;Java开发者Jack对他的朋友说&#xff1a;“最近我总感觉自己被逼得喘不过气。” 朋友问&#xff1a;“为什么啊&#xff1f;” Jack叹了口气道&#xff1a;“因为我一直在try里&#xff0c;但从来没有catch到过break&#xff01;” 为什么程序员总是分不清圣…

【Ubuntu】“Linux版PhotoShop”绘图软件的安装和汉化

【Ubuntu】“Linux版PhotoShop”绘图软件的安装和汉化 零、前言 最近换了Linux系统&#xff0c;但是写教程做PPT的时候还是得用到绘图软件&#xff0c;上网一查&#xff0c;总结对比之后发现Krita比较好用&#xff0c;故此讲解一下如何安装和汉化Krita。 壹、安装 安装很简…

spring 如何将mutipartFile转存到本地磁盘

两者的区别和联系 MutipartFile是spring的一部分&#xff0c;File则是java的标准类MutipartFile用于接收web传递的文件&#xff0c;File操作本地系统的文件 MutipartFile 转换File的三种方式 使用MutipartFile 自带的transferTo方法使用java自带的FileOutPutStream流使用java自…

AirServer v7.2.7 破解版 – iPhone屏幕镜像工具

AirServer v7.2.7 破解版 – iPhone屏幕镜像工具可以将你的Mac转变为一个通用的镜像接收器&#xff0c;除了无法接收Miracast外&#xff0c;你可以使用内置的AirPlay或Google Cast基于屏幕投影功能来镜像你的设备屏幕&#xff1b;一次一个或同时投影到AirServer。用户可以从任何…