IP网际协议

来源:互联网 发布:excel数据管理软件 编辑:程序博客网 时间:2024/05/11 14:05

         IP协议位于OSI网络模型的网络层,提供一种速度快但不可靠的服务,不可靠的意思是它不保证IP数据报能成功的到达目的地。TCP、UDP、ICMP、IGMP数据都是以IP数据报格式传输的,每一份数据包都包含源IP和目的IP地址。IP协议提供点到点的服务,IP解决的最根本的问题是如何把网络上的主机连接在一起。

        IP路由选择:
        如果目的主机与源主机直接相连(如点对点链路)或都在一个共享网络上(以太网或令牌环网),那么I P数据报就直接送到目的主机上。否则,主机把数据报发往一默认的路由器上,由路由器来转发该数据报。IP层既可以配置成路由器功能,也可以配置成主机;数据在传输的过程中源IP和目的IP始终不变,但是封装和目的链路层地址(如MAC地址)在每一站都可以改变。

        IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP、IGMP数据都以IP数据报格式传输。
IP层提供了不可靠、无连接的数据报服务。
1. 不可靠(unreliable)的意思是它不能保证IP数据报能成功的到达目的地。IP仅提供最好的传输服务。如果发生了某种错误,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息报给信源端。任何要求的可靠性必须由上一层(TCP)层来提供。
2. 无连接(connectionless)这个术语意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明IP数据报可以不按顺序接收。如果一个信源向相同的的住宿发送两个连续的数据报(先A,后B),每个数据报都是独立的进行路由选择,可能选择了不同的线路来传输,因此B是可能在A之前先到达信宿的。


图顶部,最高位在左边,记为0bit,最低位在右边,记为31bit(4字节)。

4字节的32bit值以下面次序传输:首先0-7bit,其次8-15bit,然后16-23bit,最后是   24-31bit,这种传输次序称作big endian字节序。由于TCP/IP首部中所有的二进制整数在网络中都要求以这种格式传输,因此又将它称为“网络字节序”。如不是此种形式的二进制存储,则必须在传输数据之前把首部转换成网络字节序。
 
1.4位版本:IP所用版本,有IPv4, IPv6
 
2.4位首部长度:指的是占32bit字的数目,包含任何选项。由于它是一个4bit字段,因此首部最长为60个字节。
 
3.服务类型(TOS)包括一个3bit的优先权子字段(忽略),4bit的TOS子字段和1bit未用位但须置0。4bit的TOS分别代表:最小延时、最大吞吐量、最高可靠性和最小费用。4bit中只能置其中一位,如4位均为0,则意味着是一般服务。
 
4.总长度字段指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长为16bit,所以IP数据报最长可达65535(超级通道的MTU为65535。它的意思其实不是一个真正的MTU,它使用了最长的IP数据报)。当数据报被分片时,该字段的值也随着变化。
尽管可以传一个长达65535字节的IP数据报,但是大多数的链路层都会对它进行分片,而且主机也要求不能接收超过576字节的数据报。由于TCP把用户数据分成若干片,因此一般来说这个限制不会影响TCP。UDP的应用(如RIP,TFTP,BOOTP,DNS,及SNMP),它们都限制用户数据报长度为512字节,小于576字节从而避免IP数据报分片。
但是现在大多数的实现(支持网络文件系统(NFS)的实现)允许超过8192字节(8K)的IP数据报。
总长度字段是IP首部中必要的内容,因为一些数据链路(如以太网)需要填充一些数据以达到最小长度。尽管以太网最小帧长为46字节,但是IP数据可能会更短。如果没有总长度字段,那么IP层就不知道46字节中有多少是IP数据报的内容。
 
5.标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会增1。
 
6.TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。TTL的初始值由源主机设定(通常为32或64)一旦经过一个处理它的路由器,它的值就减1。当该字段值为0时,数据报就被丢弃,并发过ICMP报文通知源主机。
 
7.首部校验和字段是根据IP首部计算检验和码。它不对后面的数据进行计算。ICMP、IGMP、UDP和TCP在它们各自的首部中均包含有同时覆盖首部和数据检验和码。为了计算一份数据报IP校验和,首先把校验字段置为0。然后对首部中每个16bit进行二进制反码求和,结果存放检验的字段中。当收到一份数据报后,同样对首部中的每个16bit进行二进制反码求和。由于接收方在计算过程中包含了发送方存在首部中的校验和,因此如果在传输过程中没发生任何差错,那么接收方计算的校验和结果应全为1。如果不全为1(即校验和错误),那么IP就丢弃收到的数据报。但不生成差错报文,由上层去发现丢失的数据报并进行重传。
ICMP,IGMP,TCP和UDP都采用相同校验和算法,尽管TCP和UDP除了本身的首部和数据外,在IP首部中还包含不同的字段。
由于路由器经常只修改TTL字段(减1),因此当路由器转发一份报文时可以增加它的校验和,而不需要对IP整个首部进行重新计算。
 
