网络层解读

基本介绍

概述

 当两台主机之间的距离较远(如相隔几十或几百公里,甚至几千公里)时,就需要另一种结构的网络,即广域网。广域网尚无严格的定义。通常是指覆盖范围很广(远超过一个城市的范围)的长距离的单个网络。它由一些结点交换机以及连接这些交换机的高速链路组成。将两个或多个计算机网络互联起来,就构成了互联网(internet) 。不同网络的“互连” 是它的最主要的特征。

相距较远的局域网通过路由器与广域网相连,组成了一个覆盖范围很广的互联网。

  • 广域网是单个网络,使用结点交换机连接各主机。互联网是使用路由器来连接多个网络。从转发分组的角度,结点交换机和路由器具有相似的工作原理。
  • 结点交换机是在单个网络中转发分组,路由器是在多个网络构成的互联网中转发分组。位于一个广域网(或一个局域网)上的主机在该网内进行通信时,只需要使用其网络的物理地址即可。

 实现网络互联的中间设备,称为中间设备中继系统

根据中间设备所在的层次,有以下几种中间设备:

  • 物理层的中间设备——转发(repeater)
  • 数据链路层的中间设备——网桥桥接器(bridge)
  • 网络层的中间设备——路由器(router)
  • 网络层以上层次的中间设备——网关(gateway)

当中继系统是转发器或网桥时,一般并不认为是网络互连。因为这仅仅是把一个网络扩大了,它仍然是一个网络。

 使用网关实现网络互连。当N个网络互连时,由于每两个网络之间都需要有一个协议转换器,N个网络就需要有多达N(N-1)个协议转换器。为了简化网关的设计,提出了一种互联网的概念。采用互联网概念时,只要实现网络与互联网协议之间的互相转换。对于N个网络互连,所需2N个协议转换器就行了。因特网就是采用这种做法。凡参与互连的所有计算机网络都使用相同的网际协议IP。那么,参与互连的计算机网络相当于构成了一个虚拟互连网络

 

 虚拟互连网络的意义

  • 所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。
  • 使用 IP 协议的虚拟互连网络可简称为 IP
  • 使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。
  • 如果在这种覆盖全球的IP网的上层使用TCP协议,那么就是现在的因特网(Internet)。  

如果我们只从网络层考虑问题,那么 IP 数据报就可以想象是在网络层中传送。

服务与功能 

在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接还是无连接”)曾引起了长期的争论。争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?网络还是端系统?

  • 基于电信网的成功经验,让网络负责可靠交付,采用面向连接的通信方式 。建立虚电路(Virtual Circuit) ,以保证双方通信所需的一切网络资源。如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点。
  • 如果网络层不提供可靠传送,则可简化路由器设计,端-端可靠通信由传输层负责。这就是在因特网中采用数据报的设计思路,有着许多好处。

虚电路服务

虚电路服务是网络层向运输层提供的一种使所有分组都能按序到达目的端系统的可靠的数据传送方式。

在进行虚电路服务时,两个端系统之间存在着一条为之服务的虚电路。虚电路只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,并不是真正建立了一条物理连接。而电路交换的电话通信是先建立了一条真正的连接。因此分组交换的虚连接和电路交换的连接只是类似,并不完全相同

 数据报服务

数据报服务是网络层向上提供简单灵活的、无连接的、尽力而为交付的服务方式。被因特网所采纳。

  • 网络在发送分组时不需要先建立连接。每一个分组(IP 数据报)都携带完整的目的地址信息,选择不同的路由独立发送,与其前后的分组无关(不进行编号)
  • 网络层不提供服务质量的承诺。由于每个分组经历的路由不同,到达目的端系统的所花费的时间也不一样,所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限

 提供尽力而为服务的好处

  •  由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)
  •  如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责(包括差错处理、流量控制等)
  • 网络的造价大大降低,运行方式灵活,能够适应多种应用。
  • 因特网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性

 H1 发送给 H2 的分组可能沿着不同路径传送

