In TNSNAMES.ORA file entry for CONNECT_DATA,i've seen three types of entries,one with SID,other with SERVICE_NAME & third one is SERVICE.

For example,for your reference i've given SERVICE entry which i read


TEST.world =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(COMMUNITY = spx.world)
(PROTOCOL = SPX)
(SERVICE = Server_lsnr)
)
(CONNECT_DATA = (SID = TEST)
)
)

Clear my following doubts,

1) what is the diference between SID,SERVICE_NAME & SERVICE.
2) I've seen 3 types of protocols in TNSNAMES.ORA setting,
TCP - for network connection
IPC - for External procedure

what is the need & use of SPX protocol and explain me what is COMMUNITY in SPX setting ?