8.每一份IP数据报都包含源IP地址和目的IP地址。
 
9、选项:是数据报中一个可变长的信息。目前这些选项定义如下:
。安全和处理限制(用于军事领域)
。记录路径(让每个路由器都记录下它的IP地址)
。时间戳 (让每个路由器都记录下它的IP地址和时间)
。宽松的源站选路 (为数据报指定一系列必须经过的IP地址)
。严格的源站选路(与宽松源站选路类似,但是要求只能经过这些指定的地址,不能经
过其它地址)。
这些选项很少被使用,并非所有的主机和路由都支持这些选项。
选项字段一直都是以32bit作为界限,在必要时必须插入值为0的填充字节。这样就保证IP首部始终是32bit的整数倍速(这是首部长度字段所要求的)。
 
IP路由选择
如果目的主机与源主机直接相连(如点对点连接)或都在一个共享网络上(以太网或令牌环网),那么IP数据报就直接送到目的主机。否则,主机把数据报发往一个默认路由器,由路由器来转发该数据报。大多数主机采用这个种简单机制。
IP层可以配置成路由器的功能,也可以配置成主机功能
IP层在内存中有一个路由表,当收到一份数据报并进行发送时,它都要对该表搜索一次,当数据报来自某个网络接口时,IP首先检查目的IP地址是否为本机的IP地址之一或是IP广播地址,如果是,数据报就被送到由IP首部协议字段所指定的协议模块进行处理,如果IP数据报的目的地址不是这些,那么如果IP层被设置为路由器的功能,那么就对数据报进行转发,否则数据报被丢弃。
 
路由表中每一项都包含下面这些信息:
1、 目的IP地址。它既可以是一个完整的主机地址,也可以是一个网络地址,由该表目中的标志字段来指定。主机地址有一个非0的主机号,以指定某一特定的主机。网络地址中的主机号为0,以指定网络中的所有主机。
2、 下一站(下一跳)路由器的IP地址,或者有直接连接的网络IP地址。下一站路由器是指一个在直接相连网络上的路由器,通过它可以转发数据报。下一站路由器不一定是最终的目的,但是它可以把传递给它的数据报转发到最终目的地。
3、 标志。其中一个标志指明目的IP地址是网络地址还是主机地址,另一个标志指明下一站路由器是否为真正的下一站路由器,还是一个直接相连的接口。
4、 为数据报的传输指定一个网络接口。
 
IP路由选择是逐跳地(hop-by-hop)进行的。从这个路由信息可以看出,IP并不知道到达任何目地的完整路径(除了那些直接相连的目的)。所有的IP路由选择只为数据传输提供一下站路由器的IP地址。
IP路由选择主要完成以下这些功能。
1、 搜索路由表,寻找能与目的IP地址完全匹配的表目(网络号和主机号都要匹配)。如果找到则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)
2、 搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于路由表中的标志字段值)。目的网络上的所有主机都可以通过这个表目来处决。例如,一个以太网上的所有主机都是通过这个表目进行寻径的。这种搜索网络的匹配方法必须考虑可能的子网掩码。
3、 搜索路由表,寻找标为“默认(default)”的表目。如果找到,则把报文发送给该表目指定的下一站路由器。
4、 如果上面这些步骤都没有成功,那数据报就不能发送。如果不能发送的数据报来自本机,那么一般会向生成数据报的应用程序返回一个“主机不可达”或“网络不可达”的错误。
完整主机地址匹配在网络号匹配之前执行。只有当它们都失败后才选择默认路由。默认路由以及下一站路由器发送的ICMP间接报文是IP路由选择机制中功能强大的特性。为一个网络指定一个路由器,而不必为每个主机指定一个路由器,这是IP路由选择的另一个基本特性,这样做可以极大地缩小路由表的规模。
每当数据包发出后,IP头中的目的IP地址始终不会改变,改变的是链路层首部的目的地址(即MAC地址),MAC地址指向的始终是下一部路由的MAC地址(其中使用了ARP地址解析协议)。数据到达下一路由后在路由表中进行搜索(具体请参见IP选路),以确定下一部是否为目的地。如下一站地址是IP头部中的目的地址,则数据被传送到目的地。如最终找不到与IP头部中的目的地址相匹配的地址,则数据包被丢弃。(数据的路由跨越是由TTL值指定的)。
 
环回地址为:127.0.0.1,此地址不需要子网掩码。
 
子网掩码是划分网络所使用的。255.255.4.56 则表示此网络的网络号为“255.255”了网号为“4”主机号为“56”,在此表示的是一个B类的网络地址。路由器先匹牌网络号,找到网络号后再根据子网号来进行主机的匹配。

IP协议不要求中间节点,如路由器保存状态信息,一旦中间链路保存状态信息,一旦中间链路或节点出现了故障,数据报可以选择其他的路径,而仍然能够保持上层协议的正常通信。

IP层有三个主要功能:寻址和选路、封装和解析、分片和重组。


原创粉丝点击