\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{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
ip6 has a feature of being able to route by use of teredo tunnels over ip4 addresses. So that clients supporting ip6 on either end, but not the fabric in the middle. Can append the ip4 ip to a special ip6 prefix also called teredo tunneling run ip traffic across ip4.
\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.}