导航:首页 > 网络连接 > 片偏移计算机网络

片偏移计算机网络

发布时间:2022-09-28 09:16:10

A. 网络层IP数据包的分片与重组时,片偏移长度的限制问题

TCP/IP协议中分包与重组原理介绍

分片是分组交换的思想体现,也是IP协议解决的两个主要问题之一。在IP协议中的分片算法主要解决不同物理网络最大传输单元(MTU) 的不同造成的传输问题。但是分组在传输过程中不断地分片和重组会带来很大的工作量还会增加一些不安全的因素。我们将在这篇小论文中讨论IP分片的原因、原理、实现以及引起的安全问题。

一、什么是IP分片

IP分片是网络上传输IP报文的一种技术手段。IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组。这一过程称为分片(fragmentation)。

二、为什么要进行IP分片

每一种物理网络都会规定链路层数据帧的最大长度,称为链路层MTU(Maximum Transmission Unit).IP协议在传输数据包时,若IP数据报加上数据帧头部后长度大于MTU,则将数据报文分为若干分片进行传输,并在目标系统中进行重组。比如说,在以太网环境中可传输最大IP报文大小(MTU)为1500字节。如果要传输的数据帧大小超过1500字节,即IP数据报长度大于1472(1500-20-8=1472,普通数据报)字节,则需要分片之后进行传输。

三、IP分片原理及分析

分片和重新组装的过程对传输层是透明的,其原因是当IP数据报进行分片之后,只有当它到达目的站时,才可进行重新组装,且它是由目的端的IP层来完成的。分片之后的数据报根据需要也可以再次进行分片。

IP分片和完整IP报文差不多拥有相同的IP头,ID域对于每个分片都是一致的,这样才能在重新组装的时候识别出来自同一个IP报文的分片。在IP头里面,16位识别号唯一记录了一个IP包的ID,具有同一个ID的IP分片将会重新组装;而13位片偏移则记录了某IP片相对整个包的位置;而这两个表中间的3位标志则标志着该分片后面是否还有新的分片。这三个标志就组成了IP分片的所有信息(将在后面介绍),接受方就可以利用这些信息对IP数据进行重新组织。

1、标志字段的作用

