RFC 950

Internet Standard Subnetting Procedure

πŸ“… published August 1985, from ietf

RFC 950: Internet Standard Subnetting Procedure πŸŽ€

  • Network Working Group
  • Request for Comments: 950
  • Authors: J. Mogul (Stanford) and J. Postel (ISI) πŸ‘‘
  • Date: August 1985
  • Category: This one specifies a protocol for the ARPA-Internet community. πŸ¦‹
  • Obsoletes / Updates: Nothing is listed here. No obsoletes or updates fields in this title block. 🌸

Status Of This Memo

okay so bestie, this RFC specifies a protocol for the ARPA-Internet community πŸ’… If subnetting is implemented, it is strongly recommended that these procedures be followed. The memo can be distributed without any limits, so share it with everyone 🫢

Overview

this memo is all about "subnets" of Internet networks, which are logically visible sub-sections of a single Internet network ✨ For administrative or technical reasons, lots of organizations decided to split one Internet network into several subnets instead of getting a bunch of Internet network numbers 🧚 This memo lays out the procedures for using subnets. These procedures are for hosts (like workstations) πŸ’» The procedures used in and between subnet gateways are not fully described here πŸ™ˆ If you want the important motivation and background for a subnetting standard, check out RFC-940 [7] πŸ“š

Acknowledgment

this memo is based on RFC-917 [1] 🌈 Lots of people helped build the concepts in here. J. Noel Chiappa, Chris Kent, and Tim Mann in particular gave important suggestions 🫢 Zaw-Sing Su, Mike Karels, and the Gateway Algorithms and Data Structures Task Force (GADS) also helped shape this memo πŸ’œ

1. Motivation ✨

okay so the original view of the Internet universe was a two-level hierarchy 🌸 The top level was the Internet as a whole, and the level below it was individual networks, each with its own network number. The Internet doesn't have a hierarchical topology, but the interpretation of addresses is hierarchical. In this two-level model, each host sees its network as one single entity πŸ’… The network can be treated as a "black box" that a set of hosts is connected to.

this view is simple and powerful, ngl, but a bunch of organizations found it inadequate and added a third level to how they interpret Internet addresses 😭 In this view, a given Internet network is divided into a collection of subnets. πŸ¦‹

The three-level model is useful for networks belonging to moderately large organizations (like universities or companies with more than one building) πŸŽ“ Often they need more than one LAN cable to cover a "local area." Each LAN can then be treated as a subnet πŸ“

There are several reasons an organization might use more than one cable to cover a campus:

  • Different technologies: Especially in a research environment, there might be more than one kind of LAN in use. For example, an organization may have some equipment that supports Ethernet and some that supports a ring network. πŸ’œ
  • Limits of technologies: Most LAN technologies have limits, based on electrical parameters, on the number of hosts connected and on the total length of the cable. It is easy to go over these limits, especially the cable-length one 😬
  • Network congestion: A small subset of the hosts on a LAN can hog most of the bandwidth πŸ’€ A common fix is to split the hosts into cliques of high mutual communication and put those cliques on separate cables. πŸ‘‘
  • Point-to-Point links: Sometimes a "local area," like a university campus, is split across two locations that are too far apart to connect using the preferred LAN technology. In that case, high-speed point-to-point links might connect several LANs. 🌈

An organization that has been forced to use more than one LAN has three choices for assigning Internet addresses:

  1. Get a distinct Internet network number for each cable. Subnets aren't used at all. πŸŽ€
  2. Use a single network number for the entire organization, but assign host numbers without regard to which LAN a host is on ("transparent subnets"). 🧚
  3. Use a single network number and partition the host address space by assigning subnet numbers to the LANs ("explicit subnets"). ✨

each of these approaches has disadvantages, sorry bestie 😭 The first one doesn't require any new or modified protocols, but it causes an explosion in the size of Internet routing tables πŸ’₯ Info about the internal details of local connectivity gets propagated everywhere, even though it's of little or no use outside the local organization. Some current gateway implementations don't have much space for routing tables, so it would be good to avoid this problem πŸ™ˆ

The second approach needs some convention or protocol that makes the collection of LANs look like a single Internet network 🧩 For example, this can be done on LANs where each Internet address is translated to a hardware address using an Address Resolution Protocol (ARP), by having the bridges between the LANs intercept ARP requests for non-local targets (see RFC-925 [2]). But it's not possible to do this for all LAN technologies, especially ones where ARP protocols aren't currently used, or if the LAN doesn't support broadcasts 😬 The bigger problem is that bridges have to discover which LAN a host is on, maybe by using a broadcast algorithm. As the number of LANs grows, the cost of broadcasting grows too. Also, the size of the translation caches the bridges need grows with the total number of hosts in the network. πŸ“ˆ

