【计算机网络笔记】Internet网络的网络层——IP协议之IP数据报的结构

系列文章目录

什么是计算机网络?
什么是网络协议?
计算机网络的结构
数据交换之电路交换
数据交换之报文交换和分组交换
分组交换 vs 电路交换
计算机网络性能(1)——速率、带宽、延迟
计算机网络性能(2)——时延带宽积、丢包率、吞吐量/率
计算机网络体系结构概念
OSI参考模型基本概念
OSI参考模型中非端-端层(物理层、数据链路层、网络层)功能介绍
OSI参考模型中端-端层(传输层、会话层、表示层、应用层)功能介绍
TCP/IP参考模型基本概念,包括五层参考模型
网络应用的体系结构
网络应用进程通信
网络应用对传输服务的需求
Web应用之HTTP协议(涉及HTTP连接类型和HTTP消息格式)
Cookie技术
Web缓存/代理服务器技术
传输层服务概述、传输层 vs. 网络层
传输层——多路复用和多路分用
传输层——UDP简介
传输层——可靠数据传输原理之Rdt协议
传输层——可靠数据传输之流水线机制与滑动窗口协议
传输层——TCP特点与段结构
传输层——TCP的可靠数据传输
TCP连接管理(图解三次握手和四次挥手)
传输层——拥塞控制原理与解决方法
TCP的拥塞控制机制
网络层服务与核心功能
网络层服务模型——虚电路网络
网络层服务模型——数据报网络


  • 系列文章目录
  • Internet网络的网络层
  • IP协议
    • IP数据报(分组)结构


Internet网络的网络层

先来概括性地来看一些Internet网络层的主要内容:

Internet网络是一个数据报网络,它实现的主要功能是路由转发。主机或路由器这些网络设备根据路由协议或算法进行路径的选择,然后将这些路径信息存储在转发表(路由表),这个表就供IP协议去处理和转发分组。在处理的过程中难免会出现一些差错,这个时候,就涉及到把一些差错信息传输给一些路由器或主机,这时就需要另外一个非常重要的协议,即ICMP协议,它主要用于伴随IP协议的运行,提供一些差错报告或在路由器、主机之间提供一些“信令”信息的传输。所以ICMP协议从一定程度上可以看作是IP协议的伴随协议。也就是说一般实现IP协议的同时也要实现ICMP协议。

在这里插入图片描述


IP协议

IP数据报(分组)结构

IP数据报也称为IP分组。从结构上来说,主要包括两部分。分别是首部/头部数据部分。数据是IP协议封装的上层的或其它层协议的数据分组,比如说TCP段。

