RFC 1576 INFORMATIONAL TELNET · TERMINALS · MAINFRAME

TN3270 Current Practices

How IBM 3270 mainframe terminal data was carried over ordinary Telnet connections, as practiced by vendors.

On rfc-editor.org ↗
PUBLISHED
January 1994
AUTHORS
J. Penner
STREAM
IETF
TCP PORT
23 (Telnet)
BINARY OPTION
0
TERMINAL-TYPE OPTION
24
EOR OPTION
25
TELNET BREAK CODE
243
NOP COMMAND
Hexadecimal F1
DOI
10.17487/RFC1576

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                          J. Penner
Request for Comments: 1576                                     DCA, Inc.
Category: Informational                                     January 1994


                        TN3270 Current Practices

Status of this Memo

   This memo provides information for the Internet community.  This memo
   does not specify an Internet standard of any kind.  Distribution of
   this memo is unlimited.

Abstract

   This document describes the existing implementation of transferring
   3270 display terminal data using currently available telnet
   capabilities.  The name traditionally associated with this
   implementation is TN3270.

   Information is provided to aid in the implementation of TN3270
   servers as well as client terminal emulators.

   The following areas pertaining to TN3270 implementations are covered
   in this document:

      1. the telnet options negotiated to transition from a NVT ASCII
         state to a TN3270 state ready to process incoming 3270 data
         stream commands

      2. the method for sending and receiving 3270 data

      3. the method of handling some special keys known as SYSREQ and
         ATTN using current available telnet commands

      4. the events that will transition a TN3270 session back to an NVT
         session

Table of Contents

      1.  Motivation  . . . . . . . . . . . . . . . . . . .   2
      2.  Background  . . . . . . . . . . . . . . . . . . .   2
      3.  Telnet Options and Commands Used  . . . . . . . .   4
      4.  Connection Negotiation  . . . . . . . . . . . . .   4
      4.1 3270 Regime Option  . . . . . . . . . . . . . . .   6
      4.2 Suppress Go Ahead Option  . . . . . . . . . . . .   6
      4.3 Echo Option . . . . . . . . . . . . . . . . . . .   6
      4.4 Timing Mark Option  . . . . . . . . . . . . . . .   7
      5.  Testing for session presence  . . . . . . . . . .   7
      6.  Handling 3270 data  . . . . . . . . . . . . . . .   7
      7.  3270 Structured Fields  . . . . . . . . . . . . .   8
      8.  The 3270 ATTN (Attention) Key . . . . . . . . . .   8
      9.  The 3270 SYSREQ Key . . . . . . . . . . . . . . .   9
      10. Items not addressed by TN3270 . . . . . . . . . .  10
      11. References  . . . . . . . . . . . . . . . . . . .  10
      12. Security Considerations . . . . . . . . . . . . .  11
      13. Author's Note . . . . . . . . . . . . . . . . . .  11
      14. Author's Address  . . . . . . . . . . . . . . . .  12

1. Motivation

   3270 display terminal data differs from traditional display terminal
   data in that it is block mode and uses EBCDIC instead of ASCII
   character representation. These two differences are the primary
   reason for the differentiation of TN3270 from standard Telnet in this
   document.

