计算机网络学习 - IP协议

一、概述

        网际互连协议(Internet Protocol),简称IP。是OSI模型和TCP/IP模型中的网络层协议,是构成互联网的基础。对上可载送传输层各种协议的信息,例如TCP、UDP等。对下可将IP信息包放到链路层,通过以太网、令牌环网络等各种技术来传送。
        IP协议版本主要分为:

  • IPv4协议。网际协议第4版(Internet Protocol version4),简称IPv4。是TCP/IP协议使用的数据报传输机制。数据报是一个可变长分组,有两部分组成:头部和数据。头部长度可由20~60个字节组成,该部分包含有与路由选择和传输有关的重要信息。
  • IPv6协议。网际协议第6版(Internet Protocol version6),简称IPv6。自从1970年代IPv4问世以来,数据通信技术日新月异有了很大发展。虽然IPv4设计得很好,但其缺点也逐渐显露出来:
            (1)虽说借助子网化、无类寻址和NAT技术可提高IP地址使用率,因特网中IP地址的耗尽仍然是一个没有彻底解决的问题。
            (2)IPv4没有提供对实时音频和视频传输这种要求传输最小时延的策略和预留资源支持。
            (3)IPv4不能对某些有数据加密和鉴别要求的应用提供支持。
            在IPv6中,IP地址格式和分组长度以及分组的格式都改变了。IPv6每个分组由必须的基本头部和其后的有效载荷组成。有效载荷由可选的扩展头部和来自上层的数据组成。基本头部占用40字节,有效载荷可以包含65535字节数据。

二、IPv4协议

在这里插入图片描述
在这里插入图片描述

  • 版本(Version):占4位。就是IP协议的版本,通信双方的IP协议必须要达到一致,IPv4的版本就是4。
  • 首部长度(IHL):占4位。指的是IP层头部占32 bit字的数目(也就是IP层头部包含多少个4字节 – 32位),包括任何选项。由于它是一个4比特字段,因此首部最长为60个字节。普通IP数据报(没有任何选择项)字段的值是5 <==> 5 * (32 / 8) = 5 * 4 = 20 Bytes,即实际的IP首部长度=(IHL * 4)字节。
  • 服务类型(TOS: Type Of Service):占8位。包括一个3 bit的优先权子字段(现在已被忽略),4 bit的TOS子字段和1 bit未用位但必须置0.4 bit的TOS子字段分别代表:最小时延,最大吞吐量,最高可靠性和最小费用。4 bit中只能设置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务。
  • 总长度(Total Length):占16位。是指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据报最长可达65535字节。总长度字段是IP首部中必要的内容,因为一些数据链路(如以太网)需要填充一些数据以达到最小长度。尽管以太网的最小帧长为46字节,但是IP数据可能会更短。如果没有总长度字段,那么IP层就不知道46字节中有多少是IP数据报的内容。
  • 标识(ID:Identification):占16位。唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加1。但这个标识并不是平常的序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中,等到重组的时候,相同标识符的值的数据报就会被重新组装成一个数据报。
  • 分段标志(Flags):占3位。由于分片重组,由三个比特构成。
            (1)第一个比特未使用,目前必须是0。
            (2)第二个比特表示是否进行分片,0表示可以分片,1表示不能分片。在路径MTU发现技术中就用到了这个位。
            (3)第三个比特表示在分片时,是否表示最后一个包。1表示不是最后一个包,0表示分配中最后一个包。
  • 分段偏移(Fragment Offset):占13位。指明了该分段在当前数据报中的什么位置上。除了一个数据报的最后一个分段以外,其他所有的分段(分片)必须是8字节的倍数。这是8字节是基本分段单位。由于该域有13个位,所以,每个数据报最多有8192个分段。因此,最大的数据报长度为65536字节,比总长度还要大1。
  • 生存时间(TTL: Time To Live):占8位。设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。TTL是一个用于限制分组生存期的计数器。这里的计数时间单位为秒,因此最大的生存期为255秒。在每一跳上该计数器必须被递减,而且当数据报在一台路由器上排队时间较长时,该计数器必须被多倍递减。在实践中,它只是跳计数器,当它递减到0的时候,分组被丢弃,路由器给源主机发送一个警告分组。此项特性可以避免数据报长时间地逗留在网络中,有时候当路由表被破坏之后,这种事情是有可能发生的。
  • 协议(Protocol):占8位。表示IP协议的上层协议使用了哪个协议。比如TCP协议的编号为6,UDP编号为17。
  • 首部检验和(Header Checksum):占16位。是根据IP首部计算的检验和码。它不对首部后面的数据进行计算。ICMP,IGMP,UDP和TCP在它们各自的首部中均含有同时覆盖首部和数据检验和码。IPv4的报头的长度一般为20个字节,而校验和的长度为16位 = 2个字节,用一个例子来讲解计算过程:
            假设某个IPv4数据包报头为:E3 4F 23 96 44 27 99 F3 [00 00],注意,用中括号括起来的就是校验和。
            (1)校验和的初始值自动被设置为0。
            (2)以16bit为单位,两两相加,对于该例子,即为:E34F + 2396 + 4427 + 99F3 = 1E4FF。
            (3)若计算结果大于0xFFFF,则将,高16位加到低16位上,对于该例子,即为:0xE4FF + 0x0001 = E500。
            (4)将该值取反,即为:~(E500) = 1AFF。
            此时,发送包已经计算完毕,下面,我们再来计算接收方的信息
            (1)若数据包正常,那么,它的报头应该是这样:E3 4F 23 96 44 27 99 F3 1A FF。
            (2)此时,前18字节的内容不变,等于E500,然后,将E500与刚刚计算的校验和1AFF相加。
            (3)若计算结果为FFFF,则该数据包正常,否则错误。
  • 源地址(Source Address):占32位。将IP地址看作是32位数值则需要将网络字节顺序(小端)转化位主机字节顺序,即需要进行大小端转换。转化的方法是:将每4个字节的第1、4字节互换,将第2、3字节互换。
  • 目的地址(Destination Address):占32位。转换方法和源地址一样。
  • 可选字段(Options):在实际上很少用到,仅在试验或诊断时用,可以没有,如果有,需要配合填充占满32位。

