点击上方



IP是TCP/IP协议族中的核心协议,所有TCP、UDP、ICMP、IGMP数据都通过IP数据报传输。IP提供一种尽力而为、无连接的数据包交付服务。“尽力而为”的含义是不保证IP数据报能成功的到达目的地。虽然IP不是简单的丢弃所有不必要流量,但它不对自己尝试交付的数据提供保证。
当某些错误发生时,比如一台路由器临时用尽缓冲区,IP提供一个简单的错误处理方法:丢弃一些数据。任何可靠性必须有上层提供,例如TCP。IPv4和IPv6都是用尽力而为的基本交付模式。
然后是“无连接”意味者IP不维护网络单元中数据报相关的任何连接状态信息,每个数据报独立于其他数据报来处理,这也意味着IP数据报可不按顺序交付,如果一个主机向同一目的地发送两个连续的数据报,每个数据报可以独立路由,通告不同路径,并且可能到达的顺序并不是发送端当初发送的顺序。
此外,IP数据报也可能发送其他问题,它们可能在传输过程中被复制,可能改变内容从而导致错误,所以在上层的一些协议需要处理这些潜在的问题,以便提供无差错的交付。
IPv4和IPv6的报文结构
IPv4数据报的首部大小是可变的,而IPv6的首部大小是固定的40字节,下面来看具体字段的解析:
版本:用于指定IP协议的不同版本,IPv4为4,IPv6为6。IPv4和IPv6除了版本字段位置相同其他都不同,因此,这两个协议不能直接互操作,主机或路由必须分别处理IPv4或IPv6(或两者,称为双栈)。
Internet头部长度(IHL):用来表示IPv4首部中32位字的数量,包括任何选项。由于它是一个4位的字段,所以IPv4首部被限制为15个32位字,即60字节。
服务类型(ToS):用于指定通信类型,前6位(DS字段)被称为区分服务字段,后2位(ECN)是显示拥塞通知字段或指示位,不同类型的数据报。例如时实数据报(如用于IP电话应用)与非时实流量(如FTP)。拥塞通知和指示位可以提供特定的等级服务,由网络管理员对路由器确定和配置策略。
总长度:即数据报长度,单位字节,通过这个字段和IHL可以确定IPv4的数据报的数据部分从哪里开始,以及数据的长度。IPv4数据报的最大长度(包括首部)为65535字节,IPv6的最大长度被限制为64KB,IPv6还支持一个超长度数据报选项,它理论上单个分组可支持4GB最大长度。一般情况下数据报很少超过1500字节,该长度能使得IP数据报能被最大容量的以太网帧的载荷字段承载。
以太网会将短帧填充到最小长度(64字节),虽然以太网最小有效载荷为46字节,但一个IPv4数据报也可能更小(20字节),如果没有总长度字段,IPv4实现将无法知道一个46字节的以太网帧是一个IP数据报,还是经过填充的IP数据报。另外主机不需要接收大于576字节的IPv4数据报,很多UDP协议传输数据的应用程序限制521字节大小的数据,以避免576字节的IPv4限制。
标识:发送主机在每次发送数据报时都将一个内部计数器加1,并将该计数器值复制到IPv4标识字段,它与另外两个字段标志和分片共同作用于分组分片的相关操作,在后期的IP分片相关博客中会有详细的介绍。
生存期(TTL):用于设置一个数据报可经过的路由器数量的上限,用来确保数据报不会永远在网络中循环。发送方将它初识化为某个值([RFC1122]建议为64,但128或255也不少见),每台路由器在转发数据报时将该值减1,当这个字段的值到达0时,该数据报被丢弃,并使用一个ICMP消息通知发送方。
协议:用于表示数据报有效载荷部分的数据类型,也就是运输层的协议。当数据报到达目的地时,用于确定交由上层哪个运输层协议处理,例如TCP、UDP等。
头部校验和:用于帮助路由器检测收到的IP数据报中的首部比特错误,注意它仅仅用于检验首部比特,而不是整个报文的比特。而且这个字段只在IPv4中有,在IPv6中没有这个字段。将首部中的每2字节当作一个数,用反码算术对这些数求和,具体见后面的详细介绍。
源和目的IP地址:当某源生成一个数据报时,它在源IP字段中插入它的IP地址,在目的IP地址字段中插入期最终目的地址,通常源主机通过DNS查找来决定目的地址。
上面介绍了IPv4以及与IPv6共用的首部字段,下面再来看看IPv6的扩展首部字段:
流标签:用于标识一条数据报的流,能够对一条流中的某些数据报给出优先权,或者它能够用来对某些应用(比如IP语音)的数据报给出更高的优先权,以优于来自其他应用(比如SMTP电子邮件)的数据报。
负载长度:即有效载荷长度,该16比特值作为一个无符号整数,给出了IPv6数据报中跟在定长的40字节数据报首部后面的字节数量。
下一个头部:该字段标识数据报中的内容需要交付给哪个协议(例如TCP或UDP),这个跟IPv4的协议字段功能是一样的。
跳数限制:转发数据包的每条路由器将对该字段的内容减一,如果跳数限制计数达到0则丢弃该数据报,与IPv4的生存期(TTL)字段功能一样。
Internet校验和
IPv4头部校验和与之前在链路层介绍的循环冗余检测CRC不同,为了给输出的数据报计算IPv4校验和,首先将数据报的校验和设置为0,IPv4对首部计算16位二进制反码和,这个16位二进制反码和被存储在校验和字段中。二进制反码加法可通过(循环进位加法)实现:当使用传统(二进制补码)加法产生一个进位时,这个进位以二进制1加在高位。
当一个IPv4数据报被接收时,对整个头部计算出一个校验和,包括校验和字段自身的值,假设这个数据报没有错计算出的校验和值为0(值FFFF的反码)。用下面的例子来详细解析:
假设某个IPv4数据报头为:E3 4F 23 96 44 27 99 F3 [00 00],括号中的值就是校验和。
校验和初始值被设置为0,如示例;
然后,以16比特为单位,两两相加,那么上面的示例可得:E34F+2396+4427+99F3=1E4FF;
如果计算结果大于0xFFFF,则将,高16为加到低16位上,对于上面的结果,即为0xE4FF+1=E500;
然后,将该值取反,即为~(E500)=1AFF,这个值就是发送方发送报文中的校验和字段的值;
当解决方受到数据报以后,如果数据报正常,那么它的数据报头应该是:E3 4F 23 96 44 27 99 F3 1A FF。
此时,前面16字节的内容不变,等于E500,然后将E500与刚刚计算的校验和1AFF相加;
如果结果为FFFF,那么该数据报正常,没有错误。
DS字段和ECN
在Internet协议中,也可以说是路由在转发数据报时可能并不会单纯的按照先到现转发的方式来提供服务,而可能是服务类型来决定转发的优先级,这要具体看网络管理员对路由的配置策略。
DS字段中的数字称为分区服务代码点(DSCP),在通常情况下,如果数据报拥有一个分配的DSCP,该数据报在通过网络基础设施交付过程中会保持不变。但是,某些策略可能导致一个数据报中的DSCP在交付过程中改变,也就是说在交付过程中可能因为网络基础设施提供者的服务策略,对数据报的DS字段值进行修改。
当数据报通过一台具有内部排队流量的路由器时,头部中的2位ECN位用于为数据报标记拥塞标识符,也就是说当路由器具备ECN感知能力的路由器会在转发分组时设置这两位。这种功能设计的作用是当分组被目的节点收到时,有些协议(TCP)会发现分组被标记并将这种情况通知发送方,发送方随后会降低发送速度,这样可在路由器因为过载而被迫丢弃流量之前缓解拥塞。
ToS服务类型的字段结构及其提供的功能和服务:
尽管原来的ToS(服务类型)没有被广泛的支持,但DS字段结构仍然提供了一些对它们的兼容能力,而且DS字段在某种程度上延续并改进了ToS的相关功能,下面先来了解ToS的结构:
优先级子字段用于表示哪些分组具有更高的优先级。D、T、R子字段分别用于表示延时、吞吐量、可靠性,如果这些字段值为1,分别表示低延时、高吞吐量、高可靠性。
优先级的取值范围是000(常规)~111(网络控制),表示优先级依次递增,它们都基于一个称为多级优先与抢占(MLPP)的方案,下面是ToS的优先级子字段各个值得具体优先级别:
简单的来说优先级的值越大,数据报被转发的优先顺序越高,路由器就会越先转发它。DTR则是路由器描述它的传输性能,优先级子字段的值决定路由器转发的顺序,DTR被用于上层(传输层)的拥塞控制。
DS字段与ECN字段的结构及其提供的功能和服务:
在定义DS字段时,优先级的值已定义在[RFC2474]中,以提供有效的兼容性。6位DS字段保存DSCP,提供对64个代码点的支持。特定DSCP值可通知路由器对接收的数据报进行转发或特殊处理。不同类型的转发处理表示为每跳行为(PHB),因此DSCP值可有效通知路由器哪种PHB被用于数据报。DSCP的默认值通常为0,对应常规的尽力而为的Internet流量。64个可能的DSCP值分为不同的用途,下面先来看DS字段和ECN的结构:
这里重点来关注DSCP,即SD字段的6位,其中5位是标准的,表示当接收的数据报应转发时,可以由一台兼容内部排队的路由器按照其优先级别进行处理(即PHB)。DSCP值被分为三个池,包括:标准的优先级别、实验/本地用途的(EXP/LU)优先级别、最终打算标准化的实验/本地用途的(*)优先级别,下面是它们的具体格式:
通过上面的代码点前缀就可以区分数据报的采用的是什么标准的转发优先级,但这一般不是我们需要关注的,首先要了解的DS字段如何兼容之前的ToS(服务类型)的优先级,在前面的ToS中介绍过它的优先级由前3位决定,在DS中采用xxx000形式的代码点来支持之前ToS的部分优先级字段,至于兼容哪些优先级可以具体参考[RFC0791]。
然后再来看DSCP标准的优先级和流量类别的具体代码点(二进制值):
默认(BE):000 000,表示位尽力而为的优先级,可以说它是优先级最低的,也是一个特殊的CS,即ToS中的优先级子字段000也是优先级最低的;
- 类选择器(CS):aaa 000,用于兼容ToS的优先级子字段。
- 确保转发(AF):aaa bb0,DSCP标准定义的优先级类型;
- 加速转发(EF):101 110,DSCP标准定义的用于承载语音的流量,因为语音要
- 求低延迟,低丢包率,是仅次于协议报文的最重要的报文,可以说它也是一种特殊的AF;
这里我们需要重点关注的是确保转发(AF)的流量类别,但需要注意的这里确保转发并不是一定保证数据报会被转发,而是相对默认000000而言它有两个机制来确保转发,一个是转发优先级由五个代码点前三位决定,另一个是丢弃优先级由五个代码点后两位决定,因为第六个代码点是用来表示标准策略的。
DS字段的优先级(DSCP优先级):由前三位二进制就可以产生七个优先级别,因为000是默认的尽力而为,所以从001~111只有七个级别,二进制数值越大表示的优先级越高,最先被转发。即111的优先级最高,但它当前还没有被准化,而是作为预留级别。
DS字段的丢弃优先级(DSCP丢弃优先级):由后两位二进制可以产生4个优先级别,00~11可以表示4个级别,二进制值越大表示优先级越高,相对前三位相同的转发优先级,丢弃优先级的二进制值越大,越先被丢弃。(但这种丢弃肯定是相对默认的000000服务类别要可靠一些,最先被丢弃的肯定是默认000000的数据报)。
有这些不同的转发优先级和丢弃优先级就组成了不同的DS服务类型,转发级别越高丢弃级别越低的服务的费用也就有不同的差别,具体要看服务提供商(ISP)的服务而定。
而另一方面,不同的服务类型一般也用来支持不同的数据流,在七个转发优先级和默认共八个应用类型:7预留(111)、6预留(110)、5语音(101)、4视频会议(100)、3呼叫信号(011)、2高优先级数据(010)、1中优先级数据(001)、0尽力服务数据(000),一般服务提供商就会基于不同的应用类型来提供流量服务,结合丢弃级别就会产生不同的服务资费标准,下面是不同的标准服务类型和对应的DS字段值以及相关描述:
IP选项
IP支持一些可供数据报选择的选项,在IPv4初期阶段Internet规模很小,来自恶意用户的威胁关注较少。由于IPv4头部大小的限制以及相关安全问题,在IPv6中,大部分选项已被删除或改变,不再是IPv6基本头部的一部分,而被放在IPv6头部之后的一个或多个扩展头部中。
IP路由器接收到一个包含选项的数据报,通常需要对数据报进行特殊处理。在某些情况下,尽管IPv6路由器可以处理扩展头部,但很多头部被设计为仅由终端主机处理。在路由器中,带选项或扩展的数据报不会像普通数据报那样被快速转发。
IPv4的选项
关于IPv4的选项可以在相关描述性的RFC中找到,这个完整的列表会被定期更新,并可在[IPPARAM]中在线查看。选项的范围总是以32位为界,如果字符不够用0填充,这确保IPv4头部始终是32位的倍数(IHL字段的要求)。如果选项存在,它在IPv4分组中紧跟在基本IPv4头部之后。
选项标识(8位):选项由一个8位的类型字段标识,这个字段被细分为3个子字段:
复制(1位):当值为0时表示仅在第一个分片中复制,当值为1时表示复制到所有分片;
类别(2位):00表示数据报控制、01表示保留、10表示排错和管理、11表示保留。
编号(5位):各种选项的编号,用5位表示,比如00000是选项结束的编号、00001是无操作的选项(用于填充)的编号、00011是不严格的源路由(发送方列出分组转发时遍历的路由器"航点",不严格表示可以包含其他航点)的编号、00100是时间戳(用于记录分组的源和目的地的日期和时间)的编号、00111是记录路由(在分组的头部记录经过的路由器)的编号、01001是严格路由(发送方列出分组转发时遍历的路由器“航点”,严格表示所有航点都要按顺序遍历)的编号。关于更多选项的编号可以参考[IPPARAM]相关选项文档。
选项的长度字段(8位):表示选项的总长度,大部分选项的总长度是可变的,但是单字节不需要长度字段,单字节只有两个编号分别为00000的选项结束和00001的无操作选项,其他选项都需要长度字段;
选项的值:即记录选项相对应的一些数据。



声明:内容来源于网络,在此致谢,如侵权请私信删除。
到此这篇ipv6回环地址是什么(ipv4环回地址)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/57738.html