2. Background

   Existing complex IBM 3270 display terminal networks are not easily
   integrated with the increasing number of multi-platform networking
   environments, specifically TCP/IP. These complex networks include
   terminals attached to a 3270 host using SNA (Systems Network
   Architecture) and non-SNA connections. To address the issue of easily
   connecting display terminals to 3270 hosts using IP networks, several
   vendors have introduced telnet servers that provide TCP/IP users a
   connection to existing IBM mainframes by supporting display terminal
   emulation using a subset of the existing telnet protocol.  Telnet
   servers may exist on the host itself, or be connected to the host
   using SNA or non-SNA methods.

   IBM terminals are generically referred to as 3270's which includes a
   broad range of terminals and devices, not all of which actually begin
   with the numbers 327x.

   3270 terminals in the IBM SNA network environment have two sessions
   with the host computer application. One is used for communicating
   with the host application, the other is used for communicating with
   the SSCP (System Services Control Point) that links the terminal with
   the appropriate host computer.  For the purposes of TN3270, this
   distinction is not apparent or relevant since there is actually only
   a single telnet session with the host computer or server.  On an IBM
   SNA network, the 3270 terminal has a special key that toggles between
   the two sessions (SYSREQ).  A brief discussion on how some telnet
   servers deal with this is included.

   In an SNA environment, a client session is identified by a Logical
   Unit (LU) name.  In a non-SNA environment, there is not a LU name
   associated with a client session.  The closest thing to a LU name in
   the TN3270 environment is the client's IP address.  Although some
   telnet servers are connected to the host using SNA, TN3270 clients
   using these servers have no defined way to determine the LU name
   associated with the session.

   Telnet servers that exist in non-SNA environments do not have to be
   concerned about providing TN3270 clients with support for the SNA
   functions described in this document.

   TN3270 does not support typical SNA responses and is classified as a
   non-SNA protocol.  A TN3270 emulator is not aware or concerned about
   how the telnet server is connected to a 3270 host application.

   NOTE: Except where otherwise stated, this document does not
   distinguish between telnet servers that represent SNA devices and
   those that represent non-SNA 3270 devices.

   Some typical "SNA" functions such as the SYSREQ and ATTN keys have
   been mapped to existing telnet commands and are supported by some
   telnet server implementations.

   Currently, support for 3270 terminal emulation over Telnet is
   accomplished by the de facto standard of negotiating three separate
   Telnet Options - Terminal-Type [2], Binary Transmission [3], and End
   of Record [4].  This negotiation and the resulting data flow will be
   described below.

   RFC 1041 [1] attempted to standardize the method of negotiating 3270
   terminal support by defining the 3270 Regime Telnet Option.
   Historically, very few developers and vendors ever implemented RFC
   1041.

   All references in this document to the 3270 datastream, SNA versus
   non-SNA operation, 3270 datastream commands, orders, structured
   fields and the like rely on [6].

   References to SNA Request and Response Units rely on [7].  References
   to SNA and SSCP rely on [12].

3. Telnet Options and Commands Used

   TN3270 makes use of existing Telnet options and does not define any
   additional options or commands.

       Telnet option    Value (decimal)
       -------------    ---------------
       BINARY            0
       TERMINAL-TYPE    24
       EOR              25

   Additional options may be used during a TN3270 session and are
   interpreted as per their respective RFCs. These are [1] 3270-REGIME,
   [8] SUPPRESS-GO-AHEAD, [9] ECHO and [10] TIMING-MARK. Other options
   should be rejected unless they are specifically handled by the client
   for NVT mode.

   Commands that may be encountered during a TN3270 session and are
   described in RFC 854 [11] include NOP, BREAK and Interrupt Process.

