IP数据报结构详解:从基础到进阶

目录

IP数据报的格式

IP数据报首部的固定部分

IP数据报首部的可变部分

实例分析:数据报的分片

生存时间(TTL)与协议

首部检验和

总结


在网络通信中,IP数据报是至关重要的基本单元。本文将带您深入了解IP数据报的格式及其各个字段的功能。即使您是网络基础小白,也能通过本文掌握IP数据报的核心知识。

IP数据报的格式

IP数据报由首部数据部分组成。首部又分为固定部分可变部分。图4-19展示了IP数据报的完整格式。

从上表中可以看出,IP数据报的首部字段非常关键,它们定义了数据报的各种属性和行为。接下来我们将详细解释每个字段的作用。

IP数据报首部的固定部分

固定部分共20字节,是所有IP数据报必须具有的。下面介绍固定部分各字段的意义:

  1. 版本:占4位,指IP的版本。当前使用广泛的是IPv4。IPv6是下一代互联网协议,虽然有许多改进,但IPv4仍然占据主导地位。
  2. 首部长度:占4位,表示首部长度的单位是32位(4字节)。最常用的长度是20字节,不使用选项时为0101。
  3. 区分服务:占8位,用来获得更好的服务。目前大多数情况下不使用,但在一些对服务质量要求较高的应用中,区分服务字段可以帮助实现流量优先级管理。
  4. 总长度:占16位,表示首部和数据部分的总长度。最大长度为65535字节,这是由于16位字段的最大值为2^16-1。
  5. 标识:占16位,用于标识数据报。在分片传输中,所有分片具有相同的标识值。这有助于接收端将所有分片重新组装成完整的数据报。
  6. 标志:占3位,目前仅2位有意义。MF(More Fragment)表示是否有后续分片,DF(Don't Fragment)表示是否允许分片。
  7. 片偏移:占13位,表示每个分片在原始数据报中的相对位置。以8字节为单位。
  8. 生存时间(TTL) :占8位,防止数据报在网络中无限制地传输。每经过一个路由器减少1,当为0时丢弃。
  9. 协议:占8位,指示数据报携带的数据来自何种协议。如TCP(6)、UDP(17)等。
  10. 首部检验和:占16位,仅检验首部,目的是确保首部在传输中未被损坏。
  11. 源地址:占32位,表示数据报的发送地址。
  12. 目的地址:占32位,表示数据报的接收地址。
IP数据报首部的可变部分

可变部分是选项字段,用于支持排错、测量及安全措施。选项字段长度可变,最长为40字节。IPv6取消了这一部分,使首部长度固定,以提高处理效率。

实例分析:数据报的分片

当数据报长度超过网络所容许的MTU时,需将数据报分片。以下为一个分片的具体例子:

原数据报总长度为3820字节,数据部分为3800字节。为了适应网络的MTU,需要将数据报分片,每个分片的长度不超过1420字节。分片结果如下:

  • 数据报片1:总长度1420字节,片偏移0
  • 数据报片2:总长度1420字节,片偏移175
  • 数据报片3:总长度1020字节,片偏移350

表4-5 IP数据报首部中与分片有关的字段值

数据报片

总长度

标识

MF

DF

片偏移

原始数据报

3820

12345

0

0

0

数据报片1

1420

12345

1

0

0

数据报片2

1420

12345

1

0

175

数据报片3

1020

12345

0

0

350

假设数据报片2经过某个网络时还需再进行分片,则分为数据报片2-1(携带数据800字节)和数据报片2-2(携带数据600字节)。其字段值如下:

  • 数据报片2-1:总长度820字节,标识12345,MF=1,片偏移175
  • 数据报片2-2:总长度620字节,标识12345,MF=0,片偏移275

这样,接收端就能根据标识和片偏移字段正确地将数据报重新组装。

注意:IP 数据报在传送中可能被多次分片,但分片的数据报仅在目的主机才被重装为原来的数据报

生存时间(TTL)与协议

TTL字段的设计初衷是防止数据报在网络中无限制传输。每经过一个路由器,TTL值减1。当TTL值减为0时,数据报被丢弃。这有效避免了因路由错误导致的数据报在网络中兜圈子。

协议字段指示数据报携带的数据来自何种协议。常见的协议及其字段值如下:

例如,如果协议字段值为6,表示数据报携带的是TCP数据。

首部检验和

首部检验和用于校验数据报首部是否在传输中被损坏。其计算方法如下:

  1. 将首部分为若干16位字。
  1. 将检验和字段置零。
  1. 用反码算术运算将所有16位字相加。
  1. 将结果的反码写入检验和字段。

接收端收到数据报后,重新计算首部检验和。若结果为0,表示首部未被损坏,否则丢弃数据报。

总结

本文介绍了IP数据报的格式及各字段的功能。从首部的固定部分到可变部分,再到具体的分片例子,希望您能对IP数据报有一个全面的了解。通过具体实例的分析,相信即使是网络基础小白也能明白IP数据报的基本结构和功能。

如果您有任何问题或建议,请在评论区留言。我们非常重视您的反馈,以便不断优化内容。感谢阅读!

延伸阅读:如果您对IP数据报的更详细技术细节感兴趣,建议参考RFC791文档。


希望这篇简洁明了的文章能帮助您更好地理解IP数据报的结构和功能。请多多分享和点赞,让更多人受益!

图文来源:《计算机网络教程》第六版微课版

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

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

相关文章

Python酷库之旅-第三方库Pandas(041)

目录 一、用法精讲 136、pandas.Series.ne方法 136-1、语法 136-2、参数 136-3、功能 136-4、返回值 136-5、说明 136-6、用法 136-6-1、数据准备 136-6-2、代码示例 136-6-3、结果输出 137、pandas.Series.eq方法 137-1、语法 137-2、参数 137-3、功能 137-4、…

数据结构-C语言-排序(4)

代码位置: test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言: 1.1-排序定义: 排序就是将一组杂乱无章的数据按照一定的规律(升序或降序)组织起来。(注:我们这里的排序采用的都为升序) 1.2-排…

如何借助生成式人工智能引领未来的科技狂潮

如何借助生成式人工智能引领未来的科技狂潮 1. 生成式AI的现状1.1 技术基础1.1.1 深度学习1.1.2 生成对抗网络(GANs)1.1.3 变分自编码器(VAEs) 1.2 主要应用1.2.1 语言模型1.2.2 图像生成1.2.3 音频与视频生成 2. 未来的发展趋势2…

Windows下帆软BI(finebi)单机部署移植(Tomcat)攻略

一、基础环境 操作系统:Windows 10 64bit 帆软BI 版本:V9.0/V10.0 HTTP工具:Tomcat 外置数据库:Oracle 11g 实验内容:将已经部署好的帆软BI从一台电脑移植到另一台电脑 二、前期准备 1、做好外置数据库移植&…

<数据集>苹果腐烂识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:978张 标注数量(xml文件个数):978 标注数量(txt文件个数):978 标注类别数:2 标注类别名称:[fresh_apple, rotten_apple] 序号类别名称图片数框数1fresh_apple520922…

2022 年中高职组“网络安全”赛项-海南省省竞赛任务书-1-B模块-B-4Web渗透测试

前言 本章节我将尝试操作B-4模块的渗透测试,搭建环境很难,还望大家点点赞多多支持! 任务概览 最后4、5、6有一定的难度。 环境要求 kali Linux192.168.41.2Web服务器(假设为PYsystem 2020 模拟平台)192.168.41.7交换…

日常开发记录分享——C#控件ToolTip实现分栏显示内容

文章目录 需求来源实现思路实施请看VCR等等别走,有优化 需求来源 需要在鼠标浮动到指定位置后提示出详细的信息,一开始使用的tooltip实现,但是里面的内容效果并不理想,需要有条理性,于是就想到能不能将展示的东西分列…

代理协议解析:如何根据需求选择HTTP、HTTPS或SOCKS5?

代理IP协议是一种网络代理技术,可以实现隐藏客户端IP地址、加速网站访问、过滤网络内容、访问内网资源等功能。常用的IP代理协议主要有Socks5代理、HTTP代理、HTTPS代理这三种。代理IP协议主要用于分组交换计算机通信网络的互联系统中使用,只负责数据的路…

Linux(CentOS)的“应用商城” —— yum

Linux(CentOS)的“应用商城” —— yum 关于 yum 和软件包Linux 系统(CentOS)的生态yum 相关操作yum 本地配置yum 安装 lrzsz.x86_64 关于 yum 和软件包 首先 yum 是软件下载安装管理的客户端,类似各种手机里的“应用…

面试场景题系列--(1)如果系统的 QPS 突然提升 10 倍该怎么设计?--xunznux

1. 如果系统的 QPS 突然提升 10 倍该怎么设计? 1.1 硬件的扩展微服务的拆分 如果所有的业务包括交易系统、会员信息、库存、商品等等都夹杂在一起,当流量一旦起来之后,单体架构的问题就暴露出来了,机器挂了所有的业务就全部无法…

【机器学习】Jupyter Notebook如何使用之基本步骤和进阶操作

引言 Jupyter Notebook 是一个交互式计算环境,它允许创建包含代码、文本和可视化内容的文档 文章目录 引言一、基本步骤1.1 启动 Jupyter Notebook1.2 使用 Jupyter Notebook 仪表板1.3 在笔记本中工作1.4 常用快捷键1.5 导出和分享笔记本 二、进阶用法2.1 组织笔…

“微软蓝屏”事件,给IT行业带来的宝贵经验和教训

“微软蓝屏”事件是指2024年7月19日发生的一次全球性技术故障,主要涉及微软视窗(Windows)操作系统及其相关应用和服务。 以下是对该事件的详细解析: 一、事件概述 发生时间:2024年7月19日事件影响:全球多个…

暑期c++ 命名空间

今天是暑期第一天开始写c笔记&#xff0c;新起点&#xff0c;新开始加油 我们先来看两串代码 这串代码编译没有问题 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int rand 14; int main(void) {int rand 14;printf("%d\n", rand);return 0; }但是…

鸽哒IM即时通讯安卓+苹果双系统源码20240723(反编译+二次开发版)

功能特点&#xff1a; 1、该软件支持加好友、消息私聊、消息群聊、朋友圈、红包、语音、视频、表情包&#xff0c;定位等。 2、此外&#xff0c;该软件还支持阅后即焚、消息过期自动销毁、支持3DES加密传输、支持端到端传输&#xff0c;保护消息隐私。 3、后台使用的是酷信的…

Java面试八股之详细阐述Spring的DI和IOC

详细阐述Spring的DI和IOC Spring框架的两大核心特性之一就是控制反转&#xff08;Inversion of Control, IoC&#xff09;&#xff0c;另一个密切相关的是依赖注入&#xff08;Dependency Injection, DI&#xff09;。这两个概念是Spring实现松耦合、可测试和可管理软件组件的…

JMeter:BeanShell到JSR223迁移中的注意事项

前言 在之前的文章JMeter&#xff1a;BeanShell向JSR223迁移过程遭遇的java标准库不可用问题-如何切换JDK版本中引用了一段使用BeanShell对入参进行加密的脚本&#xff0c;迁移到JSR223&#xff0c;虽然更换JDK后编译通过&#xff0c;看似也可以执行了&#xff0c;但是其实那段…

强化数字科技基石:深化基础理论研究

加强数字科技基础理论研究并增加对其的资金投入&#xff0c;对于推动科技进步、培养创新人才以及构建具有国际竞争力的科技创新体系都具有深远意义。同时为了加强数字科技基础理论研究并推动产业园的发展&#xff0c;我们可以从以下几个方面进行&#xff1a; 一、加强数字科技…

【vue前端项目实战案例】Vue3仿今日头条App

本文将开发一款仿“今日头条”的新闻App。该案例是基于 Vue3.0 Vue Router webpack TypeScript 等技术栈实现的一款新闻资讯类App&#xff0c;适合有一定Vue框架使用经验的开发者进行学习。 项目源码在文章末尾 1 项目概述 该项目是一款“今日头条”的新闻资讯App&#xf…

P6 优化篇 - 数据折线图可视化步骤

增加新页面, 则需要在 page.json里面增加页面信息 2.添加目录, 和路径 同时也要添加目录了 , 新建目录LineChart , 添加文件LineChart.vue 4.LineChart.vue 直接复制黏贴 <template><view class"container"><!-- 图表显示区域 --><view cla…

如何做校园圈子小程序,需要哪些功能?可打包APP小程序H5,源码交付,支持二开!

独立学校首页 支持每个学校独立首页!每个学校都可以拥有专属首页&#xff0c;打造不同风格的学校首页展示效果 多业务覆盖 可实现校园内外卖、跑腿、超市、药店水果、快餐店等业务全覆盖!所有配送业务平台都可开展 多站点运营 支持多学校多站点运营&#xff0c;各分站管理员可独…