The third approach is to explicitly support subnets. This does have a disadvantage: it modifies the Internet Protocol, so it requires changes to IP implementations already in use (if those implementations are going to be used on a subnetted network) πŸ› οΈ However, the changes are relatively minor, and once they're made they give a simple and efficient solution to the problem ✨ Also, this approach avoids any changes that would be incompatible with existing hosts on non-subnetted networks. slay πŸ’…

Further, when appropriate design choices are made, hosts that believe they're on a non-subnetted network can be used on a subnetted one, as explained in RFC-917 [1] πŸ¦‹ This is useful when it isn't possible to modify some of the hosts to support subnets explicitly, or when a gradual transition is preferred 🌸

2. Standards for Subnet Addressing πŸ’œ

this section first describes a proposal for interpreting Internet addresses to support subnets. Next, it discusses changes to host software to support subnets. Finally, it presents a procedure for discovering what address interpretation is in use on a given network (i.e., what address mask is in use) πŸ”

2.1. Interpretation of Internet Addresses πŸŽ€

okay so suppose an organization has been assigned an Internet network number, has further divided that network into a set of subnets, and wants to assign host addresses. How should this be done? πŸ€” There are minimal restrictions on how the "local address" part of the Internet address gets assigned, so several approaches have been proposed for representing the subnet number:

  1. Variable-width field: Any number of the bits of the local address part can be used for the subnet number. The size of this field is constant for a given network, but it varies from network to network. If the field width is zero, subnets aren't in use. 🌈
  2. Fixed-width field: A specific number of bits (e.g., eight) is used for the subnet number, if subnets are in use. πŸ“
  3. Self-encoding variable-width field: Just as the width (i.e., class) of the network number field is encoded by its high-order bits, the width of the subnet field is encoded the same way. 🧚
  4. Self-encoding fixed-width field: A specific number of bits is used for the subnet number. ✨
  5. Masked bits: Use a bit mask ("address mask") to identify which bits of the local address field indicate the subnet number. 🎭

so what criteria can we use to choose one of these five schemes? πŸ€” First, should we use a self-encoding scheme? And should it be possible to tell, just by looking at an Internet address, whether it refers to a subnetted network, without referencing any other info? πŸ‘€

An interesting feature of self-encoding is that it lets the address space of a network be divided into subnets of different sizes: typically one subnet with half the address space and a set of small subnets. 🌟

For example, consider a class C network that uses a self-encoding scheme, with one bit to indicate whether it's the large subnet or not and three more bits to identify the small subnet. If the first bit is zero, then this is the large subnet. If the first bit is one, then the following bits (3 in this example) give the subnet number. There is one subnet with 128 host addresses and eight subnets with 16 hosts each. πŸ’…

To establish a subnetting standard, the parameters and interpretation of the self-encoding scheme must be fixed and consistent throughout the Internet 🌐

It could be assumed that all networks are subnetted. This would let addresses be interpreted without reference to any other information. 🧠

This is a significant advantage: given the Internet address, no additional information is needed for an implementation to determine whether two addresses are on the same subnet πŸ™Œ But it can also be seen as a disadvantage. It may cause problems for networks that already have existing host numbers using arbitrary bits in the local address part. In other words, it's useful to be able to control whether a network is subnetted independently from how host addresses are assigned. 🫢

The alternative is to keep the fact that a network is subnetted separate from the address. If one finds, somehow, that the network is subnetted, then the standard self-encoded subnetted network address rules are followed. Otherwise, the non-subnetted network addressing rules are followed. πŸ¦‹

If a self-encoding scheme isn't used, there's no reason to use a fixed-width field scheme. There must in any case be some per-network "flag" to indicate whether subnets are in use, so the extra cost of using an integer (a subnet field width or address mask) instead of a boolean is negligible 🌸 The advantage of the address mask scheme is that it lets each organization choose the best way to allocate the relatively scarce bits of local address between subnet and host numbers. So we choose the address-mask scheme: it's the most flexible scheme, yet it costs no more to implement than any other. πŸ‘‘

For example, the Internet address might be interpreted as:

<network-number><subnet-number><host-number>

