一、报文格式和分片

因特网网络层协议的内部视图如下:

包括路由协议、IP协议和ICMP协议。
(1)路由协议的主要功能是路径选择,计算出用于在网络中转发分组的转发表。
(2)IP协议用于规定编址规则、数据报格式以及数据处理规则。
(3)ICMP协议主要复杂报告数据报中的差错和对某些网络层信息请求进行响应。

1、IP数据报格式

网络层的分组被称为数据报。

(1)版本号:这4比特规定了数据报的IP协议版本。通过查看版本号,路由器能够确定如何解释数据报的剩余部分。不同的IP版本使用不同的数据报格式。上图是IPv4版本的数据报格式。
(2)首部长度:4比特,IPv4数据报中的一些可变数量的选项包含在首部,首部长度用来确定IP数据报中数据部分实际从哪里开始。大多数IP数据报不包含此项。
(3)服务类型:8比特。区别不同类型的数据报如区别实时数据报与非实时数据报。服务类型比特包含在IPv4首部中。
(4)数据报长度:这是IP数据报的总长度即首部加上数据。为16比特。
(5)标识、标志、片偏移:这三个字段与所谓的IP分片有关。新版本的IP即IPv6不允许在路由器上对分组分片。
(6)寿命:用来确保数据报不会永远在网络中循环。每当数据报由一台路由器处理时,该字段的值减1。若寿命字段减为0,则该数据报必须丢弃。
(7)高层:也就是上层协议,指示了IP数据报的数据部分应交给哪个特定的运输层协议。值为6表示上层协议是TCP协议,值为17表示上层协议是UDP协议。该字段仅在一个IP数据报到达其最终目的地才会有用。
(8)首部校验和:该字段用于帮助路由器检测收到的IP数据报中的比特错误。校验和计算方法在之前的文章中提到过。
(9)源和目的IP地址。当生成一个数据报时,它在源IP字段中插入它的IP地址,在目的IP地址字段中插入其最终目的地的地址。
(10)选项:选项字段允许IP首部被扩展。
(11)数据:交付给目的地的运输层报文段。

2、IP数据报分片和重组

2.1、分片原因

因为目前的因特网中并非所有链路层协议都能承载相同长度的网络层分组。有的协议能承载大数据报,而有的协议只能承载小分组。例如以太网帧能够承载不超过1500字节的数据,而某些广域网链路的帧可承载不超过576字节的数据。在因特网中,允许数据报在从发送主机到接收主机的传送过程中经过不同的链路。因此当一个大的数据报转发到一条只能承载小数据报的链路时就需要进行分片。如下图所示:一个大的数据报在中间路由器被分为三个小的数据报,而这些小的数据报将在网络中继续转发,后续路由器将每个数据报作为一个独立的报文进行转发,直到到达接收方主机,接收方主机根据分片相关的标识符、标志位和片偏移等字段对这些报文进行重组。

2.2、分片方法

那么如何进行分片呢?分片方法需要保证在接收方能准确无误的重新组装。因此首先需要分析组装要考虑的因素。
(1)接收方怎么确定一个收到的数据报是一个大的报文的分片?
(2)如果是分片的话,接收方怎么知道大报文最后一个分片是哪个数据报呢?
(3)如何将收到的分片重新组装成初始的数据报?
为了解决上述问题,设计者将标识符、标志位、片偏移字段放在IP数据报的首部中。通过IP首部中的字段来解决。通过实例来学习具体分片方法。

如上图所示,示例如下:一个4000字节的数据报(包括了20字节的IP首部和3980字节的IP有效载荷)到达一台路由器,且必须被转发到一条MTU为1500字节的链路上。这就意味着初始数据报中的3980字节数据必须被分配为3个独立的片,其中的每个片也是一个IP数据报。
MTU:最大传送单元,一个链路层帧能承载的最大数据量。
第一个分片是1480个字节的数据加20字节的IP头部,第二个分片也是1480个字节的数据加20字节的IP头部。第三个分片是1020的数据加20字节的IP头部。因此三个分片的长度分别为1500字节、1500字节、1040字节。需要注意的是在后续的路由器转发中将作为独立的报文进行转发。直到三个分片都到达接收方主机,由接收方主机重新组装。
分片情况如下:
标识符通过ID号来表示原始数据报,ID号相同的分组都属于一个原始数据报,假设数据报的标识符为777,也就是图中的x是777。
通过标志位(fragflag)来表示数据报进行的分片,如果标志位为1,则表示后面还有数据。标志位为0表示这是最后一个分片,后面没有数据了。
偏移位为0表示插入的数据开始于字节0;偏移185表示插入的数据开始于字节1480(1858=1480);偏移370表示插入的数据开始于字节2960(3708=2960)。

