[comp.sys.next] What iRe: What is IRC?

sig@europa.asd.contel.com.asd.contel.com (Sigurd P. Crossland - Contel WTP 2214N 703-818-4202) (01/28/91)

IRC (Internet Relay Chat) is the protocol specification, as well as the
program which allows multi-user, real time teleconferencing over the Internet.
Those who have used Compuserve's CB and similar services should already be
familiar with the concept.

An interesting example of the uses for IRC occurred during the early (at least
a week ago :-) military activities in the Gulf.  Channel +report was being
supplied with information from most all of the major news sources by various
individuals who were monitoring the actual services and two or three persons
residing in Israel.  As many as 130 users, at times, were logged on and able to
receive the reports from a multitude of sources simultaneously.

FTP tolsun.oulu.fi and access directory irc for a complete set of docs and
sources for IRC.  (I have included some introductory info.)  Build yourself the
client, point it towards one of the servers, such as arrakis.engin.umich.edu,
and I'll see you on +NeXT Tuesday, January 29th, 1100 EST (0800 PST 1600 GMT).

Take care.

         - Sig

Sigurd P. Crossland                                Contel Federal Systems
Principal Engineer                                 FSS/GSY/SWE WTP-2214N
Internet: sig@europa.asd.contel.com                15000 Conference Center Dr.
Telephone: (703) 818-4202                          Chantilly, VA  22021

