recursal/MDN huggingface dataset:
Encryption
==========

In cryptography, **encryption** is the conversion of plaintext into a coded text or ciphertext. A ciphertext is intended to be unreadable by unauthorized readers.

Encryption is a cryptographic primitive: it transforms a plaintext message into a ciphertext using a cryptographic algorithm called a cipher. Encryption in modern ciphers is performed using a specific algorithm and a secret, called the key. Since the algorithm is often public, the key must stay secret if the encryption stays secure.

![How encryption works.](/en-US/docs/Glossary/Encryption/encryption.png)

Without knowing the secret, the reverse operation, decryption, is mathematically hard to perform. How hard depends on the security of the cryptographic algorithm chosen and evolves with the progress of cryptanalysis.
Percent-encoding
================

**Percent-encoding** is a mechanism to encode 8-bit characters that have specific meaning in the context of URLs. It is sometimes called URL encoding. The encoding consists of substitution: A '%' followed by the hexadecimal representation of the ASCII value of the replace character.

Special characters needing encoding are: `':'`, `'/'`, `'?'`, `'#'`, `'['`, `']'`, `'@'`, `'!'`, `'$'`, `'&'`, `"'"`, `'('`, `')'`, `'*'`, `'+'`, `','`, `';'`, `'='`, as well as `'%'` itself. Other characters don't need to be encoded, though they could.

| Character | Encoding |
| --- | --- |
| `':'` | `%3A` |
| `'/'` | `%2F` |
| `'?'` | `%3F` |
| `'#'` | `%23` |
| `'['` | `%5B` |
| `']'` | `%5D` |
| `'@'` | `%40` |
| `'!'` | `%21` |
| `'$'` | `%24` |
| `'&'` | `%26` |
| `"'"` | `%27` |
| `'('` | `%28` |
| `')'` | `%29` |
| `'*'` | `%2A` |
| `'+'` | `%2B` |
| `','` | `%2C` |
| `';'` | `%3B` |
| `'='` | `%3D` |
| `'%'` | `%25` |
| `' '` | `%20` or `+` |

Depending on the context, the character `' '` is translated to a `'+'` (like in the percent-encoding version used in an `application/x-www-form-urlencoded` message), or in `'%20'` like on URLs.

See also
--------

* Definition of percent-encoding in Wikipedia.
* RFC 3986, section 2.1, where this encoding is defined.
* `encodeURI()` and `encodeURIComponent()` — functions to percent-encode URLs
Microsoft Internet Explorer
===========================

Internet Explorer (or IE) was a free graphical browser maintained by Microsoft for legacy enterprise uses. Microsoft Edge is currently the default Windows browser.

Microsoft first bundled IE with Windows in 1995 as part of the package called "Microsoft Plus!". By around 2002, Internet Explorer had become the most used browser in the world, but lost ground to Chrome, Firefox, Edge, and Safari.

IE went through many releases and provided version for desktop, mobile, and Xbox Console. It was also available on Mac and UNIX, Microsoft discontinued those versions in 2003 and 2001 respectively. The final Windows release was Windows 11.0.220 on November 10, 2020.

Microsoft ended support for IE on June 15, 2022.

See also
--------

* Internet Explorer on Wikipedia
* History of Internet Explorer on Wikipedia
* Internet Explorer versions on Wikipedia
* Internet Explorer EOL countdown
DNS
===

**DNS** (Domain Name System) is a hierarchical and decentralized naming system for Internet connected resources. DNS maintains a list of domain names along with the resources, such as IP addresses, that are associated with them.

The most prominent function of DNS is the translation of human-friendly domain names (such as mozilla.org) to a numeric IP address (such as 192.0.2.172); this process of mapping a domain name to the appropriate IP address is known as a **DNS lookup**. By contrast, a **reverse DNS lookup** (rDNS) is used to determine the domain name associated with an IP address.

See also
--------

* Understanding domain names
* Domain Name System on Wikipedia
Baseline
========

The term **baseline** can have several meanings depending on the context. It may refer to:

