\gls{ipv6} came about in 1998 when the original \rfc{2460} was published. It aims to provide globally route-able addresses (i.e. no need for \gls{nat}) and provides a hierarchical way to allocate address prefixes in a way which makes it simple to do route aggregation.\footnote{This helps limits the size of the Internet's global routing table!}\cite{wiki:IPv6}
\textbf{Privacy} is a large concern regarding \gls{ipv6} because of the globally unique address the client posses.
Implementation to do privacy regarding the host bits of an \gls{ip6} has been done to protect the clients (and users) from being tracked. Alas, if the \gls{isp} do static prefix assignments to end users. This privacy protection may be somewhat unusable. As the network prefix will always remain the same. Regardless of the host-bits being changed often.
\item\texttt{2001:db8:0:0:0:ff00:42:8329}, {\footnotesize (i.e. remove leading zeroes per group delimited by colon)}
\item\texttt{2001:db8::ff00:42:8329}. {\footnotesize (i.e. remove groups containing all zeroes in succession after each other) (only done \textit{once!}}
\item\textbf{Version} -- 1-byte field containing '6'.
\item\textbf{Traffic Class} -- 2-bytes hex notation for traffic class.
\item\textbf{Flow label} -- 5-bytes.
\item\textbf{Payload length} -- 4-bytes unsigned integer, which is the rest of the packet that follows the IPv6 header, in octets.
\item\textbf{Next header} -- 4-bytes selector. Identifies the type of header that immediately follows the IPv6 header. Uses the same values as the IPv4 protocol field.
\item\textbf{Hop limit} -- 32-bytes unsigned integer. Decremented by one by each node that forwards the packet. The packet is discarded if the hop limit is decremented to zero.
\item\textbf{Source address} -- 32-bytes.
\item\textbf{Destination address} -- 32-bytes. The intended recipient is not necessarily the recipient if an optional routing header is present.
\item Address assigned from the \texttt{fe80::/10} prefix.
\item Either derived with the EUI-64\footnote{The EUI-64 involves the MAC address and injecting fffe into the middle making it 64 bits and using this as host bits} method or randomly selected. Then assigned after \gls{dad} has been run on the network segment.
\item\itemhead[]{Unique Link Local}\cite{wiki:Unique_local_address}
\begin{itemize}
\item Defined as block \texttt{fc00::/7}. See \rfc{4193}.
\item\gls{ula} is \glspl{ip6} counter-part to \glspl{ip4}\rfc{1918} address space.
\item Only usable within a private network.
\item Divided into 2 /8 \gls{ip6} blocks.
\begin{enumerate}
\item\texttt{fc00::/8} -- Not \textit{yet} officially allocated/defined by the \gls{ietf}.
\item\texttt{fd00::/8} -- Defined as /48 prefixes. The last 40 bits is randomly generated and appended to the first 8 significant bits {\small (i.e. \texttt{0xFD} aka. \texttt{11111101})}.
\item Anycast: Identifies a group of \glspl{nic} belonging to the same group and providing the same services/content/applications. Nearest one to source is used.
\item Multicast: Used to deliver content to multiple \glspl{nic} at once. Traffic is a single flow from the source (i.e. not multiple unicast streams).
\item Broadcast: \textit{Not} implemented. Replaced by use of multicast groups.
\item\texttt{8-bits: 1111 1111} -- Identifies the address as multicast.
\item\texttt{4-bits: FLGS} -- Set of 4 flags.
\begin{enumerate}
\item\texttt{0}: Must be zero.
\item\texttt{0}: Must be zero.
\item\texttt{P}: Can be either '1' or '0'.
\begin{itemize}
\item\texttt{0} -- Multicast address that is \textit{not} assigned based on the network prefix.
\item\texttt{1} -- Multicast address that is assigned based on the network prefix.
\end{itemize}
\item\texttt{T}: If the P-flag is '1'. T-flag must be '1', too.
\end{enumerate}
\item\texttt{4-bits: SCOP}
\item\texttt{8-bits: Reserved} -- Reserved value of zero.\footnote{Yet to make sense for me...}
\item\texttt{8-bits: Plen} -- Number of bits in the site prefix that identify the subnet, for a multicast address that is assigned based on a site prefix.
\item\texttt{64-bits: Network prefix}
\item\texttt{32-bits: Group ID} -- Identifier for the multicast group, either permanent or dynamic
\gls{dns6} had 2 running proposals when first proposed, \rfc{2874} (1st), \rfc{3364} (later discussion), and \rfc{3363} thou deprecated this proposal to experimental status.
The winning one was \rfc{3596} with the idea of doing \textit{quad}-A records and hierarchically divided by \textit{nibble}{\small (i.e. 4 bits)}.
The idea is fx. \texttt{2001:db8:ef::2} is noted in ip6.arpa as \texttt{2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.f.e.0.0.8.b.d.0.1.0.0.2.ip6.arpa}. {\small Note the used of '.' between \textit{each}\textit{hexadecimal} character used, and that \textit{all zeroes} has been included. ip6.arpa does not allow any characters to be omitted from the original full-length \gls{ip6} address.}\footnote{Found description \href{https://stackoverflow.com/q/6619682}{here} on stackoverflow.com/q/6619682.}