![

将IP数据报展开来看,头部包括很多域或者说字段。作为头部,又可以分为两部分,一部分是固定部分,另一部分是可变部分。固定部分就是说这部分在所有IP数据报中的大小都是固定的。这个固定的部分总共是20个字节(一行32位即4字节,固定部分占了5行,就是5*4=20字节)。可变部分的长度是不确定的。可以是0,个,也可以是多个。

在这里插入图片描述

下面来逐一看看一个IP数据报每个字段的主要含义:

  • 版本号字段占用4个比特位,标识IP协议的版本。如果是IPv4,就是4,如果是IPv6,就是6
  • 首部长度字段占4位,给出整个IP分组的首部长度。计算的时候以4字节为单位,也可以理解为一行(因为一行32位,就是4字节)。如果这个字段的值为5,那么需要乘以4才能得到IP分组首部长度的字节数,也就是20字节
  • 服务类型(TOS)字段占8位:最初的目的是这个IP分组在网络传输过程中期望获得哪种类型的服务
    • 1998 年这个字段改名为区分服务,也就是让网络能够区别对待不同的IP数据报,并且提供不同类型的服务。比如某些数据报优先转发,某些数据报之后转发
    • 这个字段只有在网络提供区分服务(DiffServ)时才有效
    • 在目前IPv4网络中,一般情况下不使用该字段,通常IP分组的该字段(第2字节)的值为00H
  • 总长度字段占16位:IP分组的总字节数(首部+数据)。注意它是以字节为单位的。
    • 因为字段长度是16位,所以所能表示的最大IP分组的总长度是65535B。去掉最小的头部长度也就是20B,那么IP分组可以封装的最大数据:65535-20=65515B。当然这只是理论上,在实际中不会有这么大的分组
  • 标识、标志位、片偏移与IP分组的分片有关,后面介绍
  • 生存时间(TTL,Time To Live,也叫做存活时间)字段占8位,用来标识IP分组在网络中最多可以通过的路由器数(或跳步数)
    • 路由器转发一次分组,TTL减1,如果TTL=0,路由器则丢弃该IP分组,这时会向源主机发送一个ICMP报文
  • 协议字段占8位:指示IP分组封装的是哪个协议的数据包
    • 实现复用/分解
    • 比如, 6为TCP,表示封装的为TCP段;17为UDP,表示封装的是 UDP数据报
  • 首部校验和字段占16位:实现对IP分组首部的差错检测
    • 计算校验和时,该字段置全0
    • 运算算法与前面讲的UDP校验和的计算算法是一样的,采用反码算数运算求和,和的反码作为首部校验和字段
    • 首部校验和在每一次转发也就是一跳的时候都要重新计算,重新校验。因此首部校验和是逐跳计算、逐跳校验的
  • 源IP地址、目的IP地址字段各占32位:分别标识发送分组 的源主机/路由器(网络接口)和接收分组的目的主机/路由器 (网络接口)的IP地址
  • 选项字段占长度可变,范围在1~40B之间:携带安全、源 选路径、时间戳和路由记录等内容
    • 实际上很少被使用,也就是0
  • 填充字段占长度可变,范围在0~3B之间:目的是补齐整个 首部,符合32位对齐,即保证首部长度是4字节的倍数

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WebDAV之π-Disk派盘 + Keepass2Android

推荐一款密码管理器,允许人们使用复杂的组合进行登录,而不必记住所有的组合。 Keepass2Android可以支持大多数安卓互联网浏览器, Android设备上同步软件,还支持通过WebDAV添加葫芦儿派盘。 Keepass2Android 目前安全方面最大的问题之一是大多数人几乎在任何地方都使用通用…

windows下安装es及logstash、kibna

1、安装包下载 elasticsearch https://www.elastic.co/cn/downloads/past-releases#elasticsearch kibana安装包地址: https://www.elastic.co/cn/downloads/past-releases/kibana-8-10-4 logstash安装包地址: https://www.elastic.co/cn/downloads/past…

18 Linux 阻塞和非阻塞 IO

一、阻塞和非阻塞 IO 1. 阻塞和非阻塞简介 这里的 IO 指 Input/Output(输入/输出),是应用程序对驱动设备的输入/输出操作。当应用程序对设备驱动进行操作的时候,如果不能获取到设备资源,那么阻塞式 IO 就会将对应应用…

CVE-2023-25194 Kafka JNDI 注入分析

Apache Kafka Clients Jndi Injection 漏洞描述 Apache Kafka 是一个分布式数据流处理平台,可以实时发布、订阅、存储和处理数据流。Kafka Connect 是一种用于在 kafka 和其他系统之间可扩展、可靠的流式传输数据的工具。攻击者可以利用基于 SASL JAAS 配置和 SASL …

文本生成高精准3D模型,北京智源AI研究院等出品—3D-GPT

北京智源AI研究院、牛津大学、澳大利亚国立大学联合发布了一项研究—3D-GPT,通过文本问答方式就能创建高精准3D模型。 据悉,3D-GPT使用了大语言模型的多任务推理能力,通过任务调度代理、概念化代理和建模代理三大模块,简化了3D建模的开发流程…

Linux 进程的管道通信

文章目录 无名管道pipe有名管道 进程之间的通信:Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另外一个进程中都看不到,所以进程之间不能相互访问,要交换数据必须通过…

java学习part01

15-Java语言概述-单行注释和多行注释的使用_哔哩哔哩_bilibili 1.命令行 javac编译出class文件 然后java运行 2. java文件每个文件最多一个public类 3.java注释 单行注释 // 多行注释 文档注释 文档注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文…

赛氪ETTBL全国商务英语翻译大赛入榜国内翻译赛事发展评估报告

中国外文局下属CATTI项目管理中心出具2023 国内翻译赛事发展评估报告,ETTBL全国商务英语翻译大赛赫然在榜 2023年11月6日,继2022年首次发布国内翻译赛事发展评估报告后,中国外文局CATTI项目管理中心和中国外文界平台联合发布了《2023国内翻译…

JVM字符串常量池StringTable

目录 一、StringTable为什么要调整 二、String的基本特性 三、String的内存分配 四、字符串拼接操作 五、intern()方法 六、Stringtable的垃圾回收 七、G1中String去重操作 一、StringTable为什么要调整 jdk7之前,hotspot对于方法区的实现是永久代&#xff…

基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 这个章节来完成并行网关与排它条件网关的功能 1、前端 目前就修改了排它条件网关的前端条件部分&#xf…

嵌入式养成计划-52----ARM--开发板介绍--相关硬件基础内容介绍--GPIO讲解

一百三十一、开发板介绍 131.1 核心板介绍 131.2 拓展板 一百三十二、相关硬件基础内容介绍 132.1 PCB PCB( Printed Circuit Board),中文名称为印制电路板,又称印刷线路板, 是重要的电子部件,是电子元器…

springboot全局拦截sql异常

起因:非法用户可通过特定的输入(如输入内容超长)等操作,使后台逻辑发生错误,从而使后台sql语句暴露至前台,进而为sql攻击提供条件 处理流程:经查找com.mysql.cj.jdbc.exceptions的父类为SQLException,在全局异常处理类中增加如下配置,经测试不起作用 ExceptionHandler(SQLExce…

款网络拓扑自动扫描工具

Topology-Scanner是WeOps团队免费开放的一个网络拓扑自动扫描模块,可以自动发现网络设备的类型、网络设备之间的互联 使用方式 java -jar ./topology-scanner.jar --config_path./config/ 配置说明 1. 拓扑发现请求参数文件(request.json) ips [全网发现] 模式时…

asp.net core weapi 结合identity完成登录/注册/角色/权限分配

1.安装所需要的nuget包 <PackageReference Include"Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version"6.0.24" /><PackageReference Include"Microsoft.EntityFrameworkCore" Version"6.0.24" /><PackageR…

Git应用(1)

一、Git Git(读音为/gɪt/。中文 饭桶 )是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。 了解更多可到GIT官网&#xff1a;Git - Downloads GIT一般工作流程如下&#xff1a; 1&#xff0e;从远程仓库中克隆 Git 资源作为本地…

线程安全问题解析

线程内存模型 线程在工作的时候&#xff0c;如果涉及到需要访问对象的某个成员变量&#xff0c;比如下面的这个类里的amount 属性&#xff1a; class Goods {private int amount;// balabala.....} 线程在运行期间&#xff0c;首先把这个属性从主内存里load进自己的工作内存&…

leetcode:160. 相交链表

一、题目 原题链接&#xff1a;160. 相交链表 - 力扣&#xff08;LeetCode&#xff09; 函数原型&#xff1a; struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) 二、思路 判断两个链表是否相交&#xff0c;只要判断两个链表是否有相同的…

图数据库Neo4j详解

文章目录 第一章 图和Neo4j1.1 图数据库概念1.1.1 图论起源1.1.2 节点-关系及图1.1.3 图数据库1.1.4 图数据库分类1.1.4 图数据库应用场景1.1.5 与关系型数据库对比1.1.6 图数据库优势 1.2 Neo4j介绍1.2.1 Neo4j是什么1.2.2 Neo4j特点1.2.3 Neo4j的优势1.2.4 Neo4j的限制1.2.5 …

揭秘系列: Goroutine调度器

现在不要担心理解上面的图片&#xff0c;因为我们将从非常基础的知识开始。 Goroutines分布在线程中&#xff0c;由Goroutine调度器在幕后处理。根据我们之前的讨论&#xff0c;我们知道一些关于Goroutines的事情&#xff1a; •从原始执行速度来看&#xff0c;Goroutines不一定…

Unity中全局光照GI的总结

文章目录 前言一、在编写Shader时&#xff0c;有一些隐蔽的Bug不会直接报错&#xff0c;我们需要编译一下让它显示出来&#xff0c;方便修改我们选择我们的Shader&#xff0c;点击编译并且展示编译后的Shader后的内容&#xff0c;隐蔽的Bug就会暴露出来了。 二、我们大概回顾一…