Baseline (compatibility)
**Baseline** identifies web platform features that work across browsers.
 Baseline helps you decide when to use a feature by telling you when it is less likely to cause compatibility problems for your site's visitors.
Baseline (typography)
The **baseline** is a term used in European and West Asian typography meaning an imaginary line upon which the characters of a font rest.
See also
--------

* Baseline on Wikipedia
Pseudo-class
============

In CSS, a **pseudo-class** selector targets elements depending on their state rather than on information from the document tree. For example, the selector `a``:visited` applies styles only to links that the user has already followed.

See also
--------

* Pseudo-class documentation
Character
=========

A *character* is either a symbol (letters, numbers, punctuation) or non-printing "control" (e.g., carriage return or soft hyphen). UTF-8 is the most common character set and includes the graphemes of the most popular human languages.

See also
--------

* Character (computing) on Wikipedia
* Character encoding on Wikipedia
* ASCII
* UTF-8 on Wikipedia
* Unicode on Wikipedia
Certificate authority
=====================

A certificate authority (CA) is an organization that signs digital certificates and their associated public keys, thereby asserting that the contained information and keys are correct.

For a website digital certificate, this information minimally includes the name of the organization that requested the digital certificate (e.g., Mozilla Corporation), the site that it is for (e.g., mozilla.org), and the certificate authority.

Certificate authorities are the part of the Internet public key infrastructure that allows browsers to verify website identity and securely connect over TLS (thus HTTPS).

**Note:** Web browsers come preloaded with a list of "root certificates". The browser can use these to reliably check that the website certificate was signed by a certificate authority that "chains back" to the root certificate (i.e. was trusted by the owner of the root certificate or an intermediate CA). Ultimately this process relies on every CA performing adequate identity checks before signing a certificate!

See also
--------

* Certificate authority on Wikipedia
* Public key infrastructure on Wikipedia
* Mozilla Included CA Certificate List
Static method
=============

A static method (or *static function*) is a method defined as a member of an object but is accessible directly from an API object's constructor, rather than from an object instance created via the constructor.

In a Web API, a static method is one which is defined by an interface but can be called without instantiating an object of that type first.

Methods called on object instances are called *instance methods*.

Examples
--------

In the Notifications API, the `Notification.requestPermission()` method is called on the actual `Notification` constructor itself — it is a static method:


```js
let promise = Notification.requestPermission();
```


The `Notification.close()` method on the other hand, is an instance method — it is called on a specific notification object instance to close the system notification it represents:


```js
let myNotification = new Notification("This is my notification");

myNotification.close();
```

See also
--------

* Static Method on Techopedia
* static
* MDN Web Docs Glossary
    + Object
    + Method
Protocol
========

A **protocol** is a system of rules that define how data is exchanged within or between computers. Communications between devices require that the devices agree on the format of the data that is being exchanged. The set of rules that defines a format is called a protocol.

See also
--------

* Communications protocol on Wikipedia
* RFC Official Internet Protocol Standards
* HTTP overview
* Glossary:
    + TCP
    + Packet
Grid
====

A *CSS grid* is defined using the `grid` value of the `display` property; you can define columns and rows on your grid using the `grid-template-rows` and `grid-template-columns` properties.

The grid that you define using these properties is described as an *explicit grid*.

If you place content outside of this explicit grid, or if you are relying on auto-placement and the grid algorithm needs to create additional row or column tracks to hold grid items, then extra tracks will be created in the implicit grid. The *implicit grid* is the grid created automatically due to content being added outside of the tracks defined.

In the example below I have created an *explicit grid* of three columns and two rows. The *third* row on the grid is an *implicit grid* row track, formed due to their being more than the six items which fill the explicit tracks.

Example
-------
```

\* {
  box-sizing: border-box;
}

.wrapper {
  border: 2px solid #f76707;
  border-radius: 5px;
  background-color: #fff4e6;
}

.wrapper > div {
  border: 2px solid #ffa94d;
  border-radius: 5px;
  background-color: #ffd8a8;
  padding: 1em;
  color: #d9480f;
}
```



```css
.wrapper {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: 100px 100px;
}
```



