4 ms·
Good question. IP addresses are used for routing, which requires them to be structured. The basic idea here is that your ISP advertises a route that consists
by ekr____ 4y ago
Good question.
IP addresses are used for routing, which requires them to be structured.
The basic idea here is that your ISP advertises a route that consists of a "prefix", i.e., a block of addresses it controls. So, for instance it might advertise 192.0.2/24 which means "Every address which starts with 192.0.2". That means it can only give its customers addresses in that block. So, it could randomize which customers have which addresses, but it can't give them anything in 192.0.3 because that's in some other block.
The question of why it doesn't shuffle the addresses is more complicated, but the TL;DR is that it's a pain for the ISP to do.
I'm using IPv4 addresses as an example here, but similar concepts apply to longer IPv6 addresses, except that customers are given a block of addresses themselves that they can allocate internally. They can randomize the low order bits but the customer's block (prefix) is routed the same way as I described earlier, and so that can be used for tracking if you just ignore those bits.
- xwowsersx 4y agoThanks for the thorough reply! So I knew the ISP wouldn't be able to give you an IP outside of the cidr block, but was wondering why not shuffle within it.. but I understand your point about it being a pain for them to shuffle even within that block.
- vitus 4y agoSome can, and do, although not usually with privacy in mind. https://en.wikipedia.org/wiki/Carrier-grade_NAT https://en.wikipedia.org/wiki/Carrier-grade_NAT for the main example, although even in cases where IPv4 exhaustion is not as imminent, you might be assigned a dynamic IP address. (Whether that dynamic IP address rotates on a regular basis is another question... but it's really just the ISP reserving the right to do so.) In general, you need some stable identifier for a connection. Traditionally (namely with TCP) that's been the "5-tuple" (source IP address, dest IP address, protocol, source port, dest port). This provides network routability and dispatch to the appropriate application within a host. Your ISP can't just rotate your IP address without breaking all of your existing TCP connections. With QUIC, that identifier is now the QUIC connection ID (although you still have the 5-tuple). Connection migration (if supported by the application) could allow you to persist a connection across lower-level protocol events (even something as drastic as switching from WiFi to 4G, where you might not even have the same ISP).