`
`W.ietf.org/rfc/rfc791.txt
`
`RFC:
`
`791
`
`INT:
`
`
`
`L11 w2 LU a m MO H O O o H
`
`
`DARPA INTER ET 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
`
`\ANMN.ietf.0rg/rfc/rfc791.b<t
`
`1/51
`
`MICROSOFT 1020
`
`
`
`1/4/14
`
`stNv.ietf.0rg/rfclrf0791.b<t
`
`Internet Protocol
`
`
`
`TABLE OF CONTENTS
`
`
`
`PREFACE ........................................................ iii
`
`1.
`
`INTRODUCTION ..................................................... l
`
`1.1 Motivation .................................................... 1
`
`1.2
`1.3
`
`Scope ......................................................... 1
`Interfaces .................................................... 1
`
`1.4 Operation ..................................................... 2
`
`
`
`OVERVIEW ......................................................... 5
`
`2.
`
`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
`
`Internet Header Format ...... . ...... . ......................... 11
`3.1
`3.2 Discussion ..... . ............................................. 23
`3.3
`Interfaces ................................................... 31
`
`
`
`Examples & Scenarios ................................... 34
`APPENDIX A:
`APPENDIX B: Data Transmission Order ................................ 39
`
`GLOSSARY ............................................................ 41
`
`
`REFERENCES .......................................................... 45
`
`www.i etf.org/rfc/rfc791 .txt
`
`251
`
`[Page i]
`
`
`
`1/4/14
`
`\ANmN.ietf.org/rfc/rf0791.b<t
`
`Internet Protocol
`
`September 1981
`
`WVWVJ etf.org Irfc/rfc79‘l .txt
`
`3/51
`
`
`
`1/4/14
`
`[Page ii]
`
`September 1981
`
`WWWJ etf.org /rfc/rfc791 .txt
`
`
`
`PREFACE
`
`Internet Protocol
`
`This document specifies the DOD Standard Internet Protocol. This
`document is based on six earlier editions of the ARPA Internet Protocol
`
`There have
`Specification, and the present text draws heavily from them.
`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
`
`WN,ietf.org/rfc/rfc791.b¢
`
`4/51
`
`
`
`1/4/14
`
`vmmW.ietf.org/rfc/rfc791.txt
`
`[Page iii]
`
`September 1981
`
`RFC:
`
`791
`
`RFC 760
`Replaces:
`
`IENs 128, 123, 111,
`80, 54, 44, 41, 28, 26
`
`
`
`INTERNET PROTOCOL
`
`
`
`DARPA INTER ET PROGRAM
`
`PROTOCOL SPECIFICATION
`
`l .
`
`INTRODUCTION
`
`1.1. Motivation
`
`The Internet Protocol is designed for use in interconnected systems of
`packet-switched computer communication networks.
`Such a system has
`been called a "catenet" [l].
`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
`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
`
`flow control, sequencing, or other services commonly
`reliability,
`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.
`
`a TCP module would call on the internet module to take a
`For example,
`(including the TCP header and user data) as the data
`TCP segment
`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
`
`www.i etf. org /rfc/rfc791 M
`
`5/51
`
`
`
`1/4/14
`
`www.ietf.org /rfc/rfc79’| .txt
`
`transmit the internet datagram.
`
`
`In the ARPANET case, for example,
`
`the internet module would call on a
`
`Internet Protocol
`Introduction
`
`[Page 1]
`
`September 1981
`
`local net module which would add the 1822 leader [2]
`
`The
`datagram creating an ARPANET message to transmit to the IMP.
`ARPANET address would be derived from the internet address by the
`local network interface and would be the address of some host
`in the
`
`to the internet
`
`ARPANET,
`
`that host might be a gateway to other networks.
`
`
`
`1.4. Operation
`
`r1he internet protocol
`fragmentation.
`
` r‘he internet modules use the addresses carried in the internet header
`
`implements two basic functions:
`
`addressing and
`
`to transmit internet datagrams toward their destinations.
`selection of a path for transmission is called routing.
`
`The
`
`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:
`r1ype of Service, Time to Live, Options, and Header Checksum.
`
`The Type of Service is used to indicate the quality of the service
`desired.
`’
`
` “he 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
`
`\AMAN.ietf.org/rfC/rfc791.b<t
`
`6/51
`
`
`
`1/4/14
`
`\MNw.ietf.org/rfc/rfc791.txt
`
`It is set by the sender of the datagram and
`an internet datagram.
`reduced at the points along the route where it is processed.
`If the
`
`time to liv r ach s
`2 re b for
`th
`int rnet 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
`
`in some
`The Options provide for control functions needed or useful
`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
`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.
`
`vvaN.ietf.org/rfc/rfc791,t>d
`
`7/51
`
`
`
`1/4/14
`
`MM.ietf.org/rfc/rfc791.b<t
`
`Internet Protocol
`
`[Page 3]
`
`September 1981
`
`\MMN.ietf.org/rfc/rfc791.txt
`
`8/51
`
`
`
`1/4/14
`
`NAM/Jettorg /rfc/rfc791 .tXt
`
`[Page 4]
`
`September 1981
`
`Internet Protocol
`
`2.1. Relation to Other Protocols
`
`2.
`
`
`
`OVERVIEW
`
`The following diagram illustrates the place of the internet protocol
`in the protocol hierarchy:
`
`+ —————— + ——————— + ——————— +
`
`+ ——————»
`
`TFTP
`FTP 1
`[Telnetl
`+ —————— + »—————— + ,———————~
`
`
`
`J
`|
`+ ————— +
`
`I
`TC]?
`,______ +
`
`|
`——————— +
`
`UDP
`+ ______r
`
`»—————— +
`
`|
`~———————~
`
`
`
`________.
`
`
`
`
`
`
`l
`|
`|
`
`_______________ _.___
`+____.._
`
`Internet Protocol
`i__ _____
`____
`____
`
`ICMP
`&
`____+ -__i
`
`
`
`l
`
`+..._. __________ _.__...
`_____.
`
`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
`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:
`
`\MMN.ietf.org/rfc/rfc791.b<t
`
`9/51
`
`
`
`1/4/14
`
`.
`
`\AMMI.ietf.org/rfc/rf0791.txt
`
`We suppose that this transmission will
`gateway.
`
`involve one intermediate
`
`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.
`
`Internet Protocol
`Overview
`
`[Page 5]
`
`September 1981
`
`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,
`network.
`
`then sends the result via the local
`
`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
`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
`header by the local network interface and handed to the internet
`module.
`
`The internet module determines that the datagram is for an
`
`It passes the data to the
`application program in this host.
`application program in response to a system call, passing the source
`address and other parameters as results of the call.
`
`Application
`Program
`\
`Internet Module
`\
`LNI—l
`
`WMN.ietf.org/rfc/rfc791.b<t
`
`Internet Module
`/
`\
`LNI~1
`LNI—Z
`
`10
`
`Application
`Program
`/
`Internet Module
`/
`LNI—Z
`
`10/51
`
`
`
`1/4/14
`
`\MMN.ietf.org/rfc/rfc791.txt
`
`/
`\
`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
`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
`
`The datagrams are routed from one
`gateways in the internet system.
`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,
`datagrams may need to traverse a network whose maximum packet size is
`smaller than the size of the datagram.
`To overcome this difficulty,
`fragmentation mechanism is provided in the internet protocol.
`
`a
`
`Addressing
`
`A distinction is made between names, addresses, and routes [4].
`name indicates what we seek.
`An address indicates where it is.
`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
`names to addresses.
`The internet module maps internet addresses to
`local net addresses.
`It is the task of lower level (i.e.,
`local net
`
`A
`
`A
`
`or gateways) procedures to make the mapping from local net addresses
`to routes.
`
`An address
`Addresses are fixed length of four octets (32 bits).
`begins with a network number,
`followed by local address (called the
`"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
`
`www.ietf.org/rfc/rfc791.txt
`
`11/51
`
`V
`
`
`
`1/4/14
`
`\ANmN.ietf.org/rfc/rfc791.txt
`
`the next 14 bits are
`the high order two bits are one—zero,
`class b,
`the network and the last 16 bits are the local address;
`in class c,
`
`the next 21 bits are the
`the high order three bits are one—one-zero,
`network and the last 8 bits are the local address.
`
`Care must be taken in mapping internet addresses to local net
`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).
`
`to have several physical
`That is, provision must be made for a host
`interfaces to the network with each having several
`logical internet
`addresses.
`
`Internet Protocol
`Overview
`
`[Page 7]
`
`September 1981
`
`
`Examples of address mappings may be found in "Address Mappings"
`
`[5].
`
`Fragmentation
`
`Fragmentation of an internet datagram is necessary when it
`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
`discarded instead.
`
`transmission and reassembly across a local network
`Fragmentation,
`which is invisible to the internet protocol module is called
`intranet fragmentation and may be used [6].
`
`The internet fragmentation and reassembly procedure needs to be able
`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
`
`\ANvW.ietf.org/rfC/rfc791.b¢
`
`12/51
`
`12
`
`
`
`1flfl14
`
`WMN.ietf.org/rfc/rfc791.b¢
`
`The originating protocol module of
`datagram from those of another.
`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
`(for example,
`in a gateway), creates two new internet datagrams and
`copies the contents of the internet header fields from the long
`datagram into both new internet headers.
`The data of the long
`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
`
`The first
`first portion NFB (for Number of Fragment Blocks).
`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
`
`The second
`The more-fragments flag is set to one.
`datagram.
`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.
`
` 1
`
`r‘his procedure can be generalized for an n—way split, rather than
`the two—way split described.
`
`“o assemble the fragments of an internet datagram, an internet
`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
`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
`
`www.i etf.org /rfc/rfc791 .txt
`
`13/51
`
`13
`
`
`
`1/4/14
`
`\Amw.ietf.org/rfc/rfc791.txt
`the GGP functions are added to the IP module.
`
`+ ________________________________l
`
`ICMP & GGP
`&
`Internet Protocol
`1
`+ ________________________________-
`
`
`
`I
`——————————————————-
`
`1
`+ ——————————————— +
`
`Local Net
`,——————————————————
`
`
`
`
`
`|
`Local Net
`1
`+ ——————————————— +
`
`Gateway Protocols
`
`Figure 3.
`
`Internet Protocol
`
`[Page 9]
`
`September 1981
`
`\AMNv.ietf.org/rfc/rfc791.b¢
`
`14/51
`
`14
`
`
`
`1/4/14
`
`W.ietf.org/rfc/rf0791.t>¢
`
`[Page 10]
`
`September 1981
`
`Internet Protocol
`
`3.1.
`
`Internet Header Format
`
`3.
`
`
`SPECIFICATION
`
`A summary of the contents of the internet header follows:
`
`O
`l
`O
`l
`2
`3
`4
`5
`6
`7
`8
`9
`O
`l 2
`3
`4
`5
`6
`
`+—1
`1
`—~—
`:~1- ~+ ~—+—+
`1—+—+~1
`
`3
`2
`l
`O
`9
`8
`7
`6
`5
`4
`3
`2
`l
`O
`9
`8
`7
`~—~—+—+—+—«—+~+—+—+~»—~—+—+—+—u
`
`Type of Service
`IHL
`Version
`—~—:
`“~1—fi—+ 1—fi—+— ~1—+—l
`1—+—e~+ —"—+
`
`Total Length
`1—w—+—1
`1—+—
`
`1— —1—
`
`1
`
`Fragment Offset
`F;ags
`Identification
`~- -+— e—0 "
`L—+—1—w—+—1—+~+—1—1—W +—1—+ +—d—1
`+
`1-1—» ~~ —z—" "
`Time
`:0 lee
`Protocol
`Header Checksum
`+—+—1
`—+—1
`1~+—+—1
`+—:—+ 1—e—+—+ «—+—1— +—+—1
`:-+—+— —1— —:
`Source Address
`+— —1—+ +—:— — —~—1—+ +—1—:—+—+—:—" +— —+—~ +—+—~ +—+— —”
`Destination Address
`»—:—+—u—1~+—+— —:—+—+—l—+~fi—l—l~ —»—+—+—h— —:—~— —1—1— —u—»—+~e—»
`
`-+— —
`
`Options
`~—+—+—e—+—+—+—"—+—1—1—+—:— +—+— +—+—1—“— —+—
`
`Padding
`fi~+—:—:— ~ —1—1
`
`wvwvj etf. org /rfc/rfc791 .txt
`
`
`Example Internet Datagram Header
`
`Figure 4.
`
`15
`
`15/51
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`»
`
`
`
`
`
`1/4/14
`
`No
`
`te that each tick mark represents one bit position.
`
`vme.ietf.0rg/rfc/rf0791.b<t
`
`Ve
`
`rsion:
`
`4 bits
`
`r“he Version field indicates the format of the internet header. This
`document describes version 4.
`
` s:
`
`IH
`
`4 bits
`
`Internet Header Length is the length of the internet header in 32
`bit words, and thus points to the beginning of the data. Note that
`the minimum value for a correct header is 5.
`
`[Page ll]
`
`September 1981
`
`Inte
`
`Spec
`
`rnet Protocol
`ification
`
`Ty
`
`pe of Service:
`
`8 bits
`
`The Type of Service provides an indication of the abstract
`parameters of the quality of service desired.
`These parameters are
`to be used to guide the selection of the actual service parameters
`when transmitting a datagram through a particular network.
`Several
`networks offer service precedence, which somehow treats high
`precedence traffic as more important than other traffic (generally
`by accepting only traffic above a certain precedence at time of high
`load).
`The major choice is a three way tradeoff between low—delay,
`high—reliability, and high-throughput.
`
`Bits 0—2:
`
`Precedence.
`
`Bit
`Bits
`Bits
`Bit
`
`1 2 Low Delay.
`O = Normal Delay,
`3:
`l = High Throughput.
`O = Normal Throughput,
`4:
`l = High Relibility.
`O = Normal Relibility,
`5:
`6~7z Reserved for Future Use.
`
`7
`6
`5
`4
`3
`2
`l
`0
`+ ————— + ————— + ————— + ————— + ————— + ————— + ————— + ————— +
`l
`
`
`
`
`
`
`
`
`
`vm~w.ietf.org/rfo/rfc791.txt
`
`16/51
`
`16
`
`
`
`1/4/14
`
`\AMAN.ietf.org/rfc/rfc791.txt
`
`+ ————— + ————— + ————— + ————— + ————— + ————— + ————— + ————— +
`
`Precedence
`
`111 — Network Control
`110 ~ Internetwork Control
`
`101 - CRITIC/3GP
`lOO — Flash Override
`011 — Flash
`010 — Immediate
`
`OOl — Priority
`OOO — Routine
`
`The use of the Delay, Throughput, and Reliability indications may
`increase the cost
`(in some sense) of the service.
`In many networks
`better performance for one of these parameters is coupled with worse
`
`performance on another. Except for very unusual cases at most
`two
`of these three indications should be set.
`
`The type of service is used to specify the treatment of the datagram
`during its transmission through the internet system.
`Example
`mappings of th
`int rn t typ
`of s rvic
`to the actual service
`
`
`provided on networks such as AUTODIN II, ARPANET, SATNET, and PRNET
`is given in "Service Mappings"
`[8].
`
`
`
`[Page 12]
`
`September 1981
`
`Internet Protocol
`
`Specification
`
`The Network Control precedence designation is intended to be used
`within a network only.
`The actual use and control of that
`designation is up to each network. The Internetwork Control
`designation is intended for use by gateway control originators only.
`If the actual use of these precedence designations is of concern to
`a particular network, it is the responsibility of that network to
`control the access to, and use of,
`those precedence designations.
`
`Total Length:
`
`16 bits
`
`Total Length is the length of the datagram, measured in octets,
`including internet header and data. This field allows the length of
`a datagram to be up to 65,535 octets.
`Such long datagrams are
`impractical for most hosts and networks. All hosts must be prepared
`to accept datagrams of up to 576 octets (whether they arrive whole
`or in fragments).
`It is recommended that hosts only send datagrams
`larger than 576 octets if they have assurance that the destination
`is prepared to accept
`the larger datagrams.
`
`The number 576 is selected to allow a reasonable sized data block to
`be transmitted in addition to the required header information.
`For
`
`\AMNv.ietf.org/rfc/rfc791.b<t
`
`17
`
`17/51
`
`
`
`1/4/14
`
`\Ava.ietf.org/rfc/rfc791.t)¢
`
`this size allows a data block of 5l2 octets plus 64 header
`example,
`octets to fit in a datagram.
`The maximal internet header is 60
`octets, and a typical internet header is 20 octets, allowing a
`margin for headers of higher level protocols.
`
`Identification:
`
`16 bits
`
`An identifying value assigned by the sender to aid in assembling the
`fragments of a datagram.
`
`Flags:
`
`3 bits
`
`Various Control Flags.
`
`Bit O:
`Bit l:
`Bit 2:
`
`reserved, must be zero
`(DF
`0 = May Fragment,
`(MF
`0 2 Last Fragment,
`
`l = Don't Fragment.
`l = More Fragments.
`
`
`
`2
`l
`O
`+——~+——~v——————
`
`M
`D
`|
`l
`F
`1 F
`O
`|
`+———+~——-—————~
`
`
`
`Fragment Offset:
`
`L3 bits
`
`This field indicates where in the datagram this fragment belongs.
`
`[Page 13]
`
`September 1981
`
`Internet Protocol
`
`Specification
`
`The fragment offset is measured in units of 8 octets (64 bits).
`first fragment has offset zero.
`
`The
`
`Time to Live:
`
`8 bits
`
`This field indicates the maximum time the datagram is allowed to
`remain in the internet system.
`If this field contains the value
`zero,
`then the datagram must be destroyed. This field is modified
`in internet header processing.
`The time is measured in units of
`seconds, but since every module that processes a datagram must
`decrease the TTL by at least one even if it process the datagram in
`less than a second,
`the TTL must be thought of only as an upper
`bound on the time a datagram may exist.
`The intention is to cause
`undeliverable datagrams to be discarded, and to bound the maximum
`datagram lifetime.
`
`Protocol:
`
`8 bits
`
`This field indicates the next level protocol used in the data
`
`mev.ietf.0rg/rfo/rfc791.txt
`
`18
`
`18/51
`
`
`
`1/4/14
`
`\MANv.ietf.org/rfC/rfc791.txt
`
`portion of the internet datagram.
`are specified in "Assigned Numbers"
`
`The values for various protocols
`[9].
`
`Header Checksum:
`
`16 bits
`
`Since some header fields change
`A checksum on the header only.
`(e.g.,
`time to live),
`this is recomputed and verified at each point
`that the internet header is processed.
`
`The checksum algorithm is:
`
`The checksum field is the 16 bit one's complement of the one‘s
`
`For purposes of
`sum of all 16 bit words in the header.
`complement
`computing the checksum,
`the value of the checksum field is zero.
`
`This is a simple to compute checksum and experimental evidence
`indicates it is adequate, but it is provisional and may be replaced
`by a CRC procedure, depending on further experience.
`
`Source Address:
`
`32 bits
`
`The source address.
`
`See section 3.2.
`
`Destination Address:
`
`32 bits
`
`The destination address.
`
`See section 3.2.
`
`[Page 14]
`
`September 1981
`
`Options:
`
`variable
`
`Internet Protocol
`
`Specification
`
`They must be
`in datagrams.
`The options may appear or not
`(host and gateways). What is optional
`implemented by all IP modules
`is their transmission in any particular datagram, not their
`implementation.
`
`In some environments the security option may be required in all
`datagrams.
`
`The option field is variable in length. There may be zero or more
`options.
`There are two cases for the format of an option:
`
`Case 1:
`
`A single octet of option—type.
`
`Case 2:
`
`An option—type octet, an option-length octet, and the
`actual option—data octets.
`
`MMAN.ietf.org/rfc/rfc791.txt
`
`19
`
`19/51
`
`
`
`1/4/14
`
`\AMM/.ietf.org/rfC/rfc791.txt
`
`The option—length octet counts the option—type octet and the
`option—length octet as well as the option-data octets.
`
`The option—type octet is viewed as having 3 fields:
`
`1 bit
`2 bits
`5 bits
`
`copied flag,
`option class,
`option number.
`
`The copied flag indicates that this option is copied into all
`fragments on fragmentation.
`
`O = not copied
`I]
`,_.
`copied
`
`The option classes are:
`
`
`
`= control
`= reserved for future use
`\1
`
`debugging and measurement
`= reserved for future use
`
`wNI—‘O
`
`[Page 15]
`
`September 1981
`
`Internet Protocol
`
`Specification
`
`The following internet options are defined:
`
`
`CLASS NUMBTR
`
`
`DESCRIPTION
`
`0
`
`O
`
`O
`
`O
`
`O
`
`l
`
`2
`
`3
`
`var.
`
`
`
`End of Option list. This option occupies only
`1 octet; it has no length octet.
`
`0 Operation. This option occupies only 1
`octet; it has no length octet.
`Security. Used to carry Security,
`Compartmentation, User Group (TCC), and
`Handling Restriction Codes compatible with DOD
`requirements.
`Loose Source Routing. Used to route the
`internet datagram based on information
`supplied by the source.
`
`W.ietf.org/rfc/rfc791.txt
`
`20
`
`20/51
`
`
`
`1/4/14
`
`MAN.ietf.org/rfc/rfc791.b<t
`
`O
`
`0
`
`0
`
`2
`
`9
`
`7
`
`8
`
`4
`
`var. Strict Source Routing. Used to route the
`internet datagram based on information
`supplied by the source.
`var. Record Route. Used to trace the route an
`internet datagram takes.
`Stream ID. Used to carry the stream
`identifier.
`
`4
`
`var.
`
`Internet Timestamp.
`
`Specific Option Definitions
`
`
`3nd of Option List
`
`»————————— +
`
`OOOOOOOO‘
`
` _‘
`
`“his option indicates the end of the option list. This might
`not coincide with the end of the internet header according to
`the internet header length. This is used at the end of all
`options, not the end of each option, and need only be used if
`the end of the options would not otherwise coincide with the end
`of the internet header.
`
`introduced, or deleted on fragmentation, or for
`May be copied,
`any other reason.
`
`[Page 16]
`
`September 1981
`
`No Operation
`
`Internet Protocol
`
`Specification
`
`
`
`
`
`1
`
`to align
`for example,
`“his option may be used between options,
`:he beginning of a subsequent option on a 32 bit boundary.
`
`introduced, or deleted on fragmentation, or for
`May be copied,
`any other reason.
`
`vwwv.ietf.org Irfc/rfc791 .txt
`
`2
`
`21/51
`
`
`
`1/4/14
`
`Security
`
`\mwvj etf.org /rfc/rfc791 .txt
`
`This option provides a way for hosts to send security,
`compartmentation, handling restrictions, and TCC (closed user
`group) parameters.
`r‘he format for this option is as follows:
`
`+ ———————— + ———————— +———//———~—~—//———+———//———+~——//——~u
`|10000010|OOOOlOll SSS
`SSS CCC
`CCClHHH
`HHH)
`TCC
`+ ———————— + ———————————-—//—
`———// ——+—
`//—*~: ——//— —~
`Typez130 Length=11
`
`
`
`
`
`
`Security (S field):
`
`16 bits
`
`Specifies one of 16 levels of security
`reserved for future use).
`
`(eight of which are
`
`ed
`al
`
`Jnclassifi
`Confidenti
`EFTO
`MMMM
`PROG
`Restricted
`Secret
`
`
`
`future
`future
`future
`future
`future
`future
`future
`future
`
`for
`for
`for
`for
`for
`for
`for
`for
`
`Top Secret
`(Reserved
`(Reserved
`(Reserved
`(Reserved
`(Reserved
`Reserved
`Reserved
`Reserved
`
`( ( (
`
`
`
`00000000
`11110001
`01111000
`lOllllOO
`01011110
`10101111
`llOlOlll
`01101011
`00110101
`lOOllOlO
`01001101
`00100100
`OOOlOOll
`10001001
`11000100
`11100010
`
`OOOOOOOO —
`00110101 —
`lOOllOlO —
`01001101 -
`OOlOOllO —
`00010011 —
`lOOOlOOO ~
`11000101 -
`11100010 ~
`11110001 -
`01111000 -
`lOllllOl —
`01011110 —
`10101111 -
`llOlOllO -
`01101011 —
`
`Internet Protocol
`
`Specification
`
`[Page 17]
`
`September 1981
`
`Compartments
`
`(C field):
`
`16 bits
`
`An all zero value is used when the information transmitted is
`Other values for the compartments field
`not compartmented.
`
`D f ns
`Ag ncy.
`Int llig nc
`may be obtained from th
`
`Handling Restrictions
`
`(H field):
`
`16 bits
`
`The values for the control and release markings are
`
`alphanumeric digraphs and are defined in the Defense
`"Standard Security
`Intelligence Agency Manual DIAM 65—19,
`
`www.i etf.org /rfc/rfc791 M
`
`22
`
`22%
`
`
`
`1/4/14
`
`wmm.ietf.org/rfc/rfc791.txt
`
`Markings".
`
`Transmission Control Code
`
`(TCC field):
`
`24 bits
`
`Provides a means to segregate traffic and define controlled
`communities of interest among subscribers. The TCC values are
`trigraphs, and are available from HQ DCA Code 530.
`
`Must be copied on fragmentation.
`once in a datagram.
`
`This option appears at most
`
`Loose Source and Record Route
`
`-————————— + —————————————————— + ————————— // ——————————
`
`route data
`pointer]
`length
`10000011!
`»————————— + —————————————————— + ————————— // —————————~
`
`
`
`
`
`
`
`Type=13l
`
`The loose source and record route (LSRR) option provides a means
`for the source of an internet datagram to supply routing
`information to be used by the gateways in forwarding the
`datagram to the destination, and to record the route
`information.
`
`The second octet
`The option begins with the option type code.
`is the option length which includes the option type code and the
`length octet,
`the pointer octet, and length—3 octets of route
`data.
`The third octet is the pointer into the route data
`indicating the octet which begins the next source address to be
`processed.
`The pointer is relative to this option, and the
`smallest legal value for the pointer is 4.
`
`A route data is composed of a series of internet addresses.
`
`Each internet address is 32 bits or 4 octets.
`If the pointer is
`greater than the length,
`the source route is empty (and the
`recorded route full) and the routing is to be based on the
`destination address field.
`
`[Page 18]
`
`September 1981
`
`Internet Protocol
`
`Specification
`
`If the address in destination address field has been reached and
`the pointer is not greater than the length,
`the next address in
`
`the source route replaces the address in the destination address
`field, and the recorded rout
`addr ss r plac s th source
`address just used, and pointer is increased by four.
`
`The recorded route address is the internet module's own internet
`address as known in the environment into which this datagram is
`being forwarded.
`
`WMN.ietf.org/rfc/rfc791.txt
`
`23
`
`23/51
`
`
`
`1/4/14
`
`\ANMN.ietf.org/rfc/rf0791.txt
`
`This procedure of replacing the source route with the recorded
`route (though it is in the reverse of the order it must be in to
`be used as a source route) means the option (and the IP header
`as a whole)
`remains a constant length as the datagram progresses
`through the internet.
`
`
`rout
`b caus
`th gat way or host
`This option is a loose sourc
`IP is allowed to use any route