```html
<div class="wrapper">
  <div>One</div>
  <div>Two</div>
  <div>Three</div>
  <div>Four</div>
  <div>Five</div>
  <div>Six</div>
  <div>Seven</div>
  <div>Eight</div>
</div>
```

See also
--------

* Basic concepts of grid layout
* Property reference:
    + `grid-template-columns`
    + `grid-template-rows`
    + `grid`
    + `grid-template`
Distributed Denial of Service
=============================

A Distributed Denial-of-Service (DDoS) is an attack in which many compromised systems are made to attack a single target, in order to swamp server resources and block legitimate users.

Normally many persons, using many bots, attack high-profile Web servers like banks or credit-card payment gateways. DDoS concerns computer networks and CPU resource management.

In a typical DDoS attack, the assailant begins by exploiting a vulnerability in one computer system and making it the DDoS master. The attack master, also known as the botmaster, identifies and infects other vulnerable systems with malware. Eventually, the assailant instructs the controlled machines to launch an attack against a specified target.

There are two types of DDoS attacks: a network-centric attack (which overloads a service by using up bandwidth) and an application-layer attack (which overloads a service or database with application calls). The overflow of data to the target causes saturation in the target machine so that it cannot respond or responds very slowly to legitimate traffic (hence the name "denial of service"). The infected computers' owners normally don't know that their computers have been compromised, and they also suffer loss of service.

A computer under an intruder's control is called a zombie or bot. A network of co-infected computers is known as a botnet or a zombie army. Both Kaspersky Labs and Symantec have identified botnets — not spam, viruses, or worms — as the biggest threat to Internet security.

The United States Computer Emergency Readiness Team (US-CERT) defines symptoms of denial-of-service attacks to include:

* Unusually slow network performance (opening files or accessing websites)
* Unavailability of a particular website
* Inability to access any website
* Dramatic increase in the number of spam emails received—(this type of DoS attack is considered an email bomb)
* Disconnection of a wireless or wired internet connection
* Longterm denial of access to the Web or any internet services
See also
--------

* Denial-of-service attack on Wikipedia
Site map
========

A **site map** or **sitemap** is a list of pages of a website.

Structured listings of a site's page help with search engine optimization, providing a link for web crawlers such as search engines to follow. Site maps also help users with site navigation by providing an overview of a site's content in a single glance.
Google Chrome
=============

Google Chrome is a free Web browser developed by Google. It's based on the Chromium open source project. Some key differences are described on BrowserStack. Chrome supports its own layout called Blink. Note that the iOS version of Chrome uses that platform's WebView, not Blink.

See also
--------

* Google Chrome on Wikipedia
### For Chrome Users

Use one of these links if you're an everyday user.

* Android
* iOS
* Desktop
### For Web Developers

If you want to try the latest Chrome features, install one of the pre-stable builds. Google pushes updates frequently and has designed the distributions to run side-by-side with the stable version. Visit the Chrome Releases Blog to learn what's new.

* Chrome Dev for Android
* Chrome Canary for desktop.
RTP (Real-time Transport Protocol) and SRTP (Secure RTP)
========================================================

The **Real-time Transport Protocol** (**RTP**) is a network protocol which described how to transmit various media (audio, video) from one endpoint to another in a real-time fashion. RTP is suitable for video-streaming application, telephony over IP like Skype and conference technologies.

The secure version of RTP, **SRTP**, is used by WebRTC, and uses encryption and authentication to minimize the risk of denial-of-service attacks and security breaches.

RTP is rarely used alone; instead, it is used in conjunction with other protocols like RTSP and SDP.

See also
--------

* Introduction to the Real-time Transport Protocol
* RTP on Wikipedia
* RFC 3550 (one of the documents that specify precisely how the protocol works)
Cache
=====

A **cache** (web cache or HTTP cache) is a component that stores HTTP responses temporarily so that it can be used for subsequent HTTP requests as long as it meets certain conditions.

See also
--------

* Web cache on Wikipedia
Denial of Service
=================