标志字段在分片数据报中起了很大作用,在数据报分片时把它的值复制到每片中的标志字段的其中一个比特称作“不分片”位,用其中一个比特来表示“更多的片”。除了最后一片外,其他每个组成数据报的片都要把该比特置1。片偏移字段指的是该片偏移原始数据报开始处的位置。另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。如果将标志字段的比特置1,则IP将不对数据报进行分片,若在某个中间路由器上需要对其分片,则仅仅把数据报丢弃并发送一个ICMP不可达差错报文给源主机。如果不是特殊需要,则不应该置1;最右比特置1表示该报文不是最后一个IP分片。故意发送部分IP分片而不是全部,则会导致目标主机总是等待分片消耗并占用系统资源。某些分片风暴攻击就是这种原理。这里以以太网为例,由于以太网传输电气方面的限制,每个以太网帧都有最小的大小64bytes最大不能超过1518bytes,抛去以太网帧的帧头(DMAC目的MAC地址48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和帧尾CRC校验部分4Bytes,那么剩下承载上层协议的地方也就是Data域最大就只能有1500Bytes,这就是前面所说的MTU的值。这个也是网络层协议非常关心的地方,因为网络层的IP协议会根据这个值来决定是否把上层传达下来的数据进行分片。就好比一个盒子没法装下一大块面包,我们需要把面包切成片,装在多个盒子里面一样的道理。

下面是标志位在IP首部中的格式以及各个标志的意义:

Identification
R
DF
MF
Fragment Offset

R:保留未用;DF:Don’t Fragment,“不分片”位,如果将这一比特置1,IP 层将不对数据报进行分片;MF:More Fragment,“更多的片”,除了最后一片外,其它每个组成数据报的片都要把比特置1;Fragment Offset:该片偏移原始数据包开始处的位置。偏移的字节数是该值乘以8。

2、MTU原理

当两台远程PC需要通信的时候,它们的数据需要穿过很多的路由器和各种各样的网络媒介才能到达对端,网络中不同媒介的MTU各不相同,就好比一长段的水管,由不同粗细的水管组成(MTU不同)通过这段水管最大水量就要由中间最细的水管决定。

对于网络层的上层协议而言(这里以TCP/IP协议族为例)它们对“水管”粗细不在意,它们认为这个是网络层的事情。网络层IP协议会检查每个从上层协议下来的数据包的大 小,并根据本机MTU的大小决定是否作“分片”处理。分片最大的坏处就是降低了传输性能,本来一次可以搞定的事情,分成多次搞定,所以在网络层更高一层(就是传输层) 的实现中往往会对此加以注意!有些高层因为某些原因就会要求我这个面包不能切片,我要完整地面包,所以会在IP数据包包头里面加上一个标签:DF(Don‘t Fragment)。这样当这个IP数据包在一大段网络(水管里面)传输的时候,如果遇到MTU小于IP数据包的情况,转发设备就会根据要求丢弃这个数据包。然后返回一个错误信息给发送者。这样往往会造成某些通讯上的问题,不过幸运的是大部分网络链路MTU都是1500或者大于1500(仅X.25网络的576和点对点网络的296小于1500)。

对于UDP协议而言,这个协议本身是无连接的协议,对数据包的到达顺序以及是否正确到达并不关心,所以一般UDP应用对分片没有特殊要求。

对于TCP协议而言就不一样了,这个协议是面向连接的协议,对于TCP协议而言它非常在意数据包的到达顺序以及是否传输中有错误发生。所以有些TCP应用对分片有要求---不能分片(DF)。

3、MSS的原理

MSS(Maxmum Sigmentation Size)就是TCP数据包每次能够传输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20字节和TCP数据段的包头20字节)所以往往MSS为1460。通讯双方会根据双方提供的MSS值的最小值确定为这次连接的最大MSS值。

当IP数据报被分片后,每一片都成为一个分组,具有自己的IP首部,并在选择路由时与其他分组独立。这样,当数据报的这些片到达目的端时有可能会失序,但是在IP首部中有足够的信息让接收端能正确组装这些数据报片。

尽管IP分片过程看起来是透明的,但有一点让人不想使用它:即使只丢失一片数据也要重传整个数据报。因为IP层本身没有超时重传的机制——由更高层来负责超时和重传(TCP有超时和重传机制,但UDP没有。一些UDP应用程序本身也执行超时和重传)。当来自TCP报文段的某一片丢失后,TCP在超时后会重发整个TCP报文段,该报文段对应于一份IP数据报。没有办法只重传数据报中的一个数据报片。事实上,如果对数据报分片的是中间路由器,而不是起始端系统,那么起始端系统就无法知道数据报是如何被分片的。就这个原因,经常需要避免分片。

四、IP分片算法的原理

分片重组是IP层一个最重要的工作,其处理的主要思想:当数据包从一个网络A进入另一个网络B时,若原网络的数据包大于另一个网络或者接口的MTU长度,则需要进行分片(若设置DF为1,则丢弃,并回送ICMP不可达差错报文)。因而在IP数据包的报头有若干标识域注明分片包的共同标识号、分片的偏移量、是否最后一片及是否允许分片。传输途中的网关利用这些标识域进可能的再行分片,目有主机把收到的分片进行重组以恢重数据。因此,分片包在经过网络监测设备、安全设备、系统管理设备时,为了获取信息、处理数据,都必须完成数据包的分片或重组。

五、IP分片的安全问题

IP分片是在网络上传输IP报文时常采用的一种技术,但是其中存在一些安全隐患。Ping of Death, teardrop等攻击可能导致某些系统在重组IP分片的过程中宕机或者重新启动。一些IP分片攻击除了用于进行拒绝服务攻击之外,还常用于躲避防火墙或者网络入侵检测系统的一种手段。部分路由器或者基于网络的入侵检测系统(NIDS),由于IP分片重组能力的欠缺,导致无法进行正常的过滤或者检测。

