RFC 791:INTERNET PROTOCOL
RFC-Ref

datagram


Click on the red underlined text to get to the source

... internet protocol provides for transmitting blocks of data called datagrams from sources to destinations, where sources and destinations ...
... internet protocol also provides for fragmentation and reassembly of long datagrams, if necessary, for transmission through "small packet" networks. ...
... bits (an internet datagram) from a source to a destination over an interconnected system of networks ...
... network protocols to carry the internet datagram to the next gateway or destination host. ...
... user data) as the data portion of an internet datagram. The TCP module would provide the addresses ...
... create an internet datagram and call on the local network interface to transmit the internet ...
... network interface to transmit the internet datagram. ...
... 2] to the internet datagram creating an ARPANET message to transmit to the IMP. The ...
... header to transmit internet datagrams toward their destinations. The selection of a path for transmission is called routing ...
... fragment and reassemble internet datagrams when necessary for transmission through "small packet" networks. ...
... address fields and for fragmenting and assembling internet datagrams. In addition, these modules (especially in gateways) have procedures for making routing ...
... The internet protocol treats each internet datagram as an independent entity unrelated to any other internet ...
... entity unrelated to any other internet datagram. There are no connections or logical circuits ...
... gateway when routing an internet datagram. ...
... lifetime of an internet datagram. It is set by the sender of the datagram and ...
... 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 ...
... destination, the internet datagram is destroyed. The time to live can be thought of as a self destruct time limit. ...
... 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 ...
... header checksum fails, the internet datagram is discarded at once by the entity which detects the error. ...


... The model of operation for transmitting a datagram from one application program to another is illustrated by the following scenario: ...
... 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 ...
... It sends this datagram and the local network address to the 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 ...
... network interface strips off this header, and turns the datagram over to the internet module. The internet module ...
... internet module determines from the internet address that the datagram is to be forwarded to another host in a second network ...
... network interface for that network to send the datagram. ...
... 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 ...
... The internet module determines that the datagram is for an application program in this host. It passes the data to the ...
... The function or purpose of Internet Protocol is to move datagrams through an interconnected set of networks. This is done by passing ...
... through an interconnected set of networks. This is done by passing the datagrams from one internet module to another until the destination ...
... gateways in the internet system. The datagrams are routed from one internet module to another through individual networks ...
... routing of messages from one internet module to another, datagrams may need to traverse a network whose maximum packet size is ...
... 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 ...
... Fragmentation of an internet datagram is necessary when it originates in a local net that allows a large packet size and must ...
... An internet datagram can be marked "don't fragment." Any internet ...
... don't fragment." Any internet datagram so marked is not to be internet fragmented under any circumstances. If internet ...
... internet fragmented under any circumstances. If internet datagram marked don't fragment cannot be delivered to its destination ...
... 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 ...
... fragments uses the identification field to ensure that fragments of different datagrams are not mixed. The fragment offset field ...
... receiver the position of a fragment in the original datagram. The fragment offset and length determine the portion of the original datagram ...
... original datagram. The fragment offset and length determine the portion of the original datagram covered by this fragment. The more-fragments ...
... 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 an internet datagram ...
... datagram from those of another. The originating protocol module of an internet datagram sets the identification field to a value that must be unique for that source-destination pair and protocol for the ...
... must be unique for that source-destination pair and protocol for the time the datagram will be active in the internet system. The ...
... active in the internet system. The originating protocol module of a complete datagram sets the more-fragments flag to zero and the fragment ...
... To fragment a long internet datagram, an internet protocol module (for example, in a gateway ...
... gateway), creates two new internet datagrams and copies the contents of the internet header fields ...
... internet header fields from the long datagram into both new internet headers. The data of the long ...
... internet headers. The data of the long datagram is divided into two portions on a 8 octet (64 bit) boundary ...
... 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 datagram ...
... datagram, and the total length field is set to the length of the first datagram. The more-fragments flag is set to one. The second portion of the data is placed in the second new internet ...
... fragments flag is set to one. The second 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 ...
... 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 ...
... datagram. The more-fragments flag carries the same value as the long datagram. The fragment offset field of the second new internet ...
... offset field of the second new internet datagram is set to the value of that field in the long datagram plus NFB. ...
... internet datagram is set to the value of that field in the long datagram plus NFB. ...
... To assemble the fragments of an internet datagram, an internet protocol module (for example at a destination host) combines ...
... destination host) combines internet datagrams that all have the same value for the four fields: identification, source, destination, and protocol. The combination ...
... Gateways implement internet protocol to forward datagrams between networks. Gateways ...