项   目

虚电路服务

数据报服务

设计思路

可靠通信由网络负责

可靠通信由用户主机负责

-端连接

需要

不需要

目的地址

仅在建立连接时使用,每个分组使用虚电路号

每个分组都要携带完整的目的地址

分组传送

所有分组均按所建的同一条(虚)路由进行传送

每个分组独立选择路由进行传送

结点故障

虚电路中故障的结点均不能工作

故障的结点可能会丢失分组,也会改变某些路由

分组顺序

按序发送、按序接收

按序发送,但不一定按序接收

端到端的差错控制和流量控制

由网络负责,也可由用户主机负责

由用户主机负责

网际协议IPv4 

网际协议IP是TCP/IP体系中两个重要的协议之一。IPv4虽有最终被IPv6取代的趋势,但它仍是当前使用的最重要的因特网协议。 与IP配套使用的还有3个协议:

  • 地址解析协议ARP(Address Resolution Protocol)
  • 因特网控制报文协议ICMP(Internet Control Message Protocol)
  • 网际组管理协议IGMP(Internet Group Management Protocol)

网际协议 IP 及其配套协议

  

分类的 IP 地址

 IPv4协议的主要特点

  • IPv4协议提供一种无连接的分组传送服务,它不承诺服务质量的保证(即不保证传送的分组可能出现的差错、丢失、重复和失序等现象)
  • IPv4协议是点点的网络层通信协议。
  • Pv4协议对传输层屏蔽了物理网络的差异。网络层借助IP协议向传输层提供统一的IP分组,这有助于各种异构网络的互连。  

 IP地址及其指派

  • 把整个因特网可看成为一个单一的、抽象的网络。IP地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围内惟一的标识符(长度为32bit )
  • P地址由因特网名字与号码指派公司ICANN (Internet Corporation for Assigned Names and Numbers)进行分配的。

 IP 地址的编址方法

IP地址的编址经历两个阶段:

  • 分类IP地址。这是最基本的编址方法,1981年通过了相应的标准协议。基于分类IP地址存在的问题,又1985年提出子网划分、变长子网划分的概念。这是对最基本的分类编址方法的改进。
  • 无分类IP地址1993年又提出新的分类编址方法,且得到了推广应用。

所谓“分类的IP地址”就是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中一个字段是网络号net-id,它标志某主机(或路由器)所连接的网络编号;另一个字段则是主机号host-id,它标志该主机(或路由器)在该类网络中的编号。n这种两级结构的 IP 地址可以记为:IP 地址 ::= { <网络号>, <主机号>}   

其中,::= 代表“定义为

 IPv4 地址的格式

 IP地址的表示——点分十进制记法  

辨别IP地址类别

如果给出了二进制记法表示的地址,用它的前几位表示地址的类别。

  • A00000001  00001011  00001011  11101111     A
  • B、11000001  10000011  00011011  11111111     C
  • C、10100111  11011011  10001011  01101111     B
  • D、11110011  10011011  11111011  00001111     E

 如果用点分十进制记法表示的地址,按第1 字节表示的十进制数来判定地址类别:A类为0127B类为128191C类为192223D类为224239E类为240255

  • A、227.12.14.87  D
  • B、193.14.56.22  C
  • C、14.23.120.8  A
  • D、252.5.15.111  E
  • E、134.11.78.56  B

 特殊的IP地址

  • 网络号为全0是指本网络。
  • 网络号和主机号均为全1是对本网络进行广播(路由器不转发)
  • A类网络地址127是一个保留地址,用于本地软件环回测试之用。
  • 主机号为全1是指对本网络号的所有主机进行广播。

地址

类别

可指派的

最多网络数

第一个可指派的网络号

最后一个可指派的网络号

每个网络中可拥有的最多主机数

约占整个地址空间的比例

A

125(27-3)

1

126

16777214(224-2)

50%

B

16367(216-17)

128.1

191.255

65534(216-2)

