Why did the creators of the Internet Protocol decide to use IP addresses to identify a particular computer?

Why not just have a unique ID assigned to each computer upon manufacture, then use that ID for identification of the computer?

  • 3
    There's no way that would work in the real world... Sep 10, 2014 at 8:42
  • 20
    Like MAC address?
    – user694733
    Sep 10, 2014 at 8:44
  • 12
    @JerryRockwell You do realize that MAC addresses, which come closest to what you describe, can also be spoofed? In other words, in that world it would probably only take a utility program and a lucky guess to get a new, working ID. On the other hand, if proxies and VPNs really do become impossible, a lot of honest people are screwed too.
    – user7043
    Sep 10, 2014 at 8:58
  • 2
    This question appears to be off-topic because it is about software development as defined in the Help Center. Your question might be more appropriate on superuser.com or serverfault.com
    – Philipp
    Sep 10, 2014 at 9:40
  • 2
    IP address is an ID. It is just usually constantly changing due to the extensive use of DHCP.
    – Siyuan Ren
    Sep 10, 2014 at 9:50

7 Answers 7


IP does not identify a computer - one computer can have multiple IPs and a single IP can belong to multiple computers as long as they are in different networks.

IP is not identifier, it's a part of routing. It identifies an endpoint. And it has to be configurable so one computer could be used in different networks - when you change your network you change IP addresses of computers. If these were fixed, you couldn't have the routing mechanism that is used in IP networks.

For example your name could be your (fixed) identifier, but your address is where your mail is delivered to. Address is configurable here - if you move, you get new address and whoever moves to your old place gets your old address. If a street name (network configuration) changes, so does your address. But the delivery mechanism stays the same.

  • 2
    how does this relate to the question asked, "Why did the creators of the Internet Protocol decide"
    – gnat
    Sep 10, 2014 at 8:46
  • 5
    It's excellent example with the name (as MAC) and an address (as IP).
    – SerG
    Sep 10, 2014 at 8:58
  • True stuff; but the answer doesn't do enough to explain why IP works better for routing than ... I dunno. Anything else.
    – svidgen
    Sep 10, 2014 at 14:03
  • 1
    Question was not to explain how IP routing works and how IP address is a part of it. Though there are other answers that do explain that. There are other ways of routing, not just IP.
    – aragaer
    Sep 10, 2014 at 15:01
  • See HIP (Host Identity Protocol, RFC4423) for a attempt to add a layer for Host Identifiers (stored as IPv6 addresses) between the network layer and the transport layer.
    – ysdx
    Sep 11, 2014 at 8:16

If every computer would have a unique id routing tables would have to include all routes to all devices on the internet. This is impractical.

That's why tcp/ip uses a tiered approach.

If my computer wants to communicate with it basically asks the gateway to forward the packet, so it communicates with:, but that gateway also doesn't know where is so it asks his gateway to forward the packet, gateway picks it up and asks . doesn't know where is either, but it does know where is (in his routing table) so the request goes now down because knows where is and forwards the packet, this all the way till the packet reaches

