Sometimes a record is listed as
www IN A 192.168.1.1 and sometimes it is listed as
www A 192.168.1.1.
What is the purpose of the IN and when is it required/not required?
That is referring to the DNS class. 'IN' refers to 'Internet' while the only other option in common use is 'CH' for 'CHAOS'. The CH class is (presently) commonly used for things like querying DNS server versions, while the IN class is the default and generally what "the internet" uses.
http://www.faqs.org/rfcs/rfc2929.html (section 3.3)
According to O'Reilly's "DNS and BIND, 3rd Edition":
The IN stands for Internet. This is one class of data. Other classes exist, but none of them are currently in widespread use. [...] The class field is optional. If the class is omitted, the class IN is assumed.
It's the record class. From "Domain names - implementation and specification", RFC 1035:
3.2.4. CLASS values
CLASS fields appear in resource records. The following CLASS mnemonics and values are defined:
IN 1 the Internet CS 2 the CSNET class (Obsolete - used only for examples in some obsolete RFCs) CH 3 the CHAOS class HS 4 Hesiod [Dyer 87]
If anyone here can recall ever having configured one of the other classes in anger, they must have an epic beard. :)
I believe it means the "INternet" class of addresses. There are others, including the CHAOS class which I've only ever seen used in that hack to get the BIND version number from a remote server (
dig @ns1 version.bind chaos txt). Since 99.99999% of people only use IN, I think it has become the default. Here's an RFC that references the (at the time of writing) current classes in section 3.2: http://www.faqs.org/rfcs/rfc2929.html