二、IP地址即IPv4的编址规则

1、IP地址简单介绍

IP地址:分配给主机或路由器接口的32比特的标识符。
接口:主机/路由器与物理链路之间的边界。
因为路由器的任务是从链路上接收数据报并从某些其它链路转发出去,所以路由器必须拥有两条或更多链路与它连接,因此路由器通常有多个接口;因为每台主机与路由器都能发送和接收IP数据报,IP要求每台主机和路由器接口拥有自己的IP地址,因此一个IP地址技术上是与一个接口相关联的,而不是与包括该接口的主机或路由器相关联的。主机也可以有多个接口,例如笔记本通常会有无线网卡接口,也会有有线网卡的以太网接口。每个接口有一个IP地址。在因特网中设备通过IP地址进行寻址。

上图每台计算机都有一个IP地址,路由器有三个端口,每个端口都有一个IP地址。

2、IPv4编址

2.1、两种书写方法

首先IPv4地址有两种书写方法:
(1)32比特的二进制表示法:例如11011111 00000001 00000001 00000001这样直接写。
(2)点分十进制表示法:是将32比特按照每8比特划分为一个字节,每个字节用10进制数来表示,十进制数之间用”.“号分隔。例如:

2.2、IP地址类型

根据不同的取值范围,早期将IP地址分为五类。IP地址中前5位用于标识IP地址的类别,A类地址的第一位为”0“,B类地址的前两位为”10“,C类地址的前三位为”110“,D类地址的前四位为”1110“,E类地址的前五位为”11110“。其中,A类、B类与C类地址为基本的IP地址。

如上图所示,IP地址由两部分组成:
(1)网络号:指明主机所在的物理网络的编号。
(2)主机号:主机在物理网络中的编号。
每个IP地址有32比特。
一个A类地址其网络号最高的8比特,后24比特可以作为主机号。因此可以分配的主机数为224^{24}24,但是一个家庭或者组织往往不需要这么多的地址空间,造成浪费。
而一个C类地址网络号为最高的24比特,主机号只有8比特用于分配主机地址,因此可分配的主机数为28^88即256台主机,可分配的数量较少,又不太够用。
因此,逐渐按类别进行地址分配被CIDR技术取代。

2.3、一些常用的特殊IP地址

(1)127.0.0.1-127.255.255.254
这是预留的一组IP地址,主要是用来识别主机本身的地址。也叫做”localhost“,一半用来测试使用的,做开发的人比较熟悉。
(2)10.x.x.x ;172.16.x.x-172.31.x.x ;198.168.x.x
这三个地址段主要是我们私有的内网地址。也就是我们平时企业或者家里局域网所使用的地址段,我们比较熟悉的应该就是192.168.x.x这个地址段了。
注意:内部私有地址是不能够进行全网寻址的。

2.4、子网

上面说过IP地址由网络号和主机号构成,网络号就是子网。
从IP地址的观点来看,子网是一组设备,这些设备接口的IP地址具有同样的网络部分。这些设备通过链路相连,当没有路由器接入时,在物理上能够相互到达。

上图有三个子网,分别为223.1.1子网、223.2.1子网和223.1.3子网。
从另一个观点来看子网:为了确定子网,分开主机和路由器的每个接口,从而产生了几个分离的网络岛,这写独立网络中的每一个叫做一个子网。如下图所示:

2.5、CIDR技术

这是一种新的IP地址表示方法,其中网络部分可以任意长度,不同于早期的分类IP地址,网络部分是固定长度。在CIDR中地址的写法为a.b.c.d/x,这里x是地址网络部分的比特数。

如上图所示,这里的/23表示前23位是网络部分,后面的9比特表示主机部分。
最高位23位是网络部分可以用/23来表示,也可以用子网掩码来表示,在子网掩码中,IP地址的网络部分用全1表示,主机部分用全0表示。
因此这里的/23等价于11111111 11111111 11111110 00000000,对应的点分十进制写法为255.255.254.0。

