UUID 里到底装了什么
UUID 是 128 位,写成 32 个十六进制数字,形状是 8-4-4-4-12。其中有六位并不自由:四位存放版本号,两位存放变体,后者说明这个值属于哪一族 UUID。RFC 4122 变体是目前所有现代生成器都会写入的,它以比特 `10` 开头,所以第四组的第一个字符总是 8、9、a 或 b。
于是 version 4 UUID 里真正随机的是 122 位,而不是 128 位。这仍然是个巨大的数字:大约要生成 2.3 × 10^18 个值,碰撞概率才会接近一半,和猜中某一个特定值的难度在同一量级。version 4 被普遍采用的实际原因,不是概率完美,而是完全不需要协调:两台从不通信的机器不会撞号。
UUID 是格式,不是校验和。值内部没有任何东西能证明它曾被签发过,所以一个打错的数字只要恰好落在另一个合法值上,读起来就毫无异常。这就是这里的检查模式只报告“它是什么”、而拒绝声称“它是真的”的原因。