4. Connection Negotiation

   The following example shows a TN3270-capable server and a TN3270
   client establishing a connection:

   The TCP/IP port used to connect with is 23 (Telnet).

   At any place before and during the TN3270 connection negotiation
   process, other telnet commands and data may be transferred and will
   be interpreted under the existing telnet state. Some existing TN3270
   servers start a client connection using an NVT telnet dialog to
   establish parameters needed to complete the TN3270 connection to the
   desired host.

   The order of negotiating terminal type, EOR and BINARY is not
   significant, this example shows a typical TN3270 connection.

      Server:  IAC DO TERMINAL-TYPE

      Client:  IAC WILL TERMINAL-TYPE

      Server:  IAC SB TERMINAL-TYPE SEND IAC SE

      Client:  IAC SB TERMINAL-TYPE IS <terminal type>IAC SE

      where <terminal type> is a string consisting of terminal model,
      type and support of enhanced attribute bytes; an example is IBM-
      3278-2.  The acceptable values are listed in RFC 1340, Assigned
      Numbers [5].  Other values are in use that do not exist in [5].

      The -2 following 3278 designates the alternate screen size.  3270
      terminals have the ability to switch between the standard (24x80)
      screen size and an alternate screen size.  Model -2 is 24x80 which
      is the same as the standard size.  Model -3 is 32x80, model -4 is
      43x80 and model -5 is 27x132.

      Appending the two character string "-E" to the end of the terminal
      type signifies that the terminal is capable of handling 3270
      extended data stream. This is interpreted to mean that the
      terminal is able to handle structured fields, which are described
      below.  Some telnet server implementations also interpret this to
      mean that the terminal is capable of handling extended attributes
      (highlighting, field validation, character set, outlining, etc.)
      [6].

      The 3279 series of terminals is capable of extended attributes
      while the 3278 series is not.

      Server:  IAC DO EOR IAC WILL EOR
      Client:  IAC WILL EOR IAC DO EOR
      Server:  IAC DO BINARY IAC WILL BINARY
      Client:  IAC WILL BINARY IAC DO BINARY
      Server:  <3270 data stream> IAC EOR
      Client:  <3270 data stream> IAC EOR
           .            .
           .            .

   To terminate the connection the socket is closed by one of the
   session partners. Typically, when the user logs off of the host, the
   telnet server closes the connection.

   If the telnet server wishes to go back to NVT mode, it may issue the
   following telnet options:

       Server:  IAC WONT BINARY
       Client:  IAC DONT BINARY

           or

       Server:  IAC WONT EOR
       Client:  IAC DONT EOR

   Either one of the above two cases causes the connection to not
   satisfy the requirements for a valid TN3270 session. The telnet
   client would then process data from the server as though it were NVT
   ASCII data.

   The following examples show how a TN3270 client handles the 3270-
   REGIME, SUPPRESS-GO-AHEAD, ECHO and TM options.

4.1 3270 Regime Option

   Very few servers support the 3270 Regime Telnet Option.  If the
   client does not support this option and responds negatively as shown
   in the following example, the server will proceed on to the more
   typical example shown above.

      Server:  IAC DO 3270-REGIME
      Client:  IAC WONT 3270-REGIME
       Normal negotiation:
      Server:  IAC DO TERMINAL-TYPE
         ...  (see above)

4.2 Suppress Go Ahead Option

   The Suppress Go Ahead option [8] is requested by some servers. The
   Suppress Go Ahead option RFC lists the default as being go aheads are
   transmitted to signal the receiver to begin transmitting.  Since
   TN3270 negotiates binary and end-of-record and is a block mode
   protocol, the telnet go ahead character is not sent.  Most servers do
   not negotiate this option even though they do not use the telnet go
   ahead character.

      Server:  IAC DO SUPPRESS-GO-AHEAD
      Client:  IAC WILL SUPPESS-GO-AHEAD

4.3 Echo Option

   The Echo option [9] is negotiated by those servers that make use of
   the telnet NVT mode to allow the user to enter information prior to
   negotiating the options necessary for TN3270.  This information
   includes but is not limited to user identification, password and
   destination 3270 host.  Some servers accept the default for this
   option which is for the client to not do a local echo of characters
   the user enters at the keyboard. This allows the server to decide if
   it should echo characters back to the client (or not in the case of
   password). Echoing characters back to the client causes slow response
   time since every character is typically echoed individually. Because
   of this, some servers negotiate for the client to do it's own local
   echoing (except for passwords). The following example illustrates
   this case.

      Server:  IAC DO ECHO
      Client:  IAC WILL ECHO
        (Client does local display of all characters)
      Server:  IAC WONT ECHO
      Client:  IAC DONT ECHO
        (Client enters password - not locally displayed or remotely
      echoed)
      Server:  IAC DO ECHO
      Client:  IAC WILL ECHO
     (Client resumes local display of all characters)