DoS (Denial of Service) is a category of network attack that consumes available server resources, typically by flooding the server with requests. The server is then sluggish or unavailable for legitimate users.

See DoS attack for more information.
User agent
==========

A user agent is a computer program representing a person, for example, a browser in a Web context.

Besides a browser, a user agent could be a bot scraping webpages, a download manager, or another app accessing the Web. Along with each request they make to the server, browsers include a self-identifying `User-Agent` HTTP header called a user agent (UA) string. This string often identifies the browser, its version number, and its host operating system.

Spam bots, download managers, and some browsers often send a fake UA string to announce themselves as a different client. This is known as *user agent spoofing*.

The user agent string can be accessed with JavaScript on the client side using the `NavigatorID.userAgent` property.

A typical user agent string looks like this: `"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0"`.

See also
--------

* User agent on Wikipedia
* `NavigatorID.userAgent`
* Browser detection using the user agent
* RFC 2616, section 14.43: The `User-Agent` header
* Glossary:
    + Browser
* HTTP Headers
    + `User-agent`
Fragmentainer
=============

A fragmentainer is defined in the CSS Fragmentation Specification as follows:

> 
> A box—such as a page box, column box, or region—that contains a portion (or all) of a fragmented flow. Fragmentainers can be pre-defined, or generated as needed. When breakable content would overflow a fragmentainer in the block dimension, it breaks into the next container in its fragmentation context instead.
> 
> 
> 

Fragmented contexts are found in CSS Paged Media, where the fragmentainer would be the box which defines a page. In Multiple-column Layout the fragmentainer is the column box created when columns are defined on a multicol container. In CSS Regions each Region is a fragmentainer.
TTL
===

Time To Live (TTL) can refer to either the lifetime of a packet in a network, or the expiry time of cached data.

Networking
----------

In networking, the TTL, embedded in the packet, is a usually defined as a number of hops or as an expiration timestamp after which the packet is dropped. It provides a way to avoid network congestion, but releasing packets after they roamed the network too long.

Caching
-------

In the context of caching, TTL (as an unsigned 32-bit integer) being a part of the HTTP response header or the DNS query, indicates the amount of time in seconds during which the resource can be cached by the requester.

See also
--------

* TTL on Wikipedia
* RFC 2181 on IETF
* RFC1035 on IETF
Host
====

A host is a device connected to the Internet (or a local network). Some hosts called servers offer additional services like serving webpages or storing files and emails.

The host doesn't need to be a hardware instance. It can be generated by virtual machines. The host generated by virtual machines is called "Virtual hosting".

See also
--------

* Host on Wikipedia
Challenge-response authentication
=================================

In security protocols, a *challenge* is some data sent to the client by the server in order to generate a different response each time. Challenge-response protocols are one way to fight against replay attacks where an attacker listens to the previous messages and resends them at a later time to get the same credentials as the original message.

The HTTP authentication protocol is challenge-response based, though the "Basic" protocol isn't using a real challenge (the realm is always the same).

See also
--------

* Challenge-response authentication on Wikipedia.
Public-key cryptography
=======================

Public-key cryptography — or *asymmetric cryptography* — is a cryptographic system in which keys come in pairs. The transformation performed by one of the keys can only be undone with the other key. One key (the *private key*) is kept secret while the other is made public.

When used for digital signatures, the private key is used to sign and the public key to verify. This means that anyone can verify a signature, but only the owner of the corresponding private key could have generated it.

When used for encryption, the public key is used to encrypt and the private key is used to decrypt. This gives public-key encryption systems an advantage over symmetric encryption systems in that the encryption key can be made public. Anyone could encrypt a message to the owner of the private key, but only the owner of the private key could decrypt it. However, they are typically much slower than symmetric algorithms and the size of message they can encrypt is proportional to the size of the key, so they do not scale well for long messages.

As a result, it's common for an encryption system to use a symmetric algorithm to encrypt the message, then a public-key system to encrypt the symmetric key. This arrangement can confer the benefits of both systems.

Commonly used public-key cryptosystems are RSA (for both signing and encryption), DSA (for signing) and Diffie-Hellman (for key agreement).