(This is an EXTREME oversimplification of what happens and there can be any amount of hops between and

This tiered approach with routing tables makes for efficient locating of another computer in a network. But it also means there has to be a system without the unique ID because routing tables cannot contain all ids and routes of all machines connected to the internet.


For the same reason the postal service uses addresses rather than names.

Postal services (and other carriers of packages) don't really ship packages to people. They ship to locations, and let the people at that location sort out which person actually gets the package. The reason they do this is that you can't tell where a person is from his or her name alone, and you can't encode that in the name without making it changeable.

The Internet doesn't use just one protocol: it actually stacks up several protocols, one on top of another. There are protocols which use unique IDs, and they reside in the lowest level, called the link layer. Ethernet (which uses MAC addresses) and PPP (which most commonly uses phone numbers) are two popular examples of link-layer protocols. But the link layer has its limits: you can only get a signal between computers that are directly connected to each other, because everyone already has to know where everyone is. This makes it like the people at the package's destination: everyone knows each other already, so they can sort out between themselves who will actually get the package.

IP resides one step up from this, in the network layer (sometimes called the Internet layer). IP's job is to get a signal between locations that aren't directly connected. Others have already gone into the hierarchical routing scheme that it uses, but most postal services have used similar hierarchical systems since long before the Internet, or even computers. They do this because it's the easiest way to identify different locations and route things between them.

But computers and locations are not the same thing. Computers, like people, can move between different locations: for example, you might move a laptop between your home and your workplace. More than one computer can reside at a given location: if you use a wireless router at home, then you may have several devices connected, but they all share a single IP address as far as the outside world is concerned. It is even possible for a single computer to have more than one address, in certain circumstances.

The Internet needs to be able to handle all of these cases. To do this in a simple and efficient manner, they use addresses rather than IDs. This way, IP doesn't have to know or care what is on each end of the connection: there is only a signal, a place it's coming from, and a place to carry it to. Other protocols in the stack can take care of the other details.


The MAC address is what identifies a computer, or rather its networking hardware.

What an IP address does is describe where it the hardware is. Routers use it to figure out where to route the packets so they arrive at the correct destination.

As a MAC address does not change when you move the hardware it is in-practical to use for routing, as it would essentially mean that every router in the entire world would need to keep track of the location of each and every MAC-address. IP addresses work in the manner that each router does not need complete information of the recipient to route them correctly, they know which IP range to send where. This way, only one actual router or switch needs to know which IP is located where exactly. Every other router only needs a very general idea.

  • 1
    this seems to merely repeat points made and explained in prior answer
    – gnat
    Sep 10, 2014 at 8:58
  • I wonder why MAC addresses are supposed to be globally uniquely assigned, given that even assigning random 32-bit addresses would be very unlikely to cause any collisions on subnets which don't have thousands of machines (most subnets have less than 100), and collision resolution could be handled simply by having any machine which detects a collision randomly pick a new address; if it fails to respond to the old address, the machine that wanted to communicate will re-ARP, find the new address, and all will be well.
    – supercat
    Sep 10, 2014 at 13:52

Why did the creators of the Internet Protocol decide to use IP addresses to identify a particular computer?

They didn't. It identifies a network connection, though that same connection could have other IP addresses as well.

Why not just have a unique ID assigned to each computer upon manufacture, then use that ID for identification of the computer?

For one thing they don't ID computers as above.

Okay, say they wanted to do it with network adaptors. They would have had to convince every network adaptor manufacturer to use an identifier from a set controlled by people involved in this particular plan for connecting networks that a lot of people didn't think would work, before it could work. Good luck with that.

Also, these network hardware manufacturers didn't care about TCP/IP, they cared about their own network protocols and perhaps secondarily about those they were competing with. In some cases having a layer on top that made the differences between e.g. ethernet, ALOHAnet, token bus, etc. was a bad thing for some technologies in the long term, because it made some of what they did less useful (TCP/IP could do it instead) and people could eventually move to those that did just what TCP/IP needed and little else (as ethernet did). TCP/IP was a trojan-horse to these companies; happily playing with them, but destroying their business at the same time. Why should they help.

Also, some of these technologies predated TCP/IP, and so they wouldn't be able to interoperate and TCP/IP couldn't have become used on just about all types of network.

Also, which address where? My machine currently has an address of (among others), which is also used by thousands of other machines on other networks. I don't need a unique address because I'm not directly connected to the Internet. With IPv6 we're beginning to move to a point where we could have a genuinely unique id for every machine if we really wanted, but prior to that doing this would have been both limiting in number (four billion would probably have seemed like a lot of devices at the time, but that would require a very tight distribution of numbers, so in practice there'd be many fewer even if that was a realistic concern) and pointless; the whole point of IP isn't networking but inter-networking, so we need only worry about one network at a time when it comes to identifiers, and routers can let those networks internetwork.


But with such unique ID as MAC still there is the problem of locating the device in a network. It's impossible to have all devices to be interconnected and just seek the destination one by one over all hosts in the world. It's the purpose of the invention some hierarchical addresses like IP.

  • this seems to merely repeat points made and explained in prior answer
    – gnat
    Sep 10, 2014 at 8:57
  • @gnat look at timestamp of last edits.
    – SerG
    Sep 10, 2014 at 9:04

The key to understanding the original design of the Internetworking Protocol is that networks already existed, and the plan was to join networks together using existing technology such as DECnet. Requiring people to add new hardware with a unique identifier would have handicapped it, and wasn't required for any technological reason. The system used was to allocate a prefix (such as to an organisation, and then make it the responsibility of that organisation to assign addresses within that range.

It also allows the administrator to assign multiple IPs to the same computer (for consolidation of services), or alternatively to replace the computer but continue to use the same IP address, or to use the same IP address on a detached test network, and so on. Tying to particular hardware would be limiting.

Ethernet uses MAC addresses to distinguish between nodes on the same LAN, but Ethernet post-dates the Internet and takes some inspiration from it: http://inventors.about.com/library/weekly/aa111598.htm claims no earlier than 1973, while the first internet RFCs are from 1969 (http://www.ietf.org/download/rfc-index.txt), at roughly the same time as the moon landings.

Not the answer you're looking for? Browse other questions tagged or ask your own question.