/************************************************************************
 *   IRC - Internet Relay Chat, doc/ADVERTISEMENT
 *   Copyright (C) 1990, Jeff Trim
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 1, or (at your option)
 *   any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program; if not, write to the Free Software
 *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
                                                Author: Jeff Trim
                                                        jtrim@orion.cair.du.edu
                                                  Date: 04 Apr 1989
                                     Last modification: 04 Apr 1989

                 The Internet Relay Chat Program  -  IRC

Have you ever wanted to talk with other computer users in other parts of
the world?  Well guess what?  You can!  The program is called IRC and
it is networked over much of the United States, Finland, Sweden and very
soon I think it's going to appear in the United Kingdom.  This program
is a substitution for talk(1), chat(1), vco(1) and many other multiple
talk programs you might have read about.  When you are talking in IRC,
everything you type will instantly be transmitted around the world to
other users that might be watching their terminals at the time - they can
then type something and RESPOND to your messages - and vise versa.  I will
tell you that the program can be very addictive once you begin to make
friends and contacts on IRC ;)  .. and the Finnish people are as curious
about Amercians as we are about them - so the topics can become very
interesting sometimes.  I think I have talked about everything from Politics
to Living expenses in the United States - in return they have told me about
life in Finnland (which is quite interesting!) - I even know a few Finnish
curse words - but we won't go into those ;)

The first step to beginning to getting aquinted to IRC is to throw off the
fear of embarrising yourself -- the fact of the matter is that the people
on the other end of the terminal are as scared as you are.  The Finnish
people speak VERY GOOD english, so you can feel comfortable speaking to
them in english.  (I will add, however, that it's also interesting to see
how they communicate in Finnish - some of their words can be 25 characters
long - and I am talking just one word!)  When you /join a conference and
they recognize that you are an english speaking person they always nicely
switch immediately into english - they are very cordial about that.  But
be aware that finnish is their native language so they might stumble a bit
on some of our english counter parts  (especially english SLANG words).
Also you might need to give them a second or too to make the switch into
english because there might be a heated argument going on when you /join
the conference and they need time to finish what they are saying.

Beyond the Finnish there are users from Oregon State University, Ohio State
University, MIT, Northwestern State University and we even picked up a
site from NASA about a week ago.  At my last count there were 22 servers
running 24 hours aday all over the US/Finland - so you can loggin just
about any time of day and find people talking on IRC (as a side note - the
Finnish are 9 Hours ahead of us -- meaning when it's 11:00pm at night in Denver
it's 8:00am THE NEXT DAY in Finland!)  You should note that late afternoon
in Denver is EARLY in the morning for the Finnish ;)  But the US users
should keep the same time schedual you have (keeping in mind Mountain Time,
Central Time, Pacific Time, ...etc).

WHAT DO I TALK ABOUT?

That is the most common question I get so I will answer it now.  Sometimes
you'll notice that all conversation STOPS and you know everyone is waiting
on everyone else to say something - so this is a good time to talk about
News, weather or whatever -- best thing is to ask a question - like "How's
the weather in finland?", "What's TV like in Finland?", "Did you know that
an Oil Tanker just spilt oil all over the Alaskan sea-shore?".  If things
get real desperate say something like "well why don't we choose a topic?"
.then you should also try to think up something, maybe a good topic over
your favoite beer, Broncos mainia (I haven't explained that to the Finnish
yet (I still don't get it) ;), Denver, skiing, computers, people, vacation
spots, travel, cars, housing, whatever you can think of.  ..but be assertive.


A finally note is about IRC protocol.  Try not to CUSS out the other users
(meaning use your best english - keep your laungauge printable ;), and
when you are going to LEAVE IRC - say "goodbye" and give the other users
about 30 seconds to in turn say their goodbye's.  Never just /signoff
because it makes the other users think you didn't like what they were
saying - so try to leave on a good note.  A finally you should be aware
that the program does allow <CTRL>G's (The ASCII BELL character).  They
are used only when absolutely necessary - and usually in PRIVATE messages
only - so please restrict them to that.  If you need to wake up a sleeping
user (IE one that's away from his terminal for awhile) then send him a few
^G's (like 2) and wake him up in private message.  Don't post ^G's in
public messages.


RUNNING THE PROGRAM:

I have it set up currently on the 3 academic UNIXES - on EOS/TYCHE/ORION
type: "irc".  I am Posting the IRC User Manual in the next posting so
please read that to get familiar with IRC and the various commands.  if
you want help in the program type "/help".  If you see a topic you want to
read about then type "/help <topic>", like "/help who".  But anyway to
run the program type:

      irc

/************************************************************************
 *   IRC - Internet Relay Chat, doc/Comms
 *   Copyright (C) 1990, Jarkko Oikarinen
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 1, or (at your option)
 *   any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program; if not, write to the Free Software
 *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

          Author: Jarkko Oikarinen
           Date: 3 Sep 1988
     Last modification: 7 Jul 90

       Internet Relay Chat Protocol

1. Introduction

This document defines the protocol how IRC messages are transmitted
over Internet. IRC is a teleconferencing system which can run on
many different hosts.

1.1. Servers

IRC consists of several servers, of which there should be only one
on each host (It is not recommended to use several servers, it is
possible anyway). Servers are connected with each other so that they
form a tree-like net. [See Fig. 1]. This protocol defines no limit
how many servers (or clients) one server can handle, it is machine
and server dependent. The name of the server is the same as the
name of the host where server is running.

        [ Server 1 ]
         /        \
        /          \
                  [ Server 2 ]           [ Server 3 ]
                    /       \                      \
                   /         \                      \
           [ Server 4 ]    [ Server 5 ]         [ Server 6 ]
            /    |    \                           /      \
           /     |     \                         /        \
          /      |      \____                   /          \
         /       |           \                 /            \
[ Server 7 ] [ Server 8 ] [ Server 9 ]   [ Server 10 ] [ Server 11 ]

      :
          [ etc. ]
      :

                 [ Fig. 1. Format of IRC Server net ]

1.2. Clients

In this paper every conference attendant is referred to as client.
Each client is distinguished from others with a nickname having
maximum length of eight (8) characters. The following characters
may be used in a nickname: all digits ('0' - '9'), lowercase letters
('a' - 'z'), uppercase letters ('A' - 'Z'). In addition to nickname
servers should have following information on clients: Real name,
name of the host client is logged on, client's username on that host
and name of the server to which client is connected.


1.3. Channels

Channels are the way several (more that two) clients can communicate
with each other. Every channel has a name with which it can be
unambiguously distinguished from other channels. Channel name is an
32-bit integer number. Channels are divided into three groups:
Channels with negative name are secret channels, and users on those
channels are not shown to other users unless they are on same channel.
Channels with name in between 1-999 are public channels, and users
and their channel names are shown to everyone. Channels 1000 - are
private channels, and users on these channels may be seen, but not
the number of the channel. This system is not perfectly secure (nor
it is meant to be like that) because channel name can always be guessed.

1.4. Services

Services are used to allow servers and clients use certain databases
over IRCnet. These databases are mainly used to maintain access lists
for servers and clients; that is, servers can query service and get
a list of other servers and clients that should be allowed to connect.
There may be several (even similar) services connected to net at the
same time.

2. The IRC Specification

2.1. Overview

This protocol is only an interface between server and client programs.
It does not perform any user interaction, messages may have quite cryptic
format. Client and service programs should perform all 'user-friendly'
functions.

2.2. Character codes

Commands are composed of characters from the ASCII character set.
When the transport service provides an 8-bit byte (octet) transmission
channel, each 7-bit character is transmitted right justified in an
octet with the high order bit cleared to zero.

2.3. Messages

Daemons and Clients send each other messages which may or may not
generate a reply. Daemons normally should generate a reply for each message,
but clients should not trust on it and await forever.

Messages consist of prefix, a command, and parameters. Prefix
and parameters may be optional. Parameters are separated from
each other with one space character. Prefix is separated from
command with space. Prefix is only used messages from servers to
identify the original sender of the message. Client programs should
never use prefixes. Command lines must be complete with all required
parameters, and may not contain more than one command. Commands,
prefixes and parameters are not case sensitive. The prefix is preceded
by a colon.

IRC Messages are always lines of characters terminated with CR-LF
(Carriage Return - Line Feed) pair, and these messages shall not
exceed 512 characters in length, counting all characters, including
the trailing CR-LF (thus there are 510 characters maximum allowed
for the command and its parameters). There is no provision for
continuation message lines.

eps@toaster.SFSU.EDU (Eric P. Scott) (01/29/91)

In article <910028.092426.sig@SCrossland> sig@europa.asd.contel.com
	(Sigurd P. Crossland - Contel WTP 2214N 703-818-4202) writes:
>FTP tolsun.oulu.fi and access directory irc for a complete set of docs and
>sources for IRC.  (I have included some introductory info.)  Build yourself the
>client, point it towards one of the servers, such as arrakis.engin.umich.edu,

We've been running irc2.6pre18 since it came out; it's much
more stable than 2.5.1 was.  Sites running the server (ircd) on
NeXTs should apply the attached (unofficial) patch.  Most of you
will only be running client software, and won't need this.

Note that there are several clients available.  Besides the
"original" in the Finnish distribution, there's also IRC II
on rvw2.hhs.ri.cmu.edu, and a GNU emacs client "somewhere."
There's a mailing list for irc software maintainers (mail to
irclist-request@tolsun.oulu.fi) and a mostly-ignored newsgroup,
alt.irc.

None of this is plug-and-play; there are Makefiles and
configurations to edit, and you have to be reasonably
UNIX-literate to get irc working.

					-=EPS=-
-------
*** ircd/s_bsd.c.orig	Sat Dec 22 01:34:37 1990
--- ircd/s_bsd.c	Sun Jan  6 19:38:18 1991
***************
*** 278,283 ****
--- 278,294 ----
        ReportError("Failed in connecting to %s :%s", cptr);
        return -2;
      }
+   /*
+    ** If IP-address is localhost, try with the servers sockhost
+    ** (as requested by EPS).
+    **
+    ** ...if ULTRIX doesn't have inet_netof(), then just make
+    ** that function or #if this out for ULTRIX..  --msa
+    */
+ 
+   if (inet_netof(name.sin_addr) == IN_LOOPBACKNET)
+     check_name(cptr,me.sockhost,flags);
+ 
    host = gethostbyaddr((char *)&(name.sin_addr),
  		       sizeof(struct in_addr),AF_INET);
    if (host != NULL)