25%

C

2096895(221-257)

192.0.1

223.255.255

254(28-2)

12.5%

IP 地址的一些重要特点

  • IP地址是一种分级式地址结构。它不反映主机(或路由器)所在地理位置的任何信息。每一个IP地址都由网络号和主机号两部分组成。这种地址结构的好处是:P地址管理机构在分配IP地址时只分配网络号(第一级),而剩下的主机号(第二级)则由得到该网络号的单位自行分配。这样就方便了IP 地址的管理。路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
  •  IP地址指明了一台主机(或路由器)和一条链路的接口。 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号 net-id必须是不同的。这种主机称为多归属主机(multihomed host)由于一个路由器至少应当连接到两个网络,因此一个路由器至少也应当有两个不同的 IP 地址
  • 凡是分配到网络号net-id的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,其地位都是平等的。
  • 按照因特网的观点,一个网络是指具有相同网络号的主机的集合。用转发器或网桥连接起来的若干个局域网仍为一个网络,因为这些局域网都具有相同的网络号 net-id

 划分子网

三级IP地址的构成

当初的IP地址设计不够合理,主要体现在:

  • IP地址使用存在很大的浪费,地址空间的利用率很低。如10BASE-T允许加接的主机数是1024,但必须申请一个B类地址,则浪费了64510个地址,地址空间利用率仅为1.56%
  • 两级IP地址不够灵活。某单位对本单位的网络都有按部门划分的要求,但两级IP地址结构中并没有作出这方面的规定。
  • 按物理网络分配一个网络号的方法,将导致路由表的表项越来越多,这不易改善网络性能

 1985年起,IP地址格式中增加了一个“子网号字段”,使IP地址由两级结构变为三级结构。这种做法叫作划分子网

划分子网的基本思路

  • 划分子网纯属单位内部的事情,对本单位以外的网络是完全透明的。
  • 划分子网的方法是把主机号字段的前若干个比特作为子网号字段,则 IP地址∷={<网络号><子网号><主机号>}       
  • 凡从其他网络传送到本单位网络某主机的IP数据报,仍然按IP数据报的目的网络号传送到连接在本单位网络上的路由器此路由器收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。最后将 IP 数据报直接交付给目的主机。

举例:一个未划分子网的 B 类网络145.13.0.0

划分为三个子网后,对外仍是一个网络

 子网掩码

  • 由于IP地址本身以及数据报的首部都没有包含任何关于划分子网的信息,所以从一个IP数据报的首部无法判断源主机或目的主机所连接的网络是否进行了子网的划分。
  • 如何知道子网的划分呢?划分子网要用到子网掩码(subnet mask)的概念。使用子网掩码(subnet mask)可以很方便地找出 IP 地址中的子网部分。

TCP/IP体系规定:子网掩码是一个32位二进制数,由一串连续的“1”后随一串连续的“0”组成。其中“1”对应于IP地址的网络号和子网号字段,而“0”对应于IP地址的主机号字段。

 子网掩码采用点分十进制表示法(255.255.0.0),也可用网络前缀(或斜线)标记法(135.41.0.0/16)

 IP 地址的各字段和子网掩码的关系

(IP地址) AND (子网掩码) =网络地址 

子网掩码是一个网络或一个子网的重要属性。因特网标准规定:所有的网络都必须有一个子网掩码,它包含在路由表中。

划分子网的概念也适用于未划分子网的情况。未划分子网的网络可使用默认子网掩码使用子网掩码可简化路由器的路由选择算法。

ABCIP地址的默认子网掩码

划分子网的利弊

  • ——增加了灵活性。
  • ——减少了能够连接在网络上的主机总数。例如,一个B类地址最多可连接65534台主机,但当划分成4个子网后,实际连接的主机为32764台,这是因为[RFC950]规定:子网号不能为全0或全1

变长子网

子网划分的最初目的是把基于类的网络划分为几个规模相同的子网。其实,创建不同规模的子网可避免IP地址的浪费。对于不同规模子网的划分,称为变长子网划分。