4.4 Timing Mark Option

   The Timing Mark option [10] is used by some servers to test for the
   continued presence of a TN3270 client. The following example will
   assure the server the client is still alive.

      Server:  IAC DO TIMING-MARK
      Client:  IAC WONT TIMING-MARK

5. Testing for session presence

   The NOP command (hexadecimal F1) [11] is used by some servers to test
   for the continued presence of a TN3270 client. If a client has
   terminated abnormally, TCP/IP send errors will occur. The Timing Mark
   option, described above, is also used to test for presence.

      Server:  IAC NOP
      Client:  <ignore / no response>

6. Handling 3270 data

   The 3270 data stream consists of a command and its associated data.
   Commands include but are not limited to erase screen, erase and write
   to screen and read current screen; see [6] for a complete description
   of 3270 commands and parameters.

   The reason for negotiating the EOR telnet option [4] is to provide a
   method for separating these commands since no length information is
   specified. 3270 commands are interpreted by the telnet client in
   their entirety.  Each 3270 command and possible data is terminated
   with the IAC EOR sequence.

   The Binary option [3] is also required since 3270 data may contain
   the FF (hexadecimal) or IAC character. When this character is
   encountered during a TN3270 connection it is handled as per the
   Binary RFC [3].

7. 3270 Structured Fields

   3270 structured fields provide a much wider range of features than
   "old-style" 3270 data, such as support for graphics, partitions and
   IPDS printer datastreams. A structured field is a 3270 data type that
   allows non 3270 data to be embedded within 3270 data. Briefly, a
   structured field consists of the structured field command followed by
   one or more data blocks. Each data block has a length and a
   structured field identifier, followed optionally by additional data.

   Not every TN3270 client can be expected to support all structured
   field functions.   There must be a  mechanism by which those clients
   that are capable of supporting some or all structured field functions
   can indicate their wishes. This is typically done by adding "-E" to
   the end of the terminal type string. That is, when the terminal
   identifies itself as being able to handle extended attributes, it
   also is capable of being able to send and receive structured fields.

   The design of 3270 structured fields provides a convenient means to
   convey the level of support (including no support) for the various
   structured field functions.  This mechanism is the Read Partition
   Query command, which is sent from the host application to the client.
   The client responds with a Query Reply, listing which, if any,
   structured field functions it supports.

   A TN3270 client that supports structured fields will respond to a
   Read Partition Query command with the appropriate reply.  The
   sequence of events when a client receives a Read Partition Query and
   does not support structured fields is left up to the client
   implementation.  Typically clients can identify at least this
   structured field and reply with a null set.

8. The 3270 ATTN (Attention) Key

   The 3270 ATTN key is interpreted by many host applications in an SNA
   environment as an indication that the user wishes to interrupt the
   execution of the current process.  A majority of the telnet servers
   currently accept the telnet IAC BREAK (code 243) [11] sequence to
   signal this event.

   Use of this key requires two things:

    - The TN3270 clients provide as part of their keyboard
      mapping a single key or a combination of keys that map to
      the 3270 ATTN key.  When the user presses this key(s), the
      client transmits a Telnet BREAK command to the server.

    - The TN3270 servers translate the BREAK command received from
      a TN3270 client into the appropriate form and pass it along
      to the host application as an ATTN key.  In other words, the
      server representing an SLU in an SNA session would send
      a SIGNAL RU to the host application.

   The ATTN key is not supported in a non-SNA environment; therefore, a
   TN3270 server representing non-SNA 3270 devices ignores any Telnet
   BREAK commands it receives from a client.

