zoukankan      html  css  js  c++  java
  • 计算机网络复习笔记(第四章 网络层 1)

    最重要的一章了

    第一部分

    第4章 网络层

    4.1 网络层提供的两种服务

    4.2 网际协议IP

    4.2.1 虚拟互连网络

    4.2.2 分类的IP地址

    4.1 网络层提供的两种服务

    互联网的网络层协议简称为IP(Internet Protocol,互联网协议)。

    IP协议又称为网际协议,因为它是用来将不同的物理网络连接起来的协议。
    :这里所说的“不同物理网络”不一定是运行方式不同的网络,如以太网和某一个非以太网。它可以指两个以太网。因为以太网是有地理范围限制的,那么,IP协议就是将两个或多个以太网连接起来,使得这些网络上的站点能够超越以太网的物理范围,而实现相互通信的协议。

    因特网网络层的设计思路是(教材P114,第2段):网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。

    :互联网的设计者最初为IP层的PDU命名为“数据报”(datagram)。其实数据报(或IP数据报)就是更具专业性的“分组”或包(packet)。

    IP层采用了极简的设计与实现(教材P114,第3段):
    网络在发送分组时不需要先建立连接;
    每一个分组(也就是IP数据报)独立发送,与其前后的分组无关(不进行编号);
    网络层不提供服务质量保证,即所传送的分组可能出错、丢失、重复和失序(即不按序到达终点),当然也不保证分组交付的时限。

    :IP层的这种极简设计使得网络中的路由器有极高的运行效率,且造价低廉(与传统电信网的交换机相比较),从而使得整个IP网络的造价大大降低,且运行方式灵活,能够适应多种应用。互联网能够发展到今日的规模,充分证明了当初采用这种极简设计与实现思路的正确性。


    现在都是数据包服务 以往还有虚电路服务




    4.2 网际协议IP

    网际协议IP又称为Kahn-Cerf 协议,因为这个重要协议是Robert Kahn和Vint Cerf 二人共同研发的。他们对于计算机科学与技术学科的这个重要贡献使其获得了2005年的图灵奖(即计算机科学领域的诺贝尔奖)。

    See the source image

    :这里讲述的IP协议是IP的第4个版本,为IPv4。后面的4.6节将会简要介绍IP的新版,即IPv6。如无特别说明,说到IP均是指IPv4。

    Internet的网络体系结构

    为了对Internet的网络层有宏观性的了解,我们在这里将第1周周五课中曾经学习过的五层的Internet体系结构复制到下面。

    特别注意的是:Internet的网络层不只有IP协议,还有三个辅助的协议,ARP、ICMP和IGMP协议。

    ARP:Address Resolution Protocol,地址解析协议

    ICMP:Internet Control Message Protocol,网际控制报文协议

    IGMP:Internet Group Management Protocol,网际组管理协议

    其中ARP协议和ICMP协议将是我们重点讲述的协议。

    :需要注意ARP协议要画在IP层的右下角,ICMP和IGMP协议要画在IP层的左上角。学习了ARP和ICMP协议后,就会明白为什么会这样画了。

    4.2.1 虚拟互连网络

    网络互连的中间设备

    将网络互相连接起来要使用一些中间设备,根据所在的层次,可以有以下四种不同的中间设备:

    1. 物理层使用的中间设备叫做转发器(repeater)。

    2. 数据链路层使用的中间设备叫做网桥或桥接器(bridge)。

    3. 网络层使用的中间设备叫做路由器(router)。

    4. 在网络层以上使用的中间设备叫做网关(gateway)。


    :由于历史的原因,网络层使用的路由器有时也称为网关或交换机,这时需要明确的是它是第三层的网关和交换机。

    虚拟的互联网络

    互联网是将许多物理的计算机网络通过路由器使用IP协议互连而构成的一个可无限扩展的网络,如下图所示(参见教材图4-3(a),P117),这些物理的计算机网络可能是异构的,即物理层和数据链路层机制(协议)是很不相同的。

    对于用户(确切地说是接入互联网的一个主机)来说,他所感知到网络就是一个运行着IP协议的网络,如下图所示(参见教材图4-3(b),P117),这样的一个互连网络又常称为虛拟互连网络(virtual internet),意思是看起来像“一个”IP网络,但实际上是由IP协议连接起来的许多异构的物理网络。

    直接交付与间接交付

    参见教材图4-4(P118)及117页上相关的解释。

    4.2.2 分类的IP地址

    IP地址及其记法

    在网络层上定位一个主机需要赋予主机一个编号,这类的编号常称为地址。

    IP协议为主机确定的地址称为IP地址。对于我们讨论的IPv4协议来说,其地址严格地说称为IPv4地址。

    :今后如不特别说明,说到IP都指的是IPv4。

    IP地址是一个4字节32位的数字,如:10000000 00001011 00000011 00011111。

    显然用二进制书写IP地址太繁琐,人们常使用“点分十进制记法”(dotted decimal notation),即将每个字节转换为十进制数,数字中间用点分开的方式来表达IP地址。

    如上面二进制的IP地址对应的点分十进制记法是:128.11.3.31。

    IP地址的两级表示法及ABC分类

    为便于分配IP地址,IP地址被分成了网络号和主机号两部分,或两个级别

    IP地址分成网络号和主机号可以显著减小路由器中路由表的规模,提高路由表的查找效率,因为在路由表中可以只包含网络号,不必包含每一个主机号。

    为适应不同规模和应用的网络号分配,IP地址被分成了A、B、C、D、E五个类别,其中D类为多播地址,E类为保留地址。常用的也是读者应特别注意掌握的地址类是A、B和C类

    IP地址的分类是通过地址的最高位进行的,如下图所示(参见教材图4-5,P119)。

    可以看出,A类地址是最高位为0的地址,它占所有地址中的一半;B类地址是最高位为1、次高位为0的地址,,它占所有地址中的1/4;C类地址是最高位和次高位为1、再其次高位为0的地址,它占所有地址中的1/8。

    各类地址的网络号和主机号的位数不同。A类、B类和C类地址的网络号分别是8位(1个字节)、16位(2个字节)和24位(3个字节);而他们的主机号分别是24位(3个字节)、16位(2个字节)和8位(1个字节)。

    注1:设置不同字节数的网络号(因而一个网络中可以容纳的主机数就不同)是为了适应不同规模网络的需求。

    注2:正如教材中所指出的(P119,倒数第4段),“由于近年来已经广泛使用无分类IP地址进行路由选择,A类、B类和C类地址的区分已成为历史[RFC1812]”。但是学习IP地址的A、B、C分类知识还是很有必要的。

    注3:无分类IP地址将在4.3.3节中学习。

    关于A、B、C类地址的可用网络数和主机数,教材总结在了表4-2(P121)中,相关的解释在教材120页上也讲得很详细,这部分内容属于重点掌握的内容,读者应注意通过教材学习掌握。

    IP地址的分配示例

    下图给出了IP地址分配的一个示例(参见教材图4-7, P22),说明如下。

    1. 图中使用C类地址给6个网络分配了IP地址,网络号分别为221.1.1.0~221.1.6.0。
      :主机号为0的地址用来表示一个网络。

    2. 路由器之间的连接尽管用了一条线表示,但它应看成是一个网络,也需要为它分配一个网络号。
      :实际中,如果路由器间确实是点对点连接,即它们之间的网络上只有两个端点上的路由器时,就不用分配IP网络号,也就不用分配IP地址,免去了许多浪费。

    3. 路由器要连接多个网络,它在每个网络上的接口称为端口,每个端口都要有相应网络上的一个IP地址。





    第二部分

    第4章 网络层

    4.1 网络层提供的两种服务

    4.2 网际协议IP

    4.2.4 地址解析协议ARP

    4.2.5 IP数据报的格式


    :“4.2.3 IP地址与硬件地址”将在学习完“4.2.5 IP数据报的格式”后再学习。

    4.2.4 地址解析协议ARP

    为什么需要地址解析协议ARP?

    至此我们已经学习了一个数据链路层协议,即以太网协议。该协议要工作,需要为每个站点赋予一个地址,即MAC地址,由于该地址是写到网络适配器的ROM中,常称为站点的物理地址

    我们还学习了要进行网络互联,我们需要在数据链路层上面增加一个新层,即互联网层或网络层,在上面运行网络互联的协议,即IP协议。而IP协议需要为每个站点赋予一个IP地址。由于IP地址是不依赖于硬件人为指定的,我们常将其称其为站点的逻辑地址

    下图示出了这两种地址。IP地址是一个4字节32位的地址,以点分十进制表示。而以太网的MAC地址是一个6字节48位的地址,我们常以连续的12个16进制数,或像下图那样用横杠分割的6组2位16进制数表示。

    对于站点A的用户来说,他若要与站点B进行通信,他可以获知B的IP地址,这是很现实的,因为IP地址是人为指定的。

    然而,网络层的通信最终还是需要通过运行底层的以太网协议完成,那么问题就来了

    A在网络层发出的指令是要与B即IP地址为220.168.10.16的机器进行通信,A上的以太网通信实体就需要构造以太网帧,而以太网帧需要目的MAC地址,即B的MAC地址。那么A怎样获得B的MAC地址呢?

    :尽管通过手工配置一个IP地址/MAC地址对照表似乎有点道理,但在实际中是不可行的。

    ARP(Address Resolution Protocol,地址解析协议)就是用来解决该问题的。

    ARP协议的报文格式

    前已述及,学习一个协议,掌握其报文格式是非常关键的。

    ARP协议的报文格式如下所示,说明如下:

    1. 报文以每行4字节(32位)的方式表达
      :每行4字节32位的方式是网络协议报文的通用表达方式,后面会看到IP和TCP报文都用这种方式表达。

    2. 从图中可以看出,ARP协议的报文共有7行,总共28个字节。
      :其实ARP协议报文的长度是随着网络层协议的地址长度和和数据链路层协议的地址长度的不同而变化的。严格地说,这里的32字节针对的是IPv4版的网络层协议和以太网意义上的数据链路层协议。如无特别说明,我们今后说的ARP报文都指的是这个28字节的报文。

    3. 该报文共包括9个字段:

      1. 硬件类型(Hardware Type,2字节):指的是硬件地址类型,对于以太网,该类型的值为1。

      2. 协议类型(Protocol Type,2字节):指的是网络层的协议地址类型,对于IPv4,该类型的值为0x0800。

      3. 硬件地址长度(Hardware Address Length,1字节):指的是硬件地址长度的字节数,对于以太网,该类型的值为6。

      4. 协议地址长度(Protocol Address Length,1字节):指的是网络层协议地址长度的字节数,对于IPv4,该类型的值为4。

      5. 操作码(Opcode,2字节):指的是报文的类型,其中1表示ARP请求报文(ARP Request),2表示ARP应答报文(ARP Response)。

      6. 发送站硬件地址(Sender Hardware Address,对于以太网,该字段为6字节):指的是发出报文站点的硬件地址。

      7. 发送站网络层协议地址(Sender Protocol Address,对于IPv4,该字段为4字节):指的是发出报文站点的IP地址。

      8. 目的站硬件地址(Target Hardware Address,对于以太网,该字段为6字节):指的是接收报文站点的硬件地址,对于ARP请求报文,该字段的值没有意义,通常以0填充。

      9. 目的站网络层协议地址(Target Protocol Address,对于IPv4,该字段为4字节):指的是接收报文站点的IP地址。

    ARP报文封装到帧

    ARP报文最终要通过链路层发送出去,因此它将作为链路层帧的数据封装到帧中,如下图所示。

    :以太网帧将用类型号0x0806指明帧中的数据为ARP报文。

    ARP协议是怎样工作的?

    首先,每个站点的ARP需要建立一张IP地址与物理地址的对照表,这张表称为ARP高速缓存表

    ARP高速缓存表类似于3.4.2节“在数据链路层扩展以太网”中介绍过的如下图所示的以太网交换机中的交换表

    ARP高速缓存表也需要有三个表项,即IP地址、MAC地址和TTL,如下表所示。

    它指出一个IP地址对应的MAC地址,以及该对应项的生存时间TTL,即寿命。

    ARP高速缓存表
    IP地址 MAC地址 TTL
         
         

    我们以下图所示解释ARP协议的工作过程:

    1.  开始时刻:各个站点的ARP表都是空的,如上表所示。

    2.  A站构造ARP请求报文:假设A站已经知道了B站的IP地址,209.0.0.6,现在要获知B站的MAC地址。
      于是A站的ARP实体就构造一个ARP请求报文(即Opcode为1的报文),在源站硬件地址和协议地址中分别填入自己的硬件地址和IP地址,目的站的硬件地址填入0,目的站的IP地址填入B站的IP地址。

    3.  A站将ARP请求报文封装到以太网帧中:A站的ARP实体将上述的ARP请求报文交给其数据链路层实体,数据链路层实体即以太网实体将该ARP请求报文封装到一个以太网帧中,在类型中填入0x0806,表明帧中的数据为ARP报文。
      最重要的是:A站构造的以太网帧的目的地址要填成广播地址,即12个F,因为A站不知道这个帧应该被哪个站点接收。

    4. A站广播ARP请求报文,其他所有站点均接收:由于A站发出的是广播帧,网络上的所有站点都接收这个帧。
      它们的数据链路层实体从帧的类型0x0806判断出这是一个ARP报文,于是就将该报文交给网络层的ARP实体。

    5. 其他站点在ARP表中添加关于A站的表项:添加这些站点的ARP实体会通过报文的Opcode判断出它是一个ARP请求报文,于是就将报文中的源站硬件地址和协议地址取出来,查找它们各自的ARP高速缓存表,如果表中没有对应的IP地址项,则在表中添加一个新的表项,如果存在对应的IP地址项,则更新MAC地址和TTL列。如下面的ARP高速缓存表(B)所示。

    6. 其他站点判断帧中的报文类型:接下来,各站点的ARP实体再查看ARP请求报文中的目的IP地址,并将该IP地址与自己的IP地址比较,如果相同(在我们的例子中,只有B站会发现ARP请求报文中的IP地址与自身的IP地址相同),则构造ARP应答报文。

    7. B站的ARP实体构造ARP应答报文:置报文的Opcode为2,将源站硬件地址和IP地址分别填入自己(B站)的MAC地址和IP地址,将目的站的硬件地址和IP地址分别填入A站的硬件地址和IP地址。

    8. B站的以太网实体将ARP应答报文封装成帧:置帧的类型为0x0806,目的地址填为A的MAC地址。
      :B站从A站的ARP请求报文中获知了A站的硬件地址和IP地址,携带ARP应答报文的帧不再需要以广播的方式发送。

    9. A站接收ARP应答报文并在ARP表中添加关于B站的表项:只有A站可以接收B站发出的携带了ARP应答报文的帧。A站的数据链路层实体会根据帧的类型0x0806识别出帧中的数据是一个ARP报文,并将该报文交给其ARP实体。A站的ARP实体会根据ARP报文的类型(Opcode=2)识别出它是一个ARP应答报文,于是它就从报文中取出源站(即B站)的硬件地址,先将B站的IP地址和MAC地址对应填入到其ARP高速缓存表中(如下面的ARP高速缓存表(A)所示),再执行向B站的其他发送操作。

    ARP高速缓存表(B)
    IP地址 MAC地址 TTL

    209.0.0.5

    00-00-C0-15-AD-18 180
         
    ARP高速缓存表(A)
    IP地址 MAC地址 TTL

    209.0.0.6

    08-00-2B-00-EE-AA 180
         

    4.2.5 IP数据报的格式

    著名的IP协议的报文格式如下图所示。

    :该报文也以每行4字节(32位)的方式表达,其中固定部分共5行20个字节。

    关于此报文的详细解释,请根据教材128-132页上的叙述进行学习。

    :其中的(5)标识、(6)标志、(7)片偏移和(10)首部检验和将在下部分进行详细解释。

    第三部分

    第4章 网络层

    4.2.3 IP地址与硬件地址

    4.2.5 IP数据报的格式

    4.2.3 IP地址与硬件地址

    关于“IP地址与硬件地址”教材上讲得很清楚、很透彻,同学们应该通过仔细阅读教材内容(P122-124)来掌握。下面是教材图4-8(P122)对应的彩色图。

    下面是教材图4-9(P122)对应的彩色图系列,包括从协议栈的层次上看数据的流动、从虚拟的 IP 层上看 IP 数据报的流动和在链路层上看 MAC 帧的流动共3个子图。

    注意:为便于理解,我们将3个局域网和3个MAC帧分别进行了编号。

    4.2.5 IP数据报的格式

    IP数据报格式节中还有两个重要内容此前未深入解释,即IP数据报的分片与重装和IP数据报的差错检测。本次课就要学习者两项重要的有深刻含量的内容。

    IP数据报的分片与重装

    先说明一下IP数据报的分片与重装的起因。

    在1.7.5节“TCP/IP的体系结构”中讲述路由器互连TCP/IP网络时,用了如下的原理性图示。

    再结合上面4.2.3节“IP地址与硬件地址”中的图4-8和图4-9,我们可以将上图客户机中的一个IP数据报发送到服务器的过程描述如下

    1. 客户机C的网络层实体构造IP数据报,记为IP-C,并送交其链路层实体;

    2. 客户机C的链路层实体将IP-C封装到数据链路层的帧MAC-C中;

    3. 客户机C的链路层实体通过物理层实体将MAC-C帧通过基础网络C发送到路由器R;

    4. 路由器R的C侧的物理层实体收到MAC-C帧并交到其链路层实体;

    5. 路由器R的C侧的链路层实体去掉MAC-C帧的首部和尾部,获得IP数据报IP-C;

    6. 路由器R的C侧的链路层实体将IP-C交给路由器的网络层实体;

    7. 路由器R的网络层实体将IP-C数据报送交其S侧的链路层实体;

    8. 路由器R的S侧的链路层实体将IP-C封装到数据链路层的帧MAC-S中;

    9. 路由器R的S侧的链路层实体通过物理层实体将MAC-S帧通过基础网络S发送到服务器S。

    上述过程可能会遇到一个问题:基础网络S的一个链路层帧可能装不下基础网络C发来的IP数据报IP-C。

    问题的起因是每种链路层网络的帧可以携带的最大数据量(即MTU)是不同的。如以太网的MTU是1500字节。而Internet允许的最小数据链路层MTU为576字节。

    假如上图基础网络C是MTU为1500字节的以太网,则客户机C可以用总长度1500字节构造网络层数据报IP-C,然后将其封装到一个链路层的帧MAC-C中。

    路由器R的网络层实体将会从其C侧的链路层实体获得这个总长度为1500字节的网络层数据报IP-C,它接下来要做的是将IP-C交给S侧的链路层实体,并根据S侧数据链路层的成帧方式封装成一个链路层帧MAC-S。

    然而,如果基础网络S的MTU是Internet允许的最小值576,则路由器R的S侧的链路层实体就无法将IP-C封装到一个MAC-S帧中。这就要求路由器将原始的数据报进行分割。IP协议的IP数据报的分片与重装就是来解决这个问题的。

    IP协议提供了对上述问题的解决方法:即IP数据报的分片与重装技术

    IP数据报格式对IP数据报分片与重装的支持

    IP数据报格式的第2行中的字段就是用来支持IP数据报的分片与重装的,这些字段包括标识(即ID)、标志(Flags)和片偏移(Fragment Offset)。


    标识字段:该字段是一个2字节16位长度的字段,用来唯一地标识源站发出的一个数据报。

    标志:标志占3个二进制位。IP协议的标准RFC 791中对标志的解释如下:


    标志包括的3个位为

    1. 第0个位是保留未用位,规定取0值;

    2. 第1个位为DF位(Don't Fragment, 不允许分片位)。该位由源站设置,如果为0,则路由器可以根据需要对该报文进行分片,如果为1则路由器遇到无法将报文封装到出口链路的帧时,就抛弃该报文。

    3. 第2个位为MF位(More Fragments, 更多分片位)。对于源站发出的数据报,该位为0。如果一个数据报在路由器上进行了分片,则除了最后一个分片外,其余分片的MF均置为1,最后一个分片置为0。
      :如果一个路由器收到的是一个已经被分片的数据报,且不是最后一个分片,即数据报本身的MF位是1,则如果需要对该分片的数据报再次分片,则再次分片的所有数据报片(包括最后一个数据报片)的MF位都会置为1。

    片偏移:片偏移占13个二进制位,它用来标记一个被分片的数据报中数据的第1个字节在源站数据报数据中的位置。第1个分片的片偏移一定是0。

    特别注意:关于片偏移特别注意的是,由于IP数据报的总长度是一个2字节16位的数,而片偏移只有13位,为了使13位的片偏移能够表达16位长度中的位置,IP协议规定分片的数据报除最后一个分片外,其中的数据必须是8(即)的倍数,而片偏移的值就是片中第1个字节的实际位置数除以8的值。也就是说,IP协议通过使片偏移的单位扩大为8(即)字节而不是1字节来实现用13位的偏移分解16位的数据的。

    有了标识、标志和片偏移字段,就可以构造IP协议的数据报分片与重装技术,其要点我们用如下的问答(Q&A)方式进行说明:

    1. Q:为什么要分片?
      A:路由器的出口链路的MTU不能装下入口链路传来的IP数据报时就需要分片。

    2. Q:在哪里分片?
      A:在发现出口链路的MTU不能装下入口链路传来的IP数据报的路由器上分片。

    3. Q:报文分片与普通IP数据报有何不同?如何转发?
      A:各报文分片与普通IP数据报从结构上没有不同,分片的报文与原始报文保持相同的标识(ID)、源IP地址、目的IP地址等,路由器可对各分片像普通报文那样转发,甚至各分片可以被进一步地分片。

    4. Q:分片后的报文在哪里重装?
      A:各分片在目的主机上重装,中间路由器上不对分片的报文进行重装,这是因为各个分片可能会走不同的路径,通过不同的路由器。

    5. Q:怎样确定一个报文是否可以分片?
      A:标志字段中有一个“不允许分片”DF字段,该字段置1表示数据报不能分片,置0表示可以分片。

    6. Q:怎样确定分片的报文属于同一个原始的报文?
      A:分片的报文与最初的报文保持同一个标识号(ID)。

    7. Q:怎样确定分片报文的先后次序?
      A:使用片偏移,片偏移小的在前,片偏移大的在后,片偏移为0的是第一个分片。

    8. Q:如何确定最后一个分片?
      A:“更多分片”MF标志为0的分片为最后一个分片,前面的所有分片MF都应该是1。

    9. Q:13位的片偏移字段如何描述16位数据报分片的数据偏移?
      A:片偏移以8字节为单位,除最后一个分片外,各分片中数据的大小必须是8的整数倍。

    10. Q:目的端如何知道数据报是分片的?
      A:如果一个数据报的片偏移是0但MF是1,或一个数据报的片偏移不是0,则它就一定是一个分片的数据报。

    11. Q:目的端如何知道一个数据报的所有分片都到达了?
      A:某个ID的第1个报文即片偏移为0的报文到达了;
      相同ID的各个MF=1的报文的后续报文即以当前报文长度减去头长的4倍再除以8作为偏移的报文均到达了;
      最后一个报文即相同ID的MF=0的报文也到达了。

    IP数据报分片与重装的示例

    教材例4-1(P129-130)给出了IP数据报分片与重装的一个例子,例子解释得很清楚,并包括了再次分片的深度解析。这个要好好看

    IP数据报的差错检测

    IP层协议也提供了差错检测功能,以使接收方可以检验所收到的IP数据报是否是一个数据没有发生错误的数据报。它的差错检测功能有如下特点:

    1. IP数据报的差错检测只针对IP数据报的首部进行,IP层不提供对IP数据报中数据的差错检测功能;
      :这种设计主要是为了提高路由器的运行效率,因为每个路由器都要对收到的IP数据报进行差错检测和重新计算差错检测的冗余码。

    2. IP数据报首部的差错检测冗余码放在报文首部结构第3行的后两个字节(即16个二进制)中,而不是放在报文的最后,如下图所示;

    3. IP数据报的差错检测算法采用的是反码求和再取反码的算法(ones' complement of the ones' complement sum,参见IPv4 header checksum),有时简称为检验和(checksum)算法,但严格地说这种称法不严谨,因为所有的差错检测算法都是要计算一种差错检测冗余码,而冗余码统称为检验和(checksum),较简洁专业的称法是反码运算算法
      注1:反码的英文是ones' complement,直译为1的补码,因为反码是1变0、0变1的操作,可以用用1减去源码的运算来实现,因而专业上称为1的补码;
      注2:反码求和更专业的称法是反码算术运算(1's Complement Arithmetic,其要领是如果求和的产生了进位,则要将进位再加回去掉进位的求和结果中
      注3:与IP数据报反码运算差错检测算法相比较的是,数据链路层的以太网帧采用了CRC算法CRC算法的核心是模2算术运算,也称为2的补码运算(2's Complement Arithmetic,该运算的要领是加法无进位。

    反码算术运算差错检测算法要领

    教材第131页给出了反码算术运算差错检测算法的扼要描述。下图是图4-15对应的彩色图。

    其基本要领是,在发送端,先将IP数据报首部检验和字段置为零,然后将全部首部的数据看成是16位的数据序列,再对该数据序列执行反码算术求和运算,并将反码算术求和运算的结果取反码,最后将反码的结果放回到IP数据报的首部字段中。

    在接收端,将全部IP数据报首部的数据看成是16位的数据序列,对该数据序列执行反码算术求和运算,并将反码算术求和运算的结果取反码,如果结果为0,则差错检测通过,如果结果不为0,则说明该报文数据有错误,路由器或目的站将视该报文为错误报文,并丢弃。

     

  • 相关阅读:
    Python设置桌面壁纸
    youtube-dl使用介绍
    Matlab pcg函数的句柄形式之参数传递
    Sublime 安装支持GBK的插件
    MarkdownPad安装
    ug7.5经常卡死的解决方法
    HM NIS edit打包软件
    UG工程制图
    egg框架中是如何使用MD5加密的 实现用户修改密码 小编在这里献丑了。。。。。
    今天遇到了vue项目中使用Iconfont图标 ,感觉挺实用的 随手记录下。只需简单的6步就可以实现
  • 原文地址:https://www.cnblogs.com/ranzhong/p/13032753.html
Copyright © 2011-2022 走看看