关于RFC文档,个人认为还是要看英文版,毕竟很多东西是翻译不过来的,只有读原文才能很好的理解,而实际英语也不是我们想的那么难,只要静下心来,其实很简单!而且读后对你的英语能力提高不是一般的快。
下边是我的RFC_791(IP)的阅读笔记,暂时还没读完,欢迎大家一起来交流。“//”后的都是自己写的注释
RFC: 791
INTERNET PROTOCOL //IP:internet协议,它的设计在于基于分组交换的异构网的互联
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
September 1981 Internet Protocol
TABLE OF CONTENTS
PREFACE ........................................................ iii
1. INTRODUCTION ..................................................... 1
1.1 Motivation .................................................... 1 1.2 Scope ......................................................... 1 1.3 Interfaces .................................................... 1 1.4 Operation ..................................................... 2
2. OVERVIEW ......................................................... 5
2.1 Relation to Other Protocols ................................... 9 2.2 Model of Operation ............................................ 5 2.3 Function Description .......................................... 7 2.4 Gateways ...................................................... 9
3. SPECIFICATION ................................................... 11
3.1 Internet Header Format ....................................... 11 3.2 Discussion ................................................... 23 3.3 Interfaces ................................................... 31
APPENDIX A: Examples & Scenarios ................................... 34 APPENDIX B: Data Transmission Order ................................ 39
GLOSSARY ............................................................ 41
REFERENCES .......................................................... 45
[Page i]
September 1981 Internet Protocol
[Page ii]
September 1981 Internet Protocol
PREFACE
This document specifies the DoD Standard Internet Protocol. This document is based on six earlier editions of the ARPA Internet Protocol Specification, and the present text draws heavily from them. There have been many contributors to this work both in terms of concepts and in terms of text. This edition revises aspects of addressing, error handling, option codes, and the security, precedence, compartments, and handling restriction features of the internet protocol.
Jon Postel
Editor
September 1981
RFC: 791 Replaces: RFC760 IENs 128, 123, 111, 80, 54, 44, 41, 28, 26
INTERNET PROTOCOL
DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION
1. INTRODUCTION
1.1. Motivation //动机
The Internet Protocol is designed for use in interconnected systems of //为分组网络设计,其名为CATENET been called a "catenet" [1]. The internet protocol provides for transmitting blocks of data called datagrams from sources to destinations, where sources and destinations are hosts identified by fixed length addresses. The internet protocol also provides for fragmentation and reassembly of long datagrams, if necessary, for //可以重装 fragmentation and reassembly transmission through "small packet" networks.
1.2. Scope //范围
The internet protocol is specifically limited in scope to provide the//提供“最必要”的数据“流”传输功能 functions necessary to deliver a package of bits (an internet datagram) from a source to a destination over an interconnected system of networks. There are no mechanisms to augment end-to-end data //不专门提高通信相关性能 reliability, flow control, sequencing, or other services commonly found in host-to-host protocols. The internet protocol can capitalize on the services of its supporting networks to provide various types and qualities of service.
1.3. Interfaces //接口
This protocol is called on by host-to-host protocols in an internet //主机到主机的协议 environment. This protocol calls on local network protocols to carry the internet datagram to the next gateway or destination host. For example, a TCP module would call on the internet module to take a TCP segment (including the TCP header and user data) as the data portion of an internet datagram. The TCP module would provide the addresses and other parameters in the internet header to the internet module as arguments of the call. The internet module would then create an internet datagram and call on the local network interface to transmit the internet datagram.
In the ARPANET case, for example, the internet module would call on a
[Page 1]
September 1981 Internet Protocol Introduction
local net module which would add the 1822 leader [2] to the internet //增加前导符 datagram creating an ARPANET message to transmit to the IMP. The ARPANET address would be derived from the internet address by the local network interface and would be the address of some host in the ARPANET, that host might be a gateway to other networks.
1.4. Operation //操作
The internet protocol implements two basic functions: addressing and //两个基本操作:寻址和分裂 fragmentation.
The internet modules use the addresses carried in the internet header to transmit internet datagrams toward their destinations. The selection of a path for transmission is called routing. //selection of a path 路由
The internet modules use fields in the internet header to fragment and //使用专门的域控制分裂和重装 reassemble internet datagrams when necessary for transmission through "small packet" networks.
The model of operation is that an internet module resides in each host //主机负责通信,网关负责互联,他们使用统一规则解析地址 engaged in internet communication and in each gateway that interconnects networks. These modules share common rules for interpreting address fields and for fragmenting and assembling internet datagrams. In addition, these modules (especially in gateways) have procedures for making routing decisions and other functions.
The internet protocol treats each internet datagram as an independent //数据报独立 entity unrelated to any other internet datagram. There are no connections or logical circuits (virtual or otherwise).
The internet protocol uses four key mechanisms in providing its //四个关键服务机制 service: Type of Service, Time to Live, Options, and Header Checksum.
The Type of Service is used to indicate the quality of the service //Type of Service,与服务质量有关 desired. The type of service is an abstract or generalized set of parameters which characterize the service choices provided in the networks that make up the internet. This type of service indication is to be used by gateways to select the actual transmission parameters for a particular network, the network to be used for the next hop, or the next gateway when routing an internet datagram.
The Time to Live is an indication of an upper bound on the lifetime of //Time to Live,生存时间 an internet datagram. It is set by the sender of the datagram and reduced at the points along the route where it is processed. If the time to live reaches zero before the internet datagram reaches its destination, the internet datagram is destroyed. The time to live can be thought of as a self destruct time limit.
[Page 2]
September 1981 Internet Protocol Introduction
The Options provide for control functions needed or useful in some //The Options:时间戳,安全,路由的规则 situations but unnecessary for the most common communications. The options include provisions for timestamps, security, and special routing.
The Header Checksum provides a verification that the information used //The Header Checksum:纠错 in processing internet datagram has been transmitted correctly. The data may contain errors. If the header checksum fails, the internet datagram is discarded at once by the entity which detects the error.
The internet protocol does not provide a reliable communication //协议不能做的 facility. There are no acknowledgments either end-to-end or hop-by-hop. There is no error control for data, only a header checksum. There are no retransmissions. There is no flow control.
Errors detected may be reported via the Internet Control Message Protocol (ICMP) [3] which is implemented in the internet protocol module.
[Page 3]
September 1981 Internet Protocol
[Page 4]
September 1981 Internet Protocol
2. OVERVIEW //概述
2.1. Relation to Other Protocols //协议地位
The following diagram illustrates the place of the internet protocol in the protocol hierarchy:
+------+ +-----+ +-----+ +-----+ |Telnet| | FTP | | TFTP| ... | ... | //IP协议的位置 +------+ +-----+ +-----+ +-----+ | | | | +-----+ +-----+ +-----+ | TCP | | UDP | ... | ... | +-----+ +-----+ +-----+ | | | +--------------------------+----+ | Internet Protocol & ICMP | +--------------------------+----+ | +---------------------------+ | Local Network Protocol | +---------------------------+
Protocol Relationships
Figure 1.
Internet protocol interfaces on one side to the higher level host-to-host protocols and on the other side to the local network //host to host protocols? protocol. In this context a "local network" may be a small network in a building or a large network such as the ARPANET.
2.2. Model of Operation
The model of operation for transmitting a datagram from one application program to another is illustrated by the following scenario:
We suppose that this transmission will involve one intermediate //包含一个中介网关 gateway.
The sending application program prepares its data and calls on its //应用程序负责提供数据和相关信息(地址等) local internet module to send that data as a datagram and passes the destination address and other parameters as arguments of the call.
The internet module prepares a datagram header and attaches the data //网络模块负责提供“头部”和其解析并装载数据 to it. The internet module determines a local network address for this internet address, in this case it is the address of a gateway.
[Page 5]
September 1981 Internet Protocol Overview
It sends this datagram and the local network address to the local network interface.
The local network interface creates a local network header, and attaches the datagram to it, then sends the result via the local network.
The datagram arrives at a gateway host wrapped in the local network //“下一跳”策略,中间传输过程 header, the local network interface strips off this header, and turns the datagram over to the internet module. The internet module determines from the internet address that the datagram is to be forwarded to another host in a second network. The internet module //注意local net header的概念,是Local Network Protocol的 determines a local net address for the destination host. It calls on the local network interface for that network to send the datagram.
This local network interface creates a local network header and attaches the datagram sending the result to the destination host.
At this destination host the datagram is stripped of the local net //终点处理过程,stripped of the local net header header by the local network interface and handed to the internet module.
The internet module determines that the datagram is for an application program in this host. It passes the data to the application program in response to a system call, passing the source address and other parameters as results of the call.
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 2
[Page 6]
September 1981 Internet Protocol Overview
2.3. Function Description
The function or purpose of Internet Protocol is to move datagrams //function:move datagrams through an interconnected set of networks. This is done by passing the datagrams from one internet module to another until the destination is reached. The internet modules reside in hosts and //internet modules reside in every "point" gateways in the internet system. The datagrams are routed from one internet module to another through individual networks based on the interpretation of an internet address. Thus, one important mechanism of the internet protocol is the internet address.
In the routing of messages from one internet module to another, // the reason of fragmentation datagrams may need to traverse a network whose maximum packet size is smaller than the size of the datagram. To overcome this difficulty, a fragmentation mechanism is provided in the internet protocol.
Addressing
A distinction is made between names, addresses, and routes [4]. A //address's function:what,where,how! name indicates what we seek. An address indicates where it is. A route indicates how to get there. The internet protocol deals primarily with addresses. It is the task of higher level (i.e., host-to-host or application) protocols to make the mapping from //the higher level:name~addresse(ex:DNS) names to addresses. The internet module maps internet addresses to //the internet module:internet address~local net address(ex:ARP) local net addresses. It is the task of lower level (i.e., local net //the lower level:local net address~route(ways of routing) or gateways) procedures to make the mapping from local net addresses to routes.
Addresses are fixed length of four octets (32 bits). An address //length:32 bits.1 octet=8 bytes begins with a network number, followed by local address (called the //made up of networks and local "rest" field). There are three formats or classes of internet addresses: in class a, the high order bit is zero, the next 7 bits are the network, and the last 24 bits are the local address; in class b, the high order two bits are one-zero, the next 14 bits are the network and the last 16 bits are the local address; in class c, the high order three bits are one-one-zero, the next 21 bits are the network and the last 8 bits are the local address.
Care must be taken in mapping internet addresses to local net //the host is able to own several internet address and physical interfaces addresses; a single physical host must be able to act as if it were several distinct hosts to the extent of using several distinct internet addresses. Some hosts will also have several physical interfaces (multi-homing).
That is, provision must be made for a host to have several physical interfaces to the network with each having several logical internet addresses.
[Page 7]
September 1981 Internet Protocol Overview
Examples of address mappings may be found in "Address Mappings" [5].
Fragmentation
Fragmentation of an internet datagram is necessary when it //overview of fragmentation originates in a local net that allows a large packet size and must traverse a local net that limits packets to a smaller size to reach its destination.
An internet datagram can be marked "don't fragment." Any internet datagram so marked is not to be internet fragmented under any circumstances. If internet datagram marked don't fragment cannot be delivered to its destination without fragmenting it, it is to be //"don't fragment" will be discarded if necessary discarded instead.
Fragmentation, transmission and reassembly across a local network //reassembly(重装,n) which is invisible to the internet protocol module is called intranet fragmentation and may be used [6]. //fragment in intranet?
The internet fragmentation and reassembly procedure needs to be able //some machanisms to enable fragment to break a datagram into an almost arbitrary number of pieces that can be later reassembled. The receiver of the fragments uses the identification field to ensure that fragments of different datagrams are not mixed. The fragment offset field tells the receiver the position of a fragment in the original datagram. The fragment offset and length determine the portion of the original datagram covered by this fragment. The more-fragments flag indicates (by being reset) the last fragment. These fields provide sufficient information to reassemble datagrams.
The identification field is used to distinguish the fragments of one datagram from those of another. The originating protocol module of //originating protocol module:source module an internet datagram sets the identification field to a value that must be unique for that source-destination pair and protocol for the time the datagram will be active in the internet system. The originating protocol module of a complete datagram sets the more-fragments flag to zero and the fragment offset to zero.
To fragment a long internet datagram, an internet protocol module //process of fragmentation (for example, in a gateway), creates two new internet datagrams and //copy header copies the contents of the internet header fields from the long datagram into both new internet headers. The data of the long //fragment,8*n octets datagram is divided into two portions on a 8 octet (64 bit) boundary (the second portion might not be an integral multiple of 8 octets, but the first must be). Call the number of 8 octet blocks in the first portion NFB (for Number of Fragment Blocks). The first portion of the data is placed in the first new internet datagram, and the total length field is set to the length of the first
[Page 8]
September 1981 Internet Protocol Overview
datagram. The more-fragments flag is set to one. The second //more_fragments flag portion of the data is placed in the second new internet datagram, and the total length field is set to the length of the second datagram. The more-fragments flag carries the same value as the long datagram. The fragment offset field of the second new internet datagram is set to the value of that field in the long datagram plus NFB.
This procedure can be generalized for an n-way split, rather than the two-way split described.
To assemble the fragments of an internet datagram, an internet //when to assemble protocol module (for example at a destination host) combines internet datagrams that all have the same value for the four fields: identification, source, destination, and protocol. The combination is done by placing the data portion of each fragment in the relative position indicated by the fragment offset in that fragment's internet header. The first fragment will have the fragment offset zero, and the last fragment will have the more-fragments flag reset to zero.
2.4. Gateways
Gateways implement internet protocol to forward datagrams between //the function of gateways,GGP protocol networks. Gateways also implement the Gateway to Gateway Protocol (GGP) [7] to coordinate routing and other internet control information.
In a gateway the higher level protocols need not be implemented and the GGP functions are added to the IP module.
+-------------------------------+ | Internet Protocol & ICMP & GGP| +-------------------------------+ | | +---------------+ +---------------+ | Local Net | | Local Net | +---------------+ +---------------+
Gateway Protocols
Figure 3.
[Page 9]
September 1981 Internet Protocol