变长子网划分是一种用不同长度的子网掩码来分配子网号字段的技术。它是对已划分好的子网使用不同的子网掩码做进一步划分形成不同规模的网络,从而提高IP地址资源的利用率。

变长子网划分举例

一个BIP地址为136.48.0.0的网络,需配置为1个能容纳32000台主机的子网,15个能容纳2000台主机的子网和8个能容纳254台主机的子网。

无分类编址 

划分子网的概念缓解了当初IP地址设计不够合理所引起的矛盾,而变长子网的概念也符合用户对IP地址实际使用的需要。但这些措施并未从根本上缓解因特网在发展过程中所遇到的困难。

在1992年,因特网面临着三个急需解决的问题:①B类地址在1992年已分配过半。因特网主干网上的路由表中的项目数急剧增长。20112月,IANA宣布IPv4地址已经耗尽。

IETFVLSM的基础上,又研究出采用无分类编址方法来解决上述问题。无分类编址方法的正式名字无分类域间路由选择CIDR(Classless Inter-Domain Routing),其新文档是RFC 4632

CIDR的主要设计思想

CIDR取消了以往对IP地址进行分类以及划分子网的概念,利用各种长度的“网络前缀 (network-pfefix) ”来代替分类地址中的网络号和子网号。

            IP地址∷={<网络前缀><主机号>}

 CIDR把网络前缀相同的连续的IP地址块组成“CIDR地址块”。一个CIDR地址块可用它的起始地址和块中地址数来表示。如136.48.32.8/20表示某CIDR地址块中的一个地址。

 无分类编址的表示

CDIR使用网络前缀标记法(或斜线记法),即在IP地址后面加一斜线“/”再加一数字,此数字是网络前缀的位数,如136.48.52.36,表示该IP地址的前20位是网络前缀。

CIDR还使用其他几种表示形式。一种是把点分十进制中的低位连续的“0”省去,如20.0.0.0/10,可表示为20/10。另一种是在网络前缀后面加一个星号“*”,如00010100 00*,其中星号前是网络前缀,星号表示IP地址中的主机号

CIDR地址块举例

  • 136.48.32.8/20表示在这个32位的IP地址中,前20位为网络前缀,后12位为主机号。每个地址块共有212个地址,其起始地址是136.48.32.0
  • 在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20地址块”。
  • 136.48.32.0/20地址块的最小地址:136.48.32.0,最大地址:136.48.47.255
  • 全 0 和全 1 的主机号地址一般不使用。

136.48.32.8/20地址块含有212个地址

 路由聚合(route aggregation)

一个CIDR地址块可以包含很多地址,路由表的表项也可改用地址块来表示。这种地址聚合称为路由聚合。路由聚合既利于缩短路由表,又可减少查找路由表的时间,从而提高了因特网的性能。路由聚合也称为构建超网(supernetting)

CIDR 虽然不使用子网概念,但仍然使用“掩码”这一名词(只是不叫子网掩码而已)。如对 /20 地址块,它的掩码是20个连续的1。斜线记法中的数字就是掩码中 1 的个数。

 构建超网

在“包含的地址数中”,包含了全0和全1地址。表中K表示210(1024)。网络前缀小于13或大于27的地址较少使用。 CIDR地址块中的地址数一定是2的整数次幂。

  • 前缀长度不超过23位的CIDR地址块都包含了相当于多个C类地址。这些C类地址合起来就构成了超网
  • 网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
  • 使用CIDR构建超网,必须得到相关路由器及其协议的支持。

使用CIDR地址块的最大好处

  • 可以更有效地分配IPv4的地址空间。如某单位需用900IP地址。未使用CIDR时,ISP可以分配给该单位一个B类地址或者4C类地址。但使用了CIDRISP可分配给该单位一个地址块208.18.128.0/22,它包含1024IP地址,相当于4个连续的/24地址块。
  • 可以按网络所在的地理位置来分配地址块,这可以大大缩小路由表所占的空间,即减少路由表的表项数。

