IP服务模型

news/2025/2/4 23:59:28/

 

1. IP数据报

IP数据报中除了包含需要传输的数据外,还包括目标终端的IP地址和发送终端的IP地址。

数据报通过网络从一台路由器跳到另一台路由器,一路从IP源地址传递到IP目标地址。每个路由器都包含一个转发表,该表告诉它在匹配到特定目标地址后将数据报发送到哪里。路由器并不知道整个路径,它只是使用目标地址来索引自己的转发表,以便将数据报转发到路径上的下一跳,朝着最终目的地前进。

IP服务模型提供了一项服务,其中包括将数据路由到目的地的功能。

2. 不可靠的

IP并不保证数据报一定会被送达目的地,它们可能会被延迟送达、顺序错乱,甚至根本无法送达。数据报在传输过程中可能会被重复,例如由于某个行为异常的路由器。

3. 尽最大可能的

IP只在必要时丢弃数据报,路由器中的数据报队列可能因为拥塞而满载,迫使路由器丢弃下一个到达的数据报,IP不会尝试重新发送数据,IP不会通知源端数据报已被丢弃。

4. 无连接的

完全不维护与通信相关的任何状态,在开始时不建立与通信相关的任何端到端的状态。

为什么IP服务如此简单?

IP服务模型的一些细节

1. 试图阻止数据报在路由网路中无限循环地传输

IP在每个数据报的头部添加一个跳数字段,被称为生存时间字段(Time-to-Live, TTL)。假设它初始值设为128,然后每经过一个路由器就减1,如果它减到0,IP就判定数据报一定陷入了循环。路由器会丢弃该数据报。

2. 如果数据报太长,IP会对其进行分片。

IP设计为可在任何类型的链路上运行,大多数链路对它们能承载的数据报大小有限制,以太网只能承载小于1500字节的数据包。如果应用程序需要发送超过1500字节的数据,必须先将其分成1500字节的片段,再放入IP数据报中发送。现在,在通往目的地的路径上,一个1500字节的数据报可能需要经过只能承载更小数据报的链路,链接这两天链路的路由器会将数据分片成两个较小的数据报。IP提供了一些头部字段,帮助路由器将数据报分片成两个自包含的IP数据报,同时提供终端主机正确重组数据所需的信息。

3. IP使用头部校验和来减少将数据报传到错误目的地的可能性。

IP在数据报头部包含一个校验和字段,以尽力确保数据报被传送到正确的位置。

4. 目前使用的IP有两个版本,IPv4拥有32位的地址,IPv6拥有128位的地址。

5. 最后,IP允许在数据报头部添加新字段。

  

(1)Source IP Address:源端IP地址

(2)Destination IP Address:目标端IP地址

(3)Protocol ID:数据字段中包含的内容,允许目标主机对到达的数据进行解复用,将它们发送到正确的代码已处理数据报。如果Protocol ID是6,数据报包含一个TCP段,可以安全地将数据报传递给TCP代码,以正确解析该数据字段。

(4)Version:使用地IP协议的版本IPv4或者IPv6

(5)Total Packet Length:数据包的总长度,可达64KB,包括头部和所有数据。

(6)TTL(Time to Live)字段:防止数据包在网络中意外地无限循环,每个路由器都需要递减TTL字段,如果它达到0,路由器应丢弃该数据包。

(7)Packet ID、Flags、Fragment Offset:路由器在需要时将IP数据报分片成更小的、自包含的数据报。

(8)Type of Service:向路由器提示此数据包的重要性

(9)Header Length:头部的长度

(10)Options:可选字段携带额外信息

(11)Checksum:对整个头部计算校验和。


http://www.ppmy.cn/news/1569359.html

相关文章

硕成C语言6

数据类型的定义:一组值的集合以及定义在该值集上的一组操作的总称C 语言中整数的除法运算结果是取整的,这意味着它会把小数部分直接舍去,只保留整数部分。比如,5 / 2 的结果是 2,而不是 5 【整型:整型常量和…

如何使用 DeepSeek API 结合 VSCode 提升开发效率

引言 在当今的软件开发领域,API 的使用已经成为不可或缺的一部分。DeepSeek 是一个强大的 API 平台,提供了丰富的功能和数据,可以帮助开发者快速构建和优化应用程序。而 Visual Studio Code(VSCode)作为一款轻量级但功…

【C++】string类(上):string类的常用接口介绍

文章目录 前言一、C中设计string类的意义二、string类的常用接口说明1. string类对象的常见构造2. string类对象的容量操作2.1 size、capacity 和 empty的使用2.2 clear的使用2.3 reserve的使用2.4 resize的使用 3. string类对象的访问及遍历操作3.1 下标[ ] 和 at3.2 迭代器it…

Spring AI 与企业级应用架构的结合

随着 AI 技术的不断发展,越来越多的企业开始将 AI 模型集成到其业务系统中,从而提升系统的智能化水平、自动化程度和用户体验。在此背景下,Spring AI 作为一个企业级 AI 框架,提供了丰富的工具和机制,可以帮助开发者将…

Dijkstra算法解析

Dijkstra算法,用于求解图中从一个起点到其他所有节点的最短路径。解决单源最短路径问题的有效方法。 条件 有向 带权路径 时间复杂度 O(n平方) 方法步骤 1 把图上的点分为两个集合 要求的起点 和除了起点之外的点 。能直达的写上权值 不…

冯诺依曼系统及操作系统

目录 一.冯诺依曼体系结构 二.操作系统 三.系统调用和库函数概念 一.冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系 截至目前,我们所认识的计算机,都是由一…

Hive:静态分区(分区语法,多级分区,分区的查看修改增加删除)

hive在建表时引入了partition概念。即在建表时,将整个表存储在不同的子目录中,每一个子目录对应一个分区。在查询时,我们就可以指定分区查询,避免了hive做全表扫描,从而提高查询率。 oracle和Hive分区的区别 orcale在…

两栏布局、三栏布局、水平垂直居中

文章目录 1 两栏布局1.1 浮动 margin1.2 浮动 BFC1.3 flex布局1.4 左绝父相 margin1.5 右绝父相 方向定位 2 三栏布局2.1 子绝父相 margin2.2 flex布局2.3 浮动 margin2.4 圣杯布局2.5 双飞翼布局 3 水平垂直居中3.1 绝对定位 translate3.2 绝对定位 margin3.3 绝对定位…