We have seen how we use Mac applications such as NiftyTelent or BetterTelnet PPC. To finish off this section we consider how we run simple command line Telnet clients.
On most Unix systems and DOS Prompts a telnet session can be initiated using the telnet command. Most users simply type:telnet <remote host>
but if the user just types telnet then various options and subcommands are available which can be used to study the behaviour of the session.
Here's an exmaple of a telnet session from scitsc to ccub
bash$ telnet
telnet> toggle options
Will show option processing.
telnet> open ccub
Trying 134.220.1.20 ...
Connected to ccub.wlv.ac.uk.
Escape character is '^]'.
SENT do SUPPRESS GO AHEAD
SENT will TERMINAL TYPE (reply)
RCVD do TERMINAL TYPE (don't reply)
RCVD will SUPPRESS GO AHEAD (don't reply)
RCVD will ECHO (reply)
SENT do ECHO (reply)
RCVD do ECHO (reply)
SENT wont ECHO (reply)
UNIX(r) System V Release 4.0 (ccub)
RCVD dont ECHO (don't reply)
login: Login timed out after 60 seconds
Connection closed by foreign host.
The telnet protocol also
specifies various commands that control the method and various details of the
interaction between the client and server. These commands are incorporated
within the data stream. The commands are distinguished by the use of various
characters with the most significant bit set. Commands are always introduced by
a character with the decimal code 255 known as an Interpret as command (IAC)
character. The complete set of special characters is
Name
|
Decimal Code
|
Meaning
|
SE
|
240
|
End of subnegotiation parameters.
|
NOP
|
241
|
No operation
|
DM
|
242
|
Data mark. Indicates the position of
|
|
|
a Synch event within the data stream. This
|
|
|
should always be accompanied by a TCP
|
|
|
urgent notification.
|
BRK
|
243
|
Break. Indicates that the "break"
|
|
|
or "attention" key was hit.
|
IP
|
244
|
Suspend, interrupt or abort the process
|
|
|
to which the NVT is connected.
|
AO
|
245
|
Abort output. Allows the current process
|
|
|
to run to completion but do not send
|
|
|
its output to the user.
|
AYT
|
246
|
Are you there? Send back to the NVT some
|
|
|
visible evidence that the AYT was received.
|
EC
|
247
|
Erase character. The receiver should delete
|
|
|
the last preceding undeleted
|
|
|
character from the data stream.
|
EL
|
248
|
Erase line. Delete characters from the data
|
|
|
stream back to but not including the previous CRLF.
|
GA
|
249
|
Go ahead. Used, under certain circumstances,
|
|
|
to tell the other end that it can transmit.
|
SB
|
250
|
Subnegotiation of the indicated option follows.
|
WILL
|
251
|
Indicates the desire to begin
|
|
|
performing, or confirmation that you are
|
|
|
now performing, the indicated option.
|
WONT
|
252
|
Indicates the refusal to perform, or
|
|
|
continue performing, the indicated option.
|
DO
|
253
|
Indicates the request that the other
|
|
|
party perform, or confirmation that you are
|
|
|
expecting the other party to
|
|
|
perform, the indicated option.
|
DONT
|
254
|
Indicates the demand that the other
|
|
|
party stop performing, or confirmation that you
|
|
|
are no longer expecting the other party to
|
|
|
perform, the indicated option.
|
IAC
|
255
|
Interpret as command
|
There are a variety of
options that can be negotiated between a telnet client and server using
commands at any stage during the connection. The following are the most
important:
Decimal code
|
Name
|
1
|
echo
|
3
|
suppress go ahead
|
5
|
status
|
6
|
timing mark
|
24
|
terminal type
|
31
|
window size
|
32
|
terminal speed
|
33
|
remote flow control
|
34
|
linemode
|
36
|
environment variables
|
Options are agreed by a
process of negotiation which results in the client and server having a common
view of various extra capabilities that affect the interchange and the
operation of applications.
Either end of a telnet
dialogue can enable or disable an option either locally or remotely. The
initiator sends a 3 byte command of the form
IAC,<type of operation>,<option>
The response is of the
same form.
Operation is one of:
Description
|
Decimal Code
|
Action
|
WILL
|
251
|
Sender wants to do something.
|
DO
|
252
|
Sender wants the other end to do something.
|
WONT
|
253
|
Sender doesn't want to do something.
|
DONT
|
254
|
Sender wants the other not to do something.
|
Associated with each of the these there are various possible responses :
Sender
|
Receiver
|
Implication
|
Sent
|
Responds
|
|
WILL
|
DO
|
The sender would like to use a certain
|
|
|
facility if the receiver can handle it. Option is now
|
|
|
in effect
|
WILL
|
DONT
|
Receiver says it cannot support the
|
|
|
option. Option is not in effect.
|
DO
|
WILL
|
The sender says it can handle traffic
|
|
|
from the sender if the sender wishes to use a certain
|
|
|
option. Option is now in effect.
|
DO
|
WONT
|
Receiver says it cannot support the option.
|
|
|
Option is not in effect.
|
WONT
|
DONT
|
Option disabled. DONT is only valid response.
|
DONT
|
WONT
|
Option disabled. WONT is only valid response.
|
For example if the sender
wants the other end to suppress go-ahead it would send the byte sequence
255(IAC),251(WILL),3
The final byte of the
three byte sequence identifies the required action.
For some of the negotiable
options values need to be communicated once support of the option has been
agreed. This is done using sub-option negotiation. Values are communicated via
an exchange of value query commands and responses in the following form.
IAC,SB,<option code number>,1,IAC,SE
and
IAC,SB,<option code>,0,<value>,IAC,SE
For example if the client
wishes to identify the terminal type to the server the following exchange might
take place
Client
255(IAC),251(WILL),24
Server
255(IAC),253(DO),24
Server 255(IAC),250(SB),24,1,255(IAC),240(SE)
Client
255(IAC),250(SB),24,0,'V','T','2','2','0',255(IAC),240(SE)
The above works as
follows:
- The first exchange establishes that terminal type (option number 24) will be handled, the server then enquires of the client what value it wishes to associate with the terminal type.
- The sequenceSB,24,1 implies sub-option negotiation for option type 24, value required (1).
- The IAC,SE sequence indicates the end of this request.
- The repsonse IAC,SB,24,0,'V'... implies sub-option negotiation for option type 24, value supplied (0), the IAC,SE sequence indicates the end of the response (and the supplied value).
No comments:
Post a Comment