地址解释和地址转换

 IP 地址与硬件地址的区别

举例:用两个路由器互连三个局域网

 通信的路径是:H1经过 R1 转发→再经过 R2 转发→ H2

从协议栈的层次上看数据的流动

 

从虚拟的 IP 层上看 IP 数据报的流动

在链路上看 MAC 帧的流动

 在IP层抽象的互联网上只能看到IP数据报。图中的IP1IP2表示从源地址IP1到目的地址IP2,两个路由器的IP地址并不出现在IP数据报的首部中

  • 虽然在IP数据报首部有源站IP地址,但路由器只根据目的站的IP地址的网络号进行路由选择  
  • 在具体的物理网络的链路层,只能看见MAC帧,而看不见IP数据报(它被封装在MAC帧中) MAC帧在传送过程中,首部中填写的硬件地址HAx是不同的。
  • 尽管互连在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网屏蔽了下层很复杂的细节。在抽象的网络层上讨论问题,就能够使用统一的、抽象的 IP 地址来研究主机与主机或主机与路由器之间的通信。  

地址解析协议ARP

无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终使用的是硬件地址。

IP地址(32)和硬件地址(48)之间不存在简单的映射关系。ARP协议解决IP地址与物理地址的映射,而RARP协议解决物理地址与IP地址的映射。

每一个主机都设有一个ARP高速缓存(cache),里面存放有所在的局域网上的各主机和路由器的IP地址到硬件地址的映射表。

当主机A欲向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机BIP地址。如有,即得到其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该 MAC帧发往此硬件地址。否则该主机运行ARP协议。

ARP 高速缓存

  • 高速缓存的作用就在于可以减少网络上的通信量。如果不用高速缓存,因为网络上的任一台主机要进行通信都需用广播方式发送ARP请求分组,这将导致网络上的通信量大大增加。用了高速缓存就可将得到的地址映射存入待用。
  • ARP对存放在高速缓存中的“IP地址-硬件地址”映射表设置生存时间(10min)。凡超过生存时间的表项即删除。被删除的表项无原则重新建立,也要经过前面所述的查找目的主机硬件地址的过程。

ARP是解决同一个局域网上的主机(或路由器)IP地址和硬件地址的映射问题。只要主机或路由器与本网络上的另一个已知IP地址的主机或路由器进行通信,ARP协议就会自动地将该 IP地址解析为链路层所需要的硬件地址。

如果所要找的目的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。

从IP地址到硬件地址的解析是自动进行的,这种地址解析过程对用户对透明的。

使用 ARP 的四种典型情况

  • 发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
  • 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
  • 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
  • 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。  

 为什么不直接使用硬件地址进行通信?

  • 由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,这几乎是不可能的事。
  • IP编址解决了这个复杂问题。凡连接到因特网的主机都拥有统一的IP地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为调用ARP来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。 

虚拟专用网VPN

由于IP地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。

考虑到因特网安全性并不很好,一个机构内也并不需要把所有的主机都接入到外部的因特网

因而就有一个设想:假定一个机构内部的计算机通信也采用TCP/IP协议,那么从原则上讲,对于这些仅在机构内部使用的计算机就可以由本机构自行分配其IP地址

两种地址

  • 本地地址--仅在本机构内部使用的IP地址,可由本机构自行分配,不必向因特网的管理机构申请。
  • 全球地址--全球唯一的IP地址,必须向因特网的管理机构申请。

存在的问题:在内部使用的本地地址有可能与因特网中某个IP地址重合,从而出现地址的二义性问题

