《RFC791中文-IP合约协议规范标准.doc》由会员分享,可在线阅读,更多相关《RFC791中文-IP合约协议规范标准.doc(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、RFC791中文-IP协议RFC 791 - 互联网协议RFC:791互联网协议DARPA互联网程序协议规范1981.9防御高级研究计划结构信息处理技术办公室1400 Wilson Boulevard Arlington, Virginia 22209南吉利福尼亚大学信息科研所目录 前言 . iii1. 介绍 . 1 1.1 出发点. 1 1.2 范围. 1 1.3 接口 . 1 1.4 操作 . 22. 总览 . 5 2.1 同其他协议的联系 . 9 2.2 操作模型 . 5 2.3 功能描述 . 7 2.4 网关 . 93. 规范 . 11 3.1 Internet头部格式 . 11 3.
2、2 讨论 . 23 3.3 接口 . 31附录 A: 范例. 34附录 B: 数据传输顺序. 39词汇. 41参考. 45Page i前言本文档详细说明叻国防部(DoD)的标准互联网协议.文档基于APRA互联网协议的前六个早期版本.很多人对规范的概念以及正文作出过贡献.这个版本对寻址(addressing),错误处理(error handling ),选项编码(option codes),以及互联网的安全(security)、优先(predence),划分(compartments)、处理限制的特性作出了修订。 Jon Postel Editor September 19811.介绍1.1出发
3、点(Motivation)Internet协议是为了在包交换(packet-switched)计算机通讯网络的互联系统中使用而设计的。我们称这样的系统为“catener”【1】。Internet协议提供从发起者(source)到目的地(destination)的块数据(数据报)的传输,发起者和目的地都是由固定长度的地址标识的主机(host)。如果需要,Internet协议也提供长数据报的分片(fragmentation)和重组(reassembly),以通过“小包”(small packet)网络传输大数据报。1.2. 范围(Scope)internet协议仅限于提供在互联网络系统上从发起者到
4、目的地投递一个internet数据报所需的功能。不提供增强端到端(end-to-end)的可靠性,流程控制(flow control),排序(sequencing),和其它主机到主机协议上常有的服务。internet协议可以支持网络提供不同类型和不同质量的服务(The internet protocol can capitalize on the services of its supporting networks to provide various types and qualities of service.)。1.3. 接口(Interfaces)在internet环境中,本协议被视
5、为主机到主机(host-to-host)的协议。本协议调用本地网络协议来携带internet数据报到下一个网关或者目的主机。比如,TCP模块调用internet模块携带一个TCP分片(该分片包含了TCP头部和用户数据)作为一个internet数据报的数据部分。TCP模块会在internet头部中提供地址(addresses)和其他参数作为调用Internet模块的参数。然后internet模块会创建一个internet数据报并且调用本地网络接口来传输internet数据报。 比如,对于ARPANET,internet模块会调用一个本地网络模块(local net module),该模块会给in
6、ternet数据报添加一个1822个字节的前导字符,创建一条传输给IMP的ARPANET消息。ARPANET地址将通过本地网络接口从internet地址中获取,该地址是ARPANET中的某些主机的地址,该主机可能是个到其他网络的网关。 1.4 操作(operation)internet协议执行两个基本功能:寻址(addressing)和分片(fragmentation).internet模块使用在internet头部中携带的地址来给目的地址传送internet数据报.传输路径的选择被称作选路(routing).internet模块使用internet头部中的域来分片和重组internet数据报
7、,这在通过小包网络传输的情况下是必要的. 操作模型是位于每个主机上的internet模块负责internet通信,位于每个网关上的internet模块负责网络互联.这些模块都具有解析地址,分片和重组数据报等相同的功能.另外,这些模块(特别是网关上的internet模块)具有选路和其他功能对应的程序.internet协议将每个internet数据报视为同任何其他internet数据报无关的独立实体.这里不存在连接或者逻辑回路(虚的或其他). internet协议使用4个主要的机制提供服务:服务类型(Type of Service),生存时间(Time to Live),操作(Operation)
8、和校验和(Header Checksum).服务类型用来指示要求的服务质量.服务类型是一个抽象的整套的参数,这些参数指定了组成internet的网络中提供的服务选择.这个服务指示类型在选路的时候被网关用来为某一个特定的网络,下一个网络或者下一个网关选择真实的传输参数.生存时间数据报生存时间的上限.它由数据报的发送者设定,在网络上每个点,当数据报被处理的时候,逐渐递减.如果生存时间在internet数据报到达目的地址前达到0值,internet数据报就被销毁.生存时间可以看作一个自我销毁时间限制. 选项(options)提供了在某些情况下需要或有用的控制功能,但是大多数情况下是不必要的.选项包括
9、时间戳(timestamp),安全(security)和特殊选路(special routing)校验和提供了处理internet数据报使用到的信息被正确传输的确认.数据可能包含错误.如果校验和失败了,internet数据报就被检测到错误的实体立即丢弃.Internet协议并没有提供可靠传输机制.没有端对端或者逐跳(hop-by-hop)的确认机制.没有数据的错误控制,只有一个头部校验和.没有重传.没有流控.检测到的错误可以通过Internet 控制消息协议(ICMP)来报告,该协议在internet协议模块中实现.2. 总览(OVERVIEW)2.1. 同其他协议的关系(Relation t
10、o Other Protocols) 下图展示了internet协议在协议层次中的地位: +-+ +-+ +-+ +-+ |Telnet| | FTP | | TFTP| . | . | +-+ +-+ +-+ +-+ | | | | +-+ +-+ +-+ | TCP | | UDP | . | . | +-+ +-+ +-+ | | | +-+-+ | Internet Protocol & ICMP | +-+-+ | +-+ | Local Network Protocol | +-+ Protocol Relationships Figure 1. Internet协议接口往上是高级
11、别的主机到主机的协议,向下则是局域网络协议(local network protocol).在这里,局域网络(local network)可以是在一栋大楼里面的一个小网络,也可以是像ARPANET这样的大网络. 2.2. 操作模型(Model of Operation)从一个应用程序到其他应用程序的传输数据报操作模型可以通过如下例子展示: 假设传输包括一个中间网关. 发送程序准备好数据后,调用局域网络模块来发送那个数据(该数据作为一个数据报),在调用接口的时候传递目的地地址和其他参数. Internet模块组装数据报头部,并且给他附着一个数据.Internet模块为这个internet地址确定
12、一个局域网络地址.在这里,它就是一个网关的地址.它发送这个数据报和局域网络地址给局域网络接口. 局域网络接口创建一个局域网络头部,并为它附着一个数据报,然后通过局域网络传输. 到达网关主机的数据报被封装(wrapped)在局域网络头部.局域网络接口去掉(strip off)头部,然后将数据报传送给internet模块.internet模块从internet地址确定数据报需要被发送到第二个网络的其他主机上.internet模块确定目的主机的局域网地址.调用局域网接口来发送数据报. 这个局域网地址创建一个局域网头部并和数据报组装在一起,然后将组装结果发送给目的主机. 在这个目的主机上,局域网接口去
13、掉数据报的局域网头部,然后交给internet模块. internet模块确定数据报所要交付的应用程序.然后将数据作为一个系统调用的响应传递给应用程序,调用时传递了源地址和其他参数. Application Application Program Program / Internet Module Internet Module Internet Module / / LNI-1 LNI-1 LNI-2 LNI-2 / / Local Network 1 Local Network 2 Transmission Path Figure 22.3. 功能描述(Function Descripti
14、on) Internet协议的功能和目的是通过一个互联的网络传输数据报.这是通过从一个internet模块到另外一个internet模块传递数据报直到目的地址来实现.Internet模块位于主机上或者internet系统上的网关.数据报通过基于一个internet地址的解析从一个internet模块选路到另一个internet模块. 因此,internet协议的一个重要功能就是internet寻址.在从一个internet模块到另外一个internet模块的信息寻址中,数据报可能需要在一个最大包大小小于数据报大小的网络上传输.为了客服这个困难,在internet协议中提供了分片机制(fragm
15、entation mechanism). 寻址(Addressing) 名字(names),地址(addresses)和路由(routes)是有区别的.名字指示了我们所要寻找的.地址告诉我们它在哪里.路由告诉我们如何到达哪里.internet协议主要处理地址.从域名到地址的映射是高级别的协议(如主机到主机或者应用程序)的任务.Internet模块将Internet地址映射为局域网络地址.将局域网络地址映射到路由是底层程序(如局域网络或者网关)的任务. 地址固定为4段8位的地址(32位).以网络号码开始,接下来是本地地址(称为其他部分).有3种形式或者类型的internet地址:A类地址,第一段
16、的最高位为0,其他7位为网络地址.剩下的24位位本地地址.B类地址,前两段为网络地址,其中前两个字节位10,其他14个字节为网络地址,后两段为本地地址.C类地址的前三段为网络地址,最后一段为本地地址.在前三段中,前三位为110,其他21位为网络地址. 在将internet地址转化位局域网络地址的时候必须注意:单个物理主机必须能够被视为几个不同的主机,通过使用不同了internet地址。有些主机还可能有多个物理接口(multi-homing). 也就是说,对一个主机来说,必须可以有多个网络的物理接口,每个接口可以有多个逻辑internet地址. 地址映射的例子可以参考Address Mappin
17、gs5分片(Fragmentation) 当在一个允许大包大小的internet数据报的局域网络上产生,且必须在包大小为较小的局域网络上传输的时候,分片是必须的. 一个数据报可以标为不可分片.任何internet数据报如果这样标记,则在任何情况下,不能被分片.如果标记为不可分片的数据报除非分片不能到达目的地,则将其丢弃. 在对internet协议模块不可视的局域网络上分片,传输和重组称为intranet分片,可以被使用. internet分片和重组程序需要能够将一个数据报分割成任意数量的块,这些块可以在之后重组.分片接收者使用identification头部来确保不同的分片不被混在一起.分片偏
18、移(fragment offset)头部告诉接收者分片在原始数据报中的位置.分片偏移和分片长度(frament length)确定了这个分片所覆盖的原始数据报的块.more-fragments标志(通过重置)指示了最后一个分片.这些头部提供了足够的信息来重组数据报. identification头部被用来区分一个数据报的不同分片.internet数据报的生成(originating)协议模块设定identification头部为一个值,该值必须是对源地址和目的地址对和协议范围内在数据包的生存期间是唯一的(译者注:该值对同一source,destination,protocol在生存期间是唯一的
19、).对于一个完整的数据报数据包的生成协议模块(originating protocol module)设定more-fragments标志为0,同时设定分片偏移为0. 为了对一个长internet数据报进行分片,internet协议模块(如网关),创建两个新的internet数据报,将internet头部内容从长数据报拷贝到两个新internet头部.长数据报的数据在8 octet的整数倍边界被分割成两部分(第二部分不必是8 octets的整数倍,但第一部分必须是).将第一部分8 octet块的数目为NFB(Number of Fragment Blocks:分片块个数).第一部分数据被放在第
20、一个新的internet数据报,总长度头部设置成第一个数据报的长度.more-fragments标志设成1.数据的第二部分放在第二个新internet数据报里面.总长度头部设置成第二个数据报的长度.more-fragments标志设置成同长数据报一样的值.第二个新internet数据报的片偏移头部值设置成长数据报的片偏移头部值加上NFB的和.这一过程可以通用化为n次分割,前面描述的是二分. 要重组internet数据报的分片,internet协议模块(比如目的主机)将identification,目的地地址,源地址和协议四个头部值一样的internet数据报组合在一起.这一结合是通过将每个分片
21、的数据块放在分片的intenet头部中的片偏移标识的位置来实现的.第一个分片的分片偏移值为0,最后一个分片的more-fragments标志为0.2.4. 网关(Gateways)网关实现了internet协议,可以在网络间前推数据报.网关也实现了网关到网关的协议(GateWay to Gateway Protocol:GGP协议),用于协调选路和其他internet控制信息.在网关中,高层协议需要被实现,且GGP功能被加到IP模块. +-+ | Internet Protocol & ICMP & GGP| +-+ | | +-+ +-+ | Local Net | | Local Net
22、| +-+ +-+ Gateway Protocols Figure 3.3. 规范(SPECIFICATION)3.1. Internet头部格式(Internet Header Format)internet头部内容如下: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | +
23、-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Addre
24、ss | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Example Internet Datagram Header Figure 4. 注:每个间隔代表
25、一位.版本(version):4位版本头部指示了internet头部的格式.本文当描述的是版本4. Internet头部长度(IHL): 4 位internet头部长度是用32位表示的internet头部的长度,它指向数据的开始处.备注:一个正确头部的最小头部长度值是5.(译者注:5表示头部长度值为5*4=20 0ctets)服务类型(Type of Service):8位 服务类型提供了所要求的服务质量的抽象参数的指示.这些参数被用于在一个特定的网络上传输数据报时指导真实服务参数的选择.有些网络会提供服务优先级参数(service Precedence),高优先级的交通流比其他交通流重要一些
26、(通常通过在高负载的时候仅接受高于某一特定优先级的交通流来实现).主要的选择是3方面的权衡:低延迟(low-delay),高可靠性(high-reliability),和高吞吐(high-throughput). Bits 0-2: Precedence(优先级). Bit 3: 0 = Normal Delay(正常延迟), 1 = Low Delay(低延迟). Bits 4: 0 = Normal Throughput(正常吞吐), 1 = High Throughput(高吞吐). Bits 5: 0 = Normal Relibility(正常可靠性), 1 = High Relib
27、ility(高可靠性). Bit 6-7: Reserved for Future Use(保留). 0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ | | | | | | | | PRECEDENCE | D | T | R | 0 | 0 | | | | | | | | +-+-+-+-+-+-+-+-+ Precedence(优先级) 111 - Network Control(网络控制) 110 - Internetwork Control(互联网络控制) 101 - CRITIC/ECP(至关重要) 100 - Flash Override(Flash覆盖) 01
28、1 - Flash 010 - Immediate(立即) 001 - Priority(主要) 000 - Routine(常规)延迟(Delay),吞吐量(Troughout)和Reliability(可靠性)的指示可能会增加服务的代价.在很多网络中,某一个参数带来的高性能很可能带来其他参数的低性能.只有在一些非正常的情况下,这三个指示中两个必须设定. 服务类型被用于在通过internet系统传输的时候指定数据报的处理.在Service Mappings8中给出了internet服务类型到真正的服务类型的映射的例子,如AUTODIN II,ARPANET,SATNET和PRNET.网络内控
29、制优先权的指派仅在一个网络内使用.该指派的使用和控制是胜任于网络内的.网络间控制优先级的指派仅用于网关控制创作者.如果这些优先权指派的真实使用是同某一个特定网络相关的,它就负责那些优先级指派的权限控制和使用. 总长度(Total Length):16位总长度是数据报的总长度,以字节(octets)为单位计量,包含internet头部和数据.这个头部允许一个数据报的长度最长到65535个字节.如此长的数据报对大部分主机和网络来说是不现实的. 所有主机必须能够接收长达576个字节的数据报(不管他们是以整个数据报到达还是以分片到达).推荐主机在确认目的地址能够接收大数据报的情况下才发送大于576字节
30、的数据报. 选择576这个数字是为了允许传送一个合理大小的数据块,除了要求的头部信息之外.比如,这个大小允许512个字节的数据块加上64个字节的头部填充于一个数据报.最大的internet头部是60个字节,通常internet头部是20个字节,允许高层协议流出一个头部富余量.标识(Identification):16位 该标识由发送者设定值,有助于重组数据报的分片. 标记(Flags): 3 位不同的控制标记: Bit 0: 保留,必须位0 Bit 1: (DF) 0 = 可以分片(May Fragment), 1 =不可分片( Dont Fragment). Bit 2: (MF) 0 =
31、最后一个分片(Last Fragment), 1 = 还有分片(More Fragments). 0 1 2 +-+-+-+ | | D | M | | 0 | F | F | +-+-+-+ 分片偏移(Fragment Offset): 13位该头部指示了这个分片在所属数据报中的位置.分片偏移以8字节(64位)作为计量单位.第一个分片的偏移为0.生存时间(Time to Live):8位 该头部指示了数据报允许在internet系统中生存的最大时间.如果该头部的值为0,数据报必须被销毁.该头部在internet头部处理的时候被改变,该时间以秒单位度量,但由于处理数据报的每个模块必须减少TTL
32、至少1秒,即便该模块处理数据报的时间少于1秒,TTL必须被视为数据报可以存在的时间的上限.这样做的目的是丢弃无法投递的数据报,限制数据报的生存时间协议(Protocol):8位 该头部指示了在internet数据报的数据部分中使用的下一个层次的协议.不同协议的值在”Assigned Numbers”9中指定.头部校验和(Header Checksum):16位校验和仅用于头部.当某些头部(比如生存时间)改变的时候,检验和在每个internet头部被处理的时候被重新计算和确认. 校验和的算法如下:检验和头部是头部中所有16位字的和,为了计算校验和,校验和头部的值是0.这是计算校验和和实验性证据的
33、简单方法,这指示了它是一个充分的,但它是暂时的,可能被一个CRC程序替代,取决于未来的的实验.源地址(Source Address):32位,参见3.2目的地址(Destination Address):32位,参见3.2选项(Options):可变选项可以出现也可以不出现在数据报中.所有的IP模块(主机和网关)必须实现这个东东.可选的是在任一个特殊数据报中它们的传输,而不是它们的实现.在某些环境下,安全选项(security option)可能在所有的数据报中需要.Options头部在长度上是可变的.可以有0到多个的选项.option的格式有两种情况:情况1:一个单独的8位字节的选项类型(o
34、ption-type)情况2:一个选项类型(option-type)八位字节,一个选项长度(option-length)八位字节和其他真实的选项数据八位字节.选项长度八位字节计入 了选项 类型八位字节.选项长度八位字节以及选项数据八位字节. 选项类型八位字节有3部分: 1 bit: 拷贝标志(copied flag) 2 bits:选项类别(option class) 5 bits:选项数目(option number)拷贝标志位指明该选项是否被拷贝到所有分片中. 0 = 未被拷贝 1 = 拷贝选项类别是: 0 = 控制(control) 1 = 保留 2 = 调试和测量(debugging
35、and measurement) 3 = 保留 定义了如下internet选项: CLASS NUMBER LENGTH DESCRIPTION - - - - 0 0 - 选项列表的结束.该选项仅占用1个八位字节,没有长度字节 0 1 - 没有操作. 该选项仅占用1个八位字节,没有长度字节 0 2 11 安全(Security). 用于携带安全(security),分隔(Compartmentation),用户组(User Group,TCC),和同DOD要求兼容的处理限制码。 0 3 var. 宽松的源站(Loose Source Routing). 用来基于源(source)提供的信息为internet数据报选路。 0 9 var. 严格源选路(Strict Source Routing). 用来基于源(source)提供的信息为internet数据报选路 0 7 var. 记录路径(Record Route).用来trace一