(完整版)IP协议-RFC791中文版
INTERNET PROTOCOL
DARPA INTERNET PROGRAM
PROTOCOL SPECIFICATION
September 1981
prepared for
Defense Advanced Research Projects Agency Information Processing Techniques Office
1400 Wilson Boulevard
Arlington, Virginia 22209
by
Information Sciences Institute
University of Southern California
4676 Admiralty Way
Marina del Rey, California 90291
索引
前言 (iii)
1.介绍------------------- 1
1.1 ~动机----------------- 1
1.2 ~范围----------------- 1
1.3 接口------------------1
1.4 操作-------------------2
2. 概述
2.1 与其他协议的关系----------------- 9
2.2 操作模型------------------ 5
2.3 函数说明----------------- 7
2.4 ~网关----------------------- 9
3. 规范
3.1 ~网际(Internet)头部格式---------------------- 11
3.2 讨论----------------- 23
3.3 接口------------------ 31
tcp ip协议规定附录A:例子& 场景
附录B:数据传输顺序
词汇表--------------------- 41
引用---------- --------- 45
前言
这个文档规定了DoD 标准网际协议。
这个文档基于早期六个版本的ARPA 网际协议规范
所以本文的大部分内容来自于他们。
曾经有许多的人对本文中的概念方面和文本方面做出了贡献。
这个版本修正了地址,错误处理,选项代码,还有安全性,优先级,分隔符,和处理网际协议的限制特性方面的概念
1.介绍
1.1动机
网际协议被设计用于实现互联系统的分组交换计算机交流网络。
这样一个系统被称为“catenet”。IP协议使得发送方能够传送被称为数据报的数据块给接收方,发送方和接收方各自拥有一个固定长度的地址。IP协议还能够拆分和充足一个长的数据包,如果必要的话,对那些只能传送小包的网络
1.2 范围
IP协议在互联网上传输数据时若有必要提供了一个函数去拆分包的的字节。
本协议中没有这样一种机制去保证端到端的数据的可靠性,流控制,顺序性,或者其他的一些主机到主机的服务中常有的内容。
1.3接口
这个协议被在互联网上主机到主机的协议所调用。这个协议要求本地网络设备将数据包带到下一个网关或是目标主机
举例来说,TCP模型会让互连模型将自己的TCP段当作一个数据部分装入internet数据报钟。TCP模型会提供地址和其他一些参数放入IP数据报的头部作为本次调用的参数。
IP模型接下来会创建一个网络数据报然后请求本地网络接口去传输网络数据报。
互联网模块将会调用本地网络模块,它将会添加一些控制信息到网络数据包中并然后创建一个ARPANET数据传送到分组交换机中。网络地址将会派生成ARPANET地址通过本地的网络接口,这个地址可能是网关或则其他的网络
3.3 接口
这个对IP协议用户接口的描述,充其量最多是虚构的,因为每个操作系统都有不一样的设备。因此,,我们必须警告阅读本文档的你,不太能够的IP实现可能会有不一样的用户接口。但是不管怎么样,所有的类型的IP协议,都一定提供了一组确定的至少要提供的服务,来保证所有的IP实现都能够支持一样的协议栈。这一节规范了一些功能性接口对所有的IP实现
IP协议在协议栈中位于本地网络和一些高层协议之间。
接下来,高于IP协议的高层协议以及程序将被称为user。因为他们的实现需要IP协议的服务。
因为IP 协议是一个数据报协议,这里有数据报传输间保持着最小的内存和状态。
并且每次user使用IP模型都必须提供必要的全部信息来让IP协议去执行要求的服务一个面向高层的接口例子:
接下来的两个例子对于IP协议的调用均满足user的要求
(”=>” 表示返回)
SEND (src, dst, prot, TOS, TTL, BufPTR, len, Id, DF, opt => result)
where:
src = source address
dst = destination address
prot = protocol
TOS = type of service
TTL = time to live
BufPTR = buffer pointer
len = length of buffer
Id = Identifier
DF = Don't Fragment
opt = option data
result = response
OK = datagram sent ok
Error = error in arguments or local network error
RECV(BufPTR,prot,=> result, src,dst,TOS,len,opt)
当user发送一个数据包的时候,它调用SEND并且提供全部的参数。IP协议模型,在接收这个调用,检查所有的参数并且准备发送信息。如果参数都没有问题,那么数据报就会被本地的网络设备接受,这次调用会返回成功。否则,如果这个参数有问题,或者这个数据包没有被本地设备接收,就会返回失败。对于不成功的时候,一个合理的报告必须被反馈回去来解释问题的原因,但是这个报告的细节就依赖于个人的实现了。
当一个数据报从本地的网络设备达到IP层,这里要么有一个待定的RECV函数,要么没有。第一种情况中,这个待定的函数接受来自数据报中包含的信息传递给用户。第二种情况下,数据报指定的用户会被通知。如果指定的用户不存在,一个ICMP 错误信息,就会被返回给发送者,这个数据会被丢弃
对于对用户的通知可以是通过一个伪造的中断或者其他类似的机制,总之就是适合于特定操作系统的
一个用户的RECV请求,可能要么直接就被满足了,要么就是等待一段时间,知道指定过的数据包到达
Src参数必须被包含进send函数中,以发送方拥有多个地址(多个物理连接或者逻辑地址)。IP层必须检查src参数是否是一个合法的地址对于本地主机来说
本节在功能上描述了USER/IP 接口。
这些符号可以被大多数函数过程以相似的方式使用,但是这种用法并不意味着排除陷阱调用,或者其他任何进程间的交流
附录A: 例子& 场景
例子1:
这个例子中数据报包含最小量的数据
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver= 4 |IHL= 5 |Type of Service| Total Length = 21 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification = 111 |Flg=0| Fragment Offset = 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time = 123 | Protocol = 1 | header checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| source address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论