解决的办法RFC1918指明了一些专用地址。专用地址只能用作本地地址而不能用作全球地址。在因特网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。三个专用地址块,即ICANN预留的部分ABC类专用地址块。

  • A类:10.0.0.010.255.255.255
  • B类:172.16.0.0172.31.255.255
  • C类:192.168.0.0192.168.255.255

 采用这种专用IP地址的专用网称为拟专用网VPN虚拟专用网VPN是建立在基础网络之上的一种功能性网络。它向使用者提供一般专用网所具有的功能,但本身却不是一个独立的物理网络,而是通过隧道技术,架构在公共网络服务商所提供的网络平台(InternetATMFR)之上的逻辑网络。

虚拟专用网的两个含义:是“虚拟”,因为整个VPN网上的任意两个结点之间的连接并没有传统专用网所需的端到端的物理链路,而是将它建立在分布广泛的公用网络的平台上;是一个“专用网”,每个VPN用户都可以从临时的“专用网”上获得所需的资源。

构建虚拟专用网的注意事项

  • 在不同网点的专用网之间进行通信,而需要通过公用的因特网,又有保密要求的,那么所有通过因特网的数据都必须加密
  • 一个机构要构建自己的VPN就必须为它的每一个场所购买专用的硬件和软件,并进行配置,使每一个场所的VPN系统都知道其他场所的地址。

 虚拟专用网的特点

  • 成本低廉,只需支付日常的上网费用。
  • 得到最常用的网络协议的广泛支持。
  • 具有身份验证、数据加密等安全可靠功能。
  • 易于扩充和管理。

 虚拟专用网的不足

  • 安全性。由于因特网不是一个可信赖的安全网络,为确保数据传输的安全,应对入网传输的数据进行加密处理。
  • 可管理性。VPN的管理要能够应对电信单位需求的快速变化,以避免额外的远行开支。
  • 性能。由于ISP是“尽力交付”传输的IP分组,而跨因特网的传输性能又无法得到保证,且时有变化所以附加的安全措施也会显著地降低性能。

利用隧道技术实现虚拟专用网

隧道的建立有两种方式:一种是自愿隧道,指服务器计算机或路由器可以通过发送VPN请求配置和创建的隧道;另一种是强制隧道,指由VPN服务提供商配置和创建的隧道。

隧道有两种类型:①点-点隧道。隧道由远程用户计算机延伸到企业服务器,由两边的设备负责隧道的建立,以及两点之间数据的加密和解密。②端-端隧道。隧道中止于防火墙等网络边缘设备,它的主要功能是连接两端的局域网。

IP 数据报的格式  

 IP数据报由首部和数据两部分组成。

IP数据报的首部

  • 首部的前一部分为固定长度(20字节),这是所有IP数据报必须具有的。
  • 首部固定部分的后面是选项和填充字段(长度可变)
  • 数据部分的长度也是可变的

版本——4位,指IP协议的版本。目前广泛使用的协议版本号为4 (IPv4)。通信双方的协议版本必须一致。

首部长度——4位,表示数据报首部的长度。因首部长度可表示的最大数值是15个单位(每单位为4 字节),所以IP的首部长度的最大值为60字节。当首部长度不足4字节的整数倍时,可利用填充字段加以填充补齐

区分服务——8位,表示对数据报的服务要求。前三位表示优先级(070最低)DTRC分别表示对时延、吞吐量、可靠性和路由服务费用有选择的要求。最后一位未用。该字段只有当使用区分服务时才使用。

总长度——16位,指整个数据报(包括首部和数据)的长度,单位为字节。数据报的最大长度为65535字节(64KB)。总长度必须不超过数据链路层的最大传送单元MTU。当数据报长度超过MTU时,需对其分片,此时的总长度是指分片后的每一分片(包括首部与数据) 的长度

标识(identification) ——16位,它用于数据报各分片最终被重装成来原来的数据报。它是一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。目的主机将相同标识字段值的各分片数据报最后进行正确地重装(合片)

标志(flag) ——3位,目前只有后两位有意义。最低位记作 MF (More Fragment)MF=1表示后面“还有分片”。MF=0表示已是最后一个分片。次低位是DF(Dont Fragment) 用来控制是否允许数据报分片。只有DF=0才允许分片。

