链路层的封装方式与IP选路 (二)

来源:互联网 发布:乐易网络靠谱吗 编辑:程序博客网 时间:2024/06/05 11:10

(参考文献)TCP/IP详解,卷1:协议

在TCP/IP协议族中,链路层主要有3个目的:

一、   为它上层的IP模块发送和接收IP数据报

二、   为ARP模块和RARP模块请求和接收ARP应答

三、   为RARP发送RARP请求和接收RARP应答

对数据帧封装的两种方式(IP报文传给链路层进行封装):

1、以太网封装

2、IEEE 802封装(以下的数字都表示Byte)


CRC字段(或FCS,帧检验序列)是一个循环冗余校验码,用于检验数据帧中的错误。

环回接口:

大多数的主机都支持环回接口(Loopback Interface),以允许运行在同一个主机上的客户程序和服务器程序通过TCP/IP进行通信。A类网络号127就是为环回接口预留的。根据惯例大多数系统吧127.0.0.1分配给这个接口,并命名为localhost。

最大传输单元MTU:

如上图,以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492,链路层的这个特性称为MTU

路径MTU:是指两台计算机之间通信时,所通过的网络中最小的MTU。两台主机之间的MTU值不是一个常数,因为IP选路总是在变化的。



IP(网际协议)

IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP和IGMP数据都已IP数据报格式传输。

IP协议的两个特性:

不可靠:他的意思是不能保证IP数据报能成功的到达目的地。IP只提供尽力而为的传输服务。任何要求的可靠性必须又上层来提供。

无连接:意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理都是相互独立的。这也说明IP数据报不按照发送顺序接收。

IP数据报格式:


普通的IP首部长为20个字节,除非含有选项字段。目前的协议版本是4,因此IP有时称为IPv4。

首部长度指的是首部占32bit的数目,包括任何选项。由于它是一个4bit字段,因此,首部最长为60个字节。

服务类型(TOS)字段,包含一个3bit的优先权字段,4bit的TOS字段,和1bit未用位但必须置为0。4bit的TOS分别代表:最小延迟,最大吞吐量最高可靠性和最小费用。4bit中只能置其中1bit,如果4bit都为0,那么就意味着是一般服务。

总长度字段是指IP数据包的长度,以字节为单位。利用首部长度字段和总长度字段就可以知道IP数据报中数据内容的起始位置和长度。

TTL(TimeTo Live)生存时间字段设置了数据报可以经过的最多路由器数,他指定了数据包的生存时间。TTL的初始值有源主机设置,一旦经过一个处理他的路由器,他的值就会减1。当该字段的值为0是,数据报就被丢弃并发送ICMP报文通知源主机。

IP路由选择:

从概念上来说IP路由选择是简单的,特别对于主机来说。如果目的主机与源主机直接相连,或者都在一个共享网络上,那么IP数据报就直接送到目的主机上。否则就把数据报发到一个默认的路由器上,由路由器来转发该数据报。

    大多数的用户操作系统,包括几乎所有的unix操作系统,都可以配置成一个路由器,我们可以为他指定主机和路由器都可以使用的简单路由算法。本质上的区别在于主机从来不会吧数据报从一个接口转到另外一个借口,而路由器则需要转发数据报。内含路由器的主机一般不会转发数据报,除非他被配置成路由器。   

一般的情况是,IP可以上层协议封装的数据报TCP、UDP、ICMP、IGMP接收数据报(即本地产生要发送的数据报)或者从一个网卡接口接收数据报(待转发的数据报)进行发送。IP层在内存中有一个路由表,当IP层收到一个数据报时(可能来自某个网络接口或者本地产的),都会搜索路由表。   当数据报来自某个网络接口时,IP首先检查目的IP地址是否为本机的IP地址之一或者为广播地址,如果是这样,就会送给IP首部协议字段说指定的协议模块进行处理;如果数据报的目的地址不是这些地址,如果IP层被配置有路由器的功能,那么他就对数据报进行转发。否则就将该数据包丢弃。

整个过程如下图:


IP路由表的每一项都包含这些信息:

1.目的IP地址:他既可以是一个完整的主机地址,也可以是一个网络地址,由该表中的标志字段来指定(如下所述)。

2.下一站路由器的IP地址

3.标志:其中一个标志指明目的IP地址是网络地址还是主机地址;另一个标志指明,下一站路由器是否为真正的下一站路由器还是一个直接相连的接口。

4.为数据报传输指定一个网络接口

IP路由选择是逐跳进行的,IP并不知道到达任何目的地的完整路径,所有的路由选择只为数据报提供下一站路由器的IP地址。他假定下一站路由器比接近发送数据报的主机更接近目的地。

IP路由选择主要完成这些功能(按先后顺序执行):

1、     搜索路由表,寻找能与目的IP地址完全匹配的表目(网络号和主机号都要匹配),如果找到,则把数据报发给该表目指定的下一站路由器或直接相连的网络接口。

2、     搜索路由表,寻找能与目的网路号相匹配的表目。如果找到,则把该数据报发给该表目指定的下一站路由器或直接相连的网络接口。

3、     搜索路由表,寻找默认的表目(default),则把该数据报发给该表目指定的下一站路由器。

如果上面这些步骤都没有成功,那么该数据报就不能被传送。如果该数据报来自本机,那么一般会向生成数据报的应用返回一个“主机不可到达”或网络不可到达的错误。完整的主机号匹配在网络号之前执行,只有当他们都失败后才选择默认路由。

子网寻址

现在所有的主机都要求支持子网编址。不是把IP地址简单的看成由单纯的一个网络号和一个主机号组成而是把一个主机号再分成一个子网号和主机号。这样做的原因是A类和B类地址为主机号分配了太多的空间可分别容纳的主机位224-2和216-2 (由于全0或全1的主机号都是无效的,所以这里减去2).事实上,在一个网络中人们并不安排这么多的主机。

从InterNIC获得某类IP网络号后,就由当地的系统管理员来进行分配,有他来决定是否建立子网。例如,有一个B类网络地址  140.252,在剩下的16bit中8位用于子网号,8位用于网络号;这样就允许有254个子网,每个网络有254台主机。


大多数的子网地址都是B类地址。子网还可以用于C类地址,只是他可用的比特数较少。

子网掩码

任何主机在引导时进行的部分配置是指定主机IP地址。除了IP地址外,主机好需要知道有多少位用于子网号多少位用于主机号。这是在引导过程中通过子网掩码来确定的。子网掩码是一个32为的值,其中值为1的比特用于网络号和子网号,为0的比特留给主机号。如下图:


给定IP地址和子网掩码以后,主机就可以确定IP数据报的目的是:(1)本子网上的主机;(2)本网络中,其他子网里的主机;(3)其他网络上的主机。

 

0 0
原创粉丝点击