See also
--------

* Web Crypto API
* MDN Web Docs Glossary
    + Symmetric-key cryptography
GIF
===

GIF (Graphics Interchange Format) is an image format that uses lossless compression and can be used for animations. A GIF uses up to 8 bits per pixel and a maximum of 256 colors from the 24-bit color space.

See also
--------

* GIF on Wikipedia
QUIC
====

**QUIC** is a multiplexed transport protocol implemented on UDP. It is used instead of TCP as the transport layer in HTTP/3.

QUIC was designed to provide quicker setup and lower latency for HTTP connections. In particular:

* In TCP, the initial TCP handshake is optionally followed by a TLS handshake, which must complete before data can be transmitted. Since TLS is almost ubiquitous now, QUIC integrates the TLS handshake into the initial QUIC handshake, reducing the number of messages that must be exchanged during setup.
* HTTP/2 is a multiplexed protocol, allowing multiple simultaneous HTTP transactions. However, the transactions are multiplexed over a single TCP connection, meaning that packet loss and subsequent retransmissions at the TCP layer can block all transactions. QUIC avoids this by running over UDP and implementing packet loss detection and retransmission separately for each stream, meaning that packet loss only blocks the particular stream whose packets were lost.
See also
--------

* RFC 9000: the QUIC specification
* RFC 9114: the HTTP/3 specification
Certified
=========

**Certified** means that an application, content or data transmission has successfully undergone evaluation by professionals with expertise in the relevant field, thereby indicating completeness, security and trustworthiness.

For details on certification in Cryptography, please refer to Digital Certificate.

See also
--------

* Certification on Wikipedia
Pixel
=====

A pixel is the smallest building block of a graphical display like a computer screen.

Display resolution is expressed in the unit of pixels. For example, a "800 x 600" pixel resolution means that 800 pixels can be displayed in width and 600 pixels in height.

See also
--------

* Pixel on Wikipedia
Variable
========

A variable is a named reference to a value. That way an unpredictable value can be accessed through a predetermined name.

See also
--------

* Variable (computer science) on Wikipedia
* Declaring variables in JavaScript
* `var` statement in JavaScript
Packet
======

A packet, or network packet, is a formatted chunk of data sent over a network. The main components of a network packet are the user data and control information. The user data is known as the *payload*. The control information is the information for delivering the payload. It consists of network addresses for the source and destination, sequencing information, and error detection codes and is generally found in packet headers and footer.

What a packet contains
----------------------

### Hop limit

A hop occurs when a packet is passed from one network to the next network. It is a field that decreases by one each time a packet goes through; once the hop limit reaches 0, the send operation has failed and the packet is discarded.

Over time the number packets can cause traversing within closed circuits, the number of packets circulating would build up and then ultimately lead to the networking in failing.

### Error detection and correction

Error detection and correction are codes that are used to detect and apply corrections to the errors that occur when data is transmitted to the receiver. There are two types of error corrections backward and forward error correction. Backward error correction is when the receiver requests the sender to retransmit the entire data unit. Forward error correction is when the receiver uses the error-correcting code which automatically corrects the errors

At the transmitter, the calculation is performed before the packet is sent. When received at the destination, the checksum is recalculated, and compared with the one in the packet.

### Priority

This field indicates which packet should have higher priority over the others. The high priority queue is emptied more quickly than lower priority queues when the network is congested.

### Addresses

When routing network packets it requires two network addresses the source address of the sending host, and the destination address of the receiving host.

### User Data - Payload

Payload is the data that is carried on behalf of an application. It is usually of variable length, up to a maximum that is set by the network protocol and sometimes the equipment on the route.

References used
---------------

* Network packet
* Hop (networking)
* How error detection and correction works
Object reference
================

An **object reference** is a link to an *object*. Object references can be used exactly like the linked objects.

The concept of object references becomes clear when assigning the same object to more than one *property*. Rather than holding a copy of the object, each assigned property holds object references that link to the same object so that when the object changes, all properties referring to the object reflect the change.

See also
--------

* Reference (computer science) on Wikipedia