... Example Internet Datagram Header ...
... service parameters when transmitting a datagram through a particular network. Several networks ...
... The type of service is used to specify the treatment of the datagram during its transmission through the internet system. Example ...
... 16 bits Total Length is the length of the datagram, measured in octets, including internet header ...
... 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 ...
... 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 ...
... 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 ...
... or in fragments). It is recommended that hosts only send datagrams larger than 576 octets if they have assurance that the destination ...
... 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 ...
... example, this size allows a data block of 512 octets plus 64 header octets to fit in a datagram. The maximal internet header is 60 ...
... sender to aid in assembling the fragments of a datagram. Flags: 3 bits ...
... bits This field indicates where in the datagram this fragment belongs. The fragment ...
... 8 bits This field indicates the maximum time the datagram is allowed to remain in the internet system. If this field contains the value ...
... 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 ...
... 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 ...
... 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 ...
... 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 ...
... 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 ...
... undeliverable datagrams to be discarded, and to bound the maximum datagram lifetime. ...
... This field indicates the next level protocol used in the data portion of the internet datagram. The values for various protocols are specified in "Assigned Numbers" [9]. ...
... Options: variable The options may appear or not in datagrams. They must be implemented by all IP modules (host ...
... host and gateways). What is optional 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 ...
... route the internet datagram based on information supplied by the source. 0 9 var. Strict Source Routing ...
... route the internet datagram based on information supplied by the source. 0 7 var. Record Route ...
... route an internet datagram takes. 0 8 4 Stream ID. Used to carry the stream ...
... Must be copied on fragmentation. This option appears at most once in a datagram. 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 ...
... routing information to be used by the gateways in forwarding the datagram to the destination, and to record the route ...
... address is the internet module's own internet address as known in the environment into which this datagram is being forwarded. ...
... source route) means the option (and the IP header as a whole) remains a constant length as the datagram progresses through the internet. ...
... Must be copied on fragmentation. Appears at most once in a datagram. Strict Source and Record Route ...
... SSRR) option provides a means for the source of an internet datagram to supply routing information to be used by the gateways in forwarding the ...
... routing information to be used by the gateways in forwarding the datagram to the destination, and to record the route ...
... address is the internet module's own internet address as known in the environment into which this datagram is being forwarded. ...
... source route) means the option (and the IP header as a whole) remains a constant length as the datagram progresses through the internet. ...
... host IP must send the datagram directly to the next address in the source route ...
... Must be copied on fragmentation. Appears at most once in a datagram. Record Route ...
... route of an internet datagram. The option begins with the option type ...
... When an internet module routes a datagram it checks to see if the record route option is present. If it is, it inserts its ...
... own internet address as known in the environment into which this datagram is being forwarded into the recorded route begining at the octet indicated by the pointer, and increments the pointer ...
... If the route data area is already full (the pointer exceeds the length) the datagram is forwarded without inserting the address into the recorded route ...
... route. If there is some room but not enough room for a full address to be inserted, the original datagram is considered to be in error and is discarded. In either case an ICMP ...
... fragmentation, goes in first fragment only. Appears at most once in a datagram. Stream ...
... Must be copied on fragmentation. Appears at most once in a datagram. Internet ...
... If the timestamp data area is already full (the pointer exceeds the length) the datagram is forwarded without inserting the timestamp, but the overflow count is incremented by one. ...
... timestamp to be inserted, or the overflow count itself overflows, the original datagram is considered to be in error and is discarded. In either case an ICMP parameter problem message ...
... carried in the first fragment. Appears at most once in a datagram. Padding: variable ...
... receiving behavior. That is, it must be careful to send well-formed datagrams, but must accept any datagram that it can interpret (e.g., not object to technical ...
... well-formed datagrams, but must accept any datagram that it can interpret (e.g., not object to technical errors where the meaning is still clear). ...
... The basic internet service is datagram oriented and provides for the fragmentation of datagrams ...
... datagram oriented and provides for the fragmentation of datagrams at gateways, with reassembly taking place at the destination ...
... destination host. Of course, fragmentation and reassembly of datagrams within a network or by private agreement ...
... host to have several physical interfaces and to treat the datagrams from several of them as if they were all addressed to a single host. ...
... destination address, and the protocol fields, to identify datagram fragments for reassembly. ...
... More Fragments flag bit (MF) is set if the datagram is not the last fragment. The Fragment ...
... fragment location, relative to the beginning of the original unfragmented datagram. Fragments are counted in units of 8 octets. The ...
... 8 octets. The fragmentation strategy is designed so than an unfragmented datagram has all zero fragmentation information (MF ...
... fragment offset = 0). If an internet datagram is fragmented, its data portion must be broken on 8 octet ...
... 8 octets each for a total of 65,536 octets. Note that this is consistent with the the datagram total length field (of course, the header is counted in the total length and not in the fragments ...
... Every internet module must be able to forward a datagram of 68 octets without further fragmentation. This is because an internet ...
... Every internet destination must be able to receive a datagram of 576 octets either in one piece or in fragments to be reassembled. ...
... internet fragmentation of this datagram is NOT permitted, although it may be discarded. This can be used to prohibit fragmentation in cases ...
... host. A small host could have a boot strap program that accepts a datagram stores it in memory and then executes it. ...
... The maximum sized datagram that can be transmitted through the next network is called the maximum transmission unit ...
... If the total length is less than or equal the maximum transmission unit then submit this datagram to the next step in datagram processing; otherwise cut the datagram ...
... If the total length is less than or equal the maximum transmission unit then submit this datagram to the next step in datagram processing; otherwise cut the datagram into two fragments ...
... datagram to the next step in datagram processing; otherwise cut the datagram into two fragments, the first fragment ...
... fragment being the maximum size, and the second fragment being the rest of the datagram. The first fragment is submitted to the next step in datagram ...
... datagram. The first fragment is submitted to the next step in datagram processing, while the second fragment is submitted to this procedure in case it is still too large. ...
... IF TL =< MTU THEN Submit this datagram to the next step in datagram processing ELSE IF DF ...
... MTU THEN Submit this datagram to the next step in datagram processing ELSE IF DF = 1 THEN discard the datagram ...
... datagram processing ELSE IF DF = 1 THEN discard the datagram ELSE To produce the first fragment: ...
... (6) Submit this fragment to the next step in datagram processing; To produce the second fragment: ...
... fragment (except the last) was made the maximum allowable size. An alternative might produce less than the maximum size datagrams. For example, one could implement a fragmentation procedure that repeatly divided large datagrams ...
... datagrams. For example, one could implement a fragmentation procedure that repeatly divided large datagrams in half until the resulting fragments were less than the maximum transmission unit ...
... For each datagram the buffer identifier is computed as the ...
... concatenation of the source, destination, protocol, and identification fields. If this is a whole datagram (that is both the fragment offset and the more fragments ...
... buffer identifier are released and the datagram is forwarded to the next step in datagram processing. ...
... are released and the datagram is forwarded to the next step in datagram processing. ...
... data length is computed. If this fragment completes the datagram (tested by checking the bits set in the fragment block ...
... bits set in the fragment block table), then the datagram is sent to the next step in datagram processing; otherwise the timer ...
... fragment block table), then the datagram is sent to the next step in datagram processing; otherwise the timer is set to the maximum of the ...
... buffer with BUFID is allocated (4) THEN flush all reassembly for this BUFID; (5) Submit datagram to next step; DONE. (6) ELSE IF no buffer with BUFID is allocated ...
... to (TDL+7)/8 are set (14) THEN TL <- TDL+(IHL*4) (15) Submit datagram to next step; (16) free all reassembly resources for this BUFID; DONE. ...
... will use the more recently arrived copy in the data buffer and datagram delivered. ...
... The choice of the Identifier for a datagram is based on the need to provide a way to uniquely identify the fragments of a particular ...
... provide a way to uniquely identify the fragments of a particular datagram. The protocol module assembling fragments judges fragments ...
... fragments judges fragments to belong to the same datagram if they have the same source, destination, protocol, and Identifier ...
... Identifier to be unique for this source, destination pair and protocol for the time the datagram (or any fragment of it) could be alive in the internet ...
... identifier as the original transmission since fragments of either datagram could be used to construct a correct TCP segment ...
... service parameters of the particular networks the datagram traverses. ...
... Precedence. An independent measure of the importance of this datagram. ...
... Delay. Prompt delivery is important for datagrams with this indication. ...
... Throughput. High data rate is important for datagrams with this indication. ...
... Reliability. A higher level of effort to ensure delivery is important for datagrams with this indication. ...
... to be less reliably delivered and suffer less delay. Suppose an internet datagram is to be sent through the ARPANET. Let the internet ...
... time to live is set by the sender to the maximum time the datagram is allowed to be in the internet system. If the datagram ...
... datagram is allowed to be in the internet system. If the datagram is in the internet system longer than the time to live ...
... internet system longer than the time to live, then the datagram must be destroyed. ...
... internet header is processed to reflect the time spent processing the datagram. Even if no local information is available on the time actually spent, the field must be decremented by 1. The time is measured in ...
... maximum time to live is 255 seconds or 4.25 minutes. Since every module that processes a datagram must decrease the TTL by at least one even if it process the datagram ...
... 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 ...
... 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 ...
... 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 ...
... exist. The intention is to cause undeliverable datagrams to be discarded, and to bound the maximum datagram lifetime. ...
... Some higher level reliable connection protocols are based on assumptions that old duplicate datagrams will not arrive after a certain time elapses. The TTL is a way for such protocols to have ...
... The options are optional in each datagram, but required in implementations. That is, the presence or absence of an option is the choice of the sender ...
... is using the internet module. Since internet protocol is a datagram protocol, there is minimal memory or state maintained between datagram ...
... datagram protocol, there is minimal memory or state maintained between datagram transmissions, and each call on the internet protocol module by the user ...
... opt = option data result = response OK = datagram sent ok Error = error in arguments or local network error ...
... prot = protocol result = response OK = datagram received ok Error = error in arguments len = length of buffer ...
... When the user sends a datagram, it executes the SEND call supplying all the arguments. The internet protocol ...
... receiving this call, checks the arguments and prepares and sends the message. If the arguments are good and the datagram is accepted by the local network, the call returns successfully. If either the arguments are bad, or ...
... network, the call returns successfully. If either the arguments are bad, or the datagram is not accepted by the local network, the call returns unsuccessfully. On unsuccessful returns, a reasonable report must be ...
... When a datagram arrives at the internet protocol module from the local network ...
... network, either there is a pending RECV call from the user addressed or there is not. In the first case, the pending call is satisfied by passing the information from the datagram to the user. In the second case, the user addressed is notified of a pending datagram. If the ...
... passing the information from the datagram to the user. In the second case, the user addressed is notified of a pending datagram. If the user addressed does not exist, an ICMP error message is returned to ...
... A user's RECV call may then either be immediately satisfied by a pending datagram, or the call may be pending until a datagram arrives. ...
... A user's RECV call may then either be immediately satisfied by a pending datagram, or the call may be pending until a datagram arrives. ...
... module to indicate interest in or reserve exclusive use of a class of datagrams (e.g., all those with a certain value in the protocol field). ...


... This is an example of the minimal data carrying internet datagram: ...
... Example Internet Datagram Figure 5. ...
... This is a internet datagram in version 4 of internet protocol; the ...
... header consists of five 32 bit words, and the total length of the datagram is 21 octets. This datagram is a complete datagram (not ...
... bit words, and the total length of the datagram is 21 octets. This datagram is a complete datagram (not a fragment ...
... the datagram is 21 octets. This datagram is a complete datagram (not a fragment). ...
... In this example, we show first a moderate size internet datagram (452 data octets), then two internet fragments ...
... fragments that might result from the fragmentation of this datagram if the maximum sized transmission allowed were 280 octets. ...
... Example Internet Datagram Figure 6. ...
... Now the first fragment that results from splitting the datagram after 256 data octets. ...
... Here, we show an example of a datagram containing options: ...
... Example Internet Datagram Figure 9. ...


... header field indicates where in the internet datagram a fragment belongs. ...
... Control information at the beginning of a message, segment, datagram, packet or block of data. ...
... sender to aid in assembling the fragments of a datagram. ...
... internet datagram ...
... A portion of the data of an internet datagram with an internet header ...
... A flag indicating whether or not this internet datagram contains the end of an internet datagram ...
... datagram contains the end of an internet datagram, carried in the internet header ...
... header field which indicates the upper bound on how long this internet datagram may exist. ...
... internet header field Total Length is the length of the datagram in octets including internet header and data. ...
... of service for this internet datagram. ...
... User Datagram Protocol: A user level protocol for transaction oriented applications. ...



Google
Web
RFC-Ref