***************
*** 292,308 ****
  	  check_name(cptr, tmp, flags);
  	}
      }
-   /*
-    ** If IP-address is localhost, try with the servers sockhost
-    ** (as requested by EPS).
-    **
-    ** ...if ULTRIX doesn't have inet_netof(), then just make
-    ** that function or #if this out for ULTRIX..  --msa
-    */
  
-   if (inet_netof(name.sin_addr) == IN_LOOPBACKNET)
-     check_name(cptr,me.sockhost,flags);
- 
    /*
     ** Last ditch attempt: try with numeric IP-address
     */
--- 303,309 ----
***************
*** 319,326 ****
  	      sizeof(cptr->sockhost));
    if (cptr->confs)
      return 0;
!   else
!     return -1;
  }
  
  /*
--- 320,328 ----
  	      sizeof(cptr->sockhost));
    if (cptr->confs)
      return 0;
!   if (cptr->name[0] == '\0' && host)
!     strncpyzt(cptr->name, host->h_name, sizeof(cptr->name));
!   return -1;
  }
  
  /*

sandberg@owl.caltech.edu (Steven William Sandberg) (01/29/91)

Could someone tell me where I can get a copy of irc?

sig@europa.asd.contel.com.asd.contel.com (Sigurd P. Crossland - Contel WTP 2214N 703-818-4202) (01/29/91)

Mike Matthews (matthews@lewhoosh.umd.edu) writes:

>Has anyone gotten ircd running on a NeXT?  That still don't work.  I'm sure
>other IRC sites are getting sick of lewhoosh.umd.edu going up and down and
>up and down all the time...
>
>I've tried everything.  I even made an rc.local.ircd, and bypassed THAT in an
>act of desparation.  Now I'm just grasping at straws.

And Eric O. Scott (eps@toaster.SFSU.EDU) replies:

>None of this is plug-and-play; there are Makefiles and
>configurations to edit, and you have to be reasonably
>UNIX-literate to get irc working.

I am not what most people would consider eUnuchs literate and all I did was
edit four lines in the file config.h to indicate the location of directories.
After that I simply typed make, moved the compiled binaries to the locations
specified earlier, and, only for the server, edited a half dozen lines in the
file ircd.conf.  Both client and server function perfectly and I have since
linked three additional servers in our own internal IRC network.

There might be a bit of confusion caused when the ircd process is first
started.  (Here's where I get in well over my head.)  The process must
continue to run after the user (not superuser) logs off, so it apparently
forks a process that will continue running and the 'startup' process dies.  If
you attempt to connect, using a client process, or simply telnet to port 6667,
you will find that the server process, is, in fact, executing.

That's really all there is to it.  Compile the client (irc) and run the
process with the command:

   irc <nickname> <servername>

<nickname> may be your initials or something 'cutesy' and servername may be
arrakis.engin.umich.edu initially.  (Once you have a connection, type /LINKS
to determine the closest server and substitute that for subsequent
connections.)

IRC is quite flexible in that it provides for environment parameters for the
common configuration items and a configuration file, if you wish to tailor the
environment.  They are both optional.

Use is quite simple, commands are preceded with a "/" character, everything
else goes out over the channel.  Help is available for all commands by typing
/HELP.

Hope this helps a bit.  See you on IRC.  Take care.

- Sig


Sigurd P. Crossland                                Contel Federal Systems
Principal Engineer                                 FSS/GSY/SWE WTP-2214N
Internet: sig@europa.asd.contel.com                15000 Conference Center Dr.
Telephone: (703) 818-4202                          Chantilly, VA  22021