网际协议:数据报格式和分片以及IPv4编址相关推荐

  1. 4.4 IPv6(诞生原因、数据报格式、与IPv4的不同、地址表现形式、基本地址类型、IPv6与IPv4的过渡策略)

    文章目录 0.思维导图 1.为什么要有IPV6? 2.IPV6的数据报格式 3.IPV6与IPV4的比较 4.IPV6的地址表示形式 5.IPV6基本地址类型 6.IPV6向IPV4过滤的策略 0.思 ...

  2. IP数据报格式,IP分片,IP编址,子网掩码

    文章目录 一.Internet网络层 二.IP数据报格式 三.IP分片 四.IP编址(addressing) 五.子网划分与子网掩码 使用子网时分组的转发 六.无分类编址CIDR 一.Internet ...

  3. ip数据报格式;ip数据报分片

    点击打开链接 IPv4数据报格式: 上图表示的数据,最高位在左边,记为0位:最低位在右边,记为31位.在网络中传输数据时,先传输0~7位,其次是8~15位,然后传输16~23位,最后传输24~31位. ...

  4. IPv4数据报格式及其语义

    IPv4数据报格式及其语义 一.IP数据报的格式如下图所示 版本 首部长度 服务类型 数据报长度 16比特标识 标志 13比特片偏移 寿命 上层协议 首部检验和 32比特源IP地址 32比特目的IP地 ...

  5. 王道考研学习笔记IP数据报格式IP数据报分片(超详细)

    一.回顾TCP/IP协议栈 二.IP数据报格式 记忆方法: TCP是面向连接的服务,面向连接就非常6.而UDP是不面向连接的,数据就非常容易被"遗弃"(17).因为如果不建立连接, ...

  6. IPv4与IPv6数据报格式

    IPv4: IPv4数据报中的字段: 版本号:规定了数据报的IP协议版本,通过查看版本号,路由器能够确定如何解释IP数据报 的剩余部分,因为不同IP版本使用不同的数据报格式. 首部长度:IPv4数据报 ...

  7. IPv4数据报格式和Ipv6数据报格式(长文,详细解释每个字段)

    IPv4数据报介绍 IPv3数据报结构 版本号.这4比特规定了数据包的IP协议版本.通过查看版本号,路由器能够确定如何 解释IP数据报的剩余部分.因为不同版本的IP数据包的格式是不一样的. 首部长度. ...

  8. IP数据报-格式-分片

    IP数据报-格式: 视频:https://www.bilibili.com/video/BV19E411D78Q?p=44 TCP/IP协议栈: IP数据报分片: 视频:https://www.bil ...

  9. 【学习记录】网络层——IP数据报(格式与分片)

    文章目录 一. IP数据报格式 二. IP数据报分片 ① 为什么要分片? ② 标识.标志与片偏移 ③ 例题 单位为nB小结 PPT截自王道考研教程 tips:b是位,B是字节. 一. IP数据报格式 ...

最新文章

  1. Confluence 6 SQL Server 测试你的数据库连接
  2. html 监听input输入框的值,利用原生JS实时监听input框输入值
  3. 妙用 background 实现花式文字效果
  4. python map lambda 分割字符串_python六剑客:map()、lambda()、filter()、reduce()、推导类表、切片...
  5. GTK实现:俄罗斯方块小游戏源代码(RussiaCube.c)
  6. oracle get_ddl XSL error 解决方法
  7. 新一代同步控制器和触摸屏组合在压延机上的应用
  8. 数据库迁移测试——功能测试
  9. 编译小程序,开发者工具打开报错Cannot read property ‘createTextNode‘ of undefined或iphone机型无法预览
  10. 网络信息检索(五)查询处理:查询方式+查询操作
  11. 蓝桥杯嵌入式CT117E硬件开发平台经验分享11 | 第九届蓝桥杯国赛题
  12. 读《卧底经济学(珍藏版)》- 专家是一致对外的
  13. 在线考试系统的倒计时
  14. 第一章:机器学习概览
  15. Serial Programming Guide for POSIX Operating Systems(转)
  16. 有多久没有这么疯狂了?
  17. 动手深度学习13:计算机视觉——语义分割、风格迁移
  18. Proxmox虚拟环境(PVE)简介
  19. 栈Stack和段寄存器SS,SP(学习汇编)
  20. Python连载(0013): 字典(dict)

热门文章

  1. 语音识别:从GMM-HMM到端到端
  2. 直播 | CVPR 2021论文解读:引入因果结构的解耦表征学习
  3. PaperWeekly 第52期 | 更别致的词向量模型:Simpler GloVe - Part 1
  4. html登录界面设计代码_.NET 5 开发WPF - 美食应用登录UI设计
  5. googlehelper手机版ios_二次元漫画控iOS苹果手机版下载v1.0.0下载|免费二次元漫画控iOS苹果手机版下载绿色版...
  6. 【Greenplum异常】数据库报错 could not create temporary file No space left on device(求解决)
  7. git 分支复制_Git基础知识(五)
  8. 全网最详系列教程-nacos配置中心详解-NameSpace、Group、DataID
  9. 云原生系列「二」Kubernetes网络详解
  10. 使用okhttp3执行post请求