• ipv6

    From Meverett to All on Mon Feb 26 20:39:57 2024
    i had my CCST presentation today (2/23, or 12/85) in hwsnbn's class so i'm going to spitball information about ipv6 that i learned/remembered after the lesson was over. why? i dunno! tar ran off somewhere so this is what i'm going to do with my time instead of reading my book.

    so: you got the basic structure of the ipv6 address, being 128 bits split up into 8 quartets, each containing 16 bits. 16 * 8 = 128 (wow!). ipv6 uses hexadecimal primary, but you can also write it in binary instead (incredible, i know).

    each quartet is split up by a colon, and since each quartet has 16 bits, those are represented in hexadecimal with 4 values. so for example, a quartet with the hexadecimal value of 0123 could be rewritten in binary as 0000 0001 0010 0011.

    quartets are also referred to as hextets or pieces, but i think that's a bit silly. just a bit. one might even say... 1/8 of a byte, or 1/4 of a nibble. maybe even 1/2 of a crumb, 2 specks, 1/7 of a nom, 1/24 of a chomp,
    or possibly even 1/3 of a pinch.

    anyways, prefixes! the first 64 bits of the 128 bit address is called the prefix. to get even more specific, this is usually split further into the first 48 bits being called the global routing prefix and the final 16 of the first half being the subnet id. altogether, the prefix usually contains information regarding where you are, who provides your internet service, your network (???), and obviously the swablu.

    now, when talking about the types of ipv6 addresses, they'll be written in the format of prefix::/length.

    the prefix length identifies the number of bits in the address that are locked into a specific value of 1 or 0. a great example of this is the global unicast address, which starts with a hex digit of 2 (or sometimes 3 depending on the fourth bit), so it is written as 2000::/3. in binary, the address would be written as 0010000000000000::/3 (condensing the rest of the zeroes for simplicity, just in this example). the /3, charizard notation representing the prefix length, tells us that the first three bits in the entire address (the 001) are locked into those values, and cannot be changed. to change them would be to change the type of address, and it would no longer be a global unicast address.

    since ipv6 addresses have 128 bits in total, the maximum "prefix" length is /128, locking every single bit in the address to whatever it was originally assigned. why is it called the prefix length if it doesn't only apply to
    the first half of the address, ie the prefix? i don't know, maybe i'll find out before i finish this post.

    anyways, the second half of the ipv6 address is called the interface id. unlike how your prefix has a bunch of fun information stored within its bits, the interface id is generated automatically, and to my knowledge,
    doesn't convey any information other than "i'm this specific guy :)." within a given subnet, the interface id must be unique. i tried to explain why in like 3 different ways, but overall, i was not successful in making
    it make sense, so i gave up. it is what it is.

    by the way, in case it isn't obvious, this is just a written up version of my slides presentation, but with more and less detail at parts.

    shortening ipv6 addresses! them guys be long, in case it wasn't obvious from the 128 bits.

    i would write out an ipv6 address in bits but i don't feel like it, so i won't.

    when you have a long string of 0s, you can replace them with two colons, but only ONCE in the entire address. if you do it twice in one address, how will the silly komputrs know how many zeros there are? they won't. how will all of the other silly guys know? they won't! it will forever be a mystery
    to anyone but the person who originally made it, if they're even real, which they shouldn't be.

    you can also cut out the zeros that are before any numbers assuming that they aren't sandwiched between two numbers or preceded by a number. for example, 0001 can just be written as 1, but 2001 would need to be written as 2001. 2001 does not equal 21. same with 1000, which does not equal 1
    either. if you have four zeros in a row, you can condense them into a single 0.

    most of the time, since when you're subnetting, obviously you'll be working with subnets, you'll work within the range of /49 to /64, which changes how many bits in the subnet id quartet are locked. considering how the entire second half of your ipv6 address refers to the address's interface id, it is extremely uncommon to see prefix lengths between /64 and /128, but /128 shows up on occasion depending on the purpose of that specific ipv6 address.

    some silly guys get prefix lengths as short as /29 (probably the government so like, not real *shrug :L ig*), they're weird though so like, forget that about that but like also don't, y'know? good. moving on!

    i talked about this a little bit in the mmpc gc (and everyone ignored me :( shame on them, except for tar, xolo, and datbirbdude, who i talked to about the silly clarifications i made), but skips. they exist, there's a pattern, you just kinda gotta know how it works. i didn't explain it very well initially because i hadn't looked at any of this information i'm spitting back up in like a month, but here we go.

    skips work between the /49 to /64 prefix lengths to change how many subnets you can have (the source i had was like, "if you insist on doing this by hand, here's how you do it, but honestly, just use a calculator! dummy <3").

    so: /49 skips by eights in the first digit, so your subnet id quartet will have two possible values- 0000 and 8000. /50 skips by eights in the first digit, so your subnet id has four possible values- 0000, 4000, 8000, c000 (written in hexdecimal, obviously). then you have /51, which skips by twos in the first digit (omg really??? who'd've thunk that?? it's almost like- it's almost like there's a pattern, guys!!!! a pattern!!!!!!!!!!!!!), so you get 0000, 2000, 4000, 6000, 8000, and so on, cuz i don't feel like finishing that!

    anyways, there's a few types of addresses that you just kinda gotta know, so that bit is memorization :(.

    unicast addresses indentify the interface of an individual node, and there are three subtypes: global unicast addresses, with a prefix of 2000::/3, link-local addresses, with a prefix fe80::/10, and unique local addresses, with a prefix of fc00::/7.

    to be unbelievably simple: global unicast addresses are like your public ipv4 address! it is how you talk to other people! you texting! you email on the bbs! that is global! they are entirely unique on the internet, like you as an individual! make so much sense! so clear! so clarity! you can reach people with it on the internet! like email!!!! global unicast has a wide range that can cover all available devices currently on the internet. as stated previously, the prefix is 2000::/3, so it's first bits are fixed as 001. it can start with a hex digit of 2 or 3 depending on the value of the fourth bit (ie 2000:/3 if it's 0010, 3000::/3 if it's 0011). then after
    the first three bits, you have 45 bits of global routing prefix, 16 bits of subnet, and 64 bits of your host, or your interface id.

    surprise! new information! in a global unicast, the network part (aka the entire prefix, or first 64 bits) has sub parts (crazy, i know guys); the fixed part (001), the global prefix, the SLA (site level aggregator), and
    the lan id. the SLA is assigned by the silly guys who provide your internet service, and the lan id is the part determined by who? you! to divide addresses into different networks (oh my god guys, it's subnetting!!!! we love swablu!).

    next, we got link-local addresses! don't mind that not_gov spoiled it in my presentation earlier (not_gov? more like not_cool! sick burn!!!) link-local is not only in the house, but it's in the room! just the room (the same swablu (subnet) (loser) (sorry that was a bit mean) (I didn't mean it) (<3))! it has prefix of fe80::/10, or 1111 1110 10, and the remaining 54 bits in the network part/the prefix is full of 0s. it can only be 0. it
    will never be anything but 0. you can't use it to talk to anyone outside of the house because they aren't in the house. if you wanna talk to someone outside the house, you gotta email them! with your global unicast address!

    also, by the way, forgot to mention that this also includes the silly addresses that start with fe8, fe9, fea, and feb! february!

    and last but not least, is the silly unique local addresses! these bros are like private ipv4 addresses, for your use within the house! obviously, link-local lets you talk to your homies when they're in the room with you, but if they leave, you can't talk with link-local still! they've left your subnet! it won't work! you gotta like, yell across the house, with the unique local address!

    unique local addresses are for use on local networks, and are not routable on the internet (unless you use ipv6 nat). it has a prefix of fc00::/7, which are fixed as 1111 110. now, guess what! another surprise! unique local has a special eighth bit, called the L bit! if the bit is set to 0, then it is reserved (specifically for vinny b), and if it is set to 1, then it is locally assigned to someone (literally anyone else????) and the prefix would be fd00::/7 with bits set to 1111 1101.

    ~~~~~~~~~~

    to continue on, fair warning, i wrote the previous section on friday the 23rd, and it is currently the 26th as i wrap this up. i did not mean for that much time to pass, but here we are.

    moving on, multicast addresses! multicats! many cats addresses! this type of address indentifies a group of interfaces, which are typically on different nodes. packets sent to the multicast address are sent to all members of the multicast group, much like... the multinode chat! and how every message sent goes to every single person, in contrast to telegrams and emails, which go to specific people only! Multicast replaces broadcast addresses from ipv4, and the prefix is always ff00::/8 (locked in as 1111 1111, followed by the flag and the scope). the flag and scope each make up 4 additional bits, leaving 112 bits for the multicast group id. the multicast group id has quite a few other sub sections to it, but i don't feel like explaining them, so figure it out yourself if you really want to :).

    anycast addresses on the other hand delivers packets to whichever anycast group member node that is physically closest to whoever is sending it. it does not have a specified prefix like the others, but the interface id is locked in as 0s (the last 64 bits will be 0 only). it is a new type of address when it comes to ipv6, and apparently lets multiple servers share the same ip address. why? i dunno, it's weird.

    anyways! loopback address! it always has the prefix of ::1/128, and is the equivalent of ipv4's 127.0.0.1. if it isn't clear, loopback is when you talk to yourself, except instead of taking up several million ipv4 addresses, it's only one now! the entire address is fixed/locked in (as noted by the /128), so it looks like this-

    0000:0000:0000:0000:0000:0000:0000:0001/128

    great, right? great.

    lastly, we have two more- ::/0 or 0:0:0:0:0:0:0:0/0, which is used for defining a default route, like ipv4's 0.0.0.0. all pieces of this address can be changed, as seen by the /0 charizard notation at the end of the prefix. there is also the unspecified address, which is addigned to a host when it resolves its ipv6 link-local address. its prefix is ::/128, and is fully locked in as 0s (must always be 0s and only 0s).

    that's it. that's the end. thanks for reading if you made it down here, hope you actually learned something! if you did, tell me, if you didn't, you could also tell me, i don't care.
    cheers

    _______________________________
    / \ \.
    | | |.
    \_ | not the cat's meow, |.
    | ____ ____ |.
    | / ) ( \ |.
    | / ( ^_^ ) \ |.
    | | { \('v')/ } | |.
    | ~~~| { / \ } |~~~ |.
    | |_)( /\ /\ )(_| |.
    | |) (_ | \|/ |_) (| |.
    | ' "__^^^^__" ' |.
    | meverett |.
    | |.
    | ___________________________|__
    | | |.
    \_/_____________________________/.