片偏移——13位,指较长的分组在分片后某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始,以便目的主机重装数据报。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64)的整数倍。

 IP数据报分片举例:

  • 一数据报的总长度为 3820 字节,其数据部分长度为 3800 字节(使用固定首部),需要分片为长度不超过 1420 字节的数据报片。
  • 因固定首部长度为 20 字节,因此每个数据报片的数据部分长度不能超过 1400 字节。
  • 于是分为 3 个数据报片,其数据部分的长度分别为 14001400 1000 字节。
  • 原始数据报首部被复制为各数据报片的首部,但必须修改有关字段的值。

 

总长度

标识

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

 生存时间——8位,记为TTL(Time To Live),表示该数据所在网络中的寿命。其单位最初是秒,但为了方便,现在都用“跳数”作为TTL的单位。数据报每经过一个路由器,其TTL值就减 1,当TTL值减为零时,就丢弃这个数据报。

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

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

相关文章

redis客户端

3、Redis客户端 3.1 Redis自带的客户端 带密码进入客户端 [rootqianfeng01 redis-4.0.14]# src/redis-cli -h 192.168.10.101 -p 6379 -a root Warning: Using a password with -a option on the command line interface may not be safe. 192.168.10.101:6379> keys * (…

DevEco Studio4.0 Beta2集成ArkUI-X(开发鸿蒙,安卓.ios应用)/ACE Tools脚手架

ArkUI-X简介 ArkUI-X进一步将ArkUI扩展到了多个OS平台&#xff1a;目前支持OpenHarmony、HarmonyOS、Android、 iOS&#xff0c;后续会逐步增加更多平台支持。开发者基于一套主代码&#xff0c;就可以构建支持多平台的精美、高性能应用 该框架对应的IDE版本为 4.0 Beta2 &…

【Spark精讲】一文讲透SparkSQL聚合过程以及UDAF开发

SparkSQL聚合过程 这里的 Partial 方式表示聚合函数的模式&#xff0c;能够支持预先局部聚合&#xff0c;这方面的内容会在下一节详细介绍。 对应实例中的聚合语句&#xff0c;因为 count 函数支持 Partial 方式&#xff0c;因此调用的是 planAggregateWithoutDistinct 方法&a…

解决Windows11安装Docker 一直starting 的办法

Starting the Docker Engine... Docker Engine is the underlying technology that runs containers 关闭docker 管理员身份执行wsl --update后在启动。 另外&#xff0c;docker desktop-unexpected wsl error问题跟标题问题好像是同一个问题&#xff0c;我的是一直让其star…

往期精彩推荐

所有的内容都在这个博客中&#xff0c;此博客为推广导航博客&#xff0c;过后会删掉https://blog.csdn.net/weixin_41620184/article/details/135042416 往期精彩&#xff1a;快来学习吧~~~ 机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归PySpark大数据处…

electron autoUpdater自动更新使用示例 客户端+服务端

封装好的 update.js 模块 use strict; const { autoUpdater } require(electron) // 更新检测 // https://www.electronjs.org/zh/docs/latest/api/auto-updaterconst checkUpdate (serverUrl) >{const updateUrl ${serverUrl}/update?platform${process.platform}&am…

分布式技术之故障隔离技术

文章目录 什么是故障隔离&#xff1f;分布式故障隔离策略线程级隔离进程级隔离资源隔离故障隔离策略综合对比 什么是故障隔离&#xff1f; 故障隔离就是&#xff0c;把故障通过某种方式与其他正常模块进行隔离&#xff0c;以保证某一模块出现故障后&#xff0c;不会影响其他模…

C#,入门教程(02)—— Visual Studio 2022开发环境搭建图文教程

如果这是您阅读的本专栏的第一篇博文&#xff0c;建议先阅读如何安装Visual Studio 2022。 C#&#xff0c;入门教程(01)—— Visual Studio 2022 免费安装的详细图文与动画教程https://blog.csdn.net/beijinghorn/article/details/123350910 一、简单准备 开始学习、编写程序…

