网络层解读

基本介绍

概述

 当两台主机之间的距离较远(如相隔几十或几百公里,甚至几千公里)时,就需要另一种结构的网络,即广域网。广域网尚无严格的定义。通常是指覆盖范围很广(远超过一个城市的范围)的长距离的单个网络。它由一些结点交换机以及连接这些交换机的高速链路组成。将两个或多个计算机网络互联起来,就构成了互联网(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值减为零时,就丢弃这个数据报。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Opencv(C++)学习之cv::calcHist 任意bin数量进行直方图计算

**背景&#xff1a;**当前网上常见的直方图使用方法都是默认使用256的范围&#xff0c;而对于使用特定范围的直方图方法讲的不够清楚。仔细研究后总结如下&#xff1a; 1、常见使用方法&#xff0c;直接对灰度图按256个Bin进行计算。 Mat mHistUn; int channels[1] { 0 }; {…

AC——对HTTPS数据进行行为审计时的解密方式

目录 SSL中间人解密 客户端代理解密&#xff08;准入插件解密&#xff09; 深信服的AC提供两种SSL解密技术用于对https行为进行解密 中间人解密和准入插件解密 SSL中间人解密 解密工作原理 当内网PC端发起SSL连接请求的时候&#xff0c;AC会以代理服务器的身份&#xff0…

Mybatis枚举类型处理和类型处理器

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL Mybatis配置入门 Mybatis行为配置之Ⅰ—缓存 Mybatis行为配置…

Postman!IDEA中也能用!

Postman是大家最常用的API调试工具&#xff0c;那么有没有一种方法可以不用手动写入接口到Postman&#xff0c;即可进行接口调试操作&#xff1f;今天给大家推荐一款IDEA插件&#xff1a;Apipost Helper&#xff0c;写完代码就可以调试接口并一键生成接口文档&#xff01;而且还…

「微服务」Saga 模式 如何使用微服务实现业务事务-第二部分

在上一篇文章中&#xff0c;我们看到了实现分布式事务的一些挑战&#xff0c;以及如何使用Event / Choreography方法实现Saga的模式。在本文中&#xff0c;我们将讨论如何通过使用另一种类型的Saga实现&#xff08;称为Command或Orchestration&#xff09;来解决一些问题&#…

2024年原创深度学习算法项目分享

原创深度学习算法项目分享&#xff0c;包括以下领域&#xff1a; 图像视频、文本分析、知识图谱、推荐系统、问答系统、强化学习、机器学习、多模态、系统界面、爬虫、增量学习等领域… 有需要的话&#xff0c;评论区私聊

Unity Meta Quest 一体机开发(十二):【手势追踪】Poke 交互 - 用手指点击由 3D 物体制作的 UI 按钮

文章目录 &#x1f4d5;教程说明&#x1f4d5;给玩家配置 HandPokeInteractor&#x1f4d5;用 3D 物体制作可以被点击的 UI 按钮⭐搭建物体层级⭐给物体添加脚本⭐为脚本变量赋值 &#x1f4d5;模仿官方样例按钮的样式&#x1f4d5;在按钮上添加文字&#x1f4d5;修改按钮图片 …

linux安装rabbitmq

文章目录 前言一、下载安装包二、erlang1.安装依赖2.解压3.安装4.环境变量5.验证 三、rabbitmq1.安装依赖2.解压3.新建目录4.rabbitmq.env.conf5.rabbitmq.conf6.环境变量7.启动8.验证9.停止 四、安装web1.安装插件2.访问控制台界面 五、开机启动1.编写脚本2.设置开机启动3.测试…

c语言-string.h库函数初识

目录 前言一、库函数strlen()1.1 strlen()介绍1.2 模拟实现strlen() 二、库函数strcpy()2.1 strcpy()介绍2.2 模拟实现strcpy() 三、库函数strcmp()3.1 strcmp()介绍3.3 模拟实现strcmp() 总结 前言 本篇文章介绍c语言<string.h>头文件中的库函数&#xff0c;包含strlen…

从仿写持久层框架到MyBatis核心源码阅读

接上篇手写持久层框架&#xff1a;https://blog.csdn.net/liwenyang1992/article/details/134884703 MyBatis源码 MyBatis架构原理&主要组件 MyBatis架构设计 MyBatis架构四层作用是什么呢&#xff1f; API接口层&#xff1a;提供API&#xff0c;增加、删除、修改、查询…

Matlab技巧[绘画逻辑分析仪产生的数据]

绘画逻辑分析仪产生的数据 逻分上抓到了ADC数字信号,一共是10Bit,12MHZ的波形: 这里用并口协议已经解析出数据: 导出csv表格数据(这个数据为补码,所以要做数据转换): 现在要把这个数据绘制成波形,用Python和表格直接绘制速度太慢了,转了一圈发现MATLAB很好用,操作方法如下:…

若依(Spring boot)框架中如何在不同的控制器之间共享与使用数据

在若依框架或Spring boot框架中&#xff0c;控制器共享和使用数据是为了确保数据一致性、传递信息、提高效率和降低系统复杂性。这可以通过全局变量、依赖注入或数据库/缓存等方式实现。共享和使用数据对框架的正常运行非常关键&#xff0c;有助于促进控制器之间的协同工作&…

阶段十-分布式-nginx服务器

一、Nginx简介 Nginx 是高性能的 HTTP 和反向代理的服务器&#xff0c;处理高并发能力是十分强大的&#xff0c;能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。tomcat并发数量理论值是500&#xff0c;实际也就300左右。 1.2 正向代理 正向代理代理的是客户…

OpenGL FXAA抗锯齿算法(Qt)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 之前已经提供了使用VCG读取Mesh的方式,接下来就需要针对读取的网格数据进行一些渲染操作了。在绘制Mesh数据时总会遇到图形的抗锯齿问题,OpenGL本身已经为我们提供了一种MSAA技术,但该技术对于一些实时渲染性能有…

产品经理学习-从0-1搭建策略产品

从0-1搭建策略产品 目录&#xff1a; 回顾策略产品 如何从0-1搭建策略产品 回顾策略产品 之前也了解过从产品实施的角度来看&#xff0c;策略就是针对问题的解决方案&#xff0c;在互联网时代更集中体现在2个维度&#xff1a;业务场景和数据应用 如何从0-1搭建策略产品 我们…

交叉验证的种类和原理(sklearn.model_selection import *)

交叉验证的种类和原理 所有的来自https://scikit-learn.org/stable/modules/cross_validation.html#cross-validation-iterators并掺杂了自己的理解。 文章目录 前言一、基础知识1.1 交叉验证图形表示1.2 交叉验证主要类别 二、部分交叉验证函数&#xff08;每类一个&#xff0…

如何在VSCode搭建ESP-IDF开发ESP32

文章目录 概要安装VScode安装ESP-IDF插件使用官方例程小结 概要 ESP-IDF(Espressif IoT Development Framework) 即乐鑫物联网开发框架&#xff0c;它基于 C/C 语言提供了一个自给自足的 SDK&#xff0c;可为在 Windows、Linux 和 macOS 系统平台上开发 ESP32 应用程序提供工具…

旅游平台网页前后端

功能清单 游客功能 用户注册、登录登录权限拦截按名称搜索房间支付流程查看订单信息和状态评论预定过的房间&#xff0c;并自动修改订单状态查看统计剩余房间数量&#xff0c;数量为0时不可预定 管理员功能 房间分类管理 类型的删除、修改、查询&#xff08;准备添加增添功能…

3D展2D数学原理

今年早些时候&#xff0c;我为 MAKE 杂志写了一篇教程&#xff0c;介绍如何制作视频游戏角色的毛绒动物。 该技术采用给定的角色 3D 模型及其纹理&#xff0c;并以编程方式生成缝纫图案。 虽然我已经编写了一般摘要并将源代码上传到 GitHub&#xff0c;但我在这里编写了对使这一…

【大数据面试知识点】Spark的DAGScheduler

Spark数据本地化是在哪个阶段计算首选位置的&#xff1f; 先看一下DAGScheduler的注释&#xff0c;可以看到DAGScheduler除了Stage和Task的划分外&#xff0c;还做了缓存的跟踪和首选运行位置的计算。 DAGScheduler注释&#xff1a; The high-level scheduling layer that i…