Networks Notes: RFC791 -Internet Protocol

This is a series containing notes I made while reading RFCs.

Link to this RFC.

Internet Protocol

  • Implements two basic functions:
    • Addressing
    • Fragmentation
  • Addresses carried in the internet header are used to transmit internet datagrams to their destinations.
  • The selection of a path for transmission is called routing.
  • Internet modules use fields in the internet header to fragment and reassemble internet datagrams when necessary in “small packet” networks.
  • An internet module resides in:
    • each host engaged in communication
    • each gateway interconnecting networks
  • Modules share common rules for interpreting the address fields and for fragmenting and assembling internet datagrams.
  • Modules have procedures for making routing decisions and other functions.
  • The protocol treats each internet datagram as an independent entity unrelated to any other internet datagram (i.e no connections or logical circuits).
  • The protocol uses four key mechanisms to provide service:
    • Type of Service
    • Time to Live
    • Options
    • Header Checksum


  • Type of Service
    • Indicates the quality of the service desired.
    • Used by gateways for:
      • selecting tranmission parameters for a particular network
      • selecting the network to be used for the next hop
      • selecting the next gateway when routing the internet datagram.
  • Time to Live
    • Indication of an upper bound on the lifetime of an internet datagram.
    • Set by sender of the datagram.
    • Decremented at points in the route where it is processed.
    • The internet datagram is destroyed if this  reaches zero before reaching the destination.
    • A “self-destruct” time limit.
  • Options
    • provide for control functions needed or sometimes useful.
    • unnecessary in most common communications.
    • can include provisions for timestamps, security, routing etc.
  • Header Checksum
    • provides a verification that the internet datagram has been transmitted correctly.
    • the internet datagram is discarded if the header checksum fails.
  • The internet protocol does not provide a reliable communication facility. There are no:
    • acknowledgements
    • error control for data, aside from the header checksum
    • retranmissions
    • flow control
  • Errors detected can be reported using the Internet Control Message Protocol (ICMP), implemented in the IP module.


  • Name – what we seek
  • Address – where it is
  • Route – how to get there

On addresses…

  • Addresses have a fixed length of four octets (32 bits).
  • An address:
    • begins with a network number
    • followed by the local address (“rest” field)
  • Addresses have three formats or classes.
    • Class A: high order bit is zero. Next 7 bits are the network. Last 24 bits are the local address.
    • Class B: high order two bits are one-zero. Next 14 bits are the network. Last 16 bits are the local address.
    • Class C: high order three bits are one-one-zero. Next 21 bits are the network. Last 8 bits are the local address.


  • Necessary when large packets have to pass through a local network that limits packets to a smaller size.
  • An internet datagram can be marked “don’t fragment”.
    • It will not be fragmented under any circumstances.
    • If it cannot be delivered without fragmentation, it will be discarded.
  • Needs to be able to break a datagram into an almost arbitrary number of pieces that can later be reassembled.
  • Receiver uses identification field to ensure fragments of different datagrams are not mixed.
  • Fragment offset field tells receiver the position of a fragment in the original datagram.
  • Fragment offset and length determine portion of the original datagram covered by the fragment.
  • More-fragments flag indicates (by being reset) the last fragment
  • Fields that provide sufficient information to reassemble datagrams:
    • identification field
    • fragment offset field
    • length
    • more-fragments flag
  • See RFC page 8-9 for a very well-written description of how fragmentation works.


  • Forward datagrams between networks
  • Also implement the Gateway to Gateway Protocol (GGP) to coordinate routing and other internet control information.
  • Higher level protocols need not be implemented in a gateway. GGP functions are added to the IP module.

The details on specification are very well written and I don’t think notes for them are needed. To read up the specification, refer to section 3 of the above linked RFC.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s