conda环境下nvrtc: error: invalid value for --gpu-architecture解决方法

1 问题描述 在运行视频处理的模型过程中&#xff0c;出现如下异常&#xff1a; nvrtc: error: invalid value for --gpu-architecture (-arch)nvrtc compilation failed: #define NAN __int_as_float(0x7fffffff) #define POS_INFINITY __int_as_float(0x7f800000) #define N…

CT图像处理实现杂记

用c#实现&#xff1a; 1 ct 文件说明&#xff1a; 说明数据文件 说明图像文件&#xff08;2进制 8位&#xff09; 一张CT图像有 512x512 个像素点&#xff0c;在dicom文件中每个像素由2字节表示&#xff0c;所以每张图片约512KB大小。图像中每个像素都是整数&#xff0c;专业…

近 300 个假冒应用程序泛滥成灾,淹没伊朗银行业

内容概述&#xff1a; 近期&#xff0c;针对伊朗银行业的大规模活动规模不断扩大&#xff0c;近 300 个恶意 Android 应用程序针对用户的账户凭据、信用卡和加密钱包发起攻击。四个月前&#xff0c;Sophos 的研究人员详细介绍了一场漫长的活动&#xff0c;涉及 40 个恶意银行应…

探索全新的设计境界——Autodesk AutoCAD 2020 for Mac/win中文版

在当今数字化时代&#xff0c;设计师们需要一个强大而灵活的工具来实现他们的创意。作为全球领先的设计软件提供商&#xff0c;Autodesk推出了全新的AutoCAD 2020&#xff0c;为设计师们打开了探索全新设计境界的大门。 AutoCAD 2020以其卓越的功能和直观的界面而闻名&#xf…

基于uibot知网文论采集机器人设计与实现

摘要 人工智能技术的不断更新迭代为财务数据自动化处理带来了新的机遇和挑战&#xff0c;如何通过人工智能等新兴技术来优化现有的财务流程&#xff0c; 创造更多的企业价值&#xff0c;成为财务信息自动化处理是目前的重点研究方向。机器人流 程自动化作为一种新型的自动化技…

C#使用switch多路选择语句判断何为季节

目录 一、 switch语句 二、示例 三、生成 一、 switch语句 switch语句是多路选择语句&#xff0c;它通过一个表达式的值来使程序从多个分支中选取一个用于执行的分支。 switch表达式的值只可以是整型、字符串、枚举和布尔类型。 switch语句中多个case可以使用一个break。 在…

ubuntu下编译obs-studio遇到的问题记录

参考的是这篇文档&#xff1a;Build Instructions For Linux obsproject/obs-studio Wiki GitHub 在安装OBS dependencies时&#xff0c; sudo apt install libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libswresample-dev libswscale-d…

Vue Tinymce富文本组件添加自定义字体项

实现效果如下&#xff1a; Tinymce 组件进行字体设置 设置完后&#xff0c;就可以使用自定义的字体了。

CLion中使用C/C++ Single File Execution插件编译和运行单个文件

在开发C/C程序时&#xff0c;尽管项目通常以组织良好的结构进行管理&#xff0c;但有时我们可能只需要快速测试或运行单个C或C源文件。对于这种情况&#xff0c;JetBrains CLion IDE提供了一个便捷的解决方案——通过安装名为“C/C Single File Execution”的插件来实现对单个源…

GcExcel:DsExcel 7.0 for Java Crack

GcExcel:DsExcel 7.0-高速 Java Excel 电子表格 API 库 Document Solutions for Excel&#xff08;DsExcel&#xff0c;以前称为 GcExcel&#xff09;Java 版允许您在 Java 应用程序中以编程方式创建、编辑、导入和导出 Excel 电子表格。几乎可以部署在任何地方。 创建、加载、…

【leetcode100-025】【链表/快慢指针】环形链表

【题干】 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&a…