计算机网络(二十四):网际协议:因特网中的转发和编址

在这里插入图片描述
因特网编址和转发是网际协议 (IP) 的重要组件。因特网的网络层有三个主要组件 第一个组件是IP协议,第二个主要组件是路由选择部分,它决定了数据报从源到目的地所流经的路径。最后一个组件是报告数据报中的差错和对某些网络层信息请求进行响应的设施,即五联网控制报文协议 (ICMP)。

1、数据报(网络层分组)格式:

IPv4 数据报格式如图
在这里插入图片描述
①、版本号:这4比特规定了数据报的IP协议版本。通过查看版本号,路由器能够确定如何解释IP数据报的剩余部分。不同的IP版本使用不同的数据报格式。
②、首部长度:因为一个 IPv4 数据报可包含一些可变数量的选项(这些选项包括在IPv4 数据报首部巾) ,故需要用这4比特来确定IP数据报中数据部分实际从哪里开始。大多数IP数据报不包含选项,所以一般的IP数据报具有20字节的首部。
③、服务类型TOS:使不同类型的IP数据报(例如,一些特别要求低时延、高吞吐量或可靠性的数据报)能相互区别开来。
④、数据报长度:这是 IP 数据报的总氏度(首部加上数据) ,以字节计。因为该字段长为 16 比特,所以 数据报的理论最大长度为 65535 字节 然而,数据报很少有超过 15 字节的。
⑤、标识、标志、片偏移:这三个字段与所谓IP分片有关,但,新版本的 IP(IPv6)不允许在路由器上对分组分片
⑥、寿命TTL:段用来确保数据报不会永远(如由于长时间的路由选择环路)在网络中循环。每当数据报由一台路由器处理时,该字段的值减1,TTL字段减为0,则该数据报必须丢弃。
⑦、协议:该字段仅在一个IP数据报到达其最终目的地才会有用。该字段值指示了IP数据报的数据部分应交给哪个特定的运输层协议。在 IP 数据报中的协议号所起的作用,类似于运输层报文段中端口号字段所起的作用。协议号是将网络层与运输层绑定到一起的粘合剂,而端口号是将运输层和应用层绑定到一起的粘合剂。
⑧、首部检验和:首部检验和用于帮助路由器检测收到的IP数据报中的比特错误。首部检验和是这样计算的:将首部中的每2个字节当作一个数,用反码运算对这些数求和。
⑨、源和目的IP地址:当某源生成一个数据报时,它在源IP字段中插入它的IP地址,在目的IP地址字段中插人其最终目的地的地址。通常源主机通过DNS查找来决定目的地址。
⑩、选项:选项字段允许IP首部被扩展。首部选项意味着很少使用,因此决定对每个数据报首部不包括选项字段中的信息,这样能够节约开销。然而,选项的可能存在的确是件复杂的事,因为数据报头长度可变,故不能预先确定数据字段从何处开始。而且还因为有些数据报要求处理选项,而有些数据报则不要求,故导致一台路由器处理一个IP数据报所需的时间变化很大,这些考虑对于高性能路由器和主机上的IP处理来说特别重要。由于这样或那样的原因,在IPv6首部已去掉了IP选项。
数据(有效载荷):在大多数情况下,IP数据报中的数据字段包含要交付给目的地的运输层报文段(TCP/UDP)然而,该数据宇段也可承载其他类型的数据,如ICMP报文。
IP数据报有总长为20字节的首部(假设无选项) 如果数据报承载一个TCP 报文段,则每个(无分片的)数据报共承载了总长40字节的首部(20字节的IP首部加上20字节的TCP首部)以及应用层报文。
一个链路层帧能承载的最大数据量叫做最大传送单元MTU。因为每个据报封装在链路层帧中从一台路由器传输到下一台路由器,故链路层协议的MTU严格地限制着IP数据报的长度
问题在于在发送方与目的地路径上的每段链路可能使用不同的链路层协议,且每种协议可能具有不同MTU。即假定从某条链路收到一个IP数据报,通过检查转发表确定出链路,并且该出链路的 MTU 比该IP数据报的长度要小。此时需要确定如何将这个过大的IP分组压缩进链路层帧的有效载荷字段。可以将数据报中的数据分片成两个或更多个较小的IP数据报,用单独的链路层帧封装这些较小的数据报;然后向输出链路上发送这些帧。每个这些较小的数据报都称为片。片在其到达目的地运输层以前需要重新组装。)为坚持网络内核保持简单的原则, IPv4的设计者决定将数据报的重新组装工作放到端系统中,而不是放到网络路由器中。
在这里插入图片描述
当一台目的主机从相同源收到一系列数据报时,它需要确定这些数据报中的某些是否是一些原来较大的数据报的片。如果某些数据报是片的话,则它必须进 步确定何时收到了最后一片,并且如何将这些接收到的片拼接到一起以形成初始的数据报。为了让目的主机执行这些重新组装任务,IPv4 的设计者将标识、标志和片偏移字段放在IP数据报首部中。当生成一个数据报时,发送主机在为该数据报设置源和目的地址的同时再贴上标识号。发送主机通常将为它发送的每个数据报的标识号加1。当某路由器需要对一个数据报分片时,形成的每个数据报(即片)具有初始数据报的源地址、目的地址与标识号。当目的地从同一发送主机收到一系列数据报时,它能够检查数据报的标识号以确定哪些数据报实际上是同一较大数据报的片。由于lP是一种不可靠的服务,一个或多个片可能永远到达不了目的地。因为这种原因,为了让目的主机绝对地相信它已收到了初始数据报的最后一个片,最后一个片的标志比特被设为0,而所有其他片的标志比特被设为1。另外,为了让目的主机确定是再丢失了一个片(且能按正确的顺序重新组装片) ,使用偏移字段指定该片应放在初始IP数据报的哪个位置。
简单地讲,就是把一个大的IP数据报切分为符合当前协议的MTU的数据报,并且数据报的标志除了最后一个为0,其余都是1。其中首部字节为20,其余的MTU-20字节均为数据字节。偏移量为字节数/8