三、IPv6协议

在这里插入图片描述
在这里插入图片描述

  • 版本(Version):占4位。就是IP协议的版本,通信双方的IP协议必须要达到一致,IPv6的版本就是6。
  • 通信量类(Traffic Class):占8位。相当于IPv4的TOS字段。TOS在IPv4中几乎没有什么建树,未能成为卓有成效的技术,本来计划在IPv6中删掉这个字段,不过出于今后研究的考虑还是保留了该字段。
  • 流标号(Flow Label):占20位。准备用于服务质量(QoS:Quality Of Service)控制。使用这个字段提供怎样的服务已经成为未来研究的课题。不适用QoS时每一位可以全部设置为0。 在进行服务质量控制的时,将流标号设置为一个随机数,然后利用一种可以设置流的协议RSVP(Resource Reservation Protocol )在路由器上进行Qos设置。当某个包在发送途中需要QoS时,需要附上RSVP预想的流标号。路由器接收到这样的IP包后现先将流标号作为查找关键字,迅速从服务质量控制信息中查找并做相应处理。此外,只有流标号、源地址以及目标地址三项完全一致时,才被认为是一个流。
  • 有效荷载长度(Payload Length):占16位。指包的数据部分。IPv4的TL(Total Length)是指包含首部在内的所有长度。然而IPv6中的这个Playload Length不包括首部,只表示数据部分的长度。由于IPv6的可选项是指连接IPv6首部的数据,只有当有可选项时,此处包含可选项数据的所有长度就是Playload Length。
  • 下一个首部(Next Header):占8位。相当于IPv4中的协议字段。通常表示IP的上一层协议是TCP或UDP。不过在有IPv6扩展首部的情况下,该字段表示后面第一个扩展首部的协议类。
  • 跳数限制(Hop Limit):占8位。与IPv4中的TTL意思相同。为了强调“可通过路由器个数”这个概念,才将名字改为“Hop Limit”。数据每经过一次路由器就减1,减到0则丢弃数据。
  • 源地址(Source Address):占128位。表示发送端IP地址。
  • 目的地址(Destination Address):占128位。表示接收端IP地址。
  • 扩展首部(Extensions):IPv6的首部长度对固定,无法将可选项将入其中,取而代之的是通过扩展首部对功能进行了有效扩展。 扩展首部通常介于IPv6首部与TCP/UDP首部中间。在IPv4中可选项长度固定为40字节,但是在IPv6中没有这样的限制。也就是说,IPv6的扩展首部可以是任意长度。扩展首部当中还可以包含扩展首部协议以及下一个扩展首部字段。

四、IPv6与IPv4的不同之处

  • 取消了首部长度,因为IPv6的首部长度是固定40个字节。
  • 取消了服务类型,因为流标号和优先级结合起来实现了服务类型的功能。
  • 取消了总长度字段,改用为有效载荷长度,有效载荷就是后面的扩展首部加上数据报中的数据。
  • 取消了标识,标志和片偏移,因为这些功能都包含在了扩展首部里面。
  • 取消了协议字段,改用为下一个首部,功能不变,这样更容易理解。
  • 取消了生存时间ttl,改用为跳数限制,功能不变,这样更容易理解,更形象了。
  • 取消了首部效验和,这样加快了路由器对数据报的处理速度,在数据链路层中,当我们发现有差错的帧就会抛弃,在运输层中,在udp中,当发现有差错就会抛弃,在tcp中,当发现有差错就会重传,直到传送到目的进程为止。因此在网路层的检测就可以精简掉。
  • 取消了选项字段,功能归并在了扩展首部上。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值