where the <network-number> field is as defined by IP [3], the <host-number> field is at least 1-bit wide, and the width of the <subnet-number> field is constant for a given network. No further structure is required for the <subnet-number> or <host-number> fields. If the width of the <subnet-number> field is zero, then the network is not subnetted (i.e., the interpretation of [3] is used). πŸŽ€

okay so picture a Class B network with a 6-bit wide subnet field πŸŽ€ the address gets split up like this:

                           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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |1 0|        NETWORK            |  SUBNET   |    Host Number    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

the subnet bits are picked out by a bitmask 🎭 so they don't have to sit next to each other in the address. that said, we recommend keeping the subnet bits contiguous and putting them at the most significant end of the local address πŸ’œ bestie, that's the cleanest way to do it.

Special Addresses ✨

okay so this next bit is giving old-school wisdom. the Assigned Numbers memo [9] says:

"In certain contexts, it is useful to have fixed addresses with functional significance rather than as identifiers of specific hosts. When such usage is called for, the address zero is to be interpreted as meaning "this", as in "this network". The address of all ones are to be interpreted as meaning "all", as in "all hosts". For example, the address 128.9.255.255 could be interpreted as meaning all hosts on the network 128.9. Or, the address 0.0.0.37 could be interpreted as meaning host 37 on this network."

so we want to keep that vibe going in subnetted networks too 🌸 which means the all-zeros and all-ones values in the subnet field should not get handed out to real physical subnets. no sharing the special addresses, periodt πŸ’…

in the example above, the 6-bit wide subnet field can be any value except 0 and 63 πŸ¦‹

and no new restrictions or changes for hosts on non-subnetted networks. nothing to see here, they're fine 🫢

2.2. Changes to Host Software to Support Subnets

okay so most IP implementations have a little piece of code in the module that handles outgoing datagrams πŸ“¦ its whole job is deciding whether a datagram can go straight to the destination on the local network, or whether it has to be sent through a gateway instead.

it usually looks something like this:

   IF ip_net_number(dg.ip_dest) = ip_net_number(my_ip_addr)
       THEN
           send_dg_locally(dg, dg.ip_dest)
       ELSE
           send_dg_locally(dg,
                            gateway_to(ip_net_number(dg.ip_dest)))

(if the code supports multiply-connected networks, it gets more complicated, but that's irrelevant to what we're talking about right now πŸ™ˆ)

to support subnets, you need to store one more 32-bit quantity, called my_ip_mask πŸ”₯ it's a bitmask with bits set in the fields that match the IP network number, plus extra bits set for the subnet number field. main character energy πŸ‘‘

then the code becomes:

   IF bitwise_and(dg.ip_dest, my_ip_mask)
                             = bitwise_and(my_ip_addr, my_ip_mask)
       THEN
           send_dg_locally(dg, dg.ip_dest)
       ELSE
           send_dg_locally(dg,
                  gateway_to(bitwise_and(dg.ip_dest, my_ip_mask)))

of course, part of the conditional expression can be pre-computed ✨ smart and efficient, iconic.

it may or may not be necessary to modify the gateway_to function so that it also takes the subnet field bits into account when it does its comparisons 🧚

and if the host is multiply-connected, you can keep the my_ip_addr and my_ip_mask values on a per-interface basis 🌈 then the conditional expression has to be evaluated for each interface.

2.3. Finding the Address Mask

okay the big question: how does a host figure out what address mask is in use on a subnet it's plugged into? πŸ₯Ί this is kind of like a few other "bootstrapping" problems for Internet hosts. like, how does a host work out its own address, or how does it find a gateway on its local network? all three have two basic solutions: "hardwired" information, or broadcast-based protocols πŸ“‘

hardwired information is whatever a host can know without talking to a network πŸ’Ύ it could be compiled in, or (ideally) stored in a disk file. the problem is diskless workstations that get bootloaded over a LAN. for those, neither hardwired option really works 😭

so since most LAN tech supports broadcasting, the better move is for the newly booted host to broadcast a request for the info it needs πŸ“£ for example, to figure out its Internet address, a host can use the "Reverse Address Resolution Protocol" (RARP) [4].

but a newly booted host usually needs to collect several facts (like its IP address, the hardware address of a gateway, the IP address of a domain name server, and the subnet address mask) πŸ“ so it's way better to grab all of that in one request instead of spamming the network with a bunch of broadcasts. the mechanisms built for booting diskless workstations can also load per-host configuration files with the required info (see RFC-951 [8], bestie). it's possible, and really desirable, to get everything a host needs from a boot server with just one broadcast message πŸ’–