2、IPv4编址:

一台主机通常只有1条链路连接到网络;当主机中的IP想发送一个数据报时,它就在该链路上发送。主机与物理链路之间的边界叫做接口。现在考虑一台路由器及其接口。因为路由器的任务是从链路上接收数据报并从某些其他链路转发出去,路由器必须拥有两条或更多条链路与它连接。路由器与它的任意一条链路之间的边界也叫做接口。一台路由器因此有多个接口,每个接口有其链路。因为每台主机与路由器都能发送和接收IP数据报,IP要求每台主机和路由器接口拥有自己的IP地址。因此,一个IP地址技术上是与一个接口相关联的,而不是与包括该接口的主机或路由器相关联的。
即主机与链路一般只有一个接口,所以一个主机一般只有一个IP地址作为索引;而一台路由器与多个链路相连作为十字路口,所以每一个接口对应一个IP地址作为索引
每个IP地址长度为32比特(等价为4字节),因此总共有232个可能的IP地址。由于210近似地表示103,故容易看出约有40亿个可能的IP地址。这些地址一般按所谓点分十进制记法书写,即地址中的每个字节用它的十进制形式书写,各字节间以句号(点)隔开。例如,考虑IP地址193.32.216.9,193是该地址第一个8比特的十进制等价数,32是该地址第二个8比特的十进制等价数,依次类推。因此,地址193.32.216.9 的二进制记法是:
11000001 00100000 11011000 00001001
在全球因特网中的每台主机和路由器上的每个接口,必须有一个全球唯一的lP地址(在NAT后面的接口除外)。然而,这些地址不能随意地自由选择。一个接口的IP地址的一部分需要由其连接的子网来决定。
在这里插入图片描述
上图中,,一台路由器(具有7个接口)用于互联7台主机。左上侧部分的3台主机以及它们连接的路由器接口,都有一个形如 223.1.1.xxx的IP地址。这就是说,在它们的IP地址中,最左侧的24比特是相同的。这4个接口也通过一个并不包含路由器的网络互联起来。
用IP的术语来说,互联这3个主机接口与1个路由器接口的网络形成一个子网。IP编址为这个子网分配一个地址: 223.1.1.0/24,其中的/24 记法,有时称为子网掩码,指示了32比特中的最左侧24比特定义了子网地址。因此子网 223.1.1.0/24 是由3台主机接口(223.1.1.1、223.1.1.、223.1.1.3)和1个路由器接口(223.1.1.4)组成。任何其他要连到223.1.1.0/24网络的主机都要求其地址具有223.1.1.xxx的形式。
简单地讲,就是,没一个字节可以代表一个分支,不同的分支构成了一颗四层的树,而每一个分支可以看做一个小的子网,一般是最左边最大,越往右越下层。子网中无需通过路由器就能够物理上互相到达
子网的表示方法:
①、子网掩码:用从最高位开始的连续1表示IP地址中的子网号部分
②、前缀/长度:223.1.1.0/24,表示前24位为子网号部分
因特网的地址分配策略被称为无类别域间路由选择,CIDR将子网寻址的概念一般化了。因为对于子网寻址,32比特的IP地址被划分为两部分,并且也具有点分十进制数形式a,b,c,d/x,其中x指示了地址的第一部分中的比特数。
形式为 b. c. d/x 的地址的x最高比特构成了IP地址的网络部分,并且经常被称为该地址的前缀(或网络前缀)。一个组织通常被分配一块连续的地址,即具有相同前缀的一段地址在这种情况下,该组织内部的设备的IP地址将共享共同的前缀。
在这里插入图片描述
假设某ISP向外界通告,它应该发送所有地址的前20比特与200.23.16.0/20相符的数据报,外界的其他部分不需要知道在地址块200.23.16.0/20内实际上还存在8个其他组织,每个组织有自己的子网。这种使用单个网络前缀通告多个网络的能力通常称为地址聚合,也称为路由聚合或路由摘要。
即当子网掩码为20的时候,外界只需要知道他的前20位,即他能转发到符合前20位的IP地址,而不需要关心后12位的具体内容,即不需要知道他能转发到的具体地址
一个地址的剩余32 -x比特可认为是用于区分该组织内部设备的,其中的所有设备具有相同的网络前缀。当该组织内部的路由器转发分组时,才会考虑这些比特。这些较低阶比特可能(或可能不)具有另外的子网结构。假设某CIDR化的地址a.b.c.d/21的前21比特定义了该组织的网络前缀,它对该组织中的所有主机的IP地址来说是共同的。其余的11比特标识了该组织内的主机。该组织的内部结构可以采用这样的方式,使用这最右边的11比特在该组织中划分子网,例如 a. b. c. d/24 可能表示该组织内的特定子网
IP广播地址255.255.255.255。当一 台主机发出-个目的地址为255.255.255.255的数据报时,报文会交付给同一个网络中的所有主机。路由器也会有选择地向邻近的子网转发该报文(虽然它们通常不这样做)。

