# Extensible Provisioning Protocol

Lo Extensible Provisioning Protocol (EPP) è un protocollo di rete flessibile ideato per l'inserimento di oggetti in registri attraverso Internet.

## Origini

L'EPP è stato creato per poter disporre di un protocollo robusto e flessibile, che potesse garantire la comunicazione sincrona fra un domain name registry ed i registrar. Queste comunicazioni riguardano principalmente la registrazione od il rinnovo di un nome a dominio e servono anche a prevenire il cosiddetto Domain hijacking, cioè il dirottamento abusivo di un dominio verso nuovi intestatari. Prima dell'introduzione dell'EPP i singoli registri di domini non avevano un approccio uniforme per questo genere di comunicazioni, e si avevano molte differenti interfacce proprietarie.
Anche se studiato per questa specifica esigenza, il protocollo può essere usato per ogni sistema di analoghe caratteristiche, ad esempio per la ricezione e l'esecuzione di ordini online.

## Implementazione

L'EPP è basato sullo XML, un formato strutturato basato su testo. Il trasporto in rete non è vincolato ed al momento l'unico metodo specificato è via TCP. Lo IANA ha riservato la porta TCP 700 all'EPP. Il protocollo però è flessibile e potrebbe viaggiare in BEEP, SMTP o SOAP.
Il protocollo è stato realizzato dallo IETF (Provisioning Registry (provreg) working group) ed è stato reso disponibile nel 2004. Nell'agosto del 2009 lo IETF ha assegnato all'EPP lo status di full standard.

### Funzionalità fornite da EPP

EPP fornisce dei servizi di base, fra cui:
* Service discovery - supporto all'individuazione dei servizi offerti
* Command - invio comandi
* Response - risposta
* Extension - framework di supporto per la definizione degli oggetti gestiti e delle relazioni del protocollo di richiesta e di risposta da utilizzare con questi oggetti.

### Categorie di comandi

Un comando è un'azione iniziata da un client. Alla ricezione di certi comandi il server invia una risposta al client. Queste sono alcune delle tipologie di comando:
* Session Management - funzioni per stabilire e gestire la sessione di collegamento fra il client e il server
* Query - Comandi di sola lettura per l'interrogazione, ad esempio, di un database
* Data Transform - comandi di lettura e scrittura per l'aggiornamento dei contenuti di un database

## Adozione

Il protocollo è stato adottato da numerosi registri di dominio come, ma non solo: .ac, .aero, .ag, .asia, .at, .au, .be, .biz, .br, .bz, .cat, .cc, .ch, .cl, .cn, .co, .cz, .com, .coop, .cx, .cz, .es (over HTTPS), .eu, .fm, .fr, .gs, .hn, .ht, .im, .in, .info, .io, .it, .jobs, .ki, .la, .lc, .li, .lt, .lu, .me, .mn, .mobi, .ms, .mu, .na, .name, .net, .nf, .nl, .no, .nu, .org, .pl (over HTTPS), .pro, .pt, .sc, .se, .sh, .si, .tl, .tm, .travel, .tel, .tv, .tw, .uk, .us, e .vc. L'uso di questo protocollo riduce l'esigenza di documentazione cartacea per le burocrazie legate alle operazioni sui domini.
È usato anche da registri ENUM, come quelli che gestiscono i prefissi di telefonia nazionale +31, +41, +43 e +44.
"Codici" o "chiavi" EPP sono richieste anche per trasferimenti fra registrar di nomi a dominio TLD (.com, .net, .org, .biz, .info). Per i domini .com e .net la chiave EPP ha iniziato ad essere richiesta dal quarto quadrimestre del 2006.

## RFC pertinenti

* RFC 3375 - Generic Registry-Registrar Protocol Requirements
* RFC 3735 - Guidelines for Extending EPP
* RFC 3915 - Domain Registry Grace Period Mapping (eg Add Grace Period, Redemption Grace Period)
* RFC 4114 - Using EPP for ENUM addresses
* RFC 4310 - DNS Security Extensions (DNSSEC)
* RFC 5730 - Extensible Provisioning Protocol (EPP) (obsoletes RFC 4930)
* RFC 5731 - Extensible Provisioning Protocol (EPP) Domain Name Mapping (obsoletes RFC 4931)
* RFC 5732 - Extensible Provisioning Protocol (EPP) Host Mapping (obsoletes RFC 4932)
* RFC 5733 - Extensible Provisioning Protocol (EPP) Contact Mapping (obsoletes RFC 4933)
* RFC 5734 - Extensible Provisioning Protocol (EPP) Transport over TCP (obsoletes RFC 4934)