(Logo Tech-invite)  

a Portal devoted to SIP and Security technologies

  (World Map)    
    Search Home Site Map Contact
 SIP/IMS Standardization
> IETF Standardization Process
> RFCs related to SIP (4 p.) o
> SIP-SIPPING-SIMPLE... I-Ds (22 p.) o
> Audio-Video Transport RFCs (2 p.)
> 3GPP Specifications (12 p.)
> OMA Specifications related to SIP
> TISPAN NGN Specifications (3 p.) o
> SIP Topics
> IMS Topics
 SIP/IMS Call Flows
> RFC3261's Example
> Basic -- RFC3665
> SIP PSTN -- RFC3666 (3 p.)
> SIP Service Examples (19 p.)
> IMS Signaling Flows (35 p.)
 SIP/IMS Architecture
> SIP Protocol Structure
> Dialogs & Routing
> UMTS Network Evolution
 Security
> PKIX-TLS-SMIME... Standards (20 p.) o
> Cryptography Basics
> ASN.1 for PKI Certificate & CRL Profile
> ASN.1 for CMS
> RFC3280's Certificate Examples (4)
> RFC4134's CMS-S/MIME Examples (14)
> RFC4474's SIP Authentication Service
> SSL/TLS Time-Diagrams
> IPSec Guides
 ABNF Grammars
> ABNF Notation & Rules
> URI Generic Syntax
> ABNF for SIP
> SIP Messages & URIs
> SIP Header Fields
> MIME Media Types
> ABNF for SDP
> ABNF for MSRP
> ABNF for MRCPv2
> ABNF for RTSP 2.0
> Internet Message Format
 DiffServ CoS Simulation
> IPVCoSS Simulator
> IP-VPN Case Study
  o (daily updated)

ABNF for Internet Message Format -- RFC 2822

RFC2822 specifies a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. The following ABNF grammar refers to obsolete syntactic elements (starting with "obs-") that must be interpreted by implementations but not generated. However, the obsolete syntax itself is not included in this page.

Top Lexical Tokens Date and Time Address Message Syntax Fields

Lexical Tokens