①、获取一块地址:

为了获取一块IP地址用于一个组织的子网,某网络管理员也许首先会与他的ISP联系,该ISP可能会从已分给它的更大地址块中提供一些地址。例如,该ISP也许自己已被分配了地址块200.23.16.0/20。ISP可以依次将该地址块分成8个长度相等的连续地址块,为本ISP支持的最多达8个组织中的一个分配这些地址块中的一块。

②、获取主机地址:动态主机配置协议

某组织一且获得了一块地址,它就可为本组织内的主机与路由器接口逐个分配IP地址。系统管理员通常手工配置路由器中的IP地址(常常在远程通过网络管理工具进行配置)主机地址也能手动配置,但是这项任务目前通常更多的是使用动态主机配置协议来完成。DHCP允许主机自动获取(被分配)一个IP地址。网络管理员能够配置DHCP,以使某给定主机每次与网络连接时能得到一个相同的IP地址,或者某主机将被分配一个临时的IP地址,该地址在每次与网络连接时也许是不同的。除了主机IP地址分配外,DHCP还允许一台主机得知其他信息,例如它的子网掩码、它的第一跳路由器地址(常称为默认网关)与它的本地DNS服务器的地址。
由于DHCP具有能将主机连接进一个网络的网络相关方面的自动能力,故它又常被称为即插即用协议。DHCP还广泛地使用于住宅因特网接入网与无线局域网中,其中的主机频繁地加入和离开网络。当主机加入或离开时,DHCP服务器要更新其可用IP地址表。每当一台主机加入时,DHCP服务器从其当前可用的地址池中分配一个任意的地址给它;每当一台主机离开时,其地址便被收回这个池中。
简单地讲,就是定义了一个ip地址池,其前缀与子网掩码相同,后缀随机进行分配。每当一个主机进入时,自动给予一个IP地址;当一个主机离开时,回收该IP地址。可分配IP地址范围是:子网地址-广播地址
对于一台新到达的主机而言,DHCP协议是一个4个步骤的过程:
·DHCP服务器发现:新到的主机的首要任务是发现一个要与其交互的DHCP服务器。这可通过使用DHCP发现报文来完成,客户在UDP分组中向端口67的发送该发现报文。客户生成包含DHCP发现报文的IP数据报,使用广播目的地址 255.255.255.255并且使用"本主机"源地址 O.O.O.0。DHCP客户将该IP数据报传递给链路层,链路层然后将该帧广播到所有与该子网连接的子网。
·DHCP服务器提供。DHCP服务器收到一个DHCP发现报文时,用一个DHCP提供报文向客户作出响应,仍然使用IP广播地址255.255.255.255,因为在子网中可能有几个DHCP服务器,该客户也许会发现它处于能在几个提供者之间进行选择。每台服务器提供的报文包含有收到的发现报文的事务ID、向客户推荐的IP地址、网络掩码以及IP地址租用期,即IP地址有效的时间量。 服务器租用期通常设置为几小时或几天。
·DHCP请求:新到达的客户从一个或多个服务器提供中选择一个,并向选中的服务器提供用一个DHCP请求报文进行响应,回显配置参数。
·DHCP ACK:服务器用DHCP ACK报文对DHCP请求报文进行响应,证实所要求的参数。
简单地讲,就是首先客户机广播发送发现报文,企图发现服务器。在发现报文的传播范围内,所有的服务器产生回应,广播发送提供报文。在客户机接收到不同的提供报文后,选择最优并发送请求报文,基于参数,请求建立连接。然后服务器用ACK报文产生回应,证实已收到参数
在这里插入图片描述