now, for the case where a host needs the address mask as its own separate operation, here's the mechanism:

To provide the address mask information the ICMP protocol [5] is extended by adding a new pair of ICMP message types, "Address Mask Request" and "Address Mask Reply", analogous to the "Information Request" and "Information Reply" ICMP messages. These are described in detail in Appendix I.

the plan is that a host, when it boots, broadcasts an "Address Mask Request" message πŸš€ a gateway (or a host standing in for a gateway) that gets this message responds with an "Address Mask Reply". if the request doesn't say which host sent it (meaning the IP Source Address is zero), the reply gets broadcast too πŸ“’ the requesting host hears the response and works out the address mask from it. yasss.

since there's only one possible value that can go in an "Address Mask Reply" on any given LAN, the requesting host doesn't need to match the responses it hears against the request it sent 🧠 and it's not a problem if more than one gateway responds either. we also assume hosts reboot pretty rarely, so the broadcast load from this protocol should be small 🌸

if a host is connected to more than one LAN, it might have to find the address mask for each one πŸ¦‹

now, one potential problem: what should a host do if it can't find the address mask, even after a reasonable number of tries? 😬 there are three possible interpretations of that situation:

  1. The local net exists in (permanent) isolation from all other nets.
  2. Subnets are not in use, and no host can supply the address mask.
  3. All gateways on the local net are (temporarily) down.

the first and second situations both mean the address mask is the same as the Internet network number mask ✨ in the third situation, there's no way to know the proper value, so the safest choice is a mask identical to the Internet network number mask πŸ›‘οΈ sure, it might turn out to be wrong later, but it won't stop transmissions that would otherwise succeed. and a host can recover from a wrong guess πŸ™Œ when a gateway comes up, it should broadcast an "Address Mask Reply". when a host gets one of those that disagrees with its guess, it should change its mask to match the received value. and no host or gateway should send an "Address Mask Reply" based on a "guessed" value πŸ™…β€β™€οΈ

finally, note that no host is required to use this ICMP protocol to discover the address mask πŸ’… it's totally reasonable for a host with non-volatile storage to use stored information instead, including a configuration file from a boot server 🫢


Appendix I. Address Mask ICMP ✨

Address Mask Request or Address Mask Reply

okay this is the packet layout for both messages πŸŽ€

   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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     Type      |      Code     |          Checksum             |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |           Identifier          |       Sequence Number         |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                        Address Mask                           |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

IP Fields

Addresses 🌷

the source address in an address mask request becomes the destination address of the address mask reply πŸ’Œ so to build a reply, you take the request's source address and make it the reply's destination, set the reply's source address to the replier's own address, change the type code to AM2, insert the address mask value into the Address Mask field, and then recompute the checksum. the one exception: if the source address in the request is zero, then the reply's destination address should denote a broadcast πŸ“’

ICMP Fields

Type 🧁

AM1 for address mask request message

AM2 for address mask reply message

Code 🍭

0 for address mask request message

0 for address mask reply message

Checksum πŸ”’

the checksum is the 16-bit one's complement of the one's complement sum of the ICMP message, starting from the ICMP Type. when you compute it, the checksum field should be zero πŸ™ƒ and this checksum may be replaced in the future πŸ‘€

Identifier πŸͺͺ

an identifier that helps match requests and replies. it may be zero.

Sequence Number πŸ”

a sequence number that helps match requests and replies. it may be zero.

Address Mask 🎭

a 32-bit mask.

Description

a gateway that gets an address mask request should send it back with the address mask field set to the 32-bit mask of the bits that identify the subnet and network, for the subnet the request arrived on πŸ’–

if the requesting host doesn't know its own IP address, it may leave the source field zero, and then the reply should be broadcast. but this approach should be avoided if at all possible, since it adds extra broadcast load to the network 😩 even when replies are broadcast, there's only one possible address mask for a subnet, so there's no need to match requests with replies. the "Identifier" and "Sequence Number" fields can be ignored in that case 🫧

type AM1 may be received from a gateway or a host πŸ¦‹

type AM2 may be received from a gateway, or a host acting in lieu of a gateway 🌈

Appendix II. Examples

These examples show how a host can find out the address mask using the ICMP Address Mask Request and Address Mask Reply messages. For the following examples, assume that address 255.255.255.255 denotes "broadcast to this physical medium" [6]. πŸ’–

  1. A Class A Network Case