9. The 3270 SYSREQ Key

   The 3270 SYSREQ key is useful in an environment where the telnet
   server is attached to the host using SNA. The SYSREQ key is useful in
   this environment when the host application becomes locked or the user
   wishes to terminate the session without closing the Telnet
   connection.

   The Telnet Interrupt Process (IP) command [11] is interpreted by some
   telnet servers as a SYSREQ key. Other servers recognize the 3270 Test
   Request key as a SYSREQ key.  In an SNA environment, pressing this
   key toggles the terminal between the host application session and the
   SSCP session.  Usually the user will enter LOGOFF once this key has
   been pressed to terminate the application session and then select a
   new host to connect to.  Sometimes, if SYSREQ is pressed again, the
   host application will become unlocked and normal activities may then
   proceed.

   It is entirely up to the telnet server to interpret this command and
   send the appropriate commands to the host as well as format the
   resulting host data for display on the telnet client. The data format
   during the SSCP session is in a slightly different format than normal
   3270 data. Since the telnet server has no way to pass this data
   directly to the telnet client, it must either handle it entirely and
   ignore SYSREQ events or convert it to 3270  data to present to the
   client.

   To implement SYSREQ key support, TN3270 clients provide a key (or
   combination of keys) that is identified as mapping to the 3270 SYSREQ
   key.  When the user presses this key(s), the client would either
   transmit a Telnet IP command or Test Request key to the server,
   depending on the server implementation.

   TN3270 servers representing non-SNA 3270 terminals may ignore any
   Telnet IP commands or Test Request keys they receive from a client.

10. Items not addressed by TN3270

   There are several items that are not supported by current TN3270
   implementations; among them are the following:

    - TN3270 provides no capability for clients to emulate the 328x
      class of printers.

    - There is no mechanism by which a Telnet client can request that
      a connection be associated with a given 3270 device-name.  This
      can be of importance when a terminal session is being
      established, since many host applications behave differently
      depending on the network name of the terminal.

    - The 3270 ATTN and SYSREQ keys are not universally supported.

    - There is no support for the SNA positive/negative response
      process. All data that is sent is assumed to either be handled
      or ignored.  The lack of SNA response processing in TN3270 is
      part of what makes TN3270 efficient.
      A negative response indicates some sort of error at the client
      while processing the previously received data; this could be
      caused by the host application building a 3270 datastream that
      contains an invalid command, or by a mechanical error at the
      client side, among other things.
      Positive responses indicate processing of the previously received
      data has completed.

    - There is no mechanism by which the client can access the SNA
      BIND information.  The BIND image in a SNA environment
      contains a detailed description of the session between the
      telnet server and the host application.

    - The connection negotiation does not make it clear whether
      clients should support 3270 structured fields.

11. References

   [1] Rekhter, Y., "Telnet 3270 Regime Option", RFC 1041, IBM
       Corporation, January 1988.

   [2] VanBokkelen, J., "Telnet Terminal-Type Option", RFC 1091, FTP
       Software, Inc., February 1989.

   [3] Postel, J., and J. Reynolds, "Telnet Binary Transmission", STD
       27, RFC 856, USC/Information Sciences Institute, May 1983.

   [4] Postel, J., "Telnet End of Record Option", RFC 885,
       USC/Information Sciences Institute, December 1983.

   [5] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1340,
       USC/Information Sciences Institute, July 1992.

   [6] "3270 Information Display System - Data Stream Programmer's
       Reference", publication number GA23-0059, IBM Corporation.

   [7] "Systems Network Architecture - Formats", publication number
       GA27-3136, IBM Corporation.

   [8] Postel, J., and J. Reynolds, "Telnet Suppress Go Ahead Option",
       STD 29, RFC 858, USC/Information Sciences Institute, May 1983.

   [9] Postel, J., and J. Reynolds, "Telnet Echo Option", STD 28, RFC
       857, USC/Information Sciences Institute, May 1983.

  [10] Postel, J., and J. Reynolds, "Telnet Timing Mark Option", STD 31,
       RFC 860, USC/Information Sciences Institute, May 1983.

  [11] Postel, J., and J. Reynolds, "Telnet Protocol Specification", STD
       8, RFC 854, USC/Information Sciences Institute, May 1983.

  [12] "Systems Network Architecture - Concepts and Products",
       publication number GC30-3072, IBM Corporation.