介绍一下Tiny fragment 攻击:

所谓Tiny fragment攻击是指通过恶意操作,发送极小的分片来绕过包过滤系统或者入侵检测系统的一种攻击手段。攻击者通过恶意操作,可将TCP报头(通常为20字节)分布在2个分片中,这样一来,目的端口号可以包含在第二个分片中。对于包过滤设备或者入侵检测系统来说,首先通过判断目的端口号来采取允许/禁止措施。但是由于通过恶意分片使目的端口号位于第二个分片中,因此包过滤设备通过判断第一个分片,决定后续的分片是否允许通过。但是这些分片在目标主机上进行重组之后将形成各种攻击。通过这种方法可以迂回一些入侵检测系统及一些安全过滤系统。目前一些智能的包过滤设备直接丢掉报头中未包含端口信息的分片

B. 计算机网络:网络层(2)

如图,一个IP数据报由首部和数据两部分组成。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。

(1)版本
占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。也有使用IPv6的(即版本6的IP协议)。
(2)首部长度
占4位,可表示的最大十进制数值是15。 这个字段所表示数的单位是32位字(1个32位字长是4字节),因此,当I的首部长度为1111时(即十进制的15),首部长度就达到最大值60字节。当分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。 因此数据部分永远在4字节的整数倍时开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。
(3)区分服务
占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年ITF把这个字段改名为区分服务DS( Differentiated Services。只有在使用区分服务时,这个字段才起作用。在一般的情况下都不使用这个字段。
(4)总长度
总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为216-1=65535字节。
在IP层下面的每一种数据链路层都有其自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU( Maximum Transfer Unit)。当一个IP数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。虽然使用尽可能长的数据报会使传输效率提高,但由于以太网的普遍应用,所以实际上使用的数据报长度 很少有超过1500字节 的。为了不使IP数据报的传输效率降低,有关IP的标准文档规定,所有的主机和路由器必须能够处理的IP数据报长度不得小于576字节。这个数值也就是最小的IP数据报的总长度。当数据报长度超过网络所容许的最大传送单元MTU时,就必须把过长的数据报进行分片后才能在网络上传送。这时,数据报首部中的“总长度”字段不是指未分片前的数据报长度,而是指分片后的每一个分片的首部长度与数据长度的总和。
(5)标识 (identification)
占16位。软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
(6)标志(flag)
占3位,但目前只有两位有意义。
标志字段中的最低位记为 MF ( More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若千数据报片中的最后一个。
标志字段中间的一位记为 DF (Dont Fragment),意思是“不能分片”。只有当DF=0时才允许分片。
(7)片偏移
占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。
(8)生存时间
占8位,生存时间字段常用的英文缩写是TTL( Time To live),表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子(例如从路由器R1转发到R2,再转发到R3,然后又转发到R1),因而白白消耗网络资源。最初的设计是以秒作为TTL值的单位。每经过一个路由器时,就把TTL减去数据报在路由器所消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值减为零时,就丢弃这个数据报然而随着技术的进步,路由器处理数据报所需的时间不断在缩短,一般都远远小于1秒钟,后来就把TTL字段的功能改为“跳数限制”(但名称不变)。路由器在转发数据报之前就把TTL值减1。若TTL值减小到零,就丢弃这个数据报,不再转发。因此,现在TTL的单位不再是秒,而是跳数。 TTL的意义是指明数据报在因特网中至多可经过多少个路由器 。显然,数据报能在因特网中经过的路由器的最大数值是255。若把TTL的初始值设置为1,就表示这个数据报只能在本局域网中传送。因为这个数据报一传送到局域网上的某个路由器,在被转发之前TTL值就减小到零,因而就会被这个路由器丢弃。
(9)协议
占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。

过程大致如下:
(1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N。
(2)若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付给目的主机(这里包括把目的主机地址D转换为具体的硬件地址,把数据报封装为MAC帧,再发送此帧);否则就是间接交付,执行(3)。
(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
(4)若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(5)
(5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。
(6)报告转发分组出错。

在进行更详细的转发解释之前,先要了解一下子网掩码:

上一篇说到了二级IP地址,也就是IP地址由网络号和主机号组成。

二级IP地址有以下缺点:
第一,IP地址空间的利用率有时很低每一个A类地址网络可连接的主机数超过1000万,而每一个B类地址网络可连接的主机数也超过6万。然而有些网络对连接在网络上的计算机数目有限制,根本达不到这样大的数值。例如10 BASE-T以太网规定其最大结点数只有1024个。这样的以太网若使用一个B类地址就浪费6万多个IP地址,地址空间的利用率还不到2%,而其他单位的主机无法使用这些被浪费的地址。有的单位申请到了一个B类地址网络,但所连接的主机数并不多,可是又不愿意申请一个足够使用的C类地址,理由是考虑到今后可能的发展。IP地址的浪费,还会使IP地址空间的资源过早地被用完。
第二,给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
每一个路由器都应当能够从路由表査出应怎样到达其他网络的下一跳路由器。因此,互联网中的网络数越多,路由器的路由表的项目数也就越多。这样,即使我们拥有足够多的IP地址资源可以给每一个物理网络分配一个网络号,也会导致路由器中的路由表中的项目数过多。这不仅增加了路由器的成本(需要更多的存储空间),而且使查找路由时耗费更多的时间,同时也使路由器之间定期交换的路由信息急剧增加,因而使路由器和整个因特网的性能都下降了。
第三,两级IP地址不够灵活。
有时情况紧急,一个单位需要在新的地点马上开通一个新的网络。但是在申请到一个新的IP地址之前,新增加的网络是不可能连接到因特网上工作的。我们希望有一种方法,使一个单位能随时灵活地增加本单位的网络,而不必事先到因特网管理机构去申请新的网络号。原来的两级IP地址无法做到这一点。

于是为解决上述问题,从1985年起在IP地址中又增加了一个“子网号字段”,使两级IP地址变成为三级IP地址,它能够较好地解决上述问题,并且使用起来也很灵活。这种做法叫作划分子网 (subnetting),或子网寻址或子网路由选择。划分子网已成为因特网的正式标准协议。

划分子网的基本思路如下:
(1)一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网 subnet)。划分子网纯属一个单位内部的事情。本单位以外的网络看不见这个网络是由多少个子网组成,因为这个单位对外仍然表现为一个网络。
(2)划分子网的方法是从网络的主机号借用若干位作为子网号 subnet-id,当然主机号也就相应减少了同样的位数。于是两级IP地址在本单位内部就变为三级IP地址:网络号、子网号和主机号。也可以用以下记法来表示:
IP地址:=(<网络号>,<子网号>,<主机号>}

(3)凡是从其他网络发送给本单位某个主机的IP数据报,仍然是根据IP数据报的目的网络号找到连接在本单位网络上的路由器。但此路由器在收到IP数据报后,再按目的网络号和子网号找到目的子网,把IP数据报交付给目的主机。

简单来说就是原来的IP地址总长度不变,把原来由“网络号+主机号”组成的IP地址,变为了“网络号+子网号+主机号”,因为其他网络找当前网络的主机时,使用的还是网络号,所以外面的网看不见当前网络的子网。当本网的路由器在收到IP数据报后,按目的网络号和子网号找到目的子网,把IP数据报交付给目的主机。

现在剩下的问题就是:假定有一个数据报(其目的地址是145.133.10)已经到达了路由器R1。那么这个路由器如何把它转发到子网145.3.3.0呢?
我们知道,从IP数据报的首部并不知道源主机或目的主机所连接的网络是否进行了子网的划分。这是因为32位的IP地址本身以及数据报的首部都没有包含任何有关子网划分的信息。因此必须另外想办法,这就是使用子网掩码( (subnet mask)。

子网掩码,简单来说就是把除了主机号设置为0,其他位置的数字都设置为1。
以B类地址为例:

把三级IP地址的网络号与子网号连起来,与子网掩码做“与”运算,就得到了子网的网络地址。

在因特网的标准规定:所有的网络都必须使用子网掩码,同时在路由器的路由表中也必须有子网掩码这一栏。如果一个网络不划分子网,那么该网络的子网掩码就使用默认子网掩码。
那么既然没有子网,为什么还要使用子网掩码?
这就是为了更便于査找路由表。
默认子网掩码中1的位置和IP地址中的网络号字段 net-id正好相对应。因此,若用默认子网掩码和某个不划分子网的IP地址逐位相“与”(AND),就应当能够得出该IP地址的网络地址来。这样做可以不用查找该地址的类别位就能知道这是哪一类的IP地址。显然,

子网掩码是一个网络或一个子网的重要属性。在RFC950成为因特网的正式标准后,路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。在路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。
以一个B类地址为例,说明可以有多少种子网划分的方法。在采用固定长度子网时,所划分的所有子网的子网掩码都是相同的。

表中的“子网号的位数”中没有0,1,15和16这四种情况,因为这没有意义。虽然根据已成为因特网标准协议的RFC950文档,子网号不能为全1或全0,但随着无分类域间路由选择CIDR的广泛使用,现在全1和全0的子网号也可以使用了,但一定要谨慎使用,要弄清你的路由器所用的路由选择软件是否支持全0或全1的子网号。这种较新的用法我们可以看出,若使用较少位数的子网号,则每一个子网上可连接的主机数就较多。
反之,若使用较多位数的子网号,则子网的数目较多但每个子网上可连接的主机数就较少因此我们可根据网络的具体情况(一共需要划分多少个子网,每个子网中最多有多少个主机)来选择合适的子网掩码。

所以,划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。

在划分子网的情况下,分组转发的算法必须做相应的改动。
使用子网划分后,路由表必须包含以下三项内容:目的网络地址、子网掩码和下一跳地址。
所以之前的流程变成了下面这样:
(1)从收到的数据报的首部提取目的IP地址D。
(2)先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相“与”(AND操作),看结果是否和相应的网络地址匹配。若匹配,则把分组进行直接交付(当然还需要把D转换成物理地址,把数据报封装成帧发送出去),转发任务结束。否则就是间接交付,执行(3)。
(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
(4)对路由表中的每一行(目的网络地址,子网掩码,下一跳地址),用其中的子网掩码和D逐位相“与”(AND操作),其结果为N。若N与该行的目的网络地址匹配,则把数据报传送给该行指明的下一跳路由器;否则,执行(5)。
5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)
(6)报告转发分组出错。

C. 计算机网络

总长度减报头2220-20=2200(Byte)
最大传输单元减去报头700-20=680(Byte)
2200有几个680?2200=3*680+160,那么就要分4个报片

题目不是说了报头20字节吗?每片报头都是20字节(报头不是隐藏属性吗。。)
数据的长度分别是680、680、680、160

第一片式就是开始位置:0byte,值是0
第二片680Byte,值是680/8=85
第三片2*680Byte,值是2*680/8=170
第四片3*680Byte,值是3*680/8=255
(为什么要除以8?片偏移以八个字节为偏移单位)

MF为1时,说明后面还有数据,为0就说明传完了
MF分别为1,1,1,0

D. 那么应该划分为几个短些的数据报片各数据报片得数据字段长度,片偏移字段和MF标志各为何数值

首先ip数据报首部20还剩1460,最大为500,再加上除最后一分片外,其它分片长度必须为8的整数倍,所以分为3片长度分别为496,496,468,偏移量分别为0/8,4968,496•2/8。MF分别为1,1,0。

例如:

3片;

第一片:数据字段长度1480、片偏移是0,MF是1;

第二片:数据字段长度1480、片偏移是185,MF是1;

第三片:数据字段长度1020、片偏移是370和MF是0。

(4)片偏移计算机网络扩展阅读:

首部长度:占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字(1个32位字长是4字节),因此,当IP的首部长度为1111时,首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。

因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。

E. 计算机网络中IP数据报的片偏移计算

偏移量实际指的是,分片中的数据的起始位置在原来不分片的数据中的位置,不用考虑头部长度,再有就是偏移量的单位是8个字节,这个8字节是规定好的,不是计算出来的。也就是一个偏移量就是8个字节,125个偏移量就是1000字节。回到你这个题,三个分片是1000,1000,430,根据我前面说的,那么第一个分片中的数据的偏移量就是这个分片中的数据的起始位置在原来不分片的数据中的位置,就是0,第二个分片数据的起始位置在原来数据是第1000个,也就是偏移了125个单位,

F. 关于计算机网络

报文3200+160=3360bit
因为局域网只能传1200bit,所以要切片,每个切片前面还要加20bit(没记错的话)的首部,也就是1200bit中只有1180bit能用来传报文。
3360/1180=3片

共需传播的数据量为3360+3*20=3420bit
第二个局域网所能传送的最长数据帧中的数据部分只有1200bit,即每个IP数据片的数据部分<1200-160(bit),由于片偏移是以8字节即64bit为单位的,所以IP数据片的数据部分最大不超过1024bit,这样3200bit的报文要分4个数据片,所以第二个局域网向上传送的比特数等于(3200+4×160),共3840bit。

G. 计算机网络工程

数据报长度为4000字节,分组头长度为20字节,MTU长度为1500字节,那么可以分成3片,原始分组的数据编号为0~3999
第1分片:编号为0~1479的数据作为第一分片的数据,复制原分组头(标志和片偏移值除外),原分组头与第一分片的数据就构成了第一分片,由于是初始的分片,因此片偏移值为0
第2分片:编号为1480~2959的数据作为第2分片的数据,复制原分组头(标志和片偏移值除外),原分组头与第2分片的数据就构成了第2分片,由于该分片的第一个数据编码号为1480,片偏移值是以8字节为单位来计数的,因此片偏移值为185
第3分片:编号为2960~3999的字节作为第3分片的数据,复制原分组头(标志和片偏移值除外),原分组头与第3分片的数据就构成了第3分片,由于该分片的第一个数据编码号为2960,片偏移值是以8字节为单位来计数的,因此第三分片的偏移值为370,第三分片的字节长度小于MTU长度
图就不画了,
望才纳!

H. 计算机网络(四)网络层

主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。

链路层数据帧可封装数据的上限称为最大传送单元MTU

标识:同一数据报的分片使用同一标识。

中间位DF(Don’t Fragment):

最低位MF(More Fragment):

片偏移:指出较长分组分片后,某片在原分组中的相对位置。以8B为单位。除了最后一个分片,每个分片长度一定是8B的整数倍。

IP地址:全世界唯一的32位/4字节标识符,标识路由器主机的接口。IP地址::={<网络号>,<主机号>}

有一些IP地址是不能用的,有其特殊的作用,如:

网络地址转换NAT(Network Address Translation):在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址。

此外,为了网络安全,划分出了部分IP地址和私有IP地址,私有IP地址网段如下:

路由器对目的地址是私有IP地址的数据报一律不进行转发。

分类的IP地址的弱点:

某单位划分子网后,对外仍表现为一个网络,即本单位外的网络看不见本单位内子网的划分。

路由器转发分组的算法:

无分类域间路由选择CIDR:

CIDR记法:IP地址后加上“/”,然后写上网络前缀(可以任意长度)的位数。e.g. 128.14.32.0/20

CIDR把网络前缀都相同的连续的IP地址组成一个“CIDR地址块”。

使用CIDR时,查找路由表可能得到几个匹配结果(跟网络掩码按位相与),应选择具有最长网络前缀的路由。前缀越长,地址块越小,路由越具体。

将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合。方法:将网络前缀缩短(所有网络地址取交集)。

由于在实际网络的链路上传送数据帧时,最终必须使用MAC地址。

ARP协议:完成主机或路由器IP地址到MAC地址的映射。

ARP协议使用过程:

ARP协议4种典型情况:

动态主机配置协议DHCP是 应用层 协议,使用 客户/服务器 方式,客户端和服务端通过 广播 方式进行交互,基于 UDP

DHCP提供即插即用联网的机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许地址重用,支持移动用户加入网络,支持在用地址续租。

DHCP工作流程如下:

ICMP协议支持主机或路由器:包括差错(或异常)报告和网络探询,分部发送特定ICMP报文

ICMP差错报告报文(5种):

不应发送ICMP差错报文的情况:

ICMP询问报文:

ICMP的应用:

32位IPv4地址空间已分配殆尽,这时,可以采用更大地址空间的新版本的IPv6,从根本上解决地址耗尽问题

IPv6数据报格式如下图

IPv6的主要特点如下:

IPv6地址表示形式:

零压缩:一连串连续的0可以被一对冒号取代。双冒号表示法在一个地址中仅可出现一次。

IPv6基本地址类型:

IPv6向IPv4过渡的策略:

R1的路由表/转发表如下:

最佳路由:“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。

路由算法可分为

由于因特网规模很大且许多单位不想让外界知道自己的路由选择协议,但还想连入因特网,可以采用自治系统来解决

自治系统AS:在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由协议以确定在AS之间的路由。

一个AS内的所有网络都属于一个行政单位来管辖,一个自治系统的所有路由器在本自治系统内都必须连通。

路由选择协议

RIP是一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单。

RIP协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离 [1] 记录(即一组距离)。 RIP协议只适用于小互联网。

RIP是应用层协议,使用 UDP 传送数据。一个RIP报文最多可包括25个路由,如超过,必须再用一个RIP报文传送。

RIP协议的交换

路由器刚开始工作时,只知道直接连接的网络的距离(距离为1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。

经过若干次更新后,所有路由器最终都会知道到达本自治系统任何一个网络的最短距离和下一跳路由器的地址,即“收敛”。

RIP的特点:当网络出现故障时,要经过比较长的时间(例如数分钟) 才能将此信息传送到所有的路由器,“慢收敛”。

对地址为X的相邻路由器发来的RIP报文,修改此报文中的所有项目:把“下一跳”字段中的地址改为X,并把所有的“距离”字段+1。

开放最短路径优先OSPF协议:“开放”标明OSPF协议不是受某一家厂商控制,而是公开发表的;“最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF。OSPF最主要的特征就是使用分布式的链路状态协议。 OSPF直接用IP数据报传送。

OSPF的特点:

为了使OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域。每一个区域都有一个32 位的区域标识符(用点分十进制表示)。区域也不能太大,在一个区域内的路由器最好不超过200 个。

BGP 所交换的网络可达性的信息就是要到达某个网络所要经过的一系列AS。当BGP 发言人互相交换了网络可达性的信息后,各BGP 发言人就根据所采用的策略从收到的路由信息中找出到达各AS 的较好路由。

一个BGP 发言人与其他自治系统中的BGP 发言人要交换路由信息,就要先建立TCP 连接,即通过TCP传送,然后在此连接上交换BGP 报文以建立BGP 会话(session),利用BGP 会话交换路由信息。 BGP是应用层协议,借助TCP传送。

BGP协议特点:

BGP-4的四种报文

组播提高了数据传送效率。减少了主干网出现拥塞的可能性。组播组中的主机可以是在同一个物理网络,也可以来自不同的物理网络(如果有组播路由器的支持)。

IP组播地址让源设备能够将分组发送给一组设备。属于多播组的设备将被分配一个组播组IP地址(一群共同需求主机的相同标识)。

组播地址范围为224.0.0.0~239.255.255.255(D类地址),一个D类地址表示一个组播组。只能用作分组的目标地址。源地址总是为单播地址。

同单播地址一样,组播IP地址也需要相应的组播MAC地址在本地网络中实际传送帧。组播MAC地址以十六进制值01-00-5E打头,余下的6个十六进制位是根据IP组播组地址的最后23位转换得到的。

TCP/IP 协议使用的以太网多播地址的范围是:从01-00-5E-00-00-00到01-00-5E-7F-FF-FF .

收到多播数据报的主机,还要在IP 层利用软件进行过滤,把不是本主机要接收的数据报丢弃。

ICMP和IGMP都使用IP数据报传递报文。组播路由器知道的成员关系只是所连接的局域网中有无组播组的成员。

IGMP工作的两个阶段:

只要有一个主机对某个组响应,那么组播路由器就认为这个组是活跃的;如果经过几次探询后没有一个主机响应,组播路由器就认为本网络上的没有此组播组的主机,因此就不再把这组的成员关系发给其他的组播路由器。

组播路由协议目的是找出以源主机为根节点的组播转发树。构造树可以避免在路由器之间兜圈子。对不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树。

组播路由选择协议常使用的三种算法:

移动IP技术是移动结点(计算机/服务器等)以 固定的网络IP地址 ,实现跨越不同网段的 漫游 功能,并保证了基于网络IP的网络权限在漫游过程中不发生任何改变。

路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。

若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。 路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。

路由器(网络层)可以互联两个不同网络层协议的网段。
网桥(链路层)可以互联两个物理层和链路层不同的网段。
集线器(物理层)不能互联两个物理层不同的网段。

路由表根据路由选择算法得出的,主要用途是路由选择,总用软件来实现。

转发表由路由表得来,可以用软件实现,也可以用特殊的硬件来实现。转发表必须包含完成转发功能所必需的信息,在转发表的每一行必须包含从要到达的目的网络到输出端口和某些MAC地址信息的映射。

I. 计算机网络方面的计算机题,请帮忙回答,关于数据报的

题意不是很清楚.从“数据报”这一名词,我推测你说的是IP层。

显然,IP层的固定首部为20个字节:
所以要发送的信息数据长度为:5000-20=4800(字节)
分片为:4800/1600=3(^_^,太巧合了);
所以各数据片的数据长度为:1600字节;

下面说说片偏移
首先你要明白片偏移是以8个字节为单位的。
所以第一片的片偏移为:0;
第二片为:1600/8=200;
第三片为:1600/8+200=400;

最后说说MF标志:
MF全称为more fragment,意思为还有分片吗?
显然有三个分片,所以MF分别为:
1,1,0。

最后给你补一点小知识:
IP首部还有一个叫DF的字段,该字段全称为:don't fragment,意思是不能分片。如果该字段为一,数据报就不会分片,如果出现题目超最大长度的现象,则返回的是ICMP差错报告报文;显然此题中数据报DF字段为0,才能出现以上我讨论的情况。

^_^,给分我吧。

J. 计算机网络中片偏移可以为小数吗

不可以,片偏移是通过求余数算出来的,而被除数和除数都不可能是小数,都是数据块的字节序号

阅读全文

与片偏移计算机网络相关的资料

热点内容
网络忘记密码能打开吗 浏览:64
公司内网用的什么网络 浏览:729
网络营销与策划四种风险决策方法 浏览:496
网络wifi修复app 浏览:353
提示电脑网络错误 浏览:543
腾讯网络安全中心游戏安全知识答题 浏览:110
为什么手机注册不到4g网络 浏览:388
用友网络是什么公司 浏览:273
苹果手机为什么没有网络呢 浏览:270
网络安全更 浏览:379
坦克世界账号密码连不上网络 浏览:726
云堤具备哪些网络安全能力 浏览:226
adsl用无线网络吗 浏览:681
甘肃售后服务好的网络公司哪个好 浏览:453
如何打通一个网络 浏览:830
新华网络电视怎样连接wifi 浏览:31
北京网络seo优化电话多少 浏览:697
派出所网络安全培训简报 浏览:899
苹果8p怎样设置成5g网络 浏览:16
网络安全提供商有哪些公司 浏览:432

友情链接