Okay so for this one, picture a requesting host on class A network 36.0.0.0. It has address 36.40.0.123, there's a gateway at 36.40.0.62, and an 8-bit wide subnet field is in use, so the address mask is 255.255.0.0. πŸ¦‹

The most efficient method, and the one we recommend, is for a host to first discover its own address (perhaps using "RARP" [4]), and then to send the ICMP request to 255.255.255.255: ✨

   Source address:          36.40.0.123
   Destination address:     255.255.255.255
   Protocol:                ICMP = 1
   Type:                    Address Mask Request = AM1
   Code:                    0
   Mask:                    0

The gateway can then respond directly to the requesting host. πŸŽ€

   Source address:          36.40.0.62
   Destination address:     36.40.0.123
   Protocol:                ICMP = 1
   Type:                    Address Mask Reply = AM2
   Code:                    0
   Mask:                    255.255.0.0

Suppose that 36.40.0.123 is a diskless workstation, and does not know even its own host number. It could send the following datagram: πŸ₯Ί

   Source address:          0.0.0.0
   Destination address:     255.255.255.255
   Protocol:                ICMP = 1
   Type:                    Address Mask Request = AM1
   Code:                    0
   Mask:                    0

36.40.0.62 will hear the datagram, and should respond with this datagram: 🌸

   Source address:          36.40.0.62
   Destination address:     255.255.255.255
   Protocol:                ICMP = 1
   Type:                    Address Mask Reply = AM2
   Code:                    0
   Mask:                    255.255.0.0

Note that the gateway uses the narrowest possible broadcast to reply. Even so, the over use of broadcasts presents an unnecessary load to all hosts on the subnet, and so the use of the "anonymous" (0.0.0.0) source address must be kept to a minimum. πŸ™ˆ Bestie, nobody wants a broadcast storm, so keep that 0.0.0.0 energy to a minimum fr fr.

If broadcasting is not allowed, we assume that hosts have wired-in information about neighbor gateways; thus, 36.40.0.123 might send this datagram: 🧚

   Source address:          36.40.0.123
   Destination address:     36.40.0.62
   Protocol:                ICMP = 1
   Type:                    Address Mask Request = AM1
   Code:                    0
   Mask:                    0

36.40.0.62 should respond exactly as in the previous case. πŸ’…

   Source address:          36.40.0.62
   Destination address:     36.40.0.123
   Protocol:                ICMP = 1
   Type:                    Address Mask Reply = AM2
   Code:                    0
   Mask:                    255.255.0.0
  1. A Class B Network Case

Next up, same vibe but make it class B. The requesting host is on network 128.99.0.0, has address 128.99.4.123, there's a gateway at 128.99.4.62, and a 6-bit wide subnet field is in use, so the address mask is 255.255.252.0. πŸ‘‘

The host sends the ICMP request to 255.255.255.255: 🌈

   Source address:          128.99.4.123
   Destination address:     255.255.255.255
   Protocol:                ICMP = 1
   Type:                    Address Mask Request = AM1
   Code:                    0
   Mask:                    0

The gateway can then respond directly to the requesting host. ⭐

   Source address:          128.99.4.62
   Destination address:     128.99.4.123
   Protocol:                ICMP = 1
   Type:                    Address Mask Reply = AM2
   Code:                    0
   Mask:                    255.255.252.0

In the diskless workstation case the host sends: 😭

   Source address:          0.0.0.0
   Destination address:     255.255.255.255
   Protocol:                ICMP = 1
   Type:                    Address Mask Request = AM1
   Code:                    0
   Mask:                    0

128.99.4.62 will hear the datagram, and should respond with this datagram: πŸ“

   Source address:          128.99.4.62
   Destination address:     255.255.255.255
   Protocol:                ICMP = 1
   Type:                    Address Mask Reply = AM2
   Code:                    0
   Mask:                    255.255.252.0

If broadcasting is not allowed 128.99.4.123 sends: 🫢

   Source address:          128.99.4.123
   Destination address:     128.99.4.62
   Protocol:                ICMP = 1
   Type:                    Address Mask Request = AM1
   Code:                    0
   Mask:                    0

128.99.4.62 should respond exactly as in the previous case. πŸ’œ

   Source address:          128.99.4.62
   Destination address:     128.99.4.123
   Protocol:                ICMP = 1
   Type:                    Address Mask Reply = AM2
   Code:                    0
   Mask:                    255.255.252.0
  1. A Class C Network Case (illustrating non-contiguous subnet bits)