12. Security Considerations

   Security issues are not discussed in this memo.

13. Author's Note

   Portions of this document were drawn from the following sources:

    - A White Paper written by Owen Reddecliffe, WRQ Corporation,
      October 1991.

    - Experimental work on the part of Cleve Graves and Michelle
      Angel, OpenConnect Systems, 1992 - 1993.

    - Discussions at the March 1993 IETF meeting and TN3270 BOF at
      Interop August 1993.

    - Discussions on the "TN3270E" list, 1993.

14. Author's Address

   Jon Penner
   DCA, Inc.
   2800 Oakmont Drive
   Austin, TX 78664

   Phone: (512) 388-7090 FAX
   EMail: jjp@bscs.com
          or dca/g=Jon/s=Penner/ou=DCAAUS@mhs.attmail.com

ISO Plain Language

On this page
PROBLEMIBM 3270 display terminals use block mode data in EBCDIC, which differs from ordinary Telnet, yet people on IP networks needed to reach existing IBM mainframes.
MECHANISMTN3270 negotiates three existing Telnet options, Terminal-Type, Binary Transmission and End of Record, and then exchanges 3270 data streams, each one ended with IAC EOR. The SNA keys ATTN and SYSREQ are mapped onto existing Telnet commands.
STATUS TODAYThe memo records what vendors already did and defines no new Telnet option or command. RFC 1041 had tried to standardise this with a 3270 Regime option, but very few developers and vendors ever implemented it.

§1Why TN3270 Differs from Plain Telnet

3270 display terminal data differs from traditional terminal data in two ways. It is block mode, so a whole screen arrives at once, and it uses EBCDIC instead of ASCII for characters. The memo says these two differences are the primary reason for separating TN3270 from standard Telnet.

The motivation is in section 2. Existing complex IBM 3270 display terminal networks are not easily integrated with the growing number of multi-platform networking environments, specifically TCP/IP. To make it easy to connect display terminals to 3270 hosts over IP networks, several vendors introduced Telnet servers that give TCP/IP users a connection to existing IBM mainframes by supporting display terminal emulation using a subset of the existing Telnet protocol. Such a server may sit on the host itself, or be connected to the host using SNA or non-SNA methods. IBM terminals are generically called 3270s, which includes a broad range of terminals and devices, not all of which actually begin with the numbers 327x.

In an SNA network a 3270 terminal has two sessions with the host: one for the host application and one for the SSCP, the System Services Control Point that links the terminal to the host computer. For TN3270 this distinction does not apply, because there is only a single Telnet session with the host or server. The SNA key that toggles between the two sessions is SYSREQ. A session in an SNA environment is identified by a Logical Unit name; in a non-SNA environment there is no LU name, and the closest thing to one in TN3270 is the client's IP address. TN3270 does not support typical SNA responses and is classified as a non-SNA protocol, and a TN3270 emulator is neither aware nor concerned about how the Telnet server reaches the 3270 host application.

Support for 3270 terminal emulation over Telnet is currently accomplished by what the memo calls the de facto standard of negotiating three separate Telnet options: Terminal-Type, Binary Transmission and End of Record. TN3270 makes use of existing Telnet options and defines no additional options or commands. RFC 1041 attempted to standardise the method by defining a 3270 Regime Telnet Option, but historically very few developers and vendors ever implemented it.

The old screens send a whole form at once, in a different alphabet from most computers. Those two differences are why this needed its own treatment instead of plain Telnet.

THE THREE TELNET OPTIONS TN3270 NEGOTIATES
  • 0BINARY — Lets 3270 data carry the FF byte, which is the Telnet IAC character.
  • 24TERMINAL-TYPE — Carries the terminal model and screen size, for example IBM-3278-2.
  • 25EOR — Ends each 3270 command and its data with IAC EOR.

§4Connection Negotiation