③、网络地址转换NAT:

NAT使能路由器对于外部世界来说甚至不像一台路由器NAT路由器对外界的行为反过来就如同一个具有单一IP地址的单一设备。下图中,所有离开家庭路由器流向更大因特网的报文都拥有一个源IP地址138.76.29.7,且所有进入家庭的报文都拥有同个目的回地址138.76.29.7。
在这里插入图片描述
即把内部私有网络地址翻译成合法网络IP地址的技术。能够改变本地网络中的设备地址,而不必通知外部。本地网络中的设备不显式地可寻址、由外部所见 (增强安全性)。简单地讲,就是把一个家庭网络的对外IP进行了改变。从本质上讲,NAT使能路由器对外界隐藏了家庭网络的细节
使用在NAT路由器上的一张NAT转换表,并且在表项中包含了端口号及其IP地址。

3、因特网控制报文协议ICMP:

被主机和路由器用来彼此沟通网络层的信息。ICMP最典型的用途是差错报告。ICMP通常被认为是IP的一部分,但从体系结构上讲它是位于IP之上的,因为ICMP报文是承载在IP分组中的.这就是说,lCMP报文是作为IP有效载荷(数据)承载的,就像TCP/UDP报文段作为IP有效载荷被承载那样。类似地,当一台主机收到一个指明上层协议为ICMP的IP数据报时,它分解出该数据报的内容给ICMP,就像分解出一个数据报的内容给TCP/UDP一样。
ICMP报文有一个类型字段和一个编码字段,并且包含引起该ICMP报文首次生成的IP数据报的首部和前4?字节内容。

4、IPv6:

由于新的子网和IP结点以惊人的增长率连到因特网上(并被分配唯一的IP地址),32比特的IP地址空间即将用尽。为了应对这种对大IP地址空间的需求,开发了一种新的IP协议,即IPv6。
首部格式有助于提高处理/转发速率。首部变化以促进QoS。
IPV6 地址:IPv6地址长度为128位
IPv6较IPv4的特点:
①、检查和:完全去除以减小每跳的处理时间
②、选项:允许,但在首部之外,由“下一个首部” 字段指示
③、新版本的ICMP
IPv4到IPv6的迁移:IPv6向后兼容,可以发送、路由和接收IPv4数据报。但IPv4确不能处理IPv6数据报

猜你喜欢

转载自blog.csdn.net/qq_40851744/article/details/107095367