Primitive Tokens Quoted characters CFWS Atom Quoted strings Miscellaneous tokens
Primitive Tokens   Up
NO-WS-CTL= %d1-8 / %d11 / %d12 / %d14-31 / %d127
; Non white space controls:
; US-ASCII control characters that do not include the
; carriage return, line feed, and white space characters
text= %d1-9 / %d11 / %d12 / %d14-127 / obs-text
; Characters excluding CR and LF
specials= "(" / ")" / "<" / ">" / "[" / "]"
/ ":" / ";" / "@" / "\" / "," / "." / DQUOTE
; Special characters used in other parts of the syntax
Quoted characters   Up
quoted-pair= ("\" text) / obs-qp
Folding white space and comments   Up
FWS= ([*WSP CRLF] 1*WSP) / obs-FWS
; Folding white space
ctext= NO-WS-CTL / %d33-39 / %d42-91 / %d93-126
; Non white space controls
; and the rest of the US-ASCII characters
; not including "(", ")", or "\"
ccontent= ctext / quoted-pair / comment
comment= "(" *([FWS] ccontent) [FWS] ")"
CFWS= *([FWS] comment) (([FWS] comment) / FWS)
Atom   Up
atext= ALPHA / DIGIT / "!" / "#" / "$" / "%"
/ "&" / "'" / "*" / "+" / "-" / "/" / "="
/ "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
; Any character except controls, SP, and specials.
; Used for atoms
atom= [CFWS] 1*atext [CFWS]
dot-atom= [CFWS] dot-atom-text [CFWS]
dot-atom-text= 1*atext *("." 1*atext)
Quoted strings   Up
qtext= NO-WS-CTL / %d33 / %d35-91 / %d93-126
; Non white space controls
; and the rest of the US-ASCII characters
; not including "\" or the quote character
qcontent= qtext / quoted-pair
quoted-string= [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
Miscellaneous tokens   Up
word= atom / quoted-string
phrase= 1*word / obs-phrase
utext= NO-WS-CTL / %d33-126 / obs-utext
; Non white space controls
; and the rest of the US-ASCII characters
unstructured= *([FWS] utext) [FWS]
 
Top Lexical Tokens Date and Time Address Message Syntax Fields

Date and Time Specification

date-time= [ day-of-week "," ] date FWS time [CFWS]
day-of-week= ([FWS] day-name) / obs-day-of-week
day-name= "Mon" / "Tue" / "Wed" / "Thu" / "Fri" / "Sat" / "Sun"
date= day month year
year= 4*DIGIT / obs-year
month= (FWS month-name FWS) / obs-month
month-name= "Jan" / "Feb" / "Mar" / "Apr" / "May" / "Jun"
/ "Jul" / "Aug" / "Sep" / "Oct" / "Nov" / "Dec"
day= ([FWS] 1*2DIGIT) / obs-day
time= time-of-day FWS zone
time-of-day= hour ":" minute [ ":" second ]
minute= 2DIGIT / obs-minute
second= 2DIGIT / obs-second
hour= 2DIGIT / obs-hour
zone= (( "+" / "-" ) 4DIGIT) / obs-zone
 
Top Lexical Tokens Date and Time Address Message Syntax Fields

Address Specification

address= mailbox / group
mailbox= name-addr / addr-spec
name-addr= [display-name] angle-addr
angle-addr= [CFWS] "<" addr-spec ">" [CFWS] / obs-angle-addr
group= display-name ":" [mailbox-list / CFWS] ";" [CFWS]
display-name= phrase
mailbox-list= (mailbox *("," mailbox)) / obs-mbox-list
address-list= (address *("," address)) / obs-addr-list
 
addr-spec= local-part "@" domain
local-part= dot-atom / quoted-string / obs-local-part
domain= dot-atom / domain-literal / obs-domain
domain-literal= [CFWS] "[" *([FWS] dcontent) [FWS] "]" [CFWS]
dcontent= dtext / quoted-pair
dtext= NO-WS-CTL / %d33-90 / %d94-126
; Non white space controls
; and the rest of the US-ASCII characters
; not including "[", "]", or "\"

 
Top Lexical Tokens Date and Time Address Message Syntax Fields

Overall message syntax

message= (fields / obs-fields) [CRLF body]
body= *(*998text CRLF) *998text
 
Top Lexical Tokens Date and Time Address Message Syntax Fields

Field definitions

Origination date Originator Destination address Identification Informational Resent Trace Optional
fields= *(trace *(resent-date / resent-from
   / resent-sender / resent-to / resent-cc / resent-bcc
   / resent-msg-id))
*(orig-date / from / sender / reply-to
   / to / cc / bcc / message-id / in-reply-to
   / references / subject / comments / keywords
   / optional-field)
 
Origination date field   Up
orig-date= "Date:" date-time CRLF
Originator fields   Up
from= "From:" mailbox-list CRLF
sender= "Sender:" mailbox CRLF
reply-to= "Reply-To:" address-list CRLF
Destination address fields   Up
to= "To:" address-list CRLF
cc= "Cc:" address-list CRLF
bcc= "Bcc:" (address-list / [CFWS]) CRLF
Identification fields   Up
message-id= "Message-ID:" msg-id CRLF
in-reply-to= "In-Reply-To:" 1*msg-id CRLF
references= "References:" 1*msg-id CRLF
msg-id= [CFWS] "<" id-left "@" id-right ">" [CFWS]
id-left= dot-atom-text / no-fold-quote / obs-id-left
id-right= dot-atom-text / no-fold-literal / obs-id-right
no-fold-quote= DQUOTE *(qtext / quoted-pair) DQUOTE
no-fold-literal= "[" *(dtext / quoted-pair) "]"
Informational fields   Up
subject= "Subject:" unstructured CRLF
comments= "Comments:" unstructured CRLF
keywords= "Keywords:" phrase *( "," phrase) CRLF
Resent fields   Up
resent-date= "Resent-Date:" date-time CRLF
resent-from= "Resent-From:" mailbox-list CRLF
resent-sender= "Resent-Sender:" mailbox CRLF
resent-to= "Resent-To:" address-list CRLF
resent-cc= "Resent-Cc:" address-list CRLF
resent-bcc= "Resent-Bcc:" (address-list / [CFWS]) CRLF
resent-msg-id= "Resent-Message-ID:" msg-id CRLF
Trace fields   Up
trace= [return]
1*received
return= "Return-Path:" path CRLF
path= ([CFWS] "<" ([CFWS] / addr-spec) ">" [CFWS]) / obs-path
received= "Received:" name-val-list CRLF ";" date-time CRLF
name-val-list= [CFWS] [name-val-pair *(CFWS name-val-pair)]
name-val-pair= item-name CFWS item-value
item-name= ALPHA *(["-"] (ALPHA / DIGIT))
item-value= 1*angle-addr / addr-spec / atom / domain / msg-id
Optional fields   Up
optional-field= field-name ":" unstructured CRLF
field-name= 1*ftext
ftext= %d33-57 / %d59-126
; Any character except controls, SP, and ":"

 
  
Last update: December 8, 2007 
  
(to top) © 2005-2008 Joël Repiquet, All Rights Reserved.