OTHER TELNET OPTIONS AND COMMANDS A TN3270 SESSION MAY SEE
  • 3270-REGIMEOffered by few servers. A client that does not support it answers WONT.
  • SUPPRESS-GO-AHEADRequested by some servers. TN3270 never sends the go ahead character.
  • ECHOUsed when a server asks for a user name or password before the session starts.
  • TIMING-MARKUsed by some servers to test whether the client is still present.
  • NOPAnother presence test. The client ignores it and does not answer.
  • BREAK, code 243Sent by the client for the 3270 ATTN key.
  • Interrupt ProcessSent by the client for the 3270 SYSREQ key, on some servers.

Clients connect to TCP port 23, the Telnet port. The order in which the terminal type, EOR and BINARY options are negotiated is not significant. The memo gives a typical connection: the server asks for TERMINAL-TYPE and the client agrees, the server asks for the terminal type and the client answers with a string such as IBM-3278-2. The terminal type string gives the terminal model, the type and its support of enhanced attribute bytes, and the acceptable values are listed in RFC 1340, although other values are in use that do not appear there.

The model suffix selects the screen size, because 3270 terminals can switch between the standard 24x80 screen and an alternate size. Model -2 is 24x80, the same as the standard size, model -3 is 32x80, model -4 is 43x80 and model -5 is 27x132. Appending the two character string -E to the terminal type means the terminal can handle the 3270 extended data stream, that is, structured fields. Some server implementations read -E as meaning the terminal can handle extended attributes such as highlighting, field validation, character set and outlining. The 3279 series of terminals is capable of extended attributes while the 3278 series is not.

After that the server offers EOR and BINARY, the client answers, and the two sides exchange 3270 data streams terminated with IAC EOR. To end the connection, one of the session partners closes the socket, typically the server when the user logs off of the host. A server that wants to return to NVT mode may send IAC WONT BINARY or IAC WONT EOR, and either one of those causes the connection to no longer satisfy the requirements for a valid TN3270 session, so the client then processes data from the server as NVT ASCII data.

The two computers agree on a few ground rules first, such as what kind of screen it is and how to mark where one message ends. After that they swap whole screens.

A TYPICAL TN3270 CONNECTION (RFC 1576 SECTION 4)
Telnet ServerTN3270 Client
  1. IAC DO TERMINAL-TYPE
  2. IAC WILL TERMINAL-TYPE
  3. IAC SB TERMINAL-TYPE SEND IAC SE
  4. IAC SB TERMINAL-TYPE IS IBM-3278-2 IAC SE
  5. IAC DO EOR, IAC WILL EORThe client answers IAC WILL EOR, IAC DO EOR.
  6. IAC DO BINARY, IAC WILL BINARYThe client answers IAC WILL BINARY, IAC DO BINARY.
  7. 3270 data stream, IAC EORThe client replies in the same form.

§6Sending 3270 Data

The 3270 data stream consists of a command and its associated data. Commands include, but are not limited to, erase screen, erase and write to screen, and read current screen.

The reason for negotiating the EOR Telnet option is to provide a way of separating these commands, since no length information is specified. The memo is precise about the rule: 3270 commands are interpreted by the Telnet client in their entirety, and each 3270 command and its possible data is terminated with the IAC EOR sequence.

The Binary option is also required, because 3270 data may contain the FF hexadecimal byte, which is the IAC character. When that byte appears during a TN3270 connection it is handled as the Binary option requires. The memo also covers how a server checks that the client is still there. The NOP command, hexadecimal F1, is used by some servers to test for the continued presence of a client, and the client does not respond to it; if a client has terminated abnormally, TCP/IP send errors occur. The Timing Mark option serves the same purpose.

Each screen is sent as one parcel with a special stamp at the end, so the receiver knows where it stops even though the data carries no length.

§73270 Structured Fields

3270 structured fields give a much wider range of features than old-style 3270 data, such as support for graphics, partitions and IPDS printer data streams. A structured field is a 3270 data type that lets data which is not itself 3270 data be embedded within 3270 data. A structured field consists of the structured field command followed by one or more data blocks, and each data block has a length and a structured field identifier, followed optionally by additional data.

Not every TN3270 client can be expected to support all structured field functions, so there must be a mechanism for clients that support some or all of them to say so. The memo says this is typically done by adding -E to the end of the terminal type string: when the terminal identifies itself as able to handle extended attributes, it is also able to send and receive structured fields. The design of structured fields also provides a convenient way to convey the level of support, including no support, for the various functions. That mechanism is the Read Partition Query command, which the host application sends to the client. The client answers with a Query Reply listing which, if any, structured field functions it supports. A client that does not support structured fields can still identify at least this structured field and reply with a null set, and the memo leaves the exact sequence of events to the client implementation.

Some screens carry extra data such as graphics or printer output. The client tells the host which of these extras it can handle, and the host asks before sending them.

§8The ATTN and SYSREQ Keys

The 3270 ATTN key is interpreted by many host applications in an SNA environment as a sign that the user wants to interrupt the execution of the current process. A majority of the Telnet servers currently accept the Telnet IAC BREAK command, code 243, to signal this event. Using the key takes two things. The client maps a single key or a combination of keys to the 3270 ATTN key, and transmits a Telnet BREAK command to the server when the user presses it. The server translates the BREAK command into the right form and passes it to the host application as an ATTN key; in other words, a server representing an SLU in an SNA session sends a SIGNAL RU to the host application. The ATTN key is not supported in a non-SNA environment, so a TN3270 server representing non-SNA 3270 devices ignores any Telnet BREAK commands it receives.

The 3270 SYSREQ key is useful where the Telnet server is attached to the host using SNA, in particular when the host application becomes locked or the user wants to end the session without closing the Telnet connection. Some Telnet servers interpret the Telnet Interrupt Process command as a SYSREQ key, and others recognise the 3270 Test Request key as a SYSREQ key. In an SNA environment, pressing the key toggles the terminal between the host application session and the SSCP session; the user usually enters LOGOFF once it has been pressed to end the application session and then selects a new host, and sometimes pressing SYSREQ again unlocks the host application so that normal activity resumes.

It is up to the Telnet server to interpret the command and send the right commands to the host, and to format the resulting host data for display on the client. The data format during the SSCP session differs slightly from normal 3270 data, and since the server has no way to pass that data straight to the client, it must either handle it itself and ignore SYSREQ events or convert it to 3270 data for display. To implement SYSREQ, clients provide a key or combination of keys mapped to the 3270 SYSREQ key and transmit a Telnet IP command or a Test Request key, depending on the server. Servers representing non-SNA 3270 terminals may ignore such commands.

Two special buttons on the old keyboard are turned into Telnet signals. The server then turns them back into button presses for the mainframe.

§10What TN3270 Does Not Cover

The memo lists what current TN3270 implementations do not support. There is no capability for clients to emulate the 328x class of printers. There is no mechanism by which a Telnet client can request that a connection be associated with a given 3270 device name, which matters when a terminal session is established because many host applications behave differently depending on the network name of the terminal. The ATTN and SYSREQ keys are not universally supported.

There is no support for the SNA positive and negative response process. All data that is sent is assumed to have been either handled or ignored. The memo explains that a negative response indicates some sort of error at the client while processing the previously received data, for example the host application building a data stream with an invalid command or a mechanical error at the client, while positive responses indicate that processing of the previously received data has completed. The lack of SNA response processing is part of what makes TN3270 efficient. There is also no mechanism by which the client can access the SNA BIND information, which describes in detail the session between the Telnet server and the host application. Finally, the connection negotiation does not make it clear whether clients should support 3270 structured fields.

The Security Considerations section is one sentence long: security issues are not discussed in this memo.

The list admits some things this setup cannot do, such as pretending to be a printer or telling the host exactly which screen it is.

§7References