Now the spicy one 🌢️ bestie. Class C network 192.1.127.0, requesting host has address 192.1.127.19, gateway at 192.1.127.50. On this network a 3-bit subnet field is in use (01011000), so the address mask is 255.255.255.88. The subnet bits are not contiguous, and that's the whole point of this example, so pay attention! πŸ”₯

The host sends the ICMP request to 255.255.255.255: πŸŽ€

   Source address:          192.1.127.19
   Destination address:     255.255.255.255
   Protocol:                ICMP = 1
   Type:                    Address Mask Request = AM1
   Code:                    0
   Mask:                    0

The gateway can then respond directly to the requesting host. πŸ¦‹

   Source address:          192.1.127.50
   Destination address:     192.1.127.19
   Protocol:                ICMP = 1
   Type:                    Address Mask Reply = AM2
   Code:                    0
   Mask:                    255.255.255.88.

In the diskless workstation case the host sends: πŸ₯Ί

   Source address:          0.0.0.0
   Destination address:     255.255.255.255
   Protocol:                ICMP = 1
   Type:                    Address Mask Request = AM1
   Code:                    0
   Mask:                    0

192.1.127.50 will hear the datagram, and should respond with this datagram: 🌸

   Source address:          192.1.127.50
   Destination address:     255.255.255.255
   Protocol:                ICMP = 1
   Type:                    Address Mask Reply = AM2
   Code:                    0
   Mask:                    255.255.255.88.

If broadcasting is not allowed 192.1.127.19 sends: 🧚

   Source address:          192.1.127.19
   Destination address:     192.1.127.50
   Protocol:                ICMP = 1
   Type:                    Address Mask Request = AM1
   Code:                    0
   Mask:                    0

192.1.127.50 should respond exactly as in the previous case. πŸ’…

   Source address:          192.1.127.50
   Destination address:     192.1.127.19
   Protocol:                ICMP = 1
   Type:                    Address Mask Reply = AM2
   Code:                    0
   Mask:                    255.255.255.88

Appendix III. Glossary

Bridge

A node connected to two or more administratively indistinguishable but physically distinct subnets, that automatically forwards datagrams when necessary, but whose existence is not known to other hosts. Also called a "software repeater". πŸŒ‰

Gateway

A node connected to two or more administratively distinct networks and/or subnets, to which hosts send datagrams to be forwarded. πŸšͺ

Host Field

The bit field in an Internet address used for denoting a specific host. 🏠

Internet

The collection of connected networks using the IP protocol. 🌐

Local Address

The rest field of the Internet address (as defined in [3]). πŸ“

Network

A single Internet network (which may or may not be divided into subnets). 🧩

Network Number

The network field of the Internet address. πŸ”’

Subnet

One or more physical networks forming a subset of an Internet network. A subnet is explicitly identified in the Internet address. 🍰

Subnet Field

The bit field in an Internet address denoting the subnet number. The bits making up this field are not necessarily contiguous in the address. 🧡

Subnet Number

A number identifying a subnet within a network. 🎫

Appendix IV. Assigned Numbers

The following assignments are made for protocol parameters used in the support of subnets. The only assignments needed are for the Internet Control Message Protocol (ICMP) [5]. πŸ“‹

ICMP Message Types

   AM1 = 17

   AM2 = 18

References

[1]  Mogul, J., "Internet Subnets", RFC-917, Stanford University,
     October 1984.

[2]  Postel, J., "Multi-LAN Address Resolution", RFC-925,
     USC/Information Sciences Institute, October 1984.

[3]  Postel, J., "Internet Protocol", RFC-791, USC/Information
     Sciences Institute, September 1981.

[4]  Finlayson, R., T. Mann, J. Mogul, M. Theimer, "A Reverse Address
     Resolution Protocol", RFC-903, Stanford University, June 1984.

[5]  Postel, J., "Internet Control Message Protocol", RFC-792,
     USC/Information Sciences Institute, September 1981.

[6]  Mogul, J., "Broadcasting Internet Datagrams", RFC-919, Stanford
     University, October 1984.

[7]  GADS, "Towards an Internet Standard Scheme for Subnetting",
     RFC-940, Network Information Center, SRI International,
     April 1985.

[8]  Croft, B., and J. Gilmore, "BOOTP -- UDP Bootstrap Protocol",
     RFC-951, Stanford University, August 1985.

[9]  Reynolds, J., and J. Postel, "Assigned Numbers", RFC-943,
     USC/Information Sciences Institute, April 1985.
πŸ“¦ where this page comes from