码迷,mamicode.com
首页 > 其他好文 > 详细

6、7、8章:IP协议及IP数据报转发和ICMP - 用TCP/IP进行网际互连

时间:2015-02-18 16:29:12      阅读:274      评论:0      收藏:0      [点我收藏+]

标签:ip   ip协议   icmp   ip数据报转发   

第6章 网际协议:无连接数据报交付(IPv4)

6.3 互联网体系结构和基本原理

技术分享

互联网是围绕着一个分层结构中的三个概念化网络服务来设计的;这个结构相当健壮且有很强的适应性,使互联网取得了很大成功。

6.7 数据报格式及个部分讲解

技术分享

版本字段(4)

       IP协议的版本,通信双方使用的协议版本须一致,目前普遍使用IPv4,IPv6目前处于起步阶段。

首部长度(4)

       它给出用32位字来度量数据报首部长度。除了IP选项及相应的填充字段外,首部其他字段长度是固定的。若不含IP字段长度为20字节,则首部长度为5(0101)。

服务类型:

       只有在使用区分服务时,这个字段才起作用。

总长度:

       总长度指首都及数据之和的长度,单位为字节。

       因为总长度字段为 16位,所以数据报的最大长度为 216-1=65 535字节。在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,即最大传送单元 MTU (Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度 (即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。

标识符(16)

       IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加 1,并将此值赋给标识字段。但这个“标识”并不是序号,因为 IP是无连接的服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU 而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。

标志(3)

       占3 位,但目前只有2位有意义。标志字段中的最低位记为 MF (More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。标志字段中间的一位记为 DF(Don‘t Fragment),意思是“不能分片”。只有当 DF=0时才允许分片。

数据片偏移量(13)

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

生存时间(8)

       生存时间字段常用的英文缩写是TTL (Time To Live),其表明数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜围子,因而白白消耗网络资源。最初的设计是以秒作为 TTL的单位。每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于 1 秒,就把TTL值减 1。当 TTL值为 0时,就丢弃这个数据报。

协议(8)

       协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。比如:ICMP协议为1TCP协议为6UDP协议为17

首部检验和(16)

       这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,都要重新计算一下首都检验和 (一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。

源地址:32位,源站IP地址

目的地址:32位,目的站IP地址


6.7.4 数据报的大小、网络MTU及分片

       每种分组交换技术都给一个物理帧可传送的数据量规定了一个固定的上界:例如,以太网限制传输1500字节的数据(这里不包括以太网帧的首部的长度,一般为18字节,目标MAC,源地址MAC,物理帧类型2字节,CRC数据校验4字节),这些限制称为最大传输单元(MTU)。

       TCP/IP软件并没有涉及符合物理网路限制的数据报,而是选择一个合适的初始数据包大小,同时提供一种机制,在数据包经过小MTU网络时,把数据包分解为更小的片,这些小片为数据包片,数据报分解过程为分片

       数据报分片意味着把一个数据包分为几片,每片的格式都与原来的数据报格式相同。

技术分享

6.9 小结

        TCP/IP互联网软件所提供的基本服务是一种无连接的、不可靠的、尽最大努力的分组交付系统,网际协议(IP)正式规定了互联网分组的格式,称为数据报,并且非正式地包含了无连接交付的思想。

        类似于一个物理帧,IP数据报被划分成首部和数据区。数据报首部包含了源和目的IP地址、分片控制、优先级以及用来捕捉传输差错的校验和等信息。除了固定长度的字段,每个数据报首部都可包含一个选项字段。选项字段的长度可变,取决于选项号、选项类以及分配给每个选项的数据区的大小。选项用来帮助监视和控制互联网,允许指定或记录选路信息,或当数据报在互联网上传输时收集时间戳.


第7章 网际协议:转发IP协议报

7.2 互联网中的转发

        术语路由选择用在因特网的分组交换系统中,指的是为要发送的分组选择一条路径的过程,术语路由器是指做出这中选择的一台计算机,近来,术语转发来表示为分组选择路径的过程。

技术分享

7.3 直接交付和间接交付

        不严格讲,转发可以分为直接交付间接交付,直接交付是数据包从一台机器通过物理网络直接传输到另一个机器,这是所有互联网的基础。只有当两台机器同时连接到同一底层物理传输系统时(比如同一个以太网)才可以直接交付。间接交付在目的站不在一个直接互联的网络中时,从而强迫发送方将数据报传递给一个路由器进行交付。

7.3.1 单个物理网络上的数据报交付

        同一物理网络中两台机器间传输IP数据报与路由器无关。发送方把数据报封装在一个物理帧中,把目的IP地址绑定到一个物理地址,最后把封装好的物理帧直接发送到目的地址。因为同一个网路所有机器的互联网地址都有同一个网络前缀,而且抽取前缀只需要几个机器指令,所以测试某个机器时候可以直达是非常高效的。

7.3.2 间接交付

        间接交付比直接交付更困难一些,因为发送方必须识别第一个路由器,从未可以发送给他。然后,路由器必须朝着目的网络继续发送数据。TC/PIP互联网络中的路由器形成了一个相互协作的互联结构,数据包从一个路由器传递到下一个路由器,直到抵达可以直接交付数据包的路由器。

7.4 表驱动IP转发

        IP转发算法使用每台机器上的一个数据结构来存储有关可能目的站及怎样到达目的站的信息,该数据结构称为网际协议路由表或者IP路由表(路由表)。路由表中仅需要包含网路前缀的信息而不需要完整的IP地址。

7.5 下一跳转发

        使用目的地址的网路而不是使用完整的主机地址,使转发效率很高,同时路由表保持很小。一个路由表包含很多对(N, R),其中N是目的网络的IP地址,R是通往网络N的路径上“下一个”路由器的IP地址。路由器R称为下一跳(next hop),用路由表为每一个目的站存储下一下跳的做法为下一跳路由选择下一跳转发。路由器R中的路由表仅仅表明了从R到某个目的网路的路径上的下一步---路由器并不知道目的地址的完整路径。

图中的表对应路由器R所用的路由表

技术分享

为了隐藏信息,应该保持路由表较小并是转发效率更高,IP转发软件保存的只有目的网路地址的信息,而不是有关个体主机地址的信息。

7.6 默认路由

        另一种用来隐藏信息和保持路由表较小的技术把多个表项合并成一个默认表项。这种思路是让IP转发软件首先在路由表中查找目的网络,如果表中没有目的网络,则转发软件把数据报转发给默认路由。

7.8 IP转发算法

技术分享

7.9 利用IP地址转发

除了较少生存时间及重新计算检验和以外,IP转发并不改变原始的数据报。

技术分享

        上图显示了地址边界,这是低层软件和互联网软件之间重要概念性划分,低层软件知道物理地址,而互联网软件只使用高层地址。在这个边界的上面,所有软件都可以编写使用互联网地址通信,对物理地址的理解被移交给几个小的底层物理例程。

7.10 处理传入的数据报

         IP软件还必须对传入的数据报进行处理。

         当一个数据报到达主机时,网络接口软件就把它交付给IP模块进行处理。如果数据报的目的地址与主机IP地一致,则主机IP软件就接受该数据报,并把它传给高层协议软件进一步处理。如果目的地址不匹配,则主机丢弃该数据报(也就是说,进制主机试图转发偶然错误转发给它的数据报)。

         与主机不一样,路由器会对数据报进行转发。当一个数据报到达路由器时,它被交付给IP软件。这有两种可能:数据报到达它的目的站,或者需要继续传送。如果数据报的目的IP地址与路由器的IP地址匹配,则IP软件把数据报传递给高层协议软件处理;如果没有到达目的站,IP就使用标准算法和本地路由表中的信息转发数据报。

7.12 小结

        IP软件负责转发数据报,所需要的计算包括根据目的IP地址确定数据报发往何处。如果目的地址位于发送方相连的那个网络上,则可以使用直接交付:我们把这种方式看成是数据报传输过程中的最后一步。如果发送方无法直接连到目的站,则发送数据包到路由器。一般模式是主机间接把要转发的数据报发给最近的路由器;数据报通过互联网从一个路由器移动到另一个路由器,直到数据报可以通过一个物理网络直接交付。

        IP把转发所需的信息保存到路由表中。当IP查找一个路由时,算法会生成数据报要发送到的下一个机器的IP地址;IP把数据报和下一跳地址传递给网络接口软件,数据报从一台机器传输到下一台机器,该过程通常包括把数据报封装在一个物理帧中,把下一跳互联网地址映射成一个物理地址,以及使用底层硬件发送帧。

        互联网转发算法只使用IP地址;IP地址和物理地址的绑定不属于IP转发功能的一部分。尽管路由表可以包含一个特定主机的目的地址,但大多数路由表都只含有网络地址,以保持路由表较小。使用默认路由有助于保持路由表较小,特别是对于那些只接入一个路由器的主机。

以下为补充资料:

1、数据包经由路由转发时源、目的IP地址及MAC地址变化情况

        IP数据包经由路由转发的时候源ip,目的ip,源MAC,目的mac是否发生改变,如何改变?

        A—–(B1-B2)—–(C1-C2)——-E

        如上为例,B1和B2是路由器B上的两个接口,C1和C2是路由器C上的两个接口,A和E是PC,由主机A向主机E发送数据包,那么在主机A形成的数据包的目的IP就是E的IP,源IP就是主机A的IP地址,目标MAC地址就是B1的MAC地址,源MAC地址就是A的MAC地址

        由A发给路由器B,B经过重封装后,源IP和目标IP是不变的,源MAC地址变成B2的MAC地址,目标MAC地址变成C1的MAC地址,封装完成发送给路由器C,路由器C接收到数据包后和B做的操作是一样的,源IP和目标IP的不变的,源MAC地址变成C2的MAC地址,目标MAC地址变成主机E的MAC地址,然后发送给主机E,这样E就收到了这个数据包,当恢复数据包的时候就是把收到的数据包的源IP地址(主机A的IP地址)和源MAC地址(接口C2的MAC地址)作为他的目标IP和目标MAC地址。


第8章 网际协议:差错与控制协议(ICMP)

        网际控制报文协议允许路由器向其他路由器或者主机发送差错或控制报文;ICMP在一台机器上的网际协议软件和另一台机器上的网际协议软件之间提供通信。

8.3 差错报告与差错纠正的对比

       当一个数据报产生差错时,ICMP只向数据包的最初源地址发送差错情况;源站必须把差错情况告诉一个单独的应用程序或采取其他措施来纠正错误。

8.5 ICMP报文格式

       ICMP经常被认为是IP层的一个组成部分。它传递差错以及其他需要注意的信息。

       尽管每个ICMP报文有自己的格式,但他们开头的三个字段都是相同的:一个8位整数报文类型(TYPE)用来标识报文;一个8位代码(CODE)提供更多报文类型的信息,还有一个16位的检验和(CHECKSUM)字段。此外,报告差错的ICMP报文总是包括从产生问题的数据报中提取出来的首部和一些8为组。

技术分享

技术分享

8.11 来自路由器的改变路由请求

       互联网中的路由表通常在很长一段时间保持不变。主机在系统启动时根据一个配置文件对了路由表进行初始化,而系统管理员在正常的操作中偶尔才会改变路由。

8.16 小结

       网际控制报文协议(Internet Control Message Protocol)是IP的一个必要组成部分,用于正常情况以外的通信(报告异常情况和发送控制信息)。大多数情况下,ICMP差错报文来源于因特网中的路由器;ICMP报文总是被发回引起差错的数据包的最初源站。

       ICMP包括降低传输的源站抑制报文,请求主机改变路由表的重定向报文,以及主机可用来确定目的站是否可达的会送请求/回答报文。

       ICMP报文放在IP数据区中运送,在报文开头有三个固定长度的字段:ICMP类型字段、代码字段及ICMP检验和字段。报文类型决定了报文其余部分的格式及其含义。

补充资料:

关于ping的讲解

       系统中的ping指令所有的就是ICMP协议,利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。应用格式:Ping空格IP地址。

       为了防止网络中常见的ping攻击对设备的影响,一般将ICMP的处理优先级别设为最低。



6、7、8章:IP协议及IP数据报转发和ICMP - 用TCP/IP进行网际互连

标签:ip   ip协议   icmp   ip数据报转发   

原文地址:http://blog.csdn.net/u012796139/article/details/43876849

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!