Skip to main content

Full text of "Networking research in front ending and intelligent terminals : offloading ARPANET protocols to a front end"

See other formats


f  OF 
ILLINOIS  LIBRARY 
'AT  URBANA-CHAMPAIGN 

ENGINEERING 


lunrvmr 


The  person  charging  this  material  is  responsible  for 
its  returp  t£>  the  library  frgmwhich  it  was  withdrj 
on  or  ^before  the  Latest  D$gft(££|  below. 


Theft,  Lla'i 4||  iri$|n| 
nary  action  and  may  resainrfal 


II  Telephone  Center,  333-8400 

UNIVERSITY    OF    ILLINOIS    LIBRARY    AT    URBANA-CHAMPAIGN 


L161— O-1096 


10.  5¥       ENGINEERING  LI8RARV  C-^y^^ 

w  Mm 


fjl  (.  3  <L.  UNI V:      ITY  OF  ILLINOIS 

UXBANA,  ILLINOIS 


w 


wmammm 


I 


UNIVERSITY  OF  ILLINOIS  AT  URBANA-CHAMPAIGN 

URBANA,  ILLINOIS  61801 


she  Ubrery  of  ttie 


CAC  Document  Number  230 
CCTC-WAD  Document  Number  7511 


Networking  Research  in  Front  Ending 
and  Intelligent  Terminals 

OFFLOADING  ARPANET  PROTOCOLS 
TO  A  FRONT  END 


by 
John  D.  Day 


Prepared  for  the 

Command  and  Control  Technical  Center 

WWMCCS  ADP  Directorate 

Defense  Communications  Agency 

Washington,  D.C.   20305 


under  contract 
DCA100-76-C-0088 


The  person  charging  this  material  is  re 
sponsible  for  its  return  to  the  library  frorr 
which  it  was  withdrawn  on  or  before  the 
Latest  Date  stamped  below. 

Theft,  mutilation,  and  underlining  of  books  are  reason 
for  disciplinary  action  and  may  result  in  dismissal  fron 
the   University. 


Center  for  Advanced  Computatic 
University  of  Illinois  at  Urbana-Ch 
Urbana,  Illinois   61801 


11982 


September  30,  1977 


Approved  fo 


r  Release:      _\  ^xJ*^**   T*\  -  A" 

Peter  A.  Alsberg,  Prin&i 


pMf 


L161— O-1096 


Digitized  by  the  Internet  Archive 

in  2012  with  funding  from 

University  of  Illinois  Urbana-Champaign 


http://archive.org/details/networkingresearOOdayj 


Table  of  Contents 

Page 

Summary  1 

Background  1 

Offloading  the  Telnet  Protocol  1 

Offloading  the  File  Transfer  Protocol   2 

Offloading  Other  ARPANET  Protocols  3 

Introduction   4 

Host-to-Front-End  Protocol  5 

Future  Work 6 

General  Characteristics  of  Offloading  8 

Two  General-Purpose  Process-to-Service  Protocols   12 

Offloading  the  Telnet  Protocol   14 

Offloading  the  User  Telnet  Application  15 

Offloading  the  Telnet  Protocol  Implementation   17 

Offloading  the  File  Transfer  Protocol  24 

Offloading  the  User  FTP 26 

Offloading  the  Server  FTP 35 

The  File-Access  Process-to-Service  Protocol   40 

Offloading  the  Network  RJE  Protocol  43 

Offloading  the  User  RJE 43 

Offloading  the  Server  RJE 45 

Offloading  Teleconferencing  47 

Offloading  Network  Graphics  Protocol   48 

References 57 


Table  of  Contents 
(continued) 

Page 

Appendix  1.   Program  Access  Process-to-Service 

Protocol  Specification  61 

Appendix  2.   File  Access  Process-to-Service 

Protocol  Specification  79 

Appendix  3.   ARPANET  Host-Host  Process-to-Service 

Protocol  Specification  119 

Appendix  4.   Network  Virtual  Terminal  Process-to-Service 

Protocol  Specification  145 

Appendix  5.   User  FTP  Process-to-Service 

Protocol  Specification  185 

Appendix  6.   Server  FTP  Process-to-Service 

Protocol  Specification  221 


Summary 

Background 

Under  contract  DCA100-76-C-0088,  the  Center  For  Advanced 
Computation  of  the  University  of  Illinois  at  Urbana-Champaign  is  investigating 
the  capabilities  of  network  front  ends.   As  a  part  of  this  contract,  an 
experimental  network  front  end  (ENFE)  is  being  developed  to  interface  a 
WWMCCS  H6000  to  the  ARPA  Network  and  to  conduct  experiments  with  a  host- 
to-front-end  protocol  (HFP) .   In  this  project,  the  HFP  and  associated 
higher  level  process-to-service  protocols  are  used  in  offloading  network 
access  and  Telnet  facilities  from  the  host  to  the  front  end.   The  ENFE 
necessarily  implements  only  one  of  many  possible  ways  to  offload  Telnet 
facilities.   There  are  also  other  network  facilities  -  particularly  file 
transfer  -  which  one  might  like  to  offload.   In  this  document  we  present 
a  broad  survey  of  offloading  strategies  for  the  most  important  ARPA 
Network  facilities.   This  survey  should  be  useful  as  a  basis  both  for 
the  future  design  of  expanded  front  ends  and  for  quantitative  studies  to 
determine  optimal  offloading  strategies. 
Offloading  the  Telnet  Protocol 

The  ARPANET  Telnet  protocol  provides  a  standard  method  for 
interfacing  terminals  and  terminal-oriented  processes  to  each  other. 
Three  key  ideas  went  into  the  development  of  the  Telnet  protocol: 

1.  the  concept  of  a  network  virtual  terminal  (NVT) , 

2.  the  principle  of  negotiated  options,  and 

3.  a  symmetrical  view  of  terminals  and  processes. 

A  Telnet  implementation  must  handle  the  translation  between  real  terminal 
data  representations  and  the  NVT  representation,  the  negotiation  of 
options,  and  the  opening  and  closing  of  network  connections.   Connection 


handling  can  best  be  handled  in  the  front  end.   Translation  can  be  done 
in  either  the  host  or  the  front  end.   The  best  place  to  handle  any 
particular  option  depends  on  the  characteristics  of  the  option.   In  this 
document,  we  discuss  in  detail  the  trade-offs  involved  in  different 
degrees  of  offloading  and  provide  a  brief  analysis  of  the  potential  for 
offloading  each  of  the  Telnet  options.   We  also  discuss  which  process- 
to-service  protocols  are  needed  to  implement  the  various  schemes.   The 
symmetry  of  this  protocol  allowed  us  to  develop  a  new  process-to-service 
protocol  (the  network  virtual  terminal  PSP)  designed  to  efficiently 
implement  an  intermediate  level  of  Telnet  offloading.   (The  maximum 
offloading  strategy  adopted  for  the  ENFE  was  implemented  with  two  separate 
PSP's  -  one  for  the  user  side  and  one  for  the  server  side.) 
Offloading  the  File  Transfer  Protocol 

The  ARPANET  File  Transfer  Protocol  (FTP)  consists  of  two  major 
sections:   a  command-and-response  section  and  a  data  transfer  section. 
The  File  Transfer  Protocol  is  inherently  asymmetric.   Commands  are  sent 
from  the  User  FTP  to  the  Server  FTP  to  provide  for  user  authentication, 
to  specify  parameters  for  data  transfer,  and  to  request  service.   We 
have  identified  two  major  aspects  of  FTP  that  are  candidates  for  offloading: 
the  data  transfer  process  and  the  bookkeeping  and  marker  handling  required 
for  restarting  a  transfer  that  has  aborted.   Since  FTP  makes  use  of  the 
Telnet  protocol,  the  Telnet  functions  can  also  be  offloaded.   We  found 
that  for  User  FTP  there  are  eight  possible  offloading  schemes  that 
differ  from  one  another  in  important  ways. 

The  offloading  of  Server  FTP  presents  an  even  more  complicated 
problem.   File  systems  in  the  host  must  be  distinguished  from  file 
systems  in  the  front  end.   For  another  thing,  Server  FTP  is  not  the 
simple  sequence  of  stages  which  characterizes  User  FTP.   (An  exception 
seems  to  be  the  data  translating  and  reformatting  functions,  which  we 


believe  should  generally  be  assigned  to  the  front  end.)   We  have  therefore 
confined  ourselves  to  examining  the  individual  FTP  commands,  classifying 
them  as  to  whether  they  must  be  handled  in  the  host  or  can  be  handled  in 
the  front  end.   In  some  cases  (e.g.,  user  authentication)  a  command  is 
likely  to  be  handled  by  both  the  front  end  and  the  host. 

For  offloading  FTP,  we  have  designed  three  new  process-to- 
service  protocols:   a  User  FTP  PSP,  a  Server  FTP  PSP,  and  a  File  Access 
PSP.   The  last  provides  a  general  facility  for  transferring  files  between 
host  and  front  end.   This  facility  should  also  be  useful  for  purposes 
other  than  offloading  FTP. 
Offloading  Other  ARPANET  Protocols 

Although  our  major  contractual  obligation  was  to  study  the 
offloading  of  FTP  (and  Telnet  as  a  natural  conjunct  of  this) ,  we  also 
looked  briefly  at  three  other  protocols:   Remote  Job  Entry  (RJE) ,  Teleconferencing, 
and  Network  Graphics. 

RJE  makes  heavy  use  of  FTP;  thus  in  studying  FTP  we  have 
covered  the  major  points  of  interest  in  offloading  RJE.   There  are  a  few 
functions,  of  course,  specific  to  RJE  itself;  these  in  general  can  not 
be  offloaded. 

There  is  no  ARPANET  Teleconferencing  Protocol  as  such.   However, 
we  felt  that  teleconferencing  is  a  sufficiently  important  network  service 
to  be  included  in  this  study.   Our  conclusion  is  that  teleconferencing 
can  and  should  be  entirely  offloaded,  provided  that  the  front  end  has 
its  own  file  system.   If  the  file  system  of  the  host  must  be  used,  all 
of  the  teleconferencing  functions  should  still  be  placed  in  the  front 
end,  with  the  File  Access  PSP  used  to  read  and  write  files  when  necessary. 

We  also  find  the  Network  Graphics  Protocol  highly  suitable  for 
offloading.   An  exact  assignment  of  duties,  however,  would  depend  heavily 
on  the  capabilities  of  the  graphics  terminal,  the  host  and  the  front 
end. 


Introduction 

Network  software  is  a  significant  burden  on  large  hosts 
connected  to  a  resource  sharing  network.   This  burden  might  be  lessened 
through  the  use  of  a  network  front  end.   A  network  front  end  is  a  mini- 
computer interposed  between  host  and  network.   Some  network  software 
functions  could  be  "offloaded"  to  the  network  front  end.   This  study 
explores  what  network  software  functions  could  be  offloaded  to  a  network 
front  end.   The  Host- to-Front-End  Protocol  (HFP)  [19]  serves  as  the 
vehicle  for  this  study.   Familiarity  with  HFP  is  assumed. 

Connecting  a  large  computer  to  a  packet-switched  network 
requires  a  rather  large  investment  in  the  development  or  modification  of 
network  software.   The  host-to-network  interface  or  protocol  must  be 
implemented.   An  end-to-end  protocol  is  required  for  general  interprocess 
communication.   These  programs  are  complex  and,  if  the  operating  system  is 
unsuited  to  networking,  may  be  large.   Modification  of  the  operating 
system  is  often  necessary.   Moreover,  in  order  to  make  network  services 
available  to  the  user  a  host  must  implement  one  or  more  higher  level  protocols 
Examples  of  higher  level  protocols  are  virtual  terminal  protocols,  file 
transfer  protocols,  remote  job  entry  service,  graphics  protocols,  etc. 
But  the  network  software  burden  on  a  host  is  not  only  in  large  one-time 
costs  for  software  development,  but  also  in  large  recurring  costs  for 
the  processor,  memory,  and  channel  time  consumed  by  the  network  software, 
and  in  software  maintenance.   It  has  been  hoped  that  most  of  this  burden 
could  be  offloaded  to  a  relatively  inexpensive  network  front  end.   A  front 
end  could  also  transform  network  communications  to  make  them  more  suit- 
able to  the  host.   Standardization  of  the  front  end  would  allow  the  same 


system  to  be  used  to  front  end  a  variety  of  hosts.   This  would  save 
development  and  modification  costs.   On  the  other  hand,  tailoring  the 
front  end  to  a  specific  host  would  improve  performance.   There  is  clearly 
a  tradeoff  between  these  two  goals. 
Host-to-Front-End  Protocol 

The  vehicle  for  the  present  study  is  the  Host-to-Front-End 
Protocol  (HFP)  [19].   This  protocol  can  be  divided  into  three  major  sections: 

1.  a  link  protocol  for  control  and  communication  on  the  actual 
physical  connection  between  the  two  machines, 

2.  a  channel  protocol  that  provides  a  set  of  error-free,  reliable, 
logical  channels  between  processes  in  the  host  and  services  in 
the  front  end,  and 

3.  a  family  of  process-to-service  protocols  (PSP's)  that  provide 
the  means  for  offloading  the  network  protocols. 

The  channel  protocol  defines  a  set  of  Command  and  Response 
Messages.   Each  Message  has  a  header  field  containing  control  information 
and  a  text  field  containing  data.   Four  pairs  of  Commands  and  Responses 
provide  communication  between  the  host  process  and  the  front-end  service. 
The  PSP's  use  the  text  fields  of  the  channel  Commands  and  Responses  to 
send  PSP  commands  and  responses  between  the  process  and  the  service.   The 
channel  Commands  and  Responses  are: 

The  BEGIN  Command  and  Response  are  used  to  establish  a  logical 
channel  between  the  host  and  the  front  end. 

The  END  Command  and  Response  are  used  to  terminate  a  logical 
channel. 

The  TRANSMIT  Command  and  Response  are  used  to  transfer  data. 

The  EXECUTE  Command  and  Response  are  used  to  send  requests 
out-of-band  with  the  TRANSMIT  Commands  and  Responses. 


Each  PSP  is  defined  in  terms  of  the  channel  protocol.   A 
PSP  defines  how  the  text  field  of  each  channel  protocol  Command  and 
Response  is  used  for  a  particular  service. 

A  PSP  represents  a  class  of  offloading  strategies  for  one 
or  more  protocols.   The  six  PSP's  are: 

1.  The  Program  Access  PSP,  which  provides  a  general  facility  by 
which  a  process  in  the  host  may  invoke  a  terminal-oriented 
program  or  system  command  in  the  front  end. 

2.  The  File  Access  PSP,  which  provides  a  general  facility  for 
moving  bulk  data  between  the  host  and  the  front  end.   It  is 
used  in  offloading  FTP  or  similar  protocols. 

3.  The  ARPA  Host-Host  PSP,  which  provides  access  to  the  ARPANET 
Host-Host  protocol  implementation  in  the  front  end. 

4.  The  Network  Virtual  Terminal  PSP,  which  provides  low-level 
process-oriented  classes  of  offloading  of  the  Telnet  protocol. 

5.  The  User  FTP  PSP,  which  provides  low-level  process-oriented 
classes  of  offloading  of  the  user  side  of  the  File  Transfer 
Protocol. 

6.  The  Server  FTP  PSP,  which  provides  classes  of  offloading  for 
the  server  side  of  a  File  Transfer  Protocol. 

Future  Work 

While  this  study  explores  what  could  be  offloaded,  it  does 
not  determine  what  should  be  offloaded.   A  given  installation  will 
attempt  to  provide  a  particular  class  of  service  to  its  users;  for 
example,  a  timesharing  service,  a  data  management  service  or  an 
archival  service.   The  installation  may  have  to  handle  a  large  number 
of  terminals  or  perhaps  only  a  few.   Because  of  the  finite  resources 
of  the  front  end  one  may  not  be  able  to  offload  everything  and  still 
provide  adequate  performance  for  the  preferred  services.   For  example,  a 


timesharing  service  supporting  a  large  number  of  terminals  and  not  much 
bulk  transfer  might  maximize  the  offloading  of  Telnet  and  minimize 
response  time.   On  the  other  hand,  an  archival  service  or  a  data  manage- 
ment service  might  maximize  the  offloading  of  FTP  and  minimize  the  off- 
loading of  Telnet.   The  nature  of  these  tradeoffs  must  be  investigated. 
A  methodology  for  determining  how  an  installation  should  configure  its 
front  end  must  be  developed.   Similar  work  has  been  done  for  satellite 
graphics  processors  [18,  34,  35] .   This  work  might  be  extended  and  adapted 
to  the  offloading  problem.   Also,  the  modeling  framework  [16]  recently 
developed  at  CAC  could  be  used  to  aid  the  investigation  of  these  questions. 


General  Characteristics  of  Offloading 

It  is  possible  to  discern  a  pattern  in  the  way  protocols 
could  be  offloaded.   This  pattern  is  related  to  the  symmetry  of  the  network 
protocol.   A  symmetrical  protocol  is  one  whose  operation  is  identical  for 
both  sides.   The  ARPA  Host-Host  and  Telnet  protocols  are  symmetrical. 
In  the  Host-Host  protocol  no  distinction  is  made  between  source  and 
destination  or  between  user  and  server.   Either  side  may  initiate  the 
connection.   The  passing  of  data  from  one  host  to  another  is  treated 
identically  regardless  of  direction.   In  Telnet  no  distinction  is  made 
between  terminals  and  processes.   On  the  other  hand,  the  FTP  protocol 
is  not  symmetrical.   One  side  (User)  must  initiate  the  connection,  generate 
commands  and  receive  responses;  while  the  other  side  (Server)  receives 
commands,  performs  the  indicated  task  and  sends  responses. 

As  one  would  expect,  symmetrical  protocols  offload  in  one  way 
and  asymmetrical  protocols  offload  in  another.   For  a  symmetrical  protocol, 
a  single  PSP  is  used  for  offloading;  for  an  asymmetrical  protocol  two 
PSP's  are  required  -  one  for  each  side. 

Schemes  for  offloading  the  user  side  of  an  asymmetrical  protocol 
show  one  pattern  and  those  for  offloading  the  server  side  show  a  distinctly 
different  pattern.  . 

This  is  a  consequence  of  the  structural  differences  between 
the  two  sides.   The  user  side  is  simply  a  sequence  of  stages.   A  message 
from  the  user  is  transformed  successively  by  each  stage,  e.g.,  the  user 
interface,  the  protocol  interpreter,  the  Telnet  interface,  and  the 
NCP.   But  on  the  server  side,  the  protocol  interpreter  must  perform  host- 
specific  operations.   On  the  server  side,  these  host-specific  operations 


are  the  crux  of  the  matter.   While  the  sever  side  has  stages  analogous 
to  those  of  the  user  side,  they  are  of  less  importance,  particularly 
with  respect  to  offloading. 

As  a  general  principle,  the  structure  of  the  user  side  of  an 
asymmetrical  protocol  favors  offloading  in  terms  of  stages.  Thus,  for 
the  user  side,  there  are  the  following  offloading  strategies: 

1)  Offload  everything,  leaving  a  simple  process  in  the  host 
which  relays  data  between  the  user  and  the  front  end; 

2)  Leave  the  user  interface  in  the  host; 

3)  Offload  nothing  at  this  protocol  level. 

There  may  be  variations  on  these  three  strategies,  but  as  major  classes 
they  always  appear. 

The  structure  of  the  server  side  of  an  asymmetrical  protocol 
favors  offloading  in  terms  of  the  operations.   Most  of  these  operations 
deal  with  the  handling  of  protocol  commands.   (See  figure  1.)   Some 
operations  must  be  done  in  the  host,  some  must  be  done  in  the  front  end. 
Some  can  be  done  either  place.   Thus  the  question  of  offloading  strategy 
is  reduced  to  those  cases  for  which  there  is  a  choice.   It  is  then  a 
question  of  the  relative  advantage  or  disadvantage  of  having  each  such 
operation  performed  in  the  host  or  in  the  front  end.   Since  offloading 
an  operation  to  the  front  end  may  not  only  affect  the  performance  of  the 
front  end  in  undesirable  ways,  but  may  also  require  more  complex  mechanisms 
to  control  the  offloaded  operation  from  the  host,  the  net  gain  to  be 
realized  by  such  a  strategy  must  be  carefully  determined.   Large  variations 
in  operating  system  architectures  make  it  difficult  to  determine  which 
operations  should  be  offloaded  without  careful  investigation  of  individual 
cases. 


10 


PSP's  may  also  differ  by  being  location-dependent  or  location- 
independent.  Most  are  location-dependent.   The  process  or  user  on  whose 
behalf  a  service  is  performed  is  located  in  the  host  and  the  service  is 
in  the  front  end.   However,  there  are  some  PSP's,  such  as  the  File 
Access  PSP,  which  make  the  distinction  between  a  user  and  a  service  but 
do  not  require  their  association  with  the  host  or  front  end. 


11 


Two  General-Purpose  Process-to-Service  Protocols 

Two  of  the  PSP's  used  in  this  work  to  offload  network  software 
are  not  associated  with  a  particular  network  protocol.   One  is  the 
Program  Access  PSP  and  the  other  is  the  File  Access  PSP. 

The  Program  Access  PSP  (see  appendix  1)  is  a  general  purpose 
protocol  that  combines  some  of  the  functions  of  a  virtual  terminal 
protocol  with  a  simple  mechanism  allowing  host  processes  or  users  to 
invoke  programs  or  commands  in  the  front  end.   The  Program  Access  PSP 
(PA-PSP)  can  be  used  to  provide  a  direct  connection  from  the  user's 
terminal  to  a  front-end  program  with  minimal  interference  by  the  host. 
Depending  on  the  nature  of  the  terminals  and  the  operating  system  in  the 
host,  the  process  side  of  a  PA-PSP  may  have  to  carry  out  such  operations 
as: 

querying  the  user  for  usercode  and  password, 

handling  break  characters  from  the  terminal, 

flushing  data  going  to  the  terminal, 

handling  half -duplex  terminals, 

diverting  binary  or  character  data  to  auxiliary  devices,  and 

modifying  terminal  parameters  that  control  echoing. 

Of  course,  the  more  items  from  this  list  that  are  required, 
the  less  the  savings  to  be  gained  by  using  this  PSP.   Also,  since  this 
PSP  may  communicate  with  the  front  end  system  at  the  level  of  the  user 
command  language  interface,  it  will  be  inappropriate  for  use  by  processes. 

The  File  Access  PSP  (see  appendix  2)  is  a  general  purpose 
protocol  that  facilitates  the  movement  of  files  or  bulk  data  among  the 
host,  the  front  end  and  the  network.   It  allows  the  host  to  access  the 
front-end's  file  system  or  vice  versa,  and  the  host  to  transfer  data 


12 


between  its  file  system  and  the  network.  The  File  Access  PSP  (FA-PSP) 
allows  the  user  to  access  any  point  in  a  file  and  supports  a  mechanism 
for  restarting  file  transfers.  This  mechanism  is  compatible  with  most 
File  Transfer  Protocols. 


13 


Offloading  the  Telnet  Protocol 

The  ARPANET  Telnet  protocol  provides  a  standard  method  for 
interfacing  terminals  and  terminal-oriented  processes  to  each  other. 
The  protocol  is  based  upon  three  ideas: 

1.  the  concept  of  a  Network  Virtual  Terminal  (NVT) , 

2.  the  principle  of  negotiated  options,  and 

3.  a  symmetrical  view  of  terminals  and  processes. 

When  a  Telnet  connection  is  established,  each  end  is  assumed 
to  terminate  in  an  NVT.   The  NVT  represents  a  canonical  terminal.   It 
was  designed  to  strike  a  balance  between  being  overly  restrictive  and 
overly  inclusive.   The  principle  of  negotiated  options  provides  the 
mechanism  by  which  terminals  and  processes  that  find  the  NVT  too  restric- 
tive may  enhance  its  properties  [23].   Such  options  include  changing  the 
echo  mode,  the  line  width,  or  the  page  size,  and  setting  tabstops.   For 
a  more  complete  description  of  the  protocol  and  the  current  options,  the 
reader  should  consult  references  [4-13,17,20,23-31,36,37]. 

In  most  systems  there  are  two  major  uses  of  the  Telnet  protocol. 
First,  it  is  used  as  a  general  terminal-oriented  communication  medium. 
Second,  a  host  may  have  a  local  interactive  program  (User  Telnet)  that 
uses  the  Telnet  protocol  to  connect  a  local  user  to  a  remote  host  as  if 
that  user  were  directly  connected  to  the  remote  host.   Those  aspects  of 
the  protocol  itself  that  may  be  offloaded  are  character  translation, 
connection  manipulation,  and  some  of  the  options.   The  User  Telnet 
application  program  in  a  user  host  may  offload  all  of  the  above  func- 
tions and  the  user  interface  to  the  User  Telnet  program.   The  section 
below  takes  a  closer  look  at  how  the  offloading  may  be  done. 


14 


Offloading  the  User  Telnet  Application 

There  are  three  basic  schemes  for  offloading  the  User  Telnet 
Application:   maximum  offloading,  placing  the  user  interface  in  the 
host,  and  placing  everything  in  the  host.   (See  table  1.) 


Scheme 

Functions 

Functions  in 

PSP's 

Number 

in  the  Host 

the  Front  End 

Used 

1 

Local  terminal  handling 

User  Interface 

PA-PSP 

Relay  Process 

Telnet 

Go-Aheads 

Connection  handling 

2 

User  Interface 

Telnet 

NVT-PSP 

Local  Terminal  Handling 

Connection  handling 

Relay  Process 

Go-Aheads 

3 

User  Interface 

Telnet 

Local  Terminal  Handling 

Relay  Process 

Go-Aheads 

Connection  Handling 

ARPA-HH 

Table  1.   User  Telnet  Offloading  Schemes 

For  the  maximum  offloading  scheme  (see  figure  2),  the  Program 
Access  PSP  is  used.   As  noted  above,  this  scheme  requires  a  "relay" 
process  in  the  host  to  move  data  between  the  user's  terminal  and  the 
program  access  service  (PAS)  module  in  the  front  end.   There  are  two 
disadvantages  to  this  scheme.   Firstly,  as  noted  above,  the  more  func- 
tions required  of  the  relay  process,  the  more  complex  the  relay  process 
must  be  and  the  less  that  might  be  saved.   In  fact,  the  relay  process 
may  become  so  complex  as  to  require  a  user  interface  for  requesting 
information  from  the  user.   This  is  exactly  the  part  of  Telnet  that  the 
PA-PSP  was  intended  to  offload.   Secondly,  processes  in  the  host  that 
wish  to  use  Telnet  must  use  a  human- oriented  interface.   This  may  be 
unwieldy  and  overly  complex,  and  in  some  cases  impossible.   In  these 
cases  the  Network  Virtual  Terminal  PSP  (NVT-PSP)  should  be  used. 


15 


cr3 


RELAY 
PROCESS 


HOST 


PROGRAM 
ACCESS 
MODULE 


FRONT   END 


c^Z] 


TELNET 

USER 

INTERFACE 


TELNET 


Figure  2 
Maximum  Offloading  of  User  Telnet 

In  order  to  support  some  Telnet  options,  the  relay  process  may 
have  to  map  them  into  local  terminal  parameters.   The  best  example  of 
such  a  case  is  a  system  that  wishes  to  support  the  remote  controlled 
transmission  and  echoing  (RCTE)  option.   When  the  option  is  negotiated, 
the  terminal  handler  in  the  host  must  be  notified  of  the  change  in 
echoing  and  transmission.   It  may  not  be  possible  to  handle  this  case  at 
all  with  the  PA-PSP  scheme,  but  the  NVT-PSP  is  capable  of  handling  it 
easily. 

The  Network  Virtual  Terminal  PSP  (see  appendix  4)  provides  the 
facilities  for  the  second  offloading  scheme  shown  in  table  1.   The  user 
interface  is  placed  in  the  host  and  uses  the  NVT-PSP  to  access  the  User 
Telnet  process  in  the  front  end.   (See  figure  3.)   The  only  problem 
created  by  this  scheme  is  that  two  possibly  incompatible  user  interfaces 
will  be  required,  one  in  the  front  end  and  one  in  the  host.   The  advantage 
of  this  scheme  is  that  it  provides  a  process-oriented  interface  to  the 


16 


TELNET 

USER 

INTERFACE 


HOST 


£3 


FRONT    END 


TELNET 

USER 

INTERFACE 


TELNET 


Figure  3 
Telnet  User  Interface  in  the  Host 

host  side.   Thus  programs  don't  have  to  decipher  responses  intended  for 
a  human.   Some  systems  may  use  both  the  maximum  offloading  scheme  (for 
the  high  use  User  Telnet  application)  and  the  NVT-PSP  for  use  by  resource 
sharing  programs.   Also,  systems  that  require  a  rather  complex  relay 
process  to  implement  the  PA-PSP  are  perhaps  better  off  using  just  the 
NVT-PSP.   Since  the  NVT-PSP  and  the  Telnet  protocol  are  both  symmetrical, 
the  details  of  using  this  scheme  to  offload  the  User  Telnet  application 
are  identical  to  the  offloading  of  the  Telnet  protocol  itself. 
Offloading  the  Telnet  Protocol  Implementation 

The  functions  of  the  Telnet  implementation  are  manipulating 
network  connections,  negotiating  Telnet  options,  mapping  between  local 
and  network  representations,  transmitting  data  over  connections,  han- 
dling special  control  functions,  and  interfacing  remote  terminals  so 
that  they  appear  as  local  terminals.   (Since  the  protocol  is  symmetrical, 
this  is  true  of  both  the  User  and  Server  sides).   The  offloading  scheme 


17 


represented  by  this  model  places  connection  manipulating  and  data  trans- 
mitting in  the  front  end.   The  interfacing  of  remote  terminals  so  that 
they  appear  as  local  terminals  must  be  done  in  the  host.   The  scheme  is 
flexible  in  that  the  remaining  functions  (option  negotiation,  special 
control  functions,  and  translation  between  local  and  network  representa- 
tions) may  be  implemented  in  either  the  front  end  or  the  host,  depending 
on  local  installation  constraints.   Typically  the  translation  will  be 
done  in  the  front  end. 

There  are  several  Telnet  control  functions  that  one  would  like 
to  consider  offloading.   These  are  Interrupt  Process,  Break,  Are  You 
There  and  Abort  Output.   Since  for  all  of  these  except  the  last  the 
effect  of  the  control  function  is  on  the  process  itself,  the  most  that 
can  be  done  is  to  ensure  that  the  control  function  arrives  at  the 
earliest  possible  moment.   This  is  done  by  sending  it  to  the  host  via 
the  out-of-band  EXECUTE  Command. 

In  the  case  of  Abort  Output  a  little  more  can  be  done.   When 
the  NVT  service  in  the  front  end  receives  an  Abort  Output  control  func- 
tion, it  should  pass  the  control  function  to  the  host  via  the  EXECUTE 
Command.   Since  this  HFP  Command  is  sent  out-of-band  with  respect  to  the 
data,  the  Abort  Output  will  be  sent  to  the  host  as  early  as  possible. 
The  front  end  can  then  respond  to  the  Abort  Output  control  function 
according  to  the  Telnet  protocol  by  sending  a  Host-Host  Protocol  INS 
command  associated  with  this  connection  to  the  remote  host,  flushing  any 
data  it  has  buffered  for  transmission  to  the  network  and  continuing  to 
flush  data  until  a  Telnet  Data  Mark  is  received  from  the  host.   The 
front  end  may  send  a  Telnet  Data  Mark  to  the  remote  system  as  soon  as  it 
has  flushed  all  queued  data  or  it  may  wait  for  the  Data  Mark  from  the 
host.   (If  it  does  the  former,  it  should  not  pass  the  Data  Mark  received 


18 


from  the  host  on  to  the  remote  system.)   When  the  host  receives  the 
Abort  Output  control  function,  it  should  flush  all  data  it  has  queued 
for  the  front  end,  and  send  a  Telnet  Data  Mark  to  the  front  end.   (Note: 
Neither  side  should  request  the  HFP  Channel  Protocol  to  flush  data.   The 
Telnet  protocol  states  that  an  Abort  Output  flushes  only  data,  not 
control  functions,  and  a  channel-level  flush  does  not  distinguish 
between  the  two.) 

An  installation  may  take  either  of  two  basic  approaches  to 
offloading  the  Telnet  Options.   It  may  offload  nothing,  in  which  case 
the  Telnet  service  in  the  front  end  need  only  reformat  the  data  stream, 
perhaps  do  character  translation,  and  handle  the  network  connections. 
Or,  the  installation  may  wish  to  offioad  as  much  as  possible  (given  its 
host's  characteristics)  in  which  case  the  front  end  must  also  be  able  to 
negotiate  and  execute  some  of  the  Telnet  options. 

Unfortunately,  it  is  not  possible  to  say  definitively  for  some 
of  the  Telnet  options  whether  they  should  be  offloaded  or  not.   Table  2 
can  be  used  as  a  guide  to  how  easily  the  various  options  may  be  offloaded. 

In  most  cases,  two  attributes  of  each  option  determine  whether 
or  not  it  can  be  offloaded: 

1.  An  option  may  or  may  not  affect  the  host's  terminal-handling 
parameters. 

2.  An  option's  taking  effect  may  or  may  not  require  synchroniza- 
tion with  a  particular  point  in  the  data  stream. 

If  an  option  affects  the  host's  terminal-handling  parameters, 
then,  although  some  of  its  processing  may  be  offloaded,  some  processing 
will  have  to  be  done  in  the  host. 

If  an  option  requires  synchronization  with  the  data  stream,  it 
may  be  very  difficult,  if  not  impossible,  to  offload. 


19 


Option  Name 

Telnet 
Option 
Num. 

Host 

Dep.? 

Coord 

w/Data 

Stream 

Can  be 
Offloaded? 

Approximate  Message  Size 

4 

no 

no 

yes 

Binary  Transmission* 

0 

yes 

yes 

no 

Byte  Macro* 

19 

yes 

yes 

yes 

Data  Entry  Terminal* 

20 

yes 

yes 

maybe 

Echo* 

1 

no 

yes 

no 

Extended  ASCII 

17 

no 

yes 

yes 

Logout* 

18 

yes 

no 

no 

Output  Carriage  Ret.  Dispos. 

10 

no 

no 

yes 

Output  Formfeed  Dispos. 

13 

no 

no 

yes 

Output  Horz.  Tab  Stops 

11 

yes 

no 

no 

Output  Horz.  Tab  Stops  Dispos. 

12 

no 

no 

yes 

Output  Linefeed  Dispos. 

16 

no 

no 

yes 

Output  Line  Width* 

8 

1 

no 

maybe 

Output  Page  Size* 

9 

1 

no 

maybe 

Output  Vert.  Tabstops 

14 

yes 

no 

no 

Output  Vert.  Tabstops  Dispos. 

15 

no 

no 

yes 

Reconnection 

2 

no 

yes 

yes 

RCTE* 

7 

yes 

yes 

no 

Status* 

5 

yes 

yes 

some 

Suppress  Go  Ahead* 

3 

no 

no 

yes 

Timing  Mark 

6 

yes 

yes 

no 

Table  2.   Classification  of  Telnet  Options 
Offloading  these  options  is  discussed  in  further  detail  in  the  text. 


20 


Table  2  lists  the  current  ARPANET  Telnet  options.   Those 
options  marked  with  an  asterisk  are  discussed  below  in  greater  detail. 
For  the  rest,  the  table  indicates  whether  they  can  be  offloaded.   Note 
that  all  options  that  are  not  supported  by  the  host  may  be  offloaded; 
i.e.,  the  front  end  can  refuse  negotiations  without  involving  the  host. 

Binary  Transmission.   In  most  cases,  this  option  cannot  be 
offloaded.   However,  the  fact  that  it  has  been  negotiated  may  be  of 
interest  to  the  service  module  in  the  front  end.   If  the  front  end  has 
been  doing  (or  normally  does)  some  translation  tasks  for  the  host,  it 
will  be  necessary  to  coordinate  the  beginning  of  binary  data  with  the 
cessation  of  such  translation. 

Byte  Macro.   If  this  option  is  supported  and  any  other  options 
or  functions  are  offloaded,  then  this  option  must  be  offloaded.   This 
option  provides  a  means  for  mapping  arbitrary  strings  into  one  byte. 
Therefore,  when  this  option  is  in  effect,  the  macro  expansion  must  take 
place  at  the  earliest  point. 

Data  Entry  Terminal  (PET) .   It  may  be  possible  to  offload  all 
or  part  of  this  option  depending  on  the  nature  of  the  host  system.   If 
the  host  supports  only  one  form  of  data  entry  terminal,  then  the  front 
end  can  map  many  DET  option  subcommands  into  the  form  required  by  the 
local  terminals  or  programs. 

Echo.   In  general,  it  is  not  possible  to  offload  this  option, 
since  the  process  in  the  host  which  is  connected  to  this  terminal  may 
wish  to  echo  characters  other  than  those  typed.   However,  there  are 
cases  where  it  might  be  desirable  if  the  front  end  did  handle  this 
option  for  certain  kinds  of  hosts. 

For  example,  consider  computers  that  support  only  half-duplex 
terminals,  such  as  IBM  360' s,  Burroughs  6700* s,  or  Honeywell  6000' s. 


Suppose  that  a  user  connects  to  such  a  host  and  asks  it  to  DO  ECHO.   It 
would  be  quite  reasonable  to  have  the  front  end  handle  the  echoing  and 
present  the  host  with  an  apparent  line- at- a- time  environment.   This 
would  avoid  many  of  the  difficulties  of  trying  to  fit  a  line-at-a-time 
system  into  a  character-at-a-time  mode. 

Output  Line  Width.   Once  again  the  decision  to  offload  this 
option  rests  heavily  on  how  line  width  regulation  is  enforced.   If  the 
regulation  of  line  width  is  done  by  simple  "line  folding",  then  this 
function  may  be  performed  by  the  front  end.   However,  if  regulating  line 
width  requires  more  fundamental  adjustments  or  more  sophisticated  action, 
it  is  quite  likely  that  it  will  not  be  possible  to  offload  this  option. 

Output  Page  Size.   The  decisions  that  are  relevant  for  off- 
loading this  option  are  similar  to  the  ones  described  for  output  line 
width.   Some  systems  may  interpret  the  regulation  of  page  size  as  fol- 
lows.  The  maximum  number  of  lines  in  a  page  is  sent.   If  there  is  still 
data  to  be  sent,  the  sender  pauses,  waiting  for  an  input  from  the  user 
indicating  that  he  is  ready  to  proceed.   If  this  is  the  sort  of  regula- 
tion desired  when  this  option  is  negotiated,  then  it  can  be  offloaded. 
However,  if  more  fundamental  adjustments  or  more  sophisticated  action  is 
required,  it  may  not  be  possible  to  offload  it. 

Remote  Controlled  Transmission  and  Echoing.   The  RCTE  option 
is  meant  as  a  more  general  mechanism  to  replace  the  Echo  option.   If 
RCTE  is  used  to  replace  the  Echo  option,  then  it  may  be  offloaded  under 
the  same  conditions  as  the  Echo  option.   Otherwise,  offloading  is  not 
possible  and  actually  defeats  the  purpose  of  the  RCTE  option. 

Status.   Since  not  all  options  may  be  offloaded,  it  is  neces- 
sary to  offload  part  of  the  Status  option  and  to  leave  part  of  it  in  the 
front  end.   It  is  suggested  that  the  Status  option  be  handled  in  the 
following  way: 

22 


When  the  service  module  in  the  front  end  receives  a  Status 
option  negotiation,  it  will  respond  favorably  to  the  request  by  sending 
a  WILL  STATUS  to  the  sender.   It  will  then  relay  the  option  to  the  host 
in  the  normal  manner  and  wait  for  a  response  from  the  host.   When  the 
host  receives  the  DO  STATUS  command  from  the  front  end,  it  will  transmit 
back  to  the  front  end  the  subnegotiation  specifying  the  state  of  the 
options  it  handles.   When  this  subnegotiation  is  received  by  the  front 
end,  it  will  insert  into  this  subnegotiation  the  status  of  the  options 
it  handles  and  then  it  will  send  the  completed  subnegotiation  to  the 
foreign  host. 

If  no  options  are  supported  in  the  host  or  if  no  options  are 
supported  in  the  front  end,  then,  of  course,  this  procedure  may  be 
avoided  and  the  whole  operation  done  in  the  front  end  or  in  the  host, 
respectively.   Also,  it  is  possible  for  the  front  end  to  know  what 
options  are  not  supported  and  supply  the  default  status  information. 

Suppr ess-Go-Ahead.   In  a  sense,  the  Suppress-Go-Ahead  option 
is  always  off loadable.   If  the  host  always  generates  go-aheads,  then  it 
is  no  problem  for  the  front  end  to  filter  them  out  when  the  option  is 
negotiated.   However,  it  is  impossible  for  the  front  end  to  insert  go- 
aheads. 

Telnet  "Synch"  Sequences.   In  some  cases,  searching  for 
"interesting"  characters  in  the  data  stream  may  be  offloaded.   For 
example,  if  the  only  characters  deemed  "interesting"  are  the  Telnet 
special  characters,  then  this  function  may  be  offloaded.   Or  the  front 
end  may  be  provided  with  a  list  (on  either  a  static  or  dynamic  basis)  of 
strings  to  be  searched  for.   However,  even  if  these  functions  are 
performed  in  the  front  end,  they  must  also  be  done  in  the  host  before 
the  "synch"  sequence  is  received.)   The  only  reason  for  offloading  this 
function  is  to  increase  the  response  to  the  user's  request. 

23 


Offloading  the  File  Transfer  Protocol 

The  ARPANET  File  Transfer  Protocol  (FTP)  [21,22]  consists  of 
two  major  sections:   a  command-and-response  section  called  the  Protocol 
Interpreter  (PI)  and  a  data  transfer  section  called  the  Data  Transfer 
Process  (DTP).   The  model  used  in  the  FTP  specification  is  shown  in 
figure  4.   The  Telnet  protocol  is  used  to  control  the  character-oriented 
command  connection.   Commands  are  sent  from  the  User  FTP  module  to  the 
Server  FTP  module.   These  commands  consist  of  a  verb  and  single  parameter. 
The  commands  may  be  divided  into  three  major  classes: 

1.  access  control  commands  (USER,  PASSWORD,  etc.), 

2.  transfer  parameter  commands  (TYPE,  MODE,  etc.),  and 

3.  service  commands  (RETRIEVE,  STORE,  DELETE,  etc.). 


USER   FTP 

-  "I 

r  ■ 

SERVER    FTP 

r~ 

USER 
INTERFACE 

OPERATIONS 

FTP 
PI 

USER 
TELNET 

SERVER 
TELNET 

FTP 
PI 

TO  FILE 
SYSTEM 

1          DATA 
1          FROM 

DATA 
TO 

1          FILE 
SYSTEM 

DTP 

DATA  CONNECTION 

DTP 

FILE 
SYSTEM 

_  J 

L  _ 

1 

Figure  4 
ARPANET  FTP  Model 


24 


The  Server  FTP  module  responds  to  each  command  with  one  or  more  FTP 
replies.   A  reply  consists  of  a  three  digit  code  called  a  reply  code  and 
one  or  more  lines  of  text.   The  reply  code  makes  the  replies  useful  to 
programs,  while  the  text  makes  available  more  complete  information  to  a 
human  user. 

The  transfer  parameter  commands  are  used  to  coordinate  the 
mechanism  for  transferring  the  data,  and  to  describe  the  format  of  the 
data  to  be  transferred.   Once  these  parameters  have  been  agreed  on,  the 
User  and  Server  FTP's  open  a  separate  connection  for  transferring  the 
data.   This  is  loosely  referred  to  as  the  data  transfer  process  or  DTP. 

There  are  two  major  aspects  of  FTP  that  are  candidates  for 
offloading:   the  transfer  restart  mechanism  and  the  data  transfer  pro- 
cess.  Although  restart  does  require  direct  manipulation  of  the  file  and 
this  function  cannot  be  offloaded,  there  is  a  fair  amount  of  restart 
marker  "bookkeeping"  that  must  be  done.   The  front  end  can  keep  track  of 
the  markers  and  the  position  they  correspond  to  in  the  local  file.   The 
primary  functions  of  the  data  transfer  process  are  manipulating  the 
data  connection  and  doing  any  translation  of  the  data  into  a  form  suit- 
able for  storage  in  the  local  file  system  or  for  sending  to  the  remote 
site.   Offloading  this  translation  function  also  means  that,  in  most 
cases,  the  transfer  parameter  commands  that  are  used  to  define  the 
translation  may  be  offloaded  as  well.   Offloading  translation  should 
provide  considerable  savings  to  hosts  which  transfer  data  to  or  from 
computers  unlike  themselves,  especially  if  the  front  end  has  efficient 
bit-level  operations. 

The  User  and  Server  FTP  offloading  models  described  here  use 
the  File  Access  PSP  to  offload  the  data  transfer  portion  of  the  FTP.   We 
will  note  some  of  the  properties  of  this  File  Access  PSP  as  we  describe 


25 


the  models.   We  complete  this  section  with  a  review  of  the  requirements 
for  the  File  Access  Service. 

For  systems  that  don't  allow  access  to  FTP  from  terminals 
attached  to  the  host,  the  File  Access  Service  (FAS)  module  is  the  only 
portion  of  software  for  a  User  FTP  that  must  be  in  the  host. 

If  file  systems  are  supported  in  both  the  host  and  the  front 
end,  then  some  way  must  be  provided  to  distinguish  a  pathname  as  be- 
longing to  one  or  the  other.   Since  remote  filenames  are  the  only  ones 
sent  as  parameters  in  the  FTP  commands,  an  offloaded  User  FTP  in  a 
system  with  files  in  both  the  front  end  and  the  host  only  needs  some 
local  mechanism  in  the  user  interface  for  distinguishing  the  two  file 
systems.   Given  this  information  as  part  of  a  command,  the  FTP  user 
interface  or  protocol  interpreter  can  access  the  correct  open  file. 
However,  when  an  offloaded  Server  FTP  which  serves  file  systems  in  both 
the  front  end  and  the  host  is  involved,  some  property  of  the  pathname 
transferred  in  the  data  transfer  command  must  be  used  to  indicate  where 
the  file  is.   Several  techniques  might  be  used.   The  pathname  might  be 
prefixed  with  the  characters  HOST  or  FRONT  END  to  indicate  where  the 
file  is.   The  front  end  might  have  a  partial  copy  of  the  host's  file 
system  directory  indicating  which  files  are  where.   Or,  a  non-technique 
might  be  used:   attempt  to  access  the  pathname  on  the  front  end;  if  the 
attempt  fails,  try  to  access  it  on  the  host. 
Offloading  the  User  FTP 

We  have  identified  eight  distinct  schemes  for  offloading  User  FTP. 
These  are  summarized  in  Table  3  and  described  in  detail  in  this  section. 

1.   Maximum  offloading.   This  scheme  is  analogous  to  the 
maximum  User  Telnet  offloading  scheme.   As  shown  in  figure  5,  this  model 
uses  the  Program  Access  Service  (PAS)  to  provide  a  full  duplex  path  to 
the  User  FTP  in  the  front  end.   The  File  Access  Service  (FAS),  which  may 

26 


Scheme 

Functions 

Functions  in 

PSP's 

Number 

in  the  Host 

the  Front  End 

Used 

1 

Relay  Process 

User  Interface 

PA-PSP 

FAM 

FTP-PI 

PTP-DTP 

Telnet 

Host-Host 

Restart 

FA-PSP 

2 

FTP  User  Interface 

FTP-PI 

FTP-PSP 

FAM 

FTP-DTP 
Telnet 
Host-Host 
Restart 

FA-PSP 

3 

FTP  User  Interface 

FTP-DTP 

UT-PSP 

FTP-PI 

Telnet 

FA-PSP 

FAM 

Host-Host 

Restart 

4 

FTP  User  Interface 

FTP-DTP 

ARPA-HH 

FTP-PI 

Host-Host 

FA-PSP 

FAM 

Telnet 

Restart 

5 

FTP-DTP 

User  Interface 

PA-PSP 

Relay  Process 

FTP-PI 
Telnet 
ARPA-HH 
Restart 

FA-PSP 

6 

User  Interface 

FTP-PI 

FTP-PSP 

FTP-DTP 

Telnet 

ARPA-HH 

Restart 

FA-PSP 

7 

FTP-DTP 

Telnet 

UT-PSP 

User  Interface 

ARPA-HH 

ARPA-HH 

FTP-PI 

Restart 

8 

FTP-DTP 

User  Interface 

FTP-PI 

Telnet 

ARPA-HH 

ARPA-HH 

Table  3.   User  FTP  Offloading  Schemes 


C 

P 
M 

C 

P 
M 

^^ — 1 

RELAY 
PROCESS 

PROGRAM 
ACCESS 
MODULE 

USER 
FTP 

DTP 

r      1 — 

r 

FILE 
ACCESS 
MODULE 

i 
1 

FILE 
ACCESS 
MODULE 

1 

HOST 

FRONT   END 

Figure  5 
Maximum  User  FTP  Offloading 

be  synonymous  with  the  data  transfer  process  of  the  FTP,  is  used  to  move 
the  data  to  the  proper  file  in  the  host.   The  FAS  module  must  be  able  to 
log  a  user  into  the  host,  open  a  file,  read  or  write  to  it,  abort  a 
transfer  cleanly,  handle  restart  reporting  and  positioning,  return  error 
conditions  on  access,  etc. 

With  this  scheme,  the  PAS  in  the  host  and  the  FAS  in  the  host 
are  completely  independent.   Any  decision  to  transfer  a  file  and  thus 
use  the  FA-PSP  is  recognized  only  by  the  User  FTP  in  the  front  end. 
Thus,  use  of  the  FA-PSP  is  initiated  by  the  front  end.   There  are 
several  ways  to  handle  this:   1)  the  host  can  always  have  a  BEGIN 
Command  outstanding  for  a  connection  to  the  FAS,  or  2)  the  front  end  can 
send  a  BEGIN  Command  to  the  host  requesting  service.   The  first  case  is 
analogous  to  the  mechanism  used  in  the  Network  Virtual  Terminal  PSP. 
However,  there  is  one  major  difference.   The  user  of  the  FA-PSP  must  be 
logged  in  to  the  host  in  order  to  access  the  file.   In  order  to  minimize 


28 


the  amount  of  negotiation  required  before  a  transfer  can  commence,  the 
BEGIN  Commands  should  probably  go  to  the  host. 

The  other  major  requirements  for  this  scheme  are  that  the  FAS 
module  must  be  able  to  report  back  to  the  User  FTP  in  the  front  end  that 
all  records  on  bytes  preceding  a  restart  marker  have  been  actually 
written  onto  the  file,  and  that  the  service  in  the  front  end  must  be 
able  to  translate  a  marker  into  a  local  file  position  in  the  event  a 
restart  is  required. 

2.   FTP  user  interface  in  the  host.   This  scheme  moves  the  FTP 
user  interface  into  the  host.   (See  figure  6.)   Several  advantages 
result  from  this  configuration.   First,  since  the  user  interface  knows 
when  the  user  has  requested  a  transfer,  it  may  initiate  the  FA-PSP. 
This  strategy  avoids  the  necessity  of  sending  BEGIN  Commands  to  the 
host.   The  FA-PSP  would  use  the  "channel"  connection  type  (see  appendix  3) 
to  open  the  data  connection  on  the  default  transfer  sockets.   For  similar 
reasons  the  protection  problem  encountered  in  the  above  model  (i.e.,  the 
user's  having  to  log  in  to  the  host)  is  avoided.   However,  if  the  file 
is  in  the  front  end's  file  system,  the  user  may  have  to  log  in  to  the 
front  end.   This  would  depend  on  the  particular  security  and  protection 
arrangements. 

Restart  bookkeeping  can  be  done  in  either  the  host  or  the 
front  end.   If  done  in  the  host  the  FAS  module  in  the  host  must  be  able 
to  pass  information  to  the  user  interface  to  inform  the  user  of  the 
markers.   However,  if  the  restart  management  is  done  in  the  front  end, 
the  same  mechanisms  described  above  apply. 

If  there  is  no  file  system  in  the  front  end,  then  the  FTP-PI 
has  very  little  to  do  except  act  as  a  relay  for  commands  and  responses 
and  initiate  the  data  transfer  process  (DTP);  the  user  interface  can 


29 


t^3 


HOST   FILE 
SYSTEM 


FTP 

USER 

INTERFACE 


FILE 
ACCESS 
MODULE 


HOST 


USER 
INTERFACE 


FTP 
PI 


DTP/ FA 
MODULE 


FRONT  END 


CT3 


NETWORK 


Figure  6 
FTP  User  Interface  in  the  Host 

generate  the  actual  FTP  commands.   If  a  file  system  does  exist  in  the 
front  end,  then  the  user  interface  must  be  able  to  tell  the  DTP  (or  the 
DTP  must  be  able  to  determine)  in  which  file  system  the  file  to  be 
accessed  resides. 

The  major  disadvantage  to  this  scheme  is  that  two  user  inter- 
faces are  required  to  the  FTP-PI  (one  in  the  host  and  one  in  the  front 
end),  and  there  is  every  likelihood  that  they  will  not  be  the  same. 

The  functions  offloaded  by  this  scheme  are  connection  handling, 
User  Telnet,  protocol  state  management,  the  DTP,  and  possibly  restart. 

3.   Telnet  and  Data  Transfer  in  the  FE.   This  scheme  (see 
figure  7)  primarily  offloads  the  Telnet  and  data  formatting  functions. 
It  is  necessary  that  the  FTP-PI  be  able  to  explicitly  coordinate  the 
data  connection  with  the  Telnet  connection  or  always  use  the  SOCK 


30 


r^ 


FTP 
PI 

USER 
INTERFACE 

=y- 

rn 

C 

P 

M 

C 

P 
M 

USER 

FTP 
PI 

USER 
TELNET 

YTERFACE 

J— 

^ 

t 

NETWORK 

\ 

M 

ST   FILE 

FILE 
ACCESS 
MODULE 

DTP/FA 
MODULE 

YSTEM 

HOST 

FRONT   END 

Figure  7 
Telnet  and  Data  Transfer  in  the  FE 

command.   If  the  PA-PSP  is  used  to  access  Telnet  then  the  FTP-PI  must  be 
able  to  specify  the  contact  socket  to  the  Telnet  user  interface  and  it 
must  also  be  able  to  manipulate  the  human-oriented  Telnet  interface. 
This  is  probably  a  good  candidate  for  using  the  Network  Virtual  Terminal 
PSP. 

There  must  be  communication  between  the  FTP-PI  and  the  FAS 
in  the  host  to  specify  the  mode,  type,  etc.,  that  will  be  used  for  the 
transfer.   The  most  reasonable  way  to  handle  this  is  to  pass  the  infor- 
mation through  the  FAS  module  in  the  host. 

Although  restart  management  could  be  handled  in  the  front  end, 
it  seems  to  be  overly  complex  to  consider  such  an  assignment.   (The  host 


31 


FAS  module  would  have  to  tell  the  front-end  FAS  module  that  data  had 
been  written.   Then  the  front  end  would  have  to  pass  that  information  to 
the  user  back  through  the  FAS  module.)   Thus,  it  seems  most  reasonable 
to  assume  that  restart  would  be  done  in  the  host  for  this  model.   Restart 
management  in  the  host  could  be  done  without  additional  complexity  in 
the  FA-PSP.   All  that  would  be  required  would  be  for  the  restart  report 
to  be  channelled  to  the  FTP-PI  in  the  host  rather  than  to  send  it  back 
to  the  front  end. 

This  model  requires  two  user  interfaces  and  two  FTP-PI' s  if 
access  is  allowed  through  the  front  end  and  the  host.  Problems  might 
arise  since  these  may  be  significantly  different. 

4.  Data  Transfer  in  the  Front  End.   In  essence,  this  model 
(see  figure  8)  merely  offloads  some  of  the  connection  manipulation  and 
data  translation  and  re-formatting.   Again  it  is  necessary  that  the  FTP- 
PI  in  the  host  and  FAS  module  in  the  front  end  be  able  to  communicate. 
This  would  be  done  through  the  FAS  module.   It  is  also  necessary  for  the 
FTP-PI  to  be  able  to  coordinate  its  control  connection  with  the  data 
connection  opened  by  the  FAS  or  to  use  the  FTP  SOCK  command.   If  a  file 
system  exists  on  the  front  end  then  it  may  be  necessary  for  the  FAS 
module  in  the  host  to  log  in  to  the  front  end  on  behalf  of  the  user. 

Data  Transfer  in  the  Host.   There  is  a  variation  of  each  of 
the  above  offloading  models  that  puts  the  data  transfer  process  in  the 
host.   We  will  consider  each  one  in  turn: 

5.  Only  DTP  in  the  host.   This  scheme  (see  figure  9)  has  many 
of  the  same  problems  as  its  counterpart  (scheme  1) .   Since  the  relay 
process  is  independent  of  the  DTP,  the  front-end  side  of  the  FAS  must  log 
in  to  the  host.   Thus  BEGIN' s  will  generally  go  to  the  host.   In  this 
case,  however,  more  information  (mode,  type,  etc.)  must  be  sent  to  the 


32 


-IS 

CO 

£U 

o 

h- 

X 

(-« 

to>: 

o<f> 

X 

33 


C 

P 
M 

C 

P 
M 

^ 1 

RELAY 
PROCESS 

USER 
INTERFACE 

FTP 
PI 

^        u 

^       ' 

^           ' 

r 

DTP/ FA 
MODULE 

* > 

FA 
MODULE 

u 

ncT 

CDftMT     CTMH 

Figure  9 
Data  Transfer  in  the  Host 

host  before  the  transfer  can  commence.   Of  course,  the  DTP  must  be  able 
to  report  restart  markers  back  to  the  front  end. 

6.  User  interface  and  DTP  in  the  host.   This  scheme  exhibits 
most  of  the  advantages  of  its  counterpart.   The  DTP  can  be  initiated  by 
the  host,  thus  solving  several  problems.   Restart  management  can  be 
handled  by  either  side.   The  front-end  side  of  the  FAS  becomes  very 
simple,  since  mode,  type,  etc.,  parameters  could  be  supplied  by  the  user 
interface. 

7.  Telnet  in  the  front  end.   The  only  problem  this  variation 
presents  is  coordinating  the  Telnet  connection  and  the  data  connection 
if  the  default  sockets  are  used. 

8.  Nothing  is  offloaded.   Everything  is  done  through  the  ARPA 
Host-Host  PSP  [13].   If  a  file  system  exists  in  the  front  end,  it  will 
be  necessary  to  duplicate  the  DTP  in  the  front  end.   Thus,  in  systems 
where  file  systems  exist  in  both,  it  is  probably  not  worthwhile  to 
consider  models  with  the  DTP  in  the  host. 

34 


The  question  may  occur  to  some,  why  consider  putting  the  DTP 
in  the  host  at  all?   The  best  example  would  be  a  situation  where  the 
front-end's  instruction  set,  although  very  well  suited  for  message 
switching,  is  not  well-suited  to  the  kind  of  bit-manipulations  done  by 
the  DTP.   In  such  a  case,  considerable  savings  may  be  gained  by  putting 
the  DTP  in  the  host. 
Offloading  the  Server  FTP 

Unlike  the  situation  for  User  FTP,  the  offloading  of  Server 
FTP  does  not  follow  the  clear  functional  lines  of  the  FTP  model.   We 
will  use  the  model  shown  in  figure  10  as  a  basic  framework  for  the 
descriptions  of  offloading  Server  FTP.   This  model  can  be  used  to 
represent  virtually  all  of  the  FTP  offloading  schemes.   For  the  present, 
we  have  placed  the  DTP  functions  of  translating  and  reformatting  the 
data  in  the  front  end.   Although  these  functions  could  be  assigned  to 
the  host  (see  User  FTP  scheme  5),  the  most  likely  assignment  is  to  the 
front  end.   We  will  consider  this  case  later.   The  schemes  described  in 
this  section  also  use  a  File  Access-PSP  to  move  data  into  the  host.   The 
requirements  for  this  FA-PSP  are  virtually  identical  to  the  one  described 
above. 

Offloading  Server  FTP  is  complicated  somewhat  by  the  fact  that 
a  file  system  may  exist  on  both  the  host  and  the  front  end.   For  the 
Server  FTP  this  means  that  some  well  publicized  convention  for  dis- 
tinguishing these  two  file  systems  may  be  required  in  the  pathname. 

Interestingly  enough,  when  allocating  functions  between  the 
host  FTP-PI' s  and  the  FAS  module,  the  division  appears  to  be  that  file 
management  functions  are  performed  by  the  FTP-PI  and  file  transfer 
functions  are  performed  by  the  FAS  module. 


35 


C 

P 
M 

C 

P 
M 

FTP 
PI 

FTP 
PI 

"- 

>■ 

^ 

FA 
MODULE 

DTP/FA 
MODULE 

HOST 

FRONT    FMn 

Figure  10 
Server  FTP  Offloading 

Thus,  for  FTP  sessions  that  perform  operations  on  the  host 
file  system,  the  following  functions  must  be  in  the  host  FTP-PI  (see  table  4) : 
RENAME 
DELETE 
SITE 

STATUS  <arg> 
LIST 

NAME-LIST 
ALLOCATE 

Depending  on  the  particular  host  operating  system,  it  may  not 
be  possible  to  assign  the  last  three  commands  of  this  list  to  the  host 
FTP-PI.   The  LIST  and  NAME-LIST  commands  use  the  data  connection  to 
transfer  their  results  to  the  user.   Some  operating  systems  may  require 
that  these  functions  be  done  by  the  host  FTP-PI;  but  some  implementations 
may  require  that  access  to  the  data  connection  be  gained  only  through 
the  host  FA-PSP.   Similarly,  hosts  which  require  an  allocate  before 


36 


APPEND 

RETRIEVE 

STORE 

ALLOCATE 

SITE 

RENAME  TO 

STATUS   arg 

RENAME  FROM 

LIST 

DELETE 

NAME-LIST 

Replies  tc 

all 

of 

the  above 

FTP  Commands  that  Must  Be  Done  in  the  Host 


USER 

ACCOUNT 

PASSWORD 

REINITIALIZE 

BYE 

BYTE 

SOCKET 

PASSIVE 

TYPE 

STRUCTURE 

MODE 

RESTART 

STATUS 

HELP 

NOOP 

ABORT 

Replies 

for 

all  of 

these  Commands 

FTP  Commands  that  Can  Be  Offloaded 


Table  4.   Offloading  Server  FTP 


37 


accepting  a  file  may  be  better  able  to  handle  it  if  it  is  done  through 
the  FAS.   The  FTP  commands  for  user  authentication  (USER,  PASS,  and  ACCT) 
may  or  may  not  be  offloaded  depending  on  the  security  policy  arrangement 
between  the  host  and  the  front  end. 

Although  the  FTP-PI  in  the  host  must  report  the  success  or 
failure  to  the  FTP-PI  in  the  front  end,  it  might  be  reasonable  for  the 
host  to  generate  a  highly  encoded  reply  and  the  front  end  to  generate  a 
"proper"  FTP  reply.   For  configurations  that  support  file  systems  on 
both  the  host  and  front  end,  this  strategy  has  the  added  advantage  of 
presenting  a  common  reply  repertoire  to  the  network.   The  feasibility  of 
this  mechanism  will  depend  heavily  on  the  particular  host  and  front  end. 

Given  that  these  functions  must  be  done  in  the  host,  let  us 
consider  the  ones  that  may  be  in  the  front  end: 

Access  Control  Commands, 

Transfer  Parameter  Commands, 

RETRIEVE,  STORE,  APPEND,  RESTART, 

ABORT,  HELP,  STATUS,  and 

replies  for  all  of  the  above. 

It  is  not  clear  just  how  much  of  the  Access  Control  Commands 
(i.e.,  USER,  PASS,  and  ACCT)  can  be  done  in  the  FE.   This  will  depend  on 
the  log-in  arrangement  between  the  front  end  and  the  host.   It  is  possible 
that  a  successful  log  in  to  the  front  end  is  equivalent  to  a  successful 
log  in  to  the  host.   Or  the  front  end  may  have  to  log  the  user  into  the 
host  by  initiating  a  host  FTP-PI  in  the  user's  name  before  indicating 
success  or  failure  of  the  attempt. 

All  of  the  Transfer  Parameter  Commands  can  be  offloaded. 
These  commands  affect  the  format  and  encoding  of  the  data  for  trans- 
mission and  the  manipulation  of  the  data  connection.   It  should  be  noted 


38 


that  if  these  commands  are  not  handled  in  the  same  machine  as  the  DTP, 
then  some  means  must  be  provided  for  communicating  their  values  to  the 
DTP  or  FAS.   The  DTP  should  be  tailored  to  individual  systems  to  trans- 
late the  data  from  the  transmission  form  (determined  by  the  MODE,  TYPE, 
STRUCTURE,  and  BYTE  commands)  to  a  form  acceptable  to  the  host.   (Such 
translations  must  be  invertible.) 

Because  data  transfers  are  accomplished  by  using  the  FA-PSP, 
it  is  possible  to  do  some  of  the  processing  of  the  RETRIEVE,  STORE, 
APPEND,  and  RESTART  commands  in  the  front  end.   The  front-end  FTP-PI  can 
interpret  the  command,  initiate  the  file  access  process,  and  re-format 
its  responses  into  standard  FTP  replies. 

It  is  also  possible  for  the  HELP  command  to  be  done  in  the 
front  end.   Since  the  only  function  of  this  command  is  to  return  text 
explaining  the  local  effects  of  FTP  commands  and  implementation  pecu- 
liarities, there  is  no  reason  this  text  cannot  be  stored  in  the  front 
end. 

There  are  two  forms  of  the  STATUS  command.   One  has  a  pathname 
argument  and  returns  information  on  a  particular  file.   For  files  on  the 
host,  this  command  cannot  be  offloaded.   The  other  form  of  the  command 
does  not  have  an  argument  and  returns  the  status  of  a  transfer  that  is 
in  progress,  or,  if  no  transfer  is  in  progress,  the  current  value  of  all 
transfer  parameters  and  the  status  of  all  connections.   This  function 
can  be  offloaded  to  the  front  end. 

The  last  major  aspect  of  offloading  FTP  is  handling  restart 
markers.   There  are  two  main  cases  to  consider:   data  going  out  to  the 
net  and  data  coming  in  from  the  net.   Let  us  first  consider  data  moving 
out.    If  the  front  end  can  exert  enough  addressing  control  through  the 
FA-PSP,  it  is  possible  to  allow  the  FAS  in  the  front  end  to  insert  the 


39 


restart  markers,  thus  offloading  this  function  from  the  host.   The  only 
requirement  is  that  the  FAS  in  the  front  end  be  able  to  address  the  same 
point  in  the  file  when  given  the  restart  marker  and  commence  the  transfer 
at  that  point.   If  this  is  not  possible  then  these  functions  must  be  in 
the  host. 

For  data  coming  into  the  host,  it  is  necessary  for  the  Server 
FTP  to  be  able  to  report  to  the  User  FTP  when  the  data  associated  with  a 
particular  marker  has  been  entered  into  the  file,  and  to  associate  with 
the  user-specified  markers  a  locally  generated  marker  that  can  be  used 
to  restart  the  transfer  at  this  point. 

A  restart  function  can  be  provided  in  two  ways:   either  the 
FAS  in  the  host  can  report  the  markers  to  the  host  FTP-PI,  or  they  can 
be  sent  back  to  the  FAS  in  the  front  end  and  reported  to  the  front-end 
FTP-PI.   If  the  latter  approach  is  used,  the  FAS  in  the  front  end  could 
generate  the  local  markers  and  send  these  to  the  remote  host,  while  the 
front-end  FTP-PI  handles  the  marker  bookkeeping.   If  it  is  not  possible 
for  the  FAS  in  the  front  end  to  assign  markers,  then  it  must  be  done  by 
the  host. 
The  File  Access  Process-to-Service  Protocol 

In  each  of  the  models  just  described  we  have  postulated  a 
utility  for  moving  files  between  the  host  and  the  front  end.   In  this 
section,  we  will  review  the  operations  that  such  a  utility  must  be  able 
to  perform  and  discuss  some  of  the  problems  involved  in  its  design.   The 
FA-PSP  resembles  the  Bulk  Transfer  Facility  described  by  [32]  for  EIN 
or  the  File  Access  Protocol  [15].   In  the  models  described  above,  we 
have  indicated  that  the  Data  Transfer  Process  of  FTP  should  be  asso- 
ciated with  one  side  of  the  FA-PSP.   Typically,  the  front-end  imple- 
mentation would  perform  the  DTP  functions,  including  the  transformation 


40 


of  data  from  the  network  format  to  a  form  acceptable  to  the  host.   The 
host  side  typically  would  ensure  that  the  data  was  written  to  or  read 
from  the  proper  file. 

The  front  end  must  be  able  to  request  that  the  host  perform 
the  following  operations: 

open  a  file, 

read  data  from  the  file, 

write  data  to  a  file, 

start  a  transfer  from  some  point  in  the  file  (for  restarts), 

append  to  a  file  (this  is  a  special  case  of  the  last  point), 

close  a  file,  and 

abort  a  transfer. 
Some  systems  may  also  require  the  FAS  module  to 

allocate  space  for  a  file,  and 

provide  directory  information. 

In  addition,  the  FAS  module  in  the  host  must  be  able  to  pro- 
vide a  sufficiently  rich  set  of  responses  to  allow  reasonable  FTP 
replies  to  be  generated  by  the  FTP-PI.   The  FAS  module  must  also  be  able 
to  report  to  either  the  host  or  front-end  FTP-PI  that  all  data  ahead  of 
a  restart  marker  have  been  written  on  the  file.   Some  implementations 
may  wish  to  have  the  front-end  side  generate  restart  markers  for  out- 
going data.   However,  if  marker  assignment  requires  knowledge  of  the 
data  (i.e.,  record  boundaries,  etc.)  it  may  have  to  be  done  in  the 
host. 

A  major  concern  in  the  use  of  the  FA-PSP  is  how  access  control 
is  to  be  provided.   The  most  obvious  solution  is  to  have  the  FA-PSP 
"log-in"  to  the  host  on  behalf  of  the  user  who  initiated  this  session. 
This  raises  the  question  of  whether  or  not  there  are  separate  usercodes 


for  the  host  and  the  front  end.   As  long  as  the  only  file  system  being 
accessed  is  in  the  host,  there  is  really  no  problem.   The  real  diffi- 
culties arise  when  there  are  file  systems  in  both  host  and  front  end,  so 
that  it  may  be  desirable  to  have  separate  usercodes.   For  the  time 
being,  resolution  of  this  problem  will  have  to  be  left  as  an  installa- 
tion policy  decision. 

Unlike  most  PSP's,  the  FA-PSP  maintains  two  major  communica- 
tion channels.   On  the  one  hand  there  must  be  a  channel  for  the  data 
that  are  moving  between  the  host  and  the  network,  and  on  the  other  hand 
there  must  be  a  channel  for  control  and  state  information  to  be  passed 
to  either  the  host  or  front-end  FTP-PI.   In  the  FA-PSP  all  data  is  sent 
via  TRANSMIT  Commands  and  all  Control  information  is  sent  via  EXECUTE 
Commands. 


42 


Offloading  the  Network  RJE  Protocol 

This  part  of  the  study  uses  the  ARPANET  RJE  Protocol  (NETRJE) 
as  a  basis  for  discussion.   Although  other  RJE  protocols  have  been 
devised  (the  UCLA-CCN  NETRJS  [1]  and  the  one  proposed  by  Day  and 
Grossman  [14]),  the  major  points  that  must  be  considered  are  well 
illustrated  by  the  ARPANET  protocol. 

The  ARPANET  NETRJE  protocol  [2]  is  built  on  top  of  the  Telnet 
and  File  Transfer  Protocols.   By  means  of  the  User  NETRJE  program  on  his 
local  host,  a  user  of  NETRJE  establishes  a  Telnet  connection  to  a  Server 
NETRJE  process  at  the  host  where  he  wishes  to  submit  a  job.   (See  figure 
11.)   The  user  then  sends  to  the  Server  process  appropriate  commands  to 
log  in,  to  describe  where  the  job  is  that  is  to  be  submitted,  to  describe 
how  the  job  is  to  be  transferred,  and  to  describe  what  is  to  be  done 
with  the  output  when  the  job  is  completed.   The  Server  NETRJE  process  on 
the  foreign  host  then  uses  its  User  FTP  program  to  transfer  the  input 
file  to  the  foreign  host,  and  then  may  use  FTP  again  later  to  send  the 
output  back  to  the  user.   This  protocol  is  very  general  and  allows  a 
user  to  submit  his  input  from  one  host,  process  it  at  a  second,  and  send 
the  output  to  a  third. 
Offloading  the  User  RJE 

For  User  NETRJE,  the  only  offloading  scheme  (see  figure  12) 
that  is  at  all  interesting  uses  the  PA-PSP  to  get  to  the  NETRJE  user 
interface.   (A  scheme  could  be  constructed  that  put  the  user  interface 
in  the  host.   Such  a  scheme  would  then  use  Telnet  either  through  the  PA- 
PSP,  which  would  require  some  command- language  emulation,  or  through  the 
Network  Virtual  Terminal  PSP.   In  either  case,  the  resulting  models  are 
simplified  versions  of  those  considered  in  the  User  FTP  section  above.) 


43 


TELNET 
CONNECTION 


FTP    CONTROL 
CONNECTION 


FTP    DATA 
CONNECTION 


OR  CARD 
READER 


Figure   11 
The  Model   of    the  ARPANET   RJE   Protocol 


TO    LOCAL 
RJE 


c^3 


RELAY 
PROCESS 


HOST 


PROGRAM 
ACCESS 
MODULE 


RJE 

USER 

INTERFACE 


USER 
TELNET 


FRONT   END 


Figure  12 
User  RJE  Offloading 


44 


Most  of  the  offloading  that  can  be  accomplished  for  NETRJE 
consists  of  the  offloading  of  FTP.   However,  for  an  offloaded  FTP  that 
uses  the  FA-PSP,  there  is  an  additional  facility  that  the  FA-PSP  must 
have  in  order  to  be  used  with  NETRJE.   Since  the  remote  host  will  use 
FTP  to  retrieve  input  and  store  output,  the  FA-PSP  should  be  able  to 
access  the  card  readers  (or  their  agents)  for  input  requests  and  to 
access  line  printers  or  spooling  queues  for  disposing  of  output. 
Offloading  the  Server  RJE 

There  is  some  difficulty  in  determining  exactly  how  much  of 
the  server  function  can  be  offloaded  in  any  general  way.   Many  RJE  or 
batch  systems  for  contemporary  operating  systems  are  rather  monolithic 
in  their  structure.   Therefore  it  is  not  clear  how  separable  some 
functions  are  from  the  whole.   In  fact,  for  some  implementations  Server 
NETRJE  may  be  a  translator  between  the  local  RJE  system  and  the  network 
conventions. 

Assuming  that  functions  are  fairly  separable,  we  notice  that 
NETRJE  functions  can  be  divided  into  two  types:   those  used  to  control 
the  FTP  and  those  used  to  control  the  RJE  system.   The  FTP  functions  can 
be  offloaded  to  as  great  a  degree  as  FTP  can  be.   Since  most  RJE  systems 
are  monolithic  and  the  tables  containing  the  information  specifying  the 
disposition  of  the  jobs  are  in  the  host,  the  RJE  functions  in  general 
cannot  be  offloaded.   (See  table  5.) 

The  offloaded  Server  NETRJE  must  be  able  to  associate  job-ID 's 
with  host  pathnames  or  be  able  to  direct  output  from  the  RJE  system  to 
the  FAS.   Also,  it  must  be  able  to  direct  input  from  the  FAS  to  the  RJE 
system  and  associate  it  with  the  NETRJE  session. 


45 


REINIT 

OUT  + 

change"1" 

ABORT  (output)"1" 

back"1",  skip"1" 

STATUS 

CANCEL 

ALTER 

NETRJE  Commands  that  Must  be  Handled  in  the  Host 


REINIT 

USER, PASS* 

INID,INPASS 

OUTID,OUTPASS 

INPUT, INPATH 

ABORT 

RESTART, 

RECOVER,  HOLD 

NETRJE  Commands  that  May  be  Handled  in  the  Front  End 


Table  5.   Server  NETRJE  OFFLOADING 


It  may  be  possible  to  offload  these  commands,  depending  on  how  user 
authentication  is  handled. 


Some  systems  may  spool  network  output  to  the  front  end,  in  which 
case  these  commands  could  be  offloaded. 


46 


Offloading  Teleconferencing 

Most  teleconferencing  systems  exist  as  programs,  not  protocols. 
The  only  example  of  a  teleconferencing  system  that  is  constructed  as  a 
protocol  is  Calvin's  [3],   In  this  system,  the  user  interface  for  the 
system  is  located  on  one  host  and  the  conferencing  system  itself  is 
located  on  another. 

Even  though  such  systems  are  not  protocols,  they  are  important 
network  services.   Let  us  consider  how  they  may  be  offloaded.   If  the 
front  end  has  its  own  file  system,  then  it  is  possible  to  offload  the 
entire  teleconf erencer .   If  no  file  system  exists  or  there  is  insuffi- 
cient file  space  in  the  front  end,  then  all  of  the  conferencing  func- 
tions could  reside  in  the  front  end  and  the  FA-PSP  could  be  used  to  write 
the  transcript  in  a  file  on  the  host.   Given  the  structure  of  most  tele- 
conferencing systems,  it  appears  that  most  aspects  of  the  conference 
management  functions  are  sufficiently  tightly  related  that  they  should 
not  be  separated.   However,  sophisticated  teleconf erencers  that  provide 
the  use  of  such  facilities  as  graphics  displays,  simulation  programs  and 
data  management  systems  may  allow  greater  flexibility  in  offloading. 


Offloading  Network  Graphics  Protocol 

Although  the  Graphics  protocol  is,  strictly  speaking,  outside 
the  scope  of  this  document,  we  will  consider  briefly  how  it  may  be 
offloaded.   The  ARPANET  Network  Graphics  Protocol  (NGP)  is  much  too 
complex  to  describe  in  detail.   It  is  a  general  purpose  protocol  limited 
to  "calligraphic  pictures,  to  moderate  interaction  demands,  and  to  'best 
effort'  attempts  to  generate  the  required  graphics"  [33].   Several 
aspects  of  graphic  systems,  such  as  shading  and  animation,  are  not 
included  because  of  a  lack  of  understanding  of  how  best  to  model  these 
fairly  new  facilities. 

To  describe  the  NGP  model  we  quote  directly  from  the  protocol 

document  [33].   (The  figures  have  been  renumbered  to  keep  the  numbering 

consistent  throughout  the  present  document.) 

"The  philosophy  behind  the  network  graphics  protocol  can  be 
demonstrated  by  giving  a  model  of  a  general-purpose  graphics 
system  and  combining  it  with  the  network  model  of  Figure  13. 
The  model  of  the  system  is  shown  in  Figure  14...  To  avoid 
misunderstandings,  and  for  the  sake  of  defining  terminology, 
it  is  worthwhile  to  describe  briefly  each  of  the  elements 
of  Figure  14: 

1.  The  input  devices  —  keyboard,  stylus  etc.  —  are 
used  by  the  operator  of  the  application  program  to 
provide  data  and  to  control  the  program  during 
execution. 

2.  The  application  data  structure  contains  data, 
basically  nongraphical,  relating  to  the  application 
program. 

3.  The  input  routines  receive  data  from  the  input 
devices,  make  appropriate  changes  to  the  application 
data  structure,  and  hand  control  to  other  routines. 

4.  The  non-1/0  routines  analyze  and  modify  the 
application  data  structure. 

5.  The  output  routines  build  a  structured  picture 
definition  from  data  drawn  from  the  application 
data  structure.   Effectively  they  define  how  this 
data  may  be  visualized  for  display  purposes. 


48 


^^ 


DISPLAY    PROCESSOR 
a   CONSOLE 


SERVER    HOST 


USER  HOST 


Figure   13 

A  graphics   application  program    (AP)    running   in  one 
computer    (the  Server  Host)    drives   a  display   console 
attached    to   another   host    (the   User   Host). 


49 


APPLICATION 


^n 


TRANSFORMATIONS 


CONCAT 


M 


DIS- 
PLAY 


Application  Program: 

IN  Input  Routines 

OUT  Output  Routines 

NON  1/0  Application  Routines 

DATA  Application  Data  Structure 

Graphics  Package  and  Hardware: 

IR  Interrupt  Routines 

BUILD  Routines  to  build  the  SPD 

SPD  Structured  Picture  Definition 

TRACE  Routines  to  trace  the  SPD 

CONCAT  Concatenation  routine 

T&C  Transformation  and  clipping  routines 

DCG  Display  code  generator 

TDF  Transformed  Display  File 

DGEN  Display  generator 


Figure  14 

A  Conceptual  Model  of  a  Graphics  Application  Program, 
a  Graphics  Package  and  Display  Console 


50 


6.  The  structured  picture  definition  defines  the 
entire  picture  to  be  displayed,  part  or  all  of 
which  may  be  visible  on  the  screen.   The  picture 
definition  is  generally  made  up  of  a  number  of 
elements,  representing  parts  of  the  picture  known 
collectively  as  subpictures;  subpictures  may  them- 
selves be  made  up  of  other  subpictures.   A  familiar 
type  of  subpicture  is  the  symbol  which  is  often 

used  many  times  within  a  single  picture  or  subpicture. 
Each  reference  or  call  to  a  subpicture  element  may 
denote  a  transformation  —  scale,  rotation,  etc.  — 
to  be  applied  to  the  subpicture. 

7.  The  transformation  routines  apply  the  trans- 
formations specified  in  the  structured  picture 
definition  and  clip  out  information  that  lies  off- 
screen.  Often  an  arbitrary  rectangular  viewport 
is  used  as  the  clipping  boundary  instead  of  the 
screen  edge.   These  routines  also  handle  the 
concatenation  of  transformations  necessitated  by 
multi-level  structured  picture  definitions. 

8.  The  transformed  display  file  is  essentially 
what  remains  of  the  picture  after  transformation 
and  clipping.   It  is  defined  in  the  screen's 
coordinate  system  and  is  generally  stored  in  a 
format  that  allows  direct  refresh  or  regeneration 
of  the  picture.   The  display  file  contains 
"primitives"  that  specify  lines,  dots  and  text 

to  be  displayed. 

9.  The  display  generator  generally  includes 
a  vector  generator  and  a  character  generator, 
which  transform  the  contents  of  the  transformed 
display  file  into  signals  that  the  display's 
deflection  system  can  understand. 

10.  The  display  itself. 

"We  shall  now  analyze  Figure  14   to  see  how  the  system  can  be 
implemented.   The  diagram  illustrates  three  information 
structures  (an  application  data  structure,  the  structured 
picture  definition,  and  the  transformed  display  file) ,  and 
three  processes  (the  output  routines,  the  transformation, 
and  the  display  generator) .   The  design  of  a  general- 
purpose  graphics  system  requires  specifying  the  roles  of 
all  of  these  elements,  with  the  exception  of  the  application 
data  structure.   Our  examination  amounts  to  asking:   what 
can  the  hardware  do,  and  what  does  the  graphics  programmer 
think  he  can  do?... 

"Most  display  hardware  is  "processor"  hardware,  capable 
of  implementing  some  or  all  of  the  three  processes  in 
Figure  14.   If,  for  example,  a  display  processor  is  available 
that  implements  transformations  and  display  generation,  then 
the  transformed  display  file  is  absent,  and  we  can  view  the 


51 


hardware  as  "an  interpreter  of  structured  picture  defini- 
tions."  If  the  available  hardware  has  fewer  capabilities 
(e.g.  no  transformation  ability),  the  picture  is  refreshed 
from  the  transformed  display  file,  and  the  hardware  is  "an 
interpreter  of  transformed  picture  definitions."  Or,  if 
the  hardware  is  a  storage-tube  terminal  that  does  not  require 
a  display  file  for  refreshing  purposes,  part  of  the  display 
generation  process  is  a  software  process.   (However,  a 
display  file  is  still  required,  as  we  shall  see  below.) 

"Determination  of  what  the  programmer  can  do  is  somewhat 
more  subtle,  because  the  graphics  system  designer  has 
complete  control  of  the  facilities  he  presents  to  the 
programmer.   For  example,  the  programmer  of  the  system 
shown  in  Figure  14  would  think  he  was  creating  a  struc- 
tured picture  definition:   the  output  routines  allow 
him  to  create,  modify,  and  delete  elements  of  that  struc- 
ture.  The  remaining  processes  (transformation  and  display 
generation)  and  structures  (transformed  display  file,  if 
it  exists)  are  inaccessible  to  the  programmer;  in  some 
sense,  he  thinks  that  a  "display  processor"  is  inter- 
preting the  structured  picture  definition  in  order  to 
generate  a  display.   He  cannot  determine  whether  a 
transformed  display  file  exists,  nor  whether  transforma- 
tions are  done  in  hardware  or  software,  etc. 

"If  the  structured  picture  definition  is  deleted,  the 
programmer  sees  a  quite  different  set  of  facilities.   The 
output  routines  create  (after  transformation)  a  transformed 
display  file.   The  programmer  now  thinks  that  the  hardware 
is  a  "transformed  display  file  interpreter."  Again,  the 
programmer  is  unaware  of  the  details  of  the  display  generator 
process  (for  example,  if  the  display  is  a  storage  tube  termi- 
nal, the  display  generator  is  a  combination  of  a  software 
display-file  interpreter  and  some  hardware  vector  and  char- 
acter generators.   If,  on  the  other  hand,  the  transformed 
display  file  is  used  to  refresh  a  display,  the  display 
generator  is  presumably  entirely  in  hardware) . 

"The  discussion  suggests  that  relative  device  independence 
can  be  provided  if  we  permit  two  different  kinds  of  output 
information:   (1)  information  for  building  structured  pic- 
ture definitions,  or  (2)  information  for  building  trans- 
formed picture  definitions  directly.   The  first  of  these 
is  matched  to  high-performance  displays  such  as  the  LDS-2 
or  LDS-1;  the  second  to  standard  refresh  displays  such  as 
the  IMLAC  or  GT-40. 

"How  does  this  relate  to  network  protocol?  We  can  essen- 
tially view  the  UP  [user  program]  as  a  "display  processor," 
i.e.  an  "interpreter  of  structured  picture  definitions,"  or 
an  "interpreter  of  transformed  picture  definitions."  The 
network  protocol  is  used  to  build  and  modify  a  picture 
definition  contained  in  the  user  host.   Various  UP  options 
are  shown  in  Figure  15  (the  dotted  lines  surround  those 


52 


TRANSFORMED    FORMAT 


b)  STORAGE   TUBE 


TRANSFORMED    FORMAT 


-•  TDF  -}•  DGEN  —/ 
r 


STRUCTURED 
C)  HIGH  FORMAT 

PERFORMANCE 


13. 


STRUCTURED 
FORMAT 


El 


BUILD 


SPD         TRACE 


CONCAT 
I 


HfDGEN-^S- 


•)  STORAGE  TUBE 


m 


BUILD    SPD    TRACE 


teONCAT| 


Figure  15 

Various  configurations  for  the  user  program. 

Dashed  lines  surround  processes  implemented  with  hardware. 

Hatched  processes  are  omitted  in  the  particular  configuratic 


53 


processes  that  are  implemented  with  display  processor 
hardware) .   Figures  15a  and  15b  show  the  network  used  to 
transmit  transformed  information;  the  UP  uses  this  infor- 
mation to  build  a  display  file  for  refreshing  a  display 
or  for  updating  a  storage- tube.   Figures  15c,  15d  and  15e 
show  the  network  being  used  to  transmit  information  for 
building  a  structured  picture  definition;  the  UP  is  an 
interpreter  of  a  structured  display  file. 

"Figure  16  illustrates  some  possibilities  for  the  server; 
the  server  can  generate  either  structured  or  transformed 
display  information.   In  Figures  16a  and  16b  the  program- 
mer "sees"  a  structured  picture  definition;  in  Figure  16c 
a  transformed  picture  definition. 

"In  the  protocol,  the  UP  tells  the  SP  [server  program]  which 
kinds  of  format  it  can  implement.   It  is  perfectly  possible 
for  the  UP  to  implement  both  —  the  display  images  due  to 
each  of  the  formats  are  merged  onto  the  screen. 

"The  two  different  kinds  of  output  format  can  be  summarized 
as  follows: 

Transformed 

The  protocol  is  used  to  build  and  modify  a  set  of 
"segments"  (sometimes  called  "records")  of  a  trans- 
formed display  file,  stored  in  the  user  host.   A 
segment  is  a  list  of  graphical  primitives  that 
specify  lines,  dots  and  text  to  be  displayed  at 
specific  positions  on  the  display  screen.   Indivi- 
dual segments  may  be  deleted  or  replaced;  they 
may  be  added  to  or  removed  from  a  list  of  segments 
to  actually  display  on  the  screen  (this  is  called 
"posting"  and  "unposting"  segments).   If  a  picture 
is  composed  of  many  segments,  changes  to  the  pic- 
ture can  often  be  made  by  replacing  one  or  two 
segments;  thus  segmenting  the  display  file  helps 
to  reduce  the  amount  of  information  that  must  be 
transmitted  through  the  network  to  effect  a 
change.   Considerable  experience  with  this  type 
of  picture  definition  has  demonstrated  that  device 
independence  can  easily  be  achieved... 

One  advantage  of  transformed  format  is  that  the  UP 
can  be  kept  very  simple;  no  transformations  need 
be  performed  in  the  UH  [user  host] .   A  UP  along 
the  lines  of  Figure  15a  should  be  able  to  be  imple- 
mented in  an  IMLAC.   The  burden  of  transformation 
is  left  to  the  SH  [server  host] ,  presumably  a  large 
computer  quite  capable  of  being  programmed  to  do 
transformations . 


54 


o) 


NON  I/O 


IN 


OUT 


lS 


STRUCTURED    FORMAT 


b)  r 


»   IN 


NON  I/O 


OUT 


[™r] ; 


Hi_l 


BUILD 


SPD 


n 


CONCAT 


Tac 


TRANSFORMED    FORMAT 


TRACE 


c) 


TRANSFORMED  FORMAT 


Various  configurations  for  the  server  program. 
These  mate  with  the  user  program  configurations  of  figure  15. 


55 


Structured 

The  protocol  is  used  to  build  and  modify  "figures;" 
each  figure  is  a  collection  of  "units."  A  unit  may 
be  a  list  of  graphical  primitives,  such  as  lines, 
dots  and  text;  or  it  may  specify  a  "call"  on  another 
figure,  together  with  a  transformation  to  apply  to 
the  called  figure.   The  protocol  can  replace  indivi- 
dual units;  altering  a  figure  that  is  called  in 
several  places  may  cause  widespread  changes  to  the 
visible  display.   The  structured  format  requires 
(in  principle)  even  less  network  bandwidth  for 
updates  than  does  the  transformed  format;  many 
updates  may  involve  changing  a  single  transforma- 
tion (e.g.  to  change  the  viewing  transformation 
for  a  three-dimensional  object). 

Although  a  structured  picture  definition  can  be 
interpreted  directly  by  a  few  display  processors 
that  have  transformation  ability,  most  UP's  that 
implement  structured  format  will  perform  the  trans- 
formation in  software. . .   This  implementation  is 
relatively  difficult,  and  certainly  requires  a 
fairly  powerful  UH  computer." 

As  one  can  readily  see,  of  all  the  protocols  considered  here 
this  protocol  is  the  most  suitable  for  offloading.   Figures  14,  15 
and  16  provide  us  with  a  fairly  good  idea  of  how  the  protocol  functions 
should  be  placed.   An  exact  assignment  of  duties,  however,  would  depend 
heavily  on  the  capabilities  of  the  graphics  terminal,  the  host,  and  the 
front  end.   Some  work  along  these  lines  has  already  been  done  by  Van  Dam 
[35]  and  Foley  [18].   These  two  investigators  have  considered  the  problem 
of  how  to  best  share  the  load  for  a  graphics  application  between  a  host 
and  a  dedicated  satellite  graphics  processor.   Further  work  would  be 
necessary  to  evaluate  a  system  consisting  of  a  host,  a  network  front 
end,  and  a  graphics  display  with  or  without  its  own  satellite  processor. 


56 


References 


1.  Braden,  Bob 

1971,  "Interim  NETRJS  Specification,"  RFC  189,  NIC  #7133. 

2.  Bressler,  R. ;  Guida,  R. ;  and  McKenzie,  A. 

1972,  "Remote  Job  Entry  Protocol,"  RFC  407. 

3.  Calvin,  James  0. 

1974,  "The  Design  and  Implementation  of  an  Interactive 
Teleconferencing  Environment,"  Undergraduate  thesis,  Case 
Western  Reserve. 

4.  Crispin,  Mark 

1977,  "Telnet  Logout  Option,"  RFC  727,  NIC  #40025. 

5.  Crocker,  D.H.  and  Postel,  J.B. 

1973,  "Remote  Controlled  Transmission  and  Echo  Telnet  Option, 
NIC  #19859. 

6.  Crocker,  D.H. 

1974,  "Telnet  Output  Carriage-Return  Disposition  Option," 
RFC  652,  NIC  #31155. 

7.  Crocker,  D.H. 

1974,  "Telnet  Output  Horizontal  Tabstops  Option,"  RFC  653, 
NIC  #31156. 

8.  Crocker,  D.H. 

1974,  "Telnet  Output  Horizontal  Tab  Disposition  Option," 
RFC  654,  NIC  #31157. 

9.  Crocker,  D.H. 

1974,  "Telnet  Output  Formfeed  Disposition  Option,"  RFC  655, 
NIC  #31158. 

10.  Crocker,  D.H. 

1974,  "Telnet  Output  Vertical  Tabstops  Option,"  RFC  656, 
NIC  #31159. 

11.  Crocker,  D.H. 

1974,  "Telnet  Output  Vertical  Tab  Disposition  Option," 
RFC  657,  NIC  #31160. 

12.  Crocker,  D.H. 

1974,  "Telnet  Output  Linefeed  Disposition  Option,"  RFC  658, 
NIC  #31161. 

13.  Crocker,  D.H. 

1977,  "Telnet  Byte  Macro  Option,"  RFC  729,  NIC  #40036. 


57 


14.  Day,  J.D.  and  Grossman,  G.R. 

1977,  "An  RJE  Protocol  for  a  Resource  Sharing  Network, 
RFC  715. 

15.  Day,  J.D. 

1973,  "A  Proposal  for  a  File  Access  Protocol,"  RFC  520. 

16.  Day,  J.D. 

1976,  "Cost  and  Response  Time  Models  for  Network  Applications," 
Internal  Modeling  Memo  #14,  Center  for  Advanced  Computation, 
University  of  Illinois  at  Urbana-Champaign. 

17.  Day,  J.D. 

1977,  "Telnet  Data  Entry  Terminal  Option,"  RFC  731,  NIC  #40652. 

18.  Foley,  James  and  Brownlee,  Edward 

1974,  "A  Model  of  Distributed  Processing  in  Computer  Networks 
with  Application  to  Satellite  Graphics,"  Proceedings  of  ICCC. 

19.  Grossman,  G.R. 

1977,  The  Host- to-Front-End  Protocol,  CAC  Document  #219, 
Center  for  Advanced  Computation,  University  of  Illinois 
at  Urbana-Champaign. 

20.  Mock,  Tovas  and  Postel,  Jon 

1974,  "Telnet  Extended  ASCII  Option,"  RFC  698,  NIC  #32964. 

21.  Neigus,  N. 

1973,  "The  File  Transfer  Protocol,"  RFC  542. 

22.  Neigus,  N. ;  Pogran,  K. ;  and  Postel,  J. 

1974,  "A  New  Schema  for  FTP  Reply  Codes,"  RFC  640. 

23.  Postel,  Jon 

1973,  "Telnet  Protocol  Specification,"  NIC  #15372. 

24.  Postel,  Jon 

1973,  "Telnet  Option  Specifications,"  NIC  #15373. 

25.  Postel,  Jon 

1973,  "Telnet  Binary  Transmission  Option,"  NIC  #15389. 

26.  Postel,  Jon 

1973,  "Telnet  Echo  Option,"  NIC  #15390. 

27.  Postel,  Jon 

1973,  "Telnet  Reconnection  Option,"  NIC  #15391. 

28.  Postel,  Jon 

1973,  "Telnet  Suppress  Go  Ahead  Option,"  NIC  #15392. 

29.  Postel,  Jon 

1973,  "Telnet  Status  Option,"  NIC  #16237. 


58 


30.  Postel,  Jon 

1973,  "Telnet  Timing  Mark  Option,"  NIC  #16238. 

31.  Postel,  Jon 

1973,  "Telnet  Extended-Option-List  Option,"  NIC  16239. 

32.  Schicker,  Peter;  Duenki,  Ann;  and  Baechi,  W. 

1975,  "Bulk  Transfer  Function,"  INWG  Protocol  #31, 
EIN/ZHR/75/20. 

33.  Sproull,  Robert  F.  and  Thomas,  Elaine  L. 

1974,  "A  Network  Graphics  Protocol,"  NIC  #24308. 

34.  Stone,  Harold 

1977,  "Multiprocessor  Scheduling  with  the  Aid  of  Network 
Flow  Diagrams,"  IEEE  Transactions  on  Software  Engineering, 
Volume  SE-3,  No.  1. 

35.  Van  Dam,  Andries;  Stabler,  George  M. ;  and  Harrington,  Richard  J. 

1974,  "Intelligent  Satellites  for  Satellite  Graphics," 
Proceedings  of  IEEE,  Volume  62,  No.  4. 

36.  Walden,  David  C. 

1973,  "Telnet  Output  Line  Width  Option,"  NIC  #20196. 

37.  Walden,  David  C. 

1973,  "Telnet  Output  Page  Size  Option,"  NIC  #20197. 


59 


Appendix  1 


Program  Access 
Process -to-Service 
Protocol  Specification 


CAC  Technical  Memorandum  #81 


by 

John  Day 
Steve  Holmgren 


61 


Program  Access 

Process-to-Service  Protocol 

Specification 


I.  Service  Code  Number 


II.  Description  of  the  Service 

This  document  is  a  process-to-service  protocol 
specification  as  defined  in  the  Host-to-Front-End  Protocol  (HFP) 
Specification  [ARPANET  RFC  710].  It  describes  a  process-to- 
service  protocol  for  the  execution  of,  or  attachment  to, 
arbitrary  programs  in  the  front  end.  The  intent  is  to  provide  a 
general  mechanism  that  will  allow  the  host  to  access  terminal- 
oriented  front-end  services.  Examples  of  such  services  are  User 
Telnet  and  teleconferencing. 

This  protocol  allows  terminals  directly  connected  to  the 
host  to  appear  to  the  front  end  as  if  they  were  local  front-end 
terminals.  This  strategy  for  handling  host  terminals  has  two 
advantages.  Users  are  confronted  with  a  common  command  language 
and  services  can  be  almost  completely  offloaded  to  the  front  end. 

The  protocol  described  here  assumes  that  the  program 
access  service  itself  is  completely  offloaded  to  the  front  end. 
The  only  software  remaining  in  the  host  is  a  relay  process  that 
passes  properly  formatted  data  between  a  host  terminal  or  process 
and  the  program-access-service  module   in   the   front   end.    HFP 


63 


DRAFT 


6/23/77 


PA  PSP 
Description  of  the  Service 


Messages  are  used  for  this  data  transmission. 

For  some  implementations,  the  relay  process  software  must 


1 .  ensure  that  security  infornation  is 
properly  transmitted  in  BEGIN  Commands 
(this  may  require  querying  the  user  for 
usercode  and  password); 

2.  properly  handle  half-duplex  terminals 
(via  the  GO  AHEAD  facility); 

3.  transform  interrupt  characters  into 
EXECUTE  Commands; 

M  .  flush  data  when  instructed  to  do  so; 

5.  accept  data  from  terminals  with  differing 
character  sets  and  properly  transform 
them  for  transmission  to  the  front  end; 

6.  divert  binary  or  character  data  to 
auxiliary  devices;  and 

7.  modify  terminal  parameters  that 
control  echoing. 


The  more  items  from  this  list  that  a  PA-PSP  host  implementation 
must  support,  the  less  the  savings  to  be  gained  by  using  this 
PSP.  Since  most  implementations  will  give  the  user  of  this 
protocol  access  to  the  front  end  at  the  command  language  level, 
it  will  be  inappropiate  for  use  by  processes. 

The  only  support  that  the  relay  process  requires  is  the 
ability  to  access  the  front  end  and  to  be  accessed  by  host 
terminals  or  processes.  Some  systems  may  experience  difficulty 
providing  one  interface  that  can  handle  both. 

The  program-access-service  module  must  have  the  ability 
to   attach  to  and  to  execute  user-level  programs  within  the  front 


64 


b/23/77  PA  PSP 

Description  of  the  Service 


end  and  pass  data  to  and  from  the   user-level   programs   and   the 
channel  protocol  module  (CPM). 

The  program  access  process-to-service  protocol  uses  HFP 
Messages  to  carry  information  between  the  relay  process  and  the 
service  module.  A  brief  summary  of  the  function  of  specific 
Message  types  follows. 

BEGIN  Command 

from  the  process 

requests  access  to  a  program  in  the  front  end. 

3EGIN  Response 

from  the  service  module 

a)  confirms  that  access  has  been  accomplished  or 

b)  reports  the  reason  for  failure. 

END  Command 

from  either  side 

requests  that  communication  with  the  other  side 
be  terminated. 

END  Response 

from  either  side 

acknowledges  that  an  END  Command  has  been 
received  and  that  the  proper  action  has  been 
taken . 

TRANSMIT  Command 

from  either  side 

transfers  data  to  the  other  side. 

TRANSMIT  Response 

from  either  side 

acknowledges  receipt  of  data  from  the  other 
side. 

EXECUTE  Command  and  Response 

are  not  used  in  this  protocol. 

The  details  of  the  use  of  HFP  Messages  follow. 


65 


DRAFT 


6/23/77 


PA  PSP 
BEGIN  Command 


III?    ftegsa^e  Use 

III  A.  BEGIN  Command 

II?  A  1 .  When  sent 

When  a  terminal  or  process  in  the  host  wishes  to 
execute  a  front-end  program,  which  may  be  a  service  in  its 
own  right,  it  will  start  up  or  attach  to  a  host  relay 
process.  The  relay  process  will  then  send  a  BEGIN  Command 
to  the  program-access-service  module  in  the  front  end.  The 
TEXT  of  the  BEGIN  Command  will  contain  a  front-end  command 
line  formatted  to  installation  standards.  The  command  line 
will  specify  the  front-end  program  to  be  executed  and  will 
provide  any  required  parameters. 

Ill  A  2.  Action  on  receipt 

When  a  BEGIN  Command  is  received  by  the  program- 
access-service  module  in  the  front  end,  the  module  will 
attempt  to  execute  or  attach  to  the  specified  program. 
Once  the  service  module  has  completed  a  connection  to  the 
program,  it  should  issue  a  BEGIN  Response  to  the  host  relay 
process.  Subsequent  communications  on  this  channel  from 
the  relay  process  to  the  service  will  be  directed  to  the 
program . 

Ill  A  3.  TEXT  field  syntax 

Security:   VARIAELE(?) 
Command:   VARIABLE(?) 

Ill  A  4.  TEXT  fjgld  semantics 

III  A  4  a.  Security 

This  field  can  be  used  by  the  front  end  to  verify 
the  validity  of  the  user  and  his  access  to  the  program. 
The  actual  contents  of  this  field  are  installation 
dependent.  If  the  security  field  is  empty,  the  effect 
is  to  connect  the  user  to  the  front  end  at  the  pre-login 
stage.  The  Command  field  will  be  ignored  in  this  case. 
Note:  At  this  writing,  not  enough  is  known  about 
security  in  networks  and  front  ends  to  make  any 
statement  about  the  utility  of  validation  at  this  point 
in  the  system.  This  field  is  included  in  case  some 
systems  require  validation  at  this  point. 

Ill  A  4  b.  Command 


For  most   front   ends   the   Program  Access   PSP 

provides    general   access   to   the   front  end   command 

language  or  a  set  of  procedures  callable  by  host   users. 

The   command   field   will   usually   contain  a  string  of 


66 


DRAFT 


8/23/77 


PA  PSP 
BEGIN  Command 


characters  to  invoke  that 
with  any  parameters  in 
would  be  typed  by  a  user. 


nmand   or   procedure   along 
form  similar  to  the  way  it 


Example: 

run  telnet 

If  the  Command  field  is  empty  but  the  Security  field  is 
not,  then  the  effect  is  to  log  the  user  in  to  the  front 
end. 


67 


DRAFT 


6/23/77 


PA  PSP 
BEGIN  Response 


III  E.  BEGIN  Response 

III    b    1 .  When  seat 

The  BEGIN  Response  is  generated  by  the  service  when  a 
determination  has  been  made  as  to  the  success  or  failure  of 
the  BEGIN  Command.  The  Status  field  in  the  HEADER  will 
indicate  the  success  or  failure. 


When  the  process  receives  a  BEGIN  Response  indicating 
a  successful  connection,  it  may  proceed  to  send  and  receive 
data  on  the  connection.  When  the  process  receives  a  BEGIN 
Response  indicating  an  unsuccessful  connection,  it  should 
perform  the  appropriate  error  recovery. 

Ill,  B  1.  TEXT  field  syptax 


Result: 


FIXED(3) 


XII  B  4.  TEXT  field  semantics 

III  B  k    a.  Result 

If  the  BEGIN  Command  was  successful,  this  field 
will  have  a  value  of  zero.  A  non-zero  value  indicates 
failure.  The  particular  value  indicates  the  reason  for 
failure.   The  Result  values  and  their  meanings  are: 

0  Success 

1  Access  to  program  denied 

2  Illegal  Command  field  format 

3  Program  not  found 

k      Front  end  terminating  service 


68 


DRAFT 


8/23/77 


PA  PSP 
END  Command 


III  C  1.  When  sent 

The  END  Command  may  be  issued  by  the  program-access- 
service  module  or  the  host  relay  process.  If  sent  by  the 
relay  process,  it  usually  indicates  that  the  user  has 
requested  that  the  front-end  program  be  terminated  and  the 
communication  path  be  destroyed.  The  service  may  send  an 
END  Command  because  of  events  external  to  the  operation  of 
the  relay  process  and  the  program  or  in  response  to  the 
termination  of  the  front-end  program. 

Ill  C  2.  Action  on  receipt 

When  the  relay  process  receives  an  END  Command,  it 
should  acknowledge  it  promptly  with  an  END  Response  and 
clean  up  any  data  structures  associated  with  the 
communication  path.  When  the  program-access-service  module 
receives  an  END  Command,  it  should  generate  an  END  Response 
and  terminate  the  process  associated  with  the  Channel. 

Ill    C  1,  TEXT  field  syntax 

Cause:  FIXED(3) 

III  C  H.    TEXT  field  semantics 

III   C  3  ?,  Cause 

This  field  indicates  the  reason  for   termination   of 


communi  cation . 
meanings  are: 

0 
1 
2 
3 
k 


The   values   of   the   field   and   their 


Normal  completion  of  the  proeram 

Program  failure 

User  requested  termination 

Unknown 

Front  end  terminating  service 


69 


DRAFT 


6/23/77 


PA  PSP 
END  Response 


III  Pt  ENP  Response 
HI  D  1,  When  sept 


The  END  Response  is  sent  either  by  the  relay 
process  or  by  the  program-access-service  module  to 
acknowledge  that  an  END  Command  has  been  received  and  the 
proper  action  taken. 

HI  D  2.  Action  on  receipt 

When  an  END  Response  is  received,  all  dialogue  over  the 
associated  logical  channel  is  complete.  All  Commands  over 
the  logical  channel  will  be  ignored  until  the  receipt  of 
another  BEGIN  Command  referencing  that  channel. 

Ill  D  3.  TEXT  field  syntax 

The  TEXT  field  in  the  END  Response  is  not  used  in  this 
process-to-service  protocol.  The  contents  of  the  field 
will  be  ignored. 


70 


8/23/77 


PA  PSP 
TRANSMIT  Command 


III  E.  TRANSMIT  Command 

The  description  below  assumes  that  a  Go-Ahead  facility  is 
needed  for  the  host  relay  process  to  handle  half-duplex 
terminals.  Not  all  installations  will  need  this  facility. 
Those  that  do  not  should  set  the  Control  field  in  the  TEXT  to 
zero  and  ignore  the  specification  of  how  this  field  is 
interpreted . 

Ill  6  1.  When  sept 

The  TRANSMIT  Command  may  be  sent  by  either  side  to 
transfer  data.  Data  may  be  sent  only  when  the  communication 
path  is  ESTABLISHED  and  the  flow  control  discipline 
permits.   (See  the  HFP  specification.) 

HLE  iLi  AgtlPP  on  receipt 

III  E  2  a*  Pv  the  relay  process 

When  the  relay  process  receives  a  TRANSMIT  Command, 
it  will  relay  the  contents  of  the  Data  field  to  the  host 
process  or  terminal.  If  the  Go-Ahead  bit  is  set  to  0 
for  data  going  to  the  host,  then  the  host  may  assume 
that  the  front  end  has  completed  sending  and  the  host 
may  now  send  any  data  it  has.  A  Go-Ahead  bit  set  to  1 
indicates  that  the  sender  has  more  data  to  send  and  the 
receiver  must  wait. 

Ill  E  2  b.  By  the  program-access-?ervlce  module 

When  the  service  module  receives  a  TRANSMIT  Command, 
it  will  relay  the  contents  of  the  Data  field  to  the 
program.  If  the  Go-Ahead  bit  is  set  to  0  for  data  going 
to  the  front  end,  then  the  front  end  may  assume  the  host 
has  completed  sending  and  the  front  end  may  send  any 
data  it  has.  A  Go-Ahead  bit  set  to  1  indicates  that  the 
sender  has  more  data  to  send  and  the  receiver  must  wait. 

Ill  e  Li  text  field  syntax 

Control:  FIXED(1) 

Go-Ahead/More  Data 
Data:  VARIABLE(?) 

Ill  E  k.    TEXT  field  semantics 

III  E  4  a.  Control 

The  single  bit  in  this  field  indicates  whether  or 
not  the  sender  of  the  TRANSMIT  Command  has  completed 
sending  data.  It  is  used  to  facilitate  handling  half- 
duplex   terminals   connected   to  the  relay  process.   The 


71 


6/23/77 


PA  PSP 
TRANSMIT  Command 


receiver  of  a  TRANSMIT  Command  with  the  Go-Ahead  bit  set 
to  0  (default)  should  assume  the  sender  has  completed 
sending  data  and  that  the  receiver  is  now  free  to  send 
any  data  that  it  has.  If  the  bit  is  set  to  1  the  sender 
has  more  data  to  send  and  the  receiver  should  not  send 
data  at  this  time. 


72 


DRAFT 


8/23/77 


PA  PSP 
TRANSMIT  Response 


III  F.  TRANSMIT  Response 

The  TRANSMIT  Response  is  used   as   described   in   the   HFP 
specification . 


73 


DRAFT 


6/23/77 


PA  PSP 
SIGNAL  Command 


III  G.  SIGNAL  Command 

The  SIGNAL  Command  is  not  used  in  the  process-to- 
service  protocol.  SIGNAL  Commands  may  be  generated  by  process 
or  service  to  request  that  the  CPM  carry  out  the  appropriate 
potion  on  the  logical  channel.  (See  HFP  specification.) 
Thus,  the  effect  of  the  SIGNAL  Command  is  restricted  to  the 
logical  channel  (HFP)  level. 


74 


DRAFT 


8/23/77 


PA  PSP 
SIGNAL  Response 


III  H.  SIGNAL  Response 

The  SIGNAL  Response  is  not  used  by  either   process   or 
service. 


75 


DRAFT  8/23/77  PA  PSP 

EXECUTE  Command/Response 


HI  I.  EXgCVTE  Command, 

The  EXECUTE  Command  is  not  used  in  this  protocol.  If  an 
EXECUTE  Command  is  received,  an  EXECUTE  Response  with  Status 
equals  67  (Unused  Command)  should  be  sent. 

Ill  J.  EXECUTE  Response 

The  EXECUTE  Response  is  not  used  in  this  protocol  except  as 
noted  above. 


76 


DRAFT 


6/23/77 


PA  PSP 
Scenario 


IV.  Scenario 

Let  us  consider  how  the  Program  Access  PSP  would  be  used 
to  offload  User  Telnet.  Let  us  assume  that  the  host  relay 
process  does  not  have  to  implement  any  of  the  special  functions 
noted  in  Section  II.  The  user  at  a  terminal  connected  to  the 
host  types: 

"connect  ILL-CAC" 

The  connect  command  starts  the  relay  process  and  hands  it  the 
parameter  ILL-CAC.  The  relay  process  then  generates  a  BEGIN 
Command : 

<BEGINXC>telnet  ILL-CAC 

(This  installation  does  not  use  the  security  field.)  The  BEGIN 
Command  is  passed  to  the  front  end.  The  Program  Access  Service 
in  the  front  end  invokes  the  command  line  present  in  the  TEXT 
field  and  sends  a  BEGIN  Response  to  the  host: 

<EEGlNXCXresult  =  success> 

The  User  Telnet  program  is  started  and  it  attempts  to  open  a 
connection  to  ILL-NTS,  and  sends  a  message  to  the  user  which  the 
Program  Access  Service  passes  on  to  the  host: 

<TRANSMITXOAttempting  connection  to  ILL-NTS 

At  this  point  the  User  Telnet  program  thinks  it  is  talkincr  to  a 
user  local  to  the  front  end.  The  Program  Access  Service 
maintains  this  charade  passing  messages  back  and  forth  to  the 
user  connected  to  the  host.  From  the  point  of  view  of  the  user 
he  is  directly  connected  to  the  front  end. 


77 


Appendix  2 


File  Access 

Process -to -Service 

Protocol  Specification 


CAC  Technical  Memorandum  #102 


by 
John  Day 


79 


File  Access 

Process-to-Service  Protocol 

Speci  f icati  on 


T.  Service  Code  Number 
6 


II.  Description  of  the  Service 

This  document  is  a  process-to-service  protocol  specification 
as  defined  in  the  Host-to-Front-End  Protocol  (HFP)  Specification 
[ARPANET  RFC  710].  This  protocol  provides  a  general  utility  for 
file  access  between  the  host  and  the  front  end.  This  protocol  is 
also  used  for  offloading  the  data  transfer  portion  of  a  network 
file  transfer  protocol  (either  user  or  server).  This  protocol 
also  provides  a  general  utility  for  file  access  between  the  host 
and  the  front  end. 

The  file  access  process-to-service  protocol  differs  from 
most  others  in  that  the  distinction  between  the  host  side  and  the 
front-end  side  disappears.  For  this  process-to-service  protocol, 
one  distinguishes  between  the  side  requesting  service  (the  using 
side)  and  the  side  providing  service  (the  serving  side).  No 
distinction  is  made  as  to  which  one  is  in  the  host  and  which  in 
the  front  end.  In  fact,  a  file  access  module  (FAM)  may  be 
constructed  in  such  a  way  as  to  be  both  using  and  serving, 
depending  on  how  each  channel  is  established,  (i.e.,  on  who  sends 
each  BEGIN  Command). 


DRAFT 


6/23/77 


FA  PSP 
Description  of  Service 


This  specification  describes  a  general  file  access  utility 
that  allows  a  process  in  one  system  to  open  a  file  and  read  or 
write  data  to  or  from  any  point  in  that  file.  The  protocol 
provides  separate  indices  into  the  file  for  reading  and  writing. 
These  are  called  the  read  pointer  and  the  write  pointer. 
Although  the  ability  to  address  within  a  file  makes  restart 
markers  superfluous,  protocols  that  don't  explicitly  allow 
addressing  may  require  their  use.  Since  restart  marker 
"bookkeeping"  might  be  offloaded,  a  set  of  operations  are 
provided  for  controlling  it.  Not  all  fields  listed  in  the 
descriptions  of  message  use  will  be  used  in  every  case.  Exactly 
what  fields  are  present  in  the  various  Commands  will  depend  on 
the  offloading  application.  Details  of  FTP  offloading  schemes 
using  the  file  access  process-to-service  protocol  are  described 
in  detail  in  CAC  Document  230  [1]. 

The  facilities  required  by  this  process-to-service  protocol 
depend  heavily  on  the  particular  use  being  made  of  it.  The 
maximum  requirements  would  be  access  to  the  file  systems  of  both 
the  host  and  the  front  end,  and  implementations  of  FTP,  Telnet, 
and  an  NCP  in  the  front  end  (in  the  ARPANET  case).  The  minimum 
requirements  for  the  ARPANET  case  would  be  an  NCP  in  the  front 
end. 

The  file  access  process-to-service  protocol  uses  HFP 
Messages  to  carry  information  between  a  file  access  module  in  the 
host  and  a  file  access  module  in  the  front  end.  A  brief  summary 
of  the  function  of  specific  Message  types  follows: 


82 


DRAFT  8/23/77  FA  PSP 

Description  of  Service 


BEGIN  Command 

from  the  using  file  access  module 

requests  that  service  be  provided. 

BEGIN  Response 

from  the  serving  file  access  module 

a)  confirms  the  establishment  of  service,  or 

b)  reports  the  reason  for  failure. 

ENP  Cofnand 

from  either  file  access  module 

requests   the   termination    of    service    and 
indicates  the  conditions  for  termination. 

ENP  Response 

from  either  file  access  module 

acknowledges  the  termination  of  service. 

TRANSMIT  Command 

from  either  file  access  module 

carries  data  between  the  using  and  serving  file 
access  modules. 

TRANSMIT  Response 

from  either  file  access  module 

acknowledges  the  receipt  of  data. 

EXECUTE  Command 

from  the  using  file  access  module 

requests  of  the  serving  file  access  module  that 

a)  data  transfer  parameters  be  set; 

b)  a  file  be  opened; 

c)  data  be  read  from  a  file; 

d)  data  be  written  to  a  file; 

e)  a  read  pointer  position  be  set; 

f)  a  write  pointer  position  be  set; 

g)  a  network  connection  be  opened; 

from  either  file  access  module  (depending   on   which 
is  data  source  and  which  is  data  receiver) 

a)  sets  a  restart  marker  window  width, 

b)  acknowledges  a  restart  marker,  or 

c)  aborts  a  transfer. 

EXECUTE  Response 

from  either  file  access  module 

a)  acknowledges    the    completion    of     actions 
requested  via  an  EXECUTE  Command. 

b)  reports  the  reason  for  failure   of   an   EXECUTE 
Command;  or 

c)  reports   on    the    status    of    the    network 
connection. 


DRAFT  8/23/77  FA  PSP 

Description  of  Service 


III-  Message  Use 

III  A,  PEQ1N  Cpmmand 

III  A  1,  When  sent 

A  BEGIN  Command  is  sent  by  the  using  file  access 
module  (UFAM)  to  the  serving  file  access  module  (SFAM)  to 
request  that  a  channel  be  established  for  the  transfer  of 
one  or  more  files  between  the  host  and  the  front  end. 

Ill  A  ?.  Action  on  receipt 

When  a  SFAM  receives  a  BEGIN  Command,  it  will  evaluate 
its  ability  to  satisfy  the  request  specified  by  the 
parameters  in  the  TEXT  field  and  reply  accordingly. 

Ill  A  3,  TEXT  field  syptax 

Security:  VARIABLE(?) 

File  Parameters:  COMPLEX*?) 

Pathname:  VARIABLE*?) 

Direction:  FIXED(2) 

Position:  FIXED(  ) 

Size:  FIXED(  ) 

Record  size:  FIXED(  ) 

Data  Parameters:  COMPLEX(M) 

Type:  FIXED(3) 

Mode:  FIXED(2) 

Structure:  FIXED(1) 

Byte  size:  FIXED(8) 

Connection  Parameters:  C0MPLEX(8) 

Control-bits:  FIXED(5) 

Init/Listen 

Socket/Channel 

Duplex/Simplex 

Relative/Absolute 

Unattachable/Attachable 

Host:  FIXED(32) 

Foreign  Socket:  FIXED(32) 

Messages:  FIXEDM6) 

Bits:  FIXED(32) 

Local  Socket:  FIXED(32) 

Timeout:  FIXED(16) 

Byte  Size:  FIXED(8) 

III    A  k.    TEXT  field,  semantics 

Since  the  file  access  process-to-service  protocol  may 
be  used  in  a  variety  of  offloading  schemes,  the  parameters 
of  the  BEGIN  Command  are  quite  extensive.  They  fall  into 
four  categories:  Security,  File  Parameters,  Data  Transfer 
Parameters,  and  Connection   Parameters.    These   groups   of 


84 


DRAFT 


8/23/77 


FA  PSP 
BEGIN  Command 


parameters  will  be  present  if  the  UFAM  is  remotely 
controlling  the  functions  of  validating  the  user, 
manipulating  files,  controlling  the  FTP  Data  Transfer 
Process,  or  establishing  network  connections,  respectively. 

HI  A  4  a,  security 

This  field  can  be  used  to  validate  the  requestor's 
access  privileges  to  the  file  or  network  resources.  It 
is  particularly  important  to  limit  access  to  network 
security  objects  such  as  local  socket  1 .  The 
substructure  and  content  of  this  field  are  installation 
dependent . 

NOTE:  At  this  writing,  not  enough  is  known  about 
security  in  networks  and  front  ends  to  make  any 
statement  about  the  utility  of  validation  at  this  point 
in  the  system.  This  field  is  included  in  case  some 
systems  require  validation  at  this  point. 

Ill  A  M  frt  File  Parameters 

These  parameters  specify  what  file  is  to  hn 
transferred,  in  what  direction,  where  the  transfer  is  to 
begin,  and  how  long  the  file  is.  These  parameters  will 
be  present  if  the  UFAM  is  in  the  front  end  and  the  file 
is  in  the  host,  or  vice  versa. 

Ill  A  M  t>  (1),  Pathname 

This  field  contains  a  locally  recognizable  file 
name  for  the  file  which  is  to  be  transferred  into  or 
out  of  the  system  in  which  the  SFAM  resides.  If  this 
then  the  pathname  will  be  specified 
Note:  It  is  an  error  to  issue  a 
the  EXECUTE  Command  (see  below) 
1  pathname. 


field   is   empty, 
at  a  later  time. 
Read   variant   of 
before  specifying 


III  A  M  b  (2) .  Direction 

This   field   specifies   the   direction   of    the 
transfer.   The  values  are: 

1  data  is  transferred  toward  the  SFAM  (write) 

2  data  is  transferred  toward  the  UFAM  (read) 

3  data  is  transferred  in  both  directions 

The  default  value  of  this  field  is  3  (both). 

Ill  A  H  b  H),  PosiUpn 

The    contents    of    this    field    specify   where      within 
the      file    the    transfer    is    to    begin.      This    facility    is 


85 


DRAFT 


8/23/77 


BEGIN 


FA  PSP 
Command 


used  for  restarting  transfers  and  randomly  accessing 
files.  The  position  pointer  that  is  set  is 
determined  by  the  contents  of  the  direction  field. 
If  the  direction  field  specifies  "both",  then  both 
the  read  and  write  pointers  are  set  to  the  position 
indicated.  The  width  of  .  this  field  and  the  units 
represented  by  it  are  installation  parameters. 

Ill  A  »  b  (iQt  Size 

The  contents  of  this  field  are  used  to  indicate 
the  size  of  the  file  to  be  written  into  the  file 
system  in  the  SFAM's  computer.  Some  systems  require 
that  space  be  allocated  for  a  file  before  beginning 
the  transfer.  The  width  of  the  field  and  the  units 
represented  by  it  are  installation  parameters. 

Ill  A  »  b  (5),  Record  9Ue 

The  contents  of  this  field  specify  the  maximum 
record  size  of  the  file  to  be  transferred.  This 
field  will  only  be  present  if  such  specification  is 
required  by  the  system  and  the  file  is  record- 
structured.  The  width  of  the  field  and  units 
represented  by  it  are  installation  parameters. 

HI  A  M  ct  patfr  Transfer  Parameters 

For  offloading  schemes  in  which  the  UFAM  must 
remotely  control  the  FTP  data  transfer  process,  these 
parameters  are  used  to  specify  how  the  data  is  expected 
to  arrive  from  the  network.  It  is  assumed  that  the  host 
and  front  end  have  agreed  on  what  form  data  will  be 
presented  by  each  to  the  other. 

Ill  A  »  c  (1),  Type 

This  field  indicates  the  type  of  data  to  be  sent 
in  accordance  with  the  classifications  of  the  ARPANET 
FTP.   The  values  of  the  field  and  their  meanings  are: 

0  ASCII  -  Nonprint 

1  ASCII  -  Telnet 

2  ASCII  -  Carriage  Control  (ASA) 

4  EBCDIC  -  Nonprint 

5  EBCDIC  -  Telnet 

6  EBCDIC  -  Carriage  Control  (ASA) 

7  Image 


The  default  value  of  this 
Nonprint) . 


field   is   zero   (ASCII 


86 


8/23/77  FA  PSP 

BEGIN  Command 


III  A  H  C  (2).  Mode 

The  contents  of  this  field  indicate  the  mode  in 
which  the  data  is  transferred  over  the  network  in 
accordance  with  the  categories  used  in  the  ARPANET 
FTP.   The  values  of  the  field  are: 

0  Stream 

1  Blocked 

2  Compressed 

The  default  value  of  the  field  is  zero  (Stream). 

Ill  A  **  c  H)t  Structure 

The  contents  of  this  field  indicate  the 
structure  of  the  file  to  be  transferred.  The 
structures  supported  are  those  used  by  the  ARPANET 
FTP.   The  values  are: 

0  File 

1  Record 

The   default   value   of   the   field   is   zero    (File 
structure ) . 

Ill  A  ^  g  m,  Evte  site 

This  field  contains  the  byte  size  for  data 
transfer  on  the  connection.  If  this  field  contains 
zero  (default),  the  byte  size  will  be  8  bits. 

Ill  A  M  d.  Connection  parameter? 

These  parameters  are  used  for  offloading  schemes  in 
which  the  UFAM  must  remotely  specify  the  nature  of  the 
network  connection.  For  example,  if  the  only  parts  of 
FTP  that  are  offloaded  are  Telnet  and  the  Data  Transfer 
Process,  the  UFAM  in  the  host  would  have  to  be  able  to 
specify  the  parameters  for  opening  the  data  connection. 

Ill  A  4  d  (1).  Control. bits 

The  bits   in   this   field   govern   the   kind  of 

connection   to   be   established,   the   method   of  its 

establishment,   and    the    interpretation    of  the 
parameters. 

Ill  A  l.d   (1)   (a),   InU/Ugten 

When  this  bit  is  zero  (default),  the 
connection  is  to  be  actively  initiated  by  the  NCP. 
When  this  bit  is  one,   the   connection   is   to   be 


87 


DRAFT  8/23/77  FA  PSP 

BEGIN  Command 


passively  "listened"  for  by  the  NCP. 
Ill  A  »  4  (1)  (t>)t  SocKet/channel 

If  this  bit  is  zero,  the  logical  channel  from 
the  UFAM  is  to  be  established  to  a  new  ARPANET 
connection.  If  this  bit  is  one,  the  logical 
channel  from  the  UFAM  is  to  be  attached  to  an 
already  existing  HFP  channel  (e.g.,  a  channel 
already  established  to  the  host-host  service 
module  and  therefore  providing  access  to  an 
existing  network  connection.)  The  default  value 
is  zero. 

Ill    k    k    *    (1)  (g),  Duplex/Simplex 

When  this  bit  is  zero  (default),  the 
connection  is  to  be  full  duplex  and  is  therefore 
to  consist  of  two  ARPANET  connections  (one  in  each 
direction).  When  this  bit  is  one,  the  connection 
is  to  be  unidirectional  according  to  the  gender  of 
the  socket  numbers  supplied  in  the  Foreign  Socket 
and/or  Local  Socket  fields.  The  use  of  this  bit 
in  specifying  connection  sockets  is  detailed  in 
table  1. 

Ill  4  *  <M1)  (4).  ReUUve/AbspJ.ute 

This  field  affects  the  value  of  the  socket 
for  the  local  connection.  Sep  III  A  M  d  (6)  for 
details . 

Ill  A  4  d  (1)  (e).  Unattachable/Attachable 

When  this  bit  is  one,  the  SFAM  is  requested 
to  make  the  logical  channel  available  for 
attachment  by  other  service  modules  within  the 
front  end  (such  as  a  data  transformation  service). 
If  this  bit  is  zero  (default),  the  SFAM  is  not 
requested  to  make  the  logical  channel  available 
for  attachment  within  the  front  end. 

Ill  A  4  d  (2),  Host 

This  field  specifies  the  network  host  with  which 
the  connection  is  to  be  made.  A  value  of  zero  in 
this  field  indicates  that  the  connection  may  be 
established  with  any  host  on  the  network.  A  zero 
value  is  valid  only  if  the  Init/Listen  bit  is  one 
(Listen) . 

The  Host  field  is  parsed  as; 


8/23/77  FA  PSP 

BEGIN  Command 


Network:         FIXED(6) 
IMP:  FIXEDM6) 

Host-at-IMP:     FIXED(8) 

III  A  M  d  M).  Foreign  Socket 

This  field  is  used  as  follows  to  construct  the 
effective  foreign  socket  (e.f.s.)  for  making  the 
connection . 

Case  1.  Foreign     Socket     field     =     zero. 

Init/Listen   bit   =   one.    Foreign  host 

chooses  the  e.f.s. 
Case  2.  Foreign  Socket  field  =  zero.  Init/Listen 

bit  =  zero.   The  e.f.s.  is  one. 
Case  3-  Foreign  Socket  field  i    zero.   The  e.f.s. 

is   the   contents   of  the  Foreign  Socket 

field. 

The  default  value  of  this  field  is  zero.  The 
relationship  between  the  e.f.s.  and  the  foreign 
sockets  for  the  connection  is  defined  in  table  1. 

HI  A  1  d  m  «  Messages 

This  field  and  the  Bits  field  allow  the  UFAM  to 
indicate  to  the  SFAM  the  flow  rate  desirable  on  the 
data  connection.  The  SFAM  may  use  this  information 
in  any  way  its  implement ors  deem  desirable. 

This  field  contains  the  number  of  ARPANET  Host- 
Host  messages  the  UFAM  suggests  be  allocated  on  the 
data  connection.  If  the  value  of  this  field  is  zero 
(default),  the  SFAM  chooses  the  number  of  messages  on 
its  own.  In  some  cases  use  of  this  field  must  be 
coordinated  with  similar  information  provided  through 
other  protocols  (e.g.,  User  and  Server  FTP  process- 
to-service  protocols). 

Ill  A  H    4  (5),  Pita 

This  field  contains  the  number  of  bits  the  UFAM 
suggests  be  allocated  for  the  data  connection.  If 
the  value  of  this  field  is  zero  (default),  the  SFAM 
chooses  the  number  of  bits  on  its  own.  In  some  cases 
use  of  this  field  must  be  coordinated  with  similar 
information  provided  through  other  protocols  (e.g., 
User  and  Server  FTP  process-to-service  protocols). 

Ill    A  **  d  (fr)t  local  Socket 

This  field  is  used  as  follows  to  construct  the 
effective  local  sooket  (e.l.s.)  for  making  the 
connection . 


89 


6/23/77 


FA  PSP 
BEGIN  Command 


Case  1 . 


Case  2. 


Case  3- 


Relative/Absolut 
Socket  field  i 
contents  of  th 
HEADER  will  be 
low-order  20  bit 
field  to  form  th 
Relative/Absolut 
field  =  zero, 
will  choose  a  nu 
bits  are  equal  t 
HEADER. 

Relative/Absolut 
the   effective 
the  contents  of 


e   bit   =   zero, 

zero.   In  this  c 

e   Group   field 

concatenated 

of   the   Local 

e  .  1 .  s  . 

=  zero,   Local 
In  this  case, 
mber  whose  high 
o  the  Group  fiel 

e  =  one .   In   th 
local  socket  is 
the  Local  Socket 


Local 

ase,  the 

in   the 

with  the 

Socket 

Socket 
the  SFAM 
order  12 
d  in  the 

is   case 

equal  to 

field. 


The  relationship  between  the   e.l.s.   and   the   local 
sockets  for  the  connection  is  defined  in  table  1. 

Ill  A  4  d  (7).  Timeout 

This  field  contains  the  maximum  length  of  time, 
in  seconds,  that  the  SFAM  is  to  attempt  to  establish 
the  connection  (in  the  absence  of  an  error  or 
exceptional  condition).  If  the  SFAM  has  been  unable 
to  establish  the  connection  within  this  time  period, 
it  is  to  abandon  the  attempt.  If  this  field  contains 
zero  (default),  the  time  period  is  to  be  infinite. 

Ill  A  k    d  ($).  Byte  Size 

This  field  contains  the  byte  size  for  data 
transfer  on  the  connection.  If  this  field  contains 
zero  (default),  the  byte  size  will  be  8  bits. 


90 


DRAFT 


8/23/77 


FA  PSP 
BEGIN  Command 


Table  1 


Control 
Bit 

Foreign  Sockets 
for  the  connection 

Local  Sockets 
for  the  connection 

Duplex 

e. f . s  .  and  e. f . a .  ♦ 1 

e. 1 . s  .  and  e. 1 . s  .  ♦  1 

Simplex 

e.f .a. 

e.l.s. 

91 


DRAFT 


6/23/77 


FA  PSP 
BEGIN  Response 


III  B.  BEGIN  Pcaponae 
III  B  1,  When  sent 

A  BEGIN  Response  is  sent  by  the  SFAM  to  report  the 
outcome  of  an  attempt  to  access  a  file  or  establish  a 
transfer  requested  by  a  BEGIN  Command.  The  Status  field  in 
the  HEADER  will  indicate  whether  the  attempt  was  successful 
or  unsuccessful. 

Ill  P  2t  Action  on  receipt 

When  the  UFAM  receives  a  BEGIN  Response  indicating  a 
successful  connection,  it  may  proceed  to  use  the  channel. 
When  the  UFAM  receives  a  BEGIN  Response  indicating  an 
unsuccessful  connection,  it  should  perform  the  appropriate 
error  recovery. 

Ill  B  1.  TEXT  field  syntax 

Security: 
File  Results: 
Data  Results: 
Connection  Results: 

Connection  State: 

Host: 

Foreign  Socket: 

Messages: 

Bits: 

Local  Socket: 


VARIABLE*?) 

FIXED(4) 

FIXED(5) 

C0MPLEX(8) 
FIXED(M) 
FIXED(32) 
FIXED(32) 
FIXED(16) 
FIXED(32) 
FIXED(32) 


III    B  U.  TEXT  field  semantics 
III  B  *  at  Security 

This  field  may  be  used  to  validate  the  access 
privileges  of  the  user.  The  default  value  of  the  field 
is  empty.  Note:  At  this  time,  very  little  work  has 
been  done  on  the  organization  of  security  for  networks 
or  these  kinds  of  systems.  It  is  not  clear  where  access 
control  should  be  placed.  This  field  has  been  included 
in  case  some  systems  require  validation  at  this  point. 

Ill  B  4  b,  File  results 

If  the  BEGIN  Command  was  not  successful  (as 
indicated  by  the  Status  field  in  the  HEADER),  this  field 
will  contain  an  encoded  identification  of  any  problems 
with  the  File  Parameters.   The  values  are: 

1  File  not  found 

2  File  name  not  allowed 

3  File  too  large 


92 


8/23/77 


FA  PSP 
BEGIN  Response 


M  File  not  presently  available 

5  Record  size  too  long 

6  Position  information  not  valid 

7  Direction  not  supported 

6  Illegal  parameter  combination 

XII  B  4  c .  Data  t  r answer  results 

If  the  EEGIN  was  not  successful  (a?  indicated  bv 
the  Status  field  of  the  HEADER),  this  field  will  contain 
an  encoded  identification  of  any  errors  in  the  Data 
Transfer  Parameters.   The  values  are: 

1  Improper  Type 

2  Improper  Mode 

H  Improper  Structure 

8  Byte  size  not  supported 

16        Illegal  parameter  combination 

If  there  was  more  than  one  error,  the  associated  codes 
may  be  added  to  form  the  value  of  the  field.  This 
addition  amounts  to  just  setting  the  proper  bits.  If 
the  reason  is  "illegal  parameter  combination"  (16),  the 
SFAM  should  also  try  to  indicate  the  parameters  in 
conflict  by  setting  the  appropriate  bits. 


Ill  B  H  d«  Connection  results 

If  no  connection   was   associated   with 
Command,  these  fields  will  not  be  present. 

Ill  B  *♦  d  (Pt  connection-state 


the   BEGIN 


If  the  connection  attempt  was  successful  (as 
indicated  by  the  Status  field  in  the  HEADER),  this 
field  will  contain  the  value  1  which  will  be 
compatible  with  the  "open"  state  value  defined  for 
this  field  in  the  TEXT  of  the  EXECUTE  Response  (See 
III  K  H  g  (1).) 

If  the  connection  attempt  was  unsuccessful,  this 
field  contains  an  encoded  reason  for  the  failure. 
The  codes  are: 

0  Illegal  control  bit  combination 

1  Invalid  local  socket 

2  Invalid  host 

3  Byte  size  not  supported  by  front  end 

4  Byte  size  not  supported  by  foreign 

host 

5  Connection  attempt  timeout 

6  Network  not  available 

7  Foreign  host  dead 


93 


DRAFT 


8/23/77 


FA  PSP 
BEGIN  Response 


8  Connection  refused 

9  Front  end  terminating  service 
10        Improper  access 

III  P  *  d  (g)T  Host 

If  the  connection  attempt  was  successful,  this 
field  contains  the  ARPANET  host  address  of  the  host 
to  which  the  connection  was  established  (see  III  A  4 
d  (2)). 

Ill  P  1  d  (1).  Foreign  Socket 

If  the  connection  attempt  was  successful,  this 
field  contains  the  socket  number  at  the  foreign  host 
to  which  the  connection  was  established. 

Ill  B  U  d  (it).  Messages  and  Bits 

If  the  connection  attempt  was  successful,  these 
fields  contain  the  flow  control  parameters  for  the 
connection  at  the  time  the  BEGIN  Response  was 
generated. 

Ill  B  4  d  (5) .  Local  Socket 

If  the  connection  attempt  was  successful,  this 
field  contains  the  local  socket  number  for  the 
connection . 

Ill  B  H    d  (6).  Bvte  Size 

If  the  connection  attempt  was  successful,  this 
field  contains  the  byte  size,  in  bits,  for  the 
connecti  on . 


94 


b/23/77 


FA  PSP 
END  Command 


III  C.  END  Command 
III  C  1.  When  gent 

An  END  Command  is  sent  by  either  file  access  module  to 
terminate  a  session  on  a  particular  channel. 

Ill  C  2,  ActiPP  UPpn  receipt 

When  a  file  access  module  receives  an  END  Command,  it 
should  finish  writing  any  data  it  has  in  hand  onto  the  file 
or  network  connection  (unless  Flush  away  (bit  1)  is  set  in 
the  Control  field  of  the  HEADER),  close  the  file  or  network 
connection,  and  clean  up  whatever  loose  ends  there  may  be. 
When  all  is  in  order  (files  and  connections  closed,  etc.), 
the  FAM  should  send  an  END  Response. 

Ill  c  3,  TEXT  field  syntax 

Cause:         FIXED(3) 

III  C  L.  TEXT  field  semantics 

This  field  contains  an  encoded  reason  for  sending  the 
END  Command.   The  codes  are: 


0  Normal  completion  (default) 

1  Network/process  failure 

2  Foreign  host  failure 

3  User  requested  termination 

4  Front  end  terminating  service 

5  Improper  access 


DRAFT 


6/23/77 


FA  PSP 
END  Response 


III  P,  END  Response 
III  P  1,  When  gent 

The  END  response  is  sent  by  either  FAM  to  acknowledge 
the  receipt  of  an  END  Command  and  to  complete  the 
termination  of  the  associated  logical  channel. 

Ill  P  2«  Action  on  receipt 

When  a  FAM  receives  the  END  Response,  it  should 
consider  the  logical  channel  to  be  terminated. 

Ill  P  3.  TEXT  field  syntax 

The  TEXT  field  in  the  END  Response  is  not  used  in  this 
protocol. 


96 


DRAFT 


fe/23/77 


FA    PSP 
TRANSMIT    Command 


HI    E.    TRANSMIT    Command, 

III    g    1.    When    sent 

III  E  1  a.  By  the  FAM  in  the  host 

The  TRANSMIT  Command  is  sent  by  the  FAM  in  the  host 
to  pass  data  and  restart  markers  to  the  FAM  in  the  front 
end  for  transmission  over  the  network  to  the  foreign 
host,  or  to  the  file  system  in  the  front  end. 

Ill    E  1  b.  gy  the  FAM  in  the  front  end 

The  TRANSMIT  Command  is  sent  by  the  FAM  in  the 
front  end  to  pass  data  from  the  network  or  the  front- 
end's  file  system  to  the  FAM  in  the  host. 

Ill  E  2.  Action  on  receipt 

III  E  2  a.  By  the  FAM  in  the  host 

When  the  FAM  in  the  host  receives  a  TRANSMIT 
Command,  it  will  treat  the  contents  of  the  Data  field  as 
data  to  be  processed  as  directed  by  the  associated 
EXECUTE  Command. 

Ill  E  2  b.  By  the  FAM  In  the  frpnt  ep d 

When  the  FAM  in  the  front  end  receives  a  TRANSMIT 
Command,  it  will  treat  the  contents  of  the  Data  field  as 
data  to  be  transmitted  over  the  network,  or  to  the  local 
file  system. 

Ill  E  3.  TEXT  field  syntax 

Special  Conditions:   FIXED(2) 

No-EOT/EOT 

No-EOF/EOF 
Marker:  VARIABLE*?) 

Data:  VARIABLE*?) 

Ill  E  4.  TgXT  field  semantics 

HI  E  4  a.  Special  Conditions 

This  field  indicates  special  conditions  relevant  to 
the  transmission  of  the  data. 

Ill  EM  a  M  )  .  No-EOT/EOT 

When  this  bit  is  zero  (default),  there  is  more 
data  to  follow  in  subsequent  TRANSMIT  Commands.  When 
this  bit  is  one,  it  indicates  that  the  data   in   this 


97 


8/23/77 


FA  PSP 
TRANSMIT  Command 


TRANSMIT  Command  completes  a  read  or  write  operation. 

Ill    6  *  3  (2),  NP-EQF/BQF 

When  this  bit  is  zero  (default),  no  end  of  file 
condition  exists.  When  this  bit  is  one,  it  indicates 
that  the  data  in  this  TRANSMIT  Command  completes  the 
file.  Note:  If  this  bit  is  set,  the  No-EOT/EOT  bit 
will  be  set  also. 

Ill  E  »  b.  Marker 

This  field  contains  the  restart  marker.  Since  the 
restart  marker  must  be  at  the  front  of  the  message,  the 
FAM  will  have  to  place  data  into  messages  in  such  a  way 
that  each  marker  falls  at  the  beginning  of  a  new 
message.  The  form  of  the  restart  marker  is  left  to  the 
decision  of  the  installation.  This  field  can  also  be 
used  to  synchronize  read  and  write  EXECUTE  Commands  with 
the  data  they  refer  to. 

Ill  E  4  c.  Data 

This  field  contains  the  data  to  be  passed  over  the 
channel . 


98 


DRAFT  8/23/77  FA  PSP 

TRANSMIT  Response 


HI  F«  XraaaiU  Raaponae 

The  TRANSMIT  Response  is  used  as   described   in   the   HFP 
specification. 


8/23/77 


FA  PSP 
SIGNAL  Command 


III   Gt  SIONAL  Command 


The  SIGNAL  Command  is  net  used  in  the  process-to-service 
protocol.  SIGNAL  Commands  may  be  generated  by  process  or 
service  to  request  that  the  CPM  carry  out  the  appropriate 
action  on  the  logical  channel.  (See  HFP  specification.)  Thus, 
the  effect  of  the  SIGNAL  Command  is  restricted  to  the  logical 
channel  (HFP)  level. 


DRAFT  8/23/77  FA  PSP 

SIGNAL  Response 


III  H.  SIGNAL  Rcaponae 

The  SIGNAL  Response  is  not   used   by   either   process   or 
service. 


101 


DRAFT  6/23/77  FA  PSP 

EXECUTE  Command 


HI    J.  EXECUTE  Command 
III  J  K  When  sent 

III  J  1  a.  Bv  the  UFAM 

The  UFAM  sends  an  EXECUTE  Command  to   request   that 
the  SFAM 

(1)  set  Data  Transfer  Parameters, 

(2)  open  a  file , 

(3)  read  from  a  file, 

(4)  write  to  a  file 

(5)  move  the  read  pointer  in  the  file, 

(6)  move  the  write  pointer, 

(7)  open  a  network  connection,  or 

(8)  return  a  description  of  the  status  of  the  connection. 

Ill  J  1  b.  Bv  UFAM  or  the  SFAM 

Either  FAM  may  send  EXECUTE  Commands  to  the  other 

(1)  to  set  the  marker  window  width, 

(2)  to  abort  a  transfer,  or 

(3)  to  acknowledge  a  marker 

Which  FAM  may  send  these  commands  depends  upon  which  one 
is  the  data  source  and  which  the  data  receiver.  The 
data  source  sets  the  marker  window  width.  Only  the 
receiver  sends  marker  acknovl pd^emen t s .  Either  side  may 
abort  the  transfer. 

Ill  J  2.  Action  upon  receipt 

When  the  SFAM  or  UFAM  receives  an  EXECUTE  Command  it 
should  decode  it  and  attempt  to  perform  the  action 
indicated. 

Ill   J  3,  TEXT  field  syntax 

Code:  FIXED(4) 

Parameters:      VARIABLE(?) 

Ill  J  4.  TEXT  field  semantics 

III  J  4  a.  Code 

This  field  contains  an   encoding   of   the   type   of 
request.   The  codes  are: 

0  Set  Data  Transfer  Parameters 

1  Open 


102 


8/23/77 


FA  PSP 
EXECUTE  Command 


2  Read 

3  Write 

4  Set  read  position 

5  Set  write  position 

6  Abort 

7  Open  network  connection 

8  Set  marker  window 

9  Return  connection  status 
10  Marker  acknowledgement 

HI  J  1  b.  Parameter? 

This  field  contains  any  parameters  required  to 
perform  the  request  indicated  in  the  Code  field.  A 
discussion  of  these  parameters  follows. 

Ill  J  »  p  (D ,  §et  Pata  Transfer  Parameters 

For  offloading  schemes  where  the  UFAM  must 
remotely  control  the  FTP  data  transfer  process,  these 
parameters  are  used  to  specify  how  the  data  is  to  be 
formatted  for  transmission  over  the  network.  It  is 
assumed  that  the  host  and  front  end  have  agreed  on 
the  form  in  which  data  will  be  presented  to  each 
other. 

Ill  J  H  b  (1)  (a),  Parameter  field,  syntax 


Type: 
Mode: 

Structure : 
Byte  Size: 


FIXED(3) 
FIXED(2) 
FIXED( 1  ) 
FIXED(8) 


III  J  *♦  P  (1)  (b),  Parameter  field  semantics 

For  detailed  semantics  of   these   fields   see 
sections  III  A  4  c  (1)  -  (4)  above. 

Ill  J  4  b  (2).  Open 

These  parameters  specify  what  file  is  to  be 
transferred  in  what  direction,  the  size  of  the  file, 
and  the  record  size,  if  applicable.  The  Security 
field  is  provided  for  file  passwords  or  simply  to 
revalidate  the  user's  access  privileges. 

Ill  J  1  b  (2)  (a).  Parameter  field  syntax 


Security: 
Pathname : 
Direction : 
Position : 
Size: 


VARIABLE*?) 
VARIABLE*? ) 
FIXED(2) 
FIXEDC  ) 
FIXED(  ) 


103 


DRAFT  6/23/77  FA  PSP 

EXECUTE  Command 


Record  Size:     FIXED(  ) 

III  J  4  b  (2)  (b).  Parameter  field  semantics 

For  detailed  semantics  see  sections  III  A  4  a 
and  III  A  4  b.  Note:  Files  are  closed  implicitly 
by  sending  an  Open  request  for  a  new  file. 

Ill  J  4  b  H).  Read 

This  request  is  sent  by  the  UFAM  to  the  SFAM  to 
request  that  the  amount  of  data  specified  by  the 
parameter  be  transferred  from  the  file.  The  read 
begins  at  the  present  position  of  the  read  pointer. 
When  the  operation  is  complete,  the  pointer  is 
positioned  one  unit  beyond  the  last  unit  of 
information  read;  i.e.,  at  the  next  unit  of 
information  to  be  read. 

Ill  J  4  b  (3)  (a).  Parameter  field  syntax 

Amount:       FIXED(  ) 
Marker:       VARIABLE(  ) 

III  J  4  b  (3)  (b).  Parameter  field  semantics 

The  contents  of  the  Amount  field  specifies 
the  amount  of  data  to  be  read  from  the  file.  The 
size  of  the  field  and  the  units  represented  by  it 
are  installation  parameters. 

The  Marker  field  is  used  to  synchronize  the 
request  with  the  data  transferred  by  the  TRANSMIT 
Command.  This  Marker  and  the  Marker  in  the  first 
TRANSMIT  Command  carrying  data  referred  to  by  this 
Command  should  be  the  same. 

Ill  J  Mb  (4) .  Write 

This  request  is  sent  by  the  UFAM  to  the  SFAM  to 
request  that  the  amount  of  data  specified  by  the 
parameter  be  transferred  to  the  file.  The  write 
begins  at  the  present  position  of  the  write  pointer. 
When  the  operation  is  complete,  the  write  pointer  is 
positioned  one  unit  beyond  the  last  unit  written; 
i.e.  at  the  next  unit  of  information  to  be  written. 

Ill  J  4  b  (4)  (a).  Parameter  field  syntax 

Amount:       FIXED(  ) 
Marker:       VARIABLE*  ) 


104 


8/23/77  FA  PSP 

EXECUTE  Command 


III  J  4  b  (k)    (b).  Parameter  field  semantics 

The  contents  of  the   Amount  field   specifies 

the  amount  of  data  to  be  written  to  the  file.   The 

size  of  the  field  and  the  units  specified   by   it 
are  installation  parameters. 

The  Marker  field  is  used  to  synchronize  the 
request  with  the  data  transferred  by  the  TRANSMIT 
Command.  This  Marker  and  the  Marker  in  the  first 
TRANSMIT  Command  carrying  data  referred  to  by  this 
Command  should  be  the  same. 

Ill  J  ^  b  (5)f  Set  Read,  Pointer 

This  request  is  sent  by  the  UFAM  to  the  SFAM  to 
request  that  the  read  pointer  be  set  to  the  value 
indicated  by  the  parameter.  The  next  Read  request 
will  begin  at  this  point. 

Ill  J  4  P  (5)  (a).  Parameter  Field  Syptgx 

Position:     FIXED(  ) 

XII  J  ^  P  (5)  (b).  Parameter  Field  Semantics 

The  contents  of  this  field  indicate  the  new 
position  of  the  read  pointer.  The  size  and  units 
of  the  field  are  installation  parameters.  It  is 
recommended  that  special  values  be  provided  to 
denote  the  beginning  and  end  of  the  file. 

Ill  J  4  b  (6).  Set  Write  Pointer 

This  request  is  sent  by  the  UFAM  to  the  SFAM  to 
request  that  the  write  pointer  be  set  to  the  value 
indicated  by  the  parameter.  The  next  Write  request 
will  begin  at  this  point. 

Ill  v*  4  b  (v)  (a),  Parameter  field  syntax 

Position:     FIXED(  ) 

III  J  »  b  (6)  (b)t  Parameter  fjeld  semantics 

The  contents  of  this  field  indicate  the  new 
position  of  the  write  pointer.  The  size  and  units 
of  the  field  are  installation  parameters.  It  is 
recommended  that  special  values  be  provided  to 
denote  the  beginning  and  end  of  the  file. 

Ill  J  M  b  (7).  Abort 


105 


DRAFT 


8/23/77 


FA  PSP 
EXECUTE  Command 


This  request  is  sent  by  the  receiving  file 
access  module  to  request  that  the  current  transfer  of 
data  be  aborted.  The  sending  FAM  should  immediately 
stop  sending  and  await  further  commands. 

Ill  J  4  b  (6).  Open  Network  Connection 

This  request  is  sent  by  the  UFAM  to  the  SFAM  to 
request  that  a  network  connection  be  opened  according 
to  the  parameters. 

Ill  J  4  b  (6)  (a). _ Pa ram eter  field  sy n  t  a  x 


Connection  parameters: 

Con  t rol-bit s : 
Init/Listen 
Socket/Channel 
Duplex/Simplex 
Relative/Absolute 
Unattachable/Attachable 

Host: 

Foreign  Socket: 

Me  ssages : 

Bits: 

Local  Socket: 

Timeout : 

Byte  Size: 


COMPLEX ( b) 
FIXED(5) 


FIXEDC32) 
FIXED(32) 
FIXED( 16) 
FIXED(32) 
FIXED(32) 
FIXED(16) 
FIXED(o) 


III  J  4  b  (6)  (b).  Parameter  field  semantics 

For  detailed  semantics,  see  section  III  A  4 
d. 

Ill  tl  4  b  (9).  Set  Marker  Window 

This  request  is  sent  by  the  sender  of  the  data 
to  set  the  width  of  the  restart  marker  window.  In 
protocols  that  use  restart  markers,  this  request  is 
used  to  indicate  how  many  markers  can  be  sent  without 
receiving  a  Marker  Acknowledgement.  The  marker 
window  should  be  set  by  the  FAM  sending  the  data. 
(Note:  the  use  of  the  marker  window  mechanism  is 
optional.  ) 

III  J    *    b  (9)  (a).  Parameter  field  syntax 

Window  Width:         FIXED(  ) 

III  J  4  b  (9)  (b).  Parameter  field  semantics 

The  contents  of  this  field  indicate  the  width 
of  the  marker  window.  The  size  of  this  field  and 
its  units  are  installation  parameters. 


106 


6/23/77 


FA  PSP 
EXECUTE  Command 


III  J  H  b  (IP),  Return  Connection  Status 


No  additional  parameters  need 
for  this  request. 


to   be   specified 


III  il—i-b  (i1)t  Marker  Acknowledgement 

This  request  is  sent  by  the  receiver  of  the  data 
to  inform  the  sender  that  all  data  sent  before  a 
specified  marker  have  been  written  on  the  file.  The 
receiver  of  this  request  should  advance  the  left  edge 
of  the  marker  window  to  the  position  indicated  by  the 
parameter.  (Acknowledgement  of  several  markers  is 
allowed . ) 

III  J  1  b  (11)  (a),  Parameter  field,  syntax 

Marker:       FIXED(  ) 

III  J  ^  b  (11)  (b).  Parameter  fjeld  semantics 

This  field  contains  the  marker  beinc; 
acknowledged.  If  several  markers  are  being 
acknowledged,  this  field  contains  the  last  marker 
in  the  sequence.  The  size  of  the  field  and  the 
form  of  the  restart  markers  are  installation 
parameters. 


107 


DRAFT 


8/23/77 


FA  PSP 
EXECUTE  Response 


III  Kt  EXECUTE  Response 
ill  k  1,  When  sent 


A  file  access  module  sends  an  EXECUTE  Response  when 

a)  it  has  completed  the  operation   requested   by   an 
EXECUTE  Command, 

b)  it  has  received  an  EXECUTE  Command  whose  TEXT   is 
in  error,  or 

c)  report  on  the  status  of  the  network  connection. 

Ill   K  2.  AQtjon  on  receipt 

When  a  FAM  receives  an  EXECUTE  Response,  it  should 
examine  the  TEXT  to  see  whether  the  Response  indicates  an 
error.  If  no  error  is  indicated,  it  may  consider  that  the 
action  requested  by  the  previous  EXECUTE  Command  was 
successful.  If  an  error  is  indicated,  appropriate  error 
recovery  action  should  be  initiated.  This  action  is 
idiosyncratic  to  the  process. 

Ill  y  3.  TEXT  field  syntax 


Misc. -Result : 

FIXED(M) 

File  Results: 

FIXED(M) 

Data  Transfer  Results: 

FIXED(5) 

Marker  Results: 

FIXED(3) 

Ref-code: 

FIXED(iJ) 

Marker : 

VARIABLES) 

Connection  Results: 

C0MPLEX(8) 

Connection  State 

FIXED(M) 

Host 

FIXED(32) 

Foreign  Socket 

FIXED(32) 

Messages 

FIXED( 16) 

Bits 

FIXED(32) 

Local  Socket 

FIXED(32) 

III  K  M.  TEXT  field  semantics 

III  k  »  a.  Misc, -Result 

This  field  contains  an  encoding  of  the  result  of 
the  request  (in  a  previous  EXECUTE  Command)  to  which  the 
EXECUTE  Response  is  a  reply.   The  codes  are: 

1  Success 

2  Illegal  code  in  request 
11        TEXT  too  short 

8        Illegal  parameter  combination 

HI    K  4  b,  File  Resylts 

This  field  contains  an  encoding  of  errors  in   the 


108 


8/23/77  FA  PSP 

EXECUTE  Response 


file   parameters.    The   default   value   is   zero   (no 
errors).  The  codes  are: 

0  Success 

1  File  not  found 

2  File  name  not  allowed 

3  File  not  presently  available 

4  Size  too  large 

5  Record  size  too  long 

6  Position  not  valid 

7  Direction  not  valid 

III  K  4  ct  Pata  Transfer  Results 

This  field  contains  an  encoding  of  any  errors  in 
the  Data  Transfer  Parameters.   The  codes  are: 

1  Improper  type 

2  Improper  mode 

4        Improper  structure 

8  Byte  size  not  supported 

16        Illegal  parameter  combination 

III  Md,  Marker  Result? 

This  field  contains  an  encoding  of  any  errors 
resulting  from  the  handling  of  restart  markers.  The 
codes  are: 

0  Success 

1  Marker  window  too  wide 

2  Marker  window  too  narrow 

3  Illegal  marker 

4  Marker  outside  window 

III  K  t  et  Ref-code 

This  field  contains  the  same  value  as  the  Code 
field  of  the  TEXT  of  the  EXECUTE  Command  to  which  the 
EXECUTE  Response  is  a  reply. 

Ill  Pf,  Marker 

The  Marker  field  is  used  to  identify  the  EXECUTE 
Command  for  which  this  is  the  Response.  This  field 
should  match  the  Marker  field  in  the  EXECUTE  Command. 

Ill  K  4  g,  Connection  Results 

This  field  is  used  in  replies  to  Open  Network 
Connection  and  Return  Connection  Status  requests.  It 
has  the  same  meaning  as  its  identically  named  and 
formatted    counterpart   in   the   TEXT   of   the   BEGIN 


109 


6/23/77  FA  PSP 

EXECUTE  Response 


Response,  with  the  following  exception: 

III  K  *«  R  (1)t  Connection-state 

When  the  Response  is  to  a   Return   Connection 

Status   request,   this   field  indicates  the  present 
state  of  the  connection.   The   possible   values   of 

this  field  and  their  meanings  are: 

0  Closed 

1  Open 

2  Waiting  for  open  to  complete 

3  Waiting  for  close  to  complete 


110 


6/23/77  FA  PSP 

Description  of  the  File  Access  PSP 


IV.  Description  of  the  File  Access  PSP 

Basic  Operation .  Although  the  primary  purpose  of  the  File 
Access  PSP  is  to  facilitate  offloading  FTP  functions  from  a 
host,  it  serves  the  more  general  purpose  of  providing  the  host 
or  front  end  access  to  the  other  machine's  file  system.  This 
access  is  controlled  by  the  liFAM.  The  UFAM  first  sends  a  BEGIN 
Command  to  the  SFAM  to  instruct  it  to  establish  a  session,  to 
validate  or  identify  the  user,  and  to  prepare  for  access  to  a 
particular  file  or  network  port.  Once  everything  is  in 
readiness  data  transfer  may  commence  with  the  UFAM  issuing 
reads  and  writes  and  transmitting  data. 

The  File  Access  Process-t o-Service  Protocol  associates  a 
read  pointer  and  a  write  pointer  with  an  open  file.  The  read 
and  write  pointers  indicate  the  location  where  the  next  read  or 
write  operation  will  begin.  After  the  read  or  write,  the 
respective  pointer  is  left  pointing  after  the  last  unit  of 
information  read  or  written.  Since  the  level  of  file 
addressing  varies  considerably  from  host  to  host  the  File 
Access  PSP  does  not  define  the  units  represented  by  the  read 
and  write  pointers.  Implementations  should  choose  units  that 
allow  efficient  addressing  and  information  transfer. 
Implementors  should  also  provide  a  mechanise  for  th J  UFAM  to 
specify  the  beginning  or  end  of  a  file  without  actually  knowing 
the  address  of  the  beginning  or  end. 


When  the  transfer  is  complete,  the  UFAM  may   open   another 


8/23/77  FA  PSP 

Description  of  the  File  Access  PSP 


file  and  transfer  data  to  or  from  it.  When  the  UFAM  has 
finished  its  task  it  closes  the  channel  by  sending  an  END 
Command . 

Coordination  of  Commands  and  data .  In  the  FA- PSP,  the 
operations  to  be  performed  (read,  write,  open,  etc.)  are 
transferred  by  TRANSMIT  Commands.  When  reads  and  writes  are 
used  to  access  the  file  randomly,  some  way  must  be  provided  to 
match  operations  with  their  data,  since  EXECUTE  Commands  and 
Responses  are  sent  out  of  band  with  TRANSMIT  Commands. 

Two  methods  may  be  used.  The  implementations  in  the  host 
and  front  end  may  be  designed  so  that  an  EXECUTE  Command  cannot 
be  sent  until  the  EXECUTE  Response  from  the  previous  EXECUTE 
Command  has  been  received.  The  SFAM  would  then  withhold  the 
EXECUTE  Response  until  it  had  completed  the  operation.  This 
method,  however,  does  not  allow  overlapping  requests  and  could 
significantly  cut  down  the  bandwidth.  Alternatively,  the 
Marker  fields  in  the  read  and  write  EXECUTE  Commands  and  in  the 
TRANSMIT  Commands  can  be  used  to  tag  the  operations  and  the 
corresponding  data.  fey  this  device  the  SFAM  can  determine  what 
it  is  to  do  with  the  data  by  matching  the  marker  in  the  EXECUTE 
Command  with  the  data  in  the  TRANSMIT  Command.  Similarly  the 
UFAM  can  determine  what  operations  have  completed  by  matching 
the  Marker  field  in  an  EXECUTE  Response  with  the  Markers  for 
outstanding  EXECUTE  Commands. 

Use  of   markers   for   restart.    File   Transfer   Protocols 


112 


6/23/77  FA  PSP 

Description  of  the  File  Access  PSP 


structured  similarly  to  the  File  Access  PSP  do  not  require  an 
explicit  restart  mechanism  for  transfers  of  complete  files.  If 
the  host  can  determine  the  length  of  the  file  and  an  explicit 
address  for  the  end  of  the  file,  then  a  restart  can  be 
accomplished  by  determining  the  address  of  the  last  data  unit 
received  and  setting  read  and/or  write  pointers  accordingly  for 
the  transfer.  Since  many  FTP'S  do  not  provide  the  ability  to 
address  a  file,  the  File  Access  PSP  supports  a  fairly  general 
restart  mechanism  that  should  be  capable  of  encompassing  most 
restart  facilities  found  in  FTP'S. 

There  are  two  major  aspects  to  this  restart  facility: 
1)  the  use  of  markers  associated  with  the  data,  and  2)  a 
restart  marker  window  (RMW).  The  protocol  allows  markers  to  be 
placed  in  the  TRANSMIT  Command  with  the  data.  When  the  data 
has  been  written  on  the  file  so  that  a  system  crash  will  not 
cause  it  to  be  lost,  the  FAM  controlling  the  data  sends  an 
EXECUTE  Command  to  the  FAM  controlling  restart  to  acknowledge 
the  marker.  In  order  that  one  FAM  not  get  too  far  ahead  of  the 
other,  a  restart  marker  window  is  provided.  An  EXECUTE  Command 
variant  is  provided  to  set  the  width  of  the  RMW;  however, 
installations  should  define  a  default  RMW  width.  This  window 
works  exactly  like  the  ones  found  in  low-level  protocols  such 
as  TCP  and  the  CYCLADES  TS,  except  that  in  this  case  the  window 
is  used  to  control  the  flow  of  markers  and  only  indirectly  the 
flow  of  data.  The  sending  FAM  can  continue  to  send  data  as 
long  as  the  window  is  open.   Each  marker  sent  or  received  moves 


DRAFT 


6/23/77  FA  PSP 

Description  of  the  File  Access  PSP 


the  left  edge  of  the  window  and  each  marker  acknowledgement 
sent  or  received  moves  the  right  edge  of  the  window.  If  the 
FAM  controlling  the  data  gets  too  far  behind  in  acknowledging 
markers,  the  window  will  close  and  the  transfer  will  stop  until 
one  or  more  markers  are  acknowledged.  The  File  Access  PSP  does 
not  specify  the  form  of  the  markers  or  how  they  relate  to  the 
data  or  amount  of  data  transferred.  However,  implementors 
would  be  wise  to  generate  markers  in  a  form  such  that,  when  a 
marker  acknowledgement  is  received,  it  can  be  assumed  to 
acknowledge  all  preceding  markers.  Also,  implementors  should 
try  to  define  a  marker  form  that  makes  it  easy  for  the  FAM 
controlling  the  transfer  to  be  able  to  tell  what  markers  came 
before  the  one  currently  under  consideration  and  to  what  point 
in  the  file  this  restart  point  corresponds. 

The  RMW  is  useful  for  several  reasons.  It  can  ensure  that 
if  a  failure  occurs  the  amount  that  must  be  retransmitted  is 
not  too  large.  Also,  if  the  format  of  markers  is  such  that  a 
table  must  be  kept  to  map  markers  into  the  corresponding  file 
address,  the  window  restricts  the  table  to  a  fixed,  manageable 
size. 

Use  in  offloading  FTP.  The  File  Access  Process- to-Service 
Protocol  is  used  in  several  different  ways  to  offload  file 
transfer  protocols.  Details  of  these  schemes  may  be  found  in 
"Offloading  ARPANET  Protocols  to  a  Front  End,"  CAC  Document 
230.   The  most  important  distinction   between   the   schemes   is 


114 


DRAFT 


8/23/77  FA  PSP 

Description  of  the  File  Access  PSP 


whether  the  UFAM  is  in  the  host  or  in  the  front  end. 

If  the  UFAM  is  in  the  host,  then  the  FA-PSP  is  used  to 
offload  network  access  for  data  transfer  to  and  from  remote 
hosts.  If  the  data  transfer  process  is  in  the  front  end,  the 
FA-PSP  is  also  used  to  offload  data  translation  tasks.  Unless 
the  UFAM  is  attempting  to  access  a  file  system  in  the  front 
end,  the  file  parameters  of  the  BEGIN  Command  will  not  be  used. 
Only  the  Data  Connection  Parameters  will  be  present.  The 
restart  marker  apparatus  will  only  be  present  if  marker 
bookkeeping  and  assignment  is  done  in  the  host.  These  markers 
will  be  present,  however,  to  implement  the  marker  mechanism  of 
the  FTP  rather  than  to  offload  it. 

If  the  UFAM  is  in  the  front  end,  then  the  FA-PSP  is  being 
used  to  offload  network  access  for  data  transfer,  access  to  the 
host's  file  system,  and  possibly  data  translation  and  restart. 
The  Connection  Parameters  will  never  occur  in  the  BEGIN 
Command.  The  Data  Parameters  may  occur  if  the  data  translation 
is  done  in  the  host.  (However,  translation  will  most  likely  be 
done  in  the  front  end.)  The  File  Parameters  will  always  be 
present.  In  this  case,  the  FA-PSP  can  be  used  to  offload  more 
of  the  restart  bookkeeping  to  the  front  end.  Of  course, 
markers  and  marker  acknowledgements  may  be  present  merely  to 
implement  FTP  rettart,  regardless  of  whether  restart  is 
offloaded. 


115 


DRAFT 


8/23/77 


FA  PSP 
Scenario 


V.  Scenario 

Let  us  consider  how  this  protocol  is  used  to  transfer 
files  between  the  host  and  front  end.  In  this  scenario,  the 
Using  File  Access  Module  (UFAM)  is  in  the  front  end.  Another 
front-end  module  (e.g.,  the  user  or  server  FTP  service  module) 
has  passed  the  UFAM  the  necessary  information  to  initiate  a 
transfer.  To  be  specific,  let  us  assume  that  the  server  FTP 
service  module  (SFSM)  has  just  given  the  UFAM  the  user 
identification,  pathname,  and  network  port  information  for 
starting  a  transfer  across  the  network.  The  UFAM  then  sends  a 
BEGIN  Command  to  the  host  to  request  access  to  the  file: 

<BEGINXCXsecurity  =  day,johnXpathname  =  junk.note> 
<direction  =  2> 

The  Serving  File  Access  Module  (SFAM)  in  the  host 
successfully  opens  the  file  and  sends  a  BEGIN  Response: 

<BEGINXRXStatus  =  0> 

The  UFAM  is  now  ready  to  begin  the  transfer  of  the  data.  It 
notifies  the  SFSM,  so  it  can  send  the  user  the  FTP  reply 
indicating  begin  of  transfer,  and  sends  a  read  to  the  SFAM: 

<  EXE CUTEXCX coder  2><  Amount  rALL> 

(This  implementation  has  defined  the  string  "ALL"  to  indicate 
that  the  entire  file  is  to  be  read.)  Data  begins  to  flow 
immediately  via  the  TRANSMIT  Commands: 


116 


DRAFT  8/23/77  FA  PSP 

Scenario 


<TRANSMITXCXspecialrOXthe  data>. 

At  some  time,  perhaps  before  the  first  TRANSMIT  Command,  the 
SFAM  sends  a  response  to  the  read: 

<EXECUTEXR> 

(No  parameters  are  required  since  the  read  was  successful.) 
Finally  the  last  of  the  file  is  moved  across: 

<TRANSMITXCXspecialr3><data> 

The  UFAM  notifies  the  SFSM  after  the  last  message  has  been 
written  to  the  net,  so  that  the  SFSM  can  send  the  FTP  reply 
indicating  the  end  of  the  transfer.  The  UFAM  then  waits  for 
another  request  from  the  SFSM.  However,  the  user  is  done  and 
has  sent  an  FTP  EYE  Command  to  the  SFSM.  The  SFSM  notifies  the 
UFAM  that  the  session  is  terminating  and  the  UFAM  sends  an  END 
Command  indicating  normal  completion: 

<ENDXCXcause  =  0> 

The  SFAM  replies  immediately  with  an  END  Response: 

<ENDXR>. 


117 


6/23/77 


FA  PSP 
References 


VJI.  References 

1.  Day,  J.  "Offloading  ARPANET  Protocols  to  a  Front  End,"  CAC 
Document  No.  230,  Center  for  Advanced  Computation, 
University  of  Illinois  at  Urbana-Champai gn ,  1977. 

2.  Neigus,  N.  "The  File  Transfer  Protocol,"  ARPANET  RFC  542, 
1973. 


3.  Neigus,  N.;  Pogran,  K.;  and  Postel,  J.   "A   New   Schema   for 
FTP  Reply  Codes,"  ARPANET  RFC  640,  1974. 

4.  Schicker,  P.;  Duenki,  A.;  and   Baechi,   W.    "Bulk   Transfer 
Facility,"  INWG  Protocol  Note  #31.   EIN /ZHR/75/20 ,  1976. 


Appendix  3 

ARPANET  Host-Host 
Process -to -Service 
Protocol  Specification 

CAC  Technical  Memorandum  80 


by 


John  Day 
Gary  Grossman 


119 


ARPANET    Host-Host 

Process-to-Service  Protocol 

Specification 


If  Service  Code  Nvaber 


II.  Description  of  the  Service 

This  document  is  a  process-to-service  protocol  specification 
as  defined  in  the  Host-to-Front-End  Protocol  (HFP)  Specification 
[ARPANET  RFC  710].  It  specifies  a  process-to-service  protocol 
for  providing  ARPANET  Host-Host  Protocol  and  Initial  Connection 
Protocol  services  to  a  process  through  the  HFP. 

The  Host-Host  Protocol  is  the  basic  inter-process 
communication  protocol  for  the  ARPANET  [ARPANET  NIC  Document 
8246].  The  program  which  implements  it  in  each  host  is  the 
Network  Control  Program  (NCP).  The  service  described  here 
provides  an  interface,  through  the  HFP,  between  a  process  in  a 
host  and  an  NCP  in  a  front  end.  This  enables  the  process  to 
establish  and  use  ARPANET  connections. 

The  Initial  Connection  Protocol  (ICP)  is  the  mechanism  in 
the  ARPANET  which  enables  a  process  in  one  host  to  connect  to  a 
multi-user  facility,  such  as  the  virtual  terminal  server  or  the 
file  transfer  server,  in  another  host  [ARPANET  NIC  Documents 
7101,  7155,  7103].   The  service  described  here  enables  a   process 


121 


DRAFT  8/23/77  HH  PSP 

Description  of  the  Service 


in  a  host  to  establish  ARPANET  connections  via  the  ICP. 

The  ARPANET  Host-Host  process-to-service  protocol  uses  HFP 
Messages  to  carry  information  between  the  process  and  the  service 
module.  A  brief  summary  of  the  function  of  specific  Message 
types  follows. 


begin  Command 

from  the  host  process 

requests  that  a  connection  be  established. 

BEGIN  Response 

from  the  service  module 

a)  confirms  the  establishment  of  the  connection  or 

b)  reports  the  reason  for  failure. 

END  Command 

from  the  process 

requests  the  closing  of  the  connection, 
from  the  service  module 

reports  the  closing  of  the   connection   by   the 

foreign  host. 

END  Response 

from  the  process 

acknowledges  the  closing  of  the  connection, 
from  the  service  module 

acknowledges  the  closing  of  the  connection. 

TRANSMIT  Command 

from  the  process 

carries   data   to   the    service    module    for 

transmission   to   the   foreign   host   over   the 

ARPANET, 
from  the  service  module 

carries  data  received  over  the  ARPANET   to   the 

process . 

EXECUTE  Command 

from  the  process 

requests  that  the  service  module 

a)  send   an   ARPANET   Host-Host   INR   command 
referencing  the  connection, 

b)  alter   flow   control   parameters   for   the 
connection,  or 

c)  report  the  status  of  the  connection. 

EXECUTE  Response 

122 


DRAFT  6/23/77  HH  PSP 

Description  of  the  Service 


from  the  service  module 

a)  acknowledges  the  completion  of  actions 
requested  by  the  process  via  EXECUTE  Commands 
and 

b)  reports  the  status  of  the  connection. 

Security  and  protection  problems  are  posed  by  the  way  that 
local  sockets  are  used  in  the  ARPANET  protocols.  If  processes 
were  permitted  to  use  any  socket  number  without  restriction,  a 
process  could  'masquerade'  as  another  (e.g.,  the  logger)  and  gain 
access  to  privileged  information  (e.g.,  passwords).  For  this 
reason,  two  modes  of  access  to  the  local  socket  name  space  are 
provided.  The  "relative"  mode  restricts  the  process  to  a  unique, 
distinct  subset  of  the  local  socket  name  space.  This  mode 
requires  no  special  privilege.  The  "absolute"  mode  allows  the 
process  to  access  any  local  socket  number.  Its  use  requires  the 
process  to  have  special  privileges.  The  modes  are  distinguished 
by  the  Relative/Absolute  bit  in  the  TEXT  of  the  BEGIN  Command. 
(See  sections  III  A  H  b  (1)  (d)  and  III  A  H  b  (6).) 

Some  front  ends  may  be  so  structured  that  it  is  possible  for 
service  modules  to  communicate  with  each  other.  This  facility 
could  be  used  to  permit  service  modules  such  as  Telnet  to 
communicate  with  the  ARPANET  host-host  service  module  and  use 
network  connections  which  the  process  had  already  separately 
established.  A  process  could  request  the  host-host  service 
module  to  connect  to  a  remote  host.  Then  the  process  could 
request  the  Telnet  service  to  "attach"  to  the  already  existing 
logical  channel  associated  with  the  host-host  service  module  and 
thus    use    the    already    existing   network   connection.    The 

123 


DRAFT 


8/23/77  HH  PSP 

Description  of  the  Service 


"Unattachable/Attachable"  bit  in  the  TEXT  of  the  BEGIN  Command  is 
used  to  enable  this  feature  for  a  given  logical  channel.  See 
section  III  A  4  b  (1)  (e). 

The  detailed   specification   of   the   use   of   HFP   Messages 
follows. 


124 


DRAFT 


8/23/77 


HH  PSP 
BEGIN  Command 


III,  Meaaflftc  Umm 

III   A.    BEGIN   CoBBftn<3 

III    A    1.    When    sent 

A  BEGIN  Command  is  sent  by  the  process  to  request  that 
the  service  module  attempt  to  establish  an  ARPANET 
connection . 

Ill  A  2.  Action  on  receipt 

When  the  service  module  receives  the  BEGIN  Command,  it 
will  attempt  to  establish  the  connection  according  to  the 
parameters  in  TEXT. 


Ill  A  3.  TEXT  field  syntax 


VARIABLES) 
C0MPLEX(8) 
FIXED(5) 


Security: 
Establishment: 
Control-bits : 

Init/Listen 

ICP/Direct 

Duplex/Simplex 

Relative/Absolute 

Unattachable/Attachable 
Host:  FIXED(32) 

Foreign  Socket:  FIXED(32) 

Messages:  FIXEDM6) 

Bits:  FIXED(32) 

Local  Socket:  FIXED(32) 

Timeout:  FIXED(16) 

Byte  Size:  FIXED(8) 

III  A  L,   TEXT  field  gjBjmiU&a 

This  field  can  be  used  to  validate  the  process' 
access  privileges  to  network  resources.  It  is 
particularly  important  to  limit  access  to  network 
security  objects  such  as  local  socket  1.  The 
substructure  and  content  of  this  field  are  Installation 
dependent . 

NOTE:  At  this  writing,  not  enough  is  known  about 
security  in  networks  and  front  ends  to  make  any 
statement  about  the  utility  of  validation  at  this  point 
in  the  system.  This  field  is  included  in  case  some 
systems  require  validation  at  this  point. 


125 


DRAFT 


8/23/77 


HH  PSP 
BEGIN  Command 


III  A  t  p,  Establishment 

This    set    of   parameters    governs    the   establishment    of 
the    network    connection. 

Ill  A  4  b  M),  control-bits 

The  bits  in   this   field   govern   the   kind  of 

connection   to  be   established,   the   method   of  its 

establishment,  and    the    interpretation    of  the 
parameters. 

Ill  A  ^  t>  (1)  (a)t  InU/Listeji 

When  this  bit  is  zero  (default),  the 
connection  is  to  be  actively  initiated  by  the  NCP. 
When  this  bit  is  one,  the  connection  is  to  be 
passively  "listened*1  for  by  the  NCP.  The  use  of 
this  bit  in  specifying  connection  sockets  is 
detai led  in  table  1 . 

Ill  A  4  b  (1)  (b).  ICP/Direct 

When  this   bit   is    zero    (default),    the 

connection  is   to   be  established  via  the  Initial 

Connection  Protocol.  When  this   bit   is   one,   the 

connection  is   to   be  established  directly  to  the 
specified  foreign  socket.   The  use  of  this  bit   in 

specifying  connection  sockets  is  detailed  in  table 
1. 


This  bit  is  relevant  only  if  the  ICP/Direct 
bit  is  one.  When  this  bit  is  zero  (default),  the 
connection  is  to  be  full  duplex  and  is  therefore 
to  consist  of  two  ARPANET  connections  (one  in  each 
direction).  When  this  bit  is  one,  the  connection 
is  to  be  unidirectional  according  to  the  sender  of 
the  socket  numbers  supplied  in  the  Foreign  Socket 
and/or  Local  Socket  fields.  The  use  of  this  bit 
in  specifying  connection  sockets  is  detailed  in 
table  1. 

Ill  A  4  b  (1)  (d).  Relative/Absolute 

This  field  affects  the  value  of  the  socket 
for  the  local  connection.  See  III  A  4  b  (6)  for 
details. 

Ill  A  4  b  (1)  (c).  Unattachable Ik 1 1 a chable 

When  this  bit  is  one,  the   host-host   service 


126 


6/23/77  KH  PSP 

BEGIN  Command 


module  is  requested  to  make  the  logical  channel 
available  for  attachment  by  other  service  modules 
within  the  front  end  (such  as  Telnet  or  a  data 
transformation  service).  If  this  bit  is  zero 
(default),  the  host-host  service  module  is  not 
requested  to  make  the  locical  channel  available 
for  attachment  within  the  front  end. 

HI  A  1  b  (2)  .    Host 

This  field  specifies  the  network  host  to  which 
the  connection  is  to  be  made.  A  value  of  zero  in 
this  field  indicates  that  the  connection  may  be 
established  with  any  host  on  the  network.  A  zero 
value  is  valid  only  if  the  Init/Listen  bit  is  one 
(Listen)  . 

The  Host  field  is  parsed  as: 

Network:         FIXED(ft) 
Imp:  FIXED(16) 

Host-at-Imp:     FIXED(fc) 

III  A  k    b  (3).  Foreign  Socket 

This  field  is  used  as  follows  to  construct  the 
effect! ve  foreign  socket  (e.f.s.)  for  making  the 
connection. 

Case  1.  Foreign     Socket     field     =     zero; 

Init/Listen   bit   =   one.    Foreign  host 

chooses  the  e.f.s. 
Case  2.  Foreign     Socket     field     =     zero; 

Init/Listen   bit   =  zero.   The  e.f.s.  is 

one . 
Case  3.  Foreign  Socket  field  i    zero.   The  e.f.s. 

is   the   contents   of  the  Foreign  Socket 

field. 

The   default   value   of   this   field  is   zero.     The 

effective   foreign   socket   is   used  in  various  ways, 

depending  upon  the  values  of  certain  of   the   control 

bits,   to   effect   the   connection.  See   table  1  for 
detai Is . 

Ill  A  4  b  (M).  Messages 

This  field  and  the  Bits  field  allow  the  process 
to  indicate  to  the  service  module  the  flow  rate 
desirable  on  the  connection.  The  service  module  may 
use  this  information  in  any  way  its  implement ors  deem 
desirabl e. 

This  field  contains  the  number  of   ARPANET   Host- 

127 


DRAFT 


8/23/77 


HH  PSP 
BEGIN  Command 


Host  messages  the  process  suggests  be  allocated  on  the 
connection.  If  the  value  of  this  field  is  zero 
(default),  the  service  module  chooses  the  number  of 
messages  on  its  own. 

Ill  A  1  b  (5)t  Pit? 

This  field  contains  the  number  of  bits  the 
process  suggests  be  allocated  for  the  connection.  If 
the  value  of  this  field  is  zero  (default),  the  service 
module  chooses  the  number  of  bits  on  its  own. 

b  (6 )  .  Local  Socket 


This  field  is  used  as  f 
effective    local    socket 
connection . 

Case  1.  Relati ve/Absolu 
Socket   field 
contents  of  the 
will   be   conca 
20  bits  of  the 
the  e. 1 . s . 

Case  2.  Relati ve/Absolu 
Socket   field 
service  will  ch 
order   12    bit 
field  in  the  HE 

Case  3-  Relative/Absolu 
case  the  effec 
to  the  conten 
field. 


ollows  to  construct  the 
(e.l.s.)   for   making   the 

te  bit  =  zero,  Local 
i  zero.  In  this  case,  the 
Group  field  in  the  HEADER 
tenated  with  the  low-order 
Local  Socket  field  to  form 

te  bit  =  zero,  Local 
=  zero.  In  this  case,  the 
oose  a  number  whose  high 
are  equal  to  the  Group 
ADER. 

te  bit  =  one.  In  this 
tive  local  socket  is  equal 
ts   of   the   Local   Socket 


The  effective  local  socket  is   used   in  various   ways, 

depending   upon   the   values   of  certain  of  the  control 

bits,  to   effect   the   connection.    See  table   1   for 
details. 

Ill  A  4  b  (7),  Timeout 

This  field  contains  the  maximum  length  of  time,  in 
seconds,  that  the  service  module  is  to  attempt  to 
establish  the  connection  (in  the  absence  of  an  error  or 
exceptional  condition).  If  the  service  module  has  been 
unable  to  establish  the  connection  within  this  time 
period,  it  is  to  abandon  the  attempt.  If  this  field 
contains  zero  (default),  the  time  period  is  to  be 
infinite. 

Ill  A  4  b  (8).  Bvte  Size 

This   field   contains   the   byte   size   for    data 


128 


DRAFT 


8/23/77 


HH  PSP 
BEGIN  Command 


transfer  on  the  connection.    If   this   field 
zero  (default),  the  byte  size  will  be  b  bits. 


contain  s 


129 


DRAFT 


8/23/77 


HH  PSP 
BEGIN  Command 


Table  1 


Control  Bits   {     Foreign  Sockets     !      Local  Sockets 

i   for  the  connection    i   for  the  connection 

!        {The  e.f.s.  will  be  used! 
j        las  the  contact  socket   { 

i  Init   {for  the  connection.     {e.l.s.  +  2  and  e.l.s.  +3 
!        {The  data  sockets  will   | 
!        !be  chosen  by  the  for-   J 
i        ieign  host.              i 
ICP   I  ------- | -___-----_-_-_---_--- { ----------------------- 

i        !                        iThe  e.l.s.  will  be  used 
'        *                        las  the  contact  socket 
I        1                        {for  the  connection. 
{Listen  le.f.s.  -4-2  and  e.f.s.  +3!The  data  sockets  will 
1         }                         |be  chosen  by  the 
I        I                        1  service  as  in  Case  2  of 
I        I                        ! Ill  A  H    b  (6). 

(Duplex  |  e.f.s.  and  e.f.s.  +1   I  e.l.s.  and  e.l.s.  ♦  1 
Direct  | ------- j ----------------------- { --- -_--_-_---_------ 

{Simplex!         e.f.s.          !         e.l.s. 

130 


DRAFT 


8/23/77 


HH  PSP 
BEGIN  Response 


III  L.  BEGIN  Response 
III  P  1,  Wnen  sent 

A  BEGIN  Response  is  sent  by  the  service  module  to 
report  the  outcome  of  an  attempt  to  establish  a  connection 
requested  by  a  BEGIN  Command.  The  Status  field  in  the 
HEADER  will  indicate  whether  the  connection  attempt  was 
successful  or  unsuccessful. 

Ill  b  2.  Action  on  receipt 

When  the  process  receives  a  BEGIN  Response  indicating 
a  successful  connection,  it  may  proceed  to  send  and  receive 
data  on  the  connection.  When  the  process  receives  a  BEGIN 
Response  indicating  an  unsuccessful  connection,  it  should 
perform  the  appropriate  error  recovery. 

Ill  B  3.  TEXT  field  syntax 

Connect! on -info: 

Connection-state: 

Host: 

Foreign  Socket: 

Messages : 

Bits: 

Local  Socket: 

Byte  Size: 


COMPLF.X(?) 
FIXED(U) 
FIXED(32) 
FIXED(32) 
FIXED( 16) 
FIXED(32) 
FIXED(32) 
FIXED(8) 


nantics 

III  3  4  a,  Connection-state 

If  the  connection  attempt  was  successful  (as 
indicated  by  the  Status  field  in  the  HEADER),  this  field 
will  contain  the  value  1  which  will  be  compatible  with 
the  "open"  state  value  defined  for  this  field  in  the 
TEXT  of  the  EXECUTE  Response  (which  see). 

If  the  connection  attempt  was  unsuccessful,  this 
field  contains  an  encoded  reason  for  the  failure.  The 
codes  are: 

0  Illegal  control  bit  combination 

1  Invalid  local  socket 

2  Invalid  host 

3  Byte  size  not  supported  by  front  end 

4  Byte  size  not  supported  by  foreisrn  host 

5  Connection  attempt  timeout 

6  Network  not  available 

7  Foreign  host  dead 

8  Connection  refused 

9  Front  end  terminating  service 


131 


DRAFT  8/23/77  HH  PSP 

BEGIN  Response 


III  B  »  b,  Hogt 

If  the  connection  attempt  was  successful,  this 
field   contains   the  AEFA.NET  host  address  of  the  host  to 

which  the  connection  w  a  ?  established. 

Ill  B  4  c.  For eign  Socket 

If  the  connection  attempt  was  successful,  this 
field  contains  the  socket  number  at  the  foreign  host  to 
which  the  connection  was  established. 

Ill  B  U  d.  Messages  and  Bits 

If  the  connection  attempt  was  successful,  these 
fields  contain  the  flow  control  parameters  for  the 
connection  at  the  time  the  BEGIN  Hesponse  was  generated. 

Ill  p  U  et  Local  Socket 

If  the  connection  attempt  was  successful,  this 
field  contains  the  local  socket  number  for  the 
connection . 

Ill  g  4  f.  Evt*  Size 

If  the  connection  attempt  was  successful,  this 
field  contains  the  byte  size,  in  bits,  for  the 
connection . 


132 


DRAFT 


0/23/77 


hH  PSP 
END  Command 


III  C  ,  END  Command 

III  C  1.  When  sent 

III  C  1  a.  By  the  process 

An  END  Command  is  sent  by  the  process  to  request 
the  service  module  to  close  the  network  connection. 

J.II  C  1  b.  By  the  service  module 

An  END  Command  is  sent  by  the  service  module  to 
notify  the  process  that  the  connection  has  been  closed 
by  the  foreign  host  or  by  a  failure  of  the  foreign  host 
or  the  network. 

Ill  C  2.  Action  on  receipt 


When  the  process  receives  an  END  Command,  it  should 
consider  the  connection  closed.  The  process  should  send 
an  END  Response  and  take  appropriate  recovery  action. 

Ill  C  2  b.  Bv  the  service  module 

When  the  service  module  receives  an  END  Command,  it 
should  allow  data  queued  for  transmission  to  the  network 
to  drain,  unless  Flush  awav  (bit  1)  is  set  in  the 
Control  field.  It  should  then  initiate  the  process  of 
closing  the  connection.  When  the  connection  is  closed, 
the  service  module  should  send  an  END  Response. 


Ill  C  3 .  TEXT  field  syntax 

Cause:  FIXED(3) 
[II  C  *♦  ♦  TEXT  field  semantics 

III  C  4  a.  Cause 


This  field  contains  an  encoded  reason 
the  END  Command.   The  codes  are: 


for   sending 


0  Normal  completion  (default) 

1  Network/process  failure 

2  Foreign  host  failure 

3  User  requested  termination 

M  Front  end  terminating  service 


133 


DRAFT 


8/23/77 


HH  PSP 
END  Response 


III  D.  END  Response 

III  P  1.  When  gent 

III  P  Is,  Py  the  process 

The  END  Response  is  sent  by  the  process  to 
acknowledge  the  receipt  of  an  END  Command  and  complete 
the  termination  of  the  associated  logical  channel. 

Ill  P  1  &.  Py  the  service  module 

The  END  Response  is  sent  by  the  service   module  to 

acknowledge   receipt   of   an   END   Command,   notify  the 

process   that   the   connection   has    been    closed  as 
requested,  and  terminate  the  logical  channel. 

Ill  P  2t  Action  on  receipt 

III  P  ?  a,  Py  the  process 

When  the  process  receives  the  END  Response,  it 
should  consider  the  ARPANET  connection  to  be  closed  and 
the  HFP  logical  channel  to  be  terminated. 

Ill  P  2  bt  py  the  service  module 

When  the  service  module  receives  the  END  Response, 
it  should  consider  the  logical  channel  to  be  terminated. 


The  TEXT  field  in  the  END  Response  is  not  used  in  this 
process-to-service  protocol. 


134 


8/23/77 


HH  PSP 
TRANSMIT  Command 


XII  E.  TRANSMIT  Command 

III  E  1.  When  sent 

III  E  1  a.  Bv  the  process 

The  TRANSMIT  Command  is  sent  by  the  process  to  pass 
data  to  the  service  module  for  transmission  over  the 
network  to  the  foreign  host. 

Ill  E  1  b.  Bv  the  service  module 

The  TRANSMIT  Command  is  sent  by  the  service  module 
to  pass  data  that  has  arrived  over  the  network  from  the 
foreign  host  to  the  process. 

Ill  E  2.  Action  on  receipt 

III  E  2  a.  Bv  the  process 

When  the  process  receives  a  TRANSMIT  Command,  it 
will  treat  the  contents  of  the  TEXT  as  data  to  be 
processed . 

Ill  E  2  b.  Bv  the  service  module 

When  the  service  module  receives  a  TRANSMIT 
Command,  it  will  treat  the  contents  of  the  TEXT  as  data 
to  be  transmitted  over  the  network. 

Ill  E  L,  TEXT  field  syntax 

TEXT  contains   the   data   to   be   transferred   by   the 
TRANSMIT  Command. 

Ill  E  M.  TEXT  field  semantics 

The  data  in  the  TEXT   have   no   other   semantics   than 
those  described  in  sections  III  £  1  and  III  E  2. 


135 


DRAFT  8/23/77  HH  PSP 

TRANSMIT  Response 


III  Ft  TFANSHIT  Bcappnge 

The  TRANSMIT  Response  is  used  as   described   in   the   HFP 
specification . 


136 


DRAFT 


8/23/77 


HH  PSP 
SIGNAL  Command 


III   C.  SIGNAL  Command 

The  SIGNAL  Command  is  not  used  in  the  process-to- 
service  protocol.  SIGNAL  Commands  may  be  generated  by  process 
or  service  to  request  that  the  CPM  carry  out  the  appropriate 
action  on  the  logical  channel.  (See  HFP  specification.) 
Thus,  the  effect  of  the  SIGNAL  Command  is  restricted  to  the 
logical  channel  (HFP)  level. 


137 


DRAFT 


8/23/77 


HH  PSP 
SIGNAL  Response 


XII  H,  SIGNAL  Response 

The  SIGNAL  Response  is  not  used  by  either   process   or 
service . 


138 


DRAFT 


8/23/77 


HH  PSP 
EXECUTE  Command 


III  J.  EIECUTE  Command 

III  J  1.  When  sent 

The  process  sends  an  EXECUTE  Command  to   request   that 
the  service  module 

a)  send  an  ARPANET  Host-Host  INR  command, 

b)  alter  the  suggested  allocation  on  the  connection, 
or 

c)  return   a   description   of   the   status   of    the 
connection . 

The  service  module  does  not  send  EXECUTE  Commands  for   this 
protocol . 

Ill  J  2,  Action  PP_T_ft.fi£lJBl 

When  the  service  module  receives  an   EXECUTE   Command, 
it  will  decode  the  TEXT  and  act  upon  it. 

Ill  J  L.  TEXT  field  syntax 


Code: 
Messages: 

Bits: 


FIXED(2) 
FIXED( 16) 
FIXED(32) 


III  J  L,  TEXT  field  semantic? 
Ill  J  H  a,  Code 

This  field  contains  an  encoding  of  the  type  of 
request.  The  codes  are: 

0  Send  INR 

1  Alter  suggested  allocation 

2  Return  connection  status 

The  Messages  and  Bits  fields  need  be  present  only 
if  the  Code  field  contains  the  value  1  (Alter  suggested 
allocation) . 

Ill  J  *  bt  Messages 

This  field  is  valid  only  if  the  request  is  "Alter 
suggested  allocation"  (Code  =  1).  It  contains  the  number 
of  ARPANET  messages  the  process  suggests  be  allocated  on 
the  connection.  If  the  value  of  this  field  is  zero 
(default),  the  service  module  chooses  the  number  of 
messages  on  its  own. 


This  field  is  valid  only  if  the  request   is   "Alter 
suggested  allocation"  (Code  =  1).  It  contains  the  number 


139 


DRAFT  8/23/77  .  HH  PSP 

EXECUTE  Command 


of  bits  the  process  suggests  be  allocated  for  the 
connection.  If  the  value  of  this  field  is  zero 
(default),  the  service  module  chooses  the  number  of  bits 
on  its  own. 


140 


DRAFT  8/23/77  HH  PSP 

EXECUTE  Response 


III  K.  EXECUTE  Regpongg 
III  K  1.  When  sent 

The  service  module  sends  an  EXECUTE  Response  when 

a)  it  has  completed  tha  operation   requested   by   an 
EXECUTE  Command  or 

b)  it  has  received  an  EXECUTE  Command  whose  TEXT   is 
in  error. 

The  service  module  does  not  send  EXECUTE  Commands  for 
this  process-to-service  protocol.  Therefore,  the  process 
does  not  send  EXECUTE  Responses. 

Ill  K  2.  Action  on  receipt 

When  the  process  receives  an  EXECUTE  Response,  it 
should  examine  the  TEXT  to  see  whether  the  response 
indicates  an  error.  If  no  error  is  indicated,  it  may 
consider  that  the  action  requested  by  a  previous  EXECUTE 
Command  was  successful.  If  an  error  is  indicated, 
appropriate  error  recovery  action  should  be  initiated.  This 
action  is  idiosyncratic  to  the  process. 

Ill  K  3,  TEXT  field  syntax 

Result:  FIXED(2) 

Ref-code:  FIXED(2) 

Connection-info:  COMPLEX(?) 

Connection-state:        FIXED(2) 

Host:  FIXED(32) 

Foreign  Socket:  FIXED(32) 

Messages:  FIXED(16) 

Bits:  FIXED(32) 

Local  Socket:  FIXED(32) 

Byte  Size:  FIXED(8) 

III  K  L.  TEXT  rigid  semantics 

III  £  4  a.  ResyU 

This  field  contains  an  encoding  of  the  result  of 
the  request  (in  a  previous  EXECUTE  Command)  to  which  the 
EXECUTE  Response  is  a  reply.  The  codes  are: 

0  Successful 

1  Illegal  code  in  request 

2  TEXT  too  short 

The  "TEXT  too  short"  error  can  occur  only  if  the  request 
was  "Alter  suggested  allocation". 


141 


DRAFT 


6/23/77 


HH  PSP 
EXECUTE  Response 


III  K  k    b.  Ref-code 

This  field  contains  the  same  value  as  the  Code 
field  of  the  TEXT  of  the  EXECUTE  Command  to  which  the 
EXECUTE  Response  is  a  reply. 

HI    K  k    ct  Connection-info 

This  field  has  the  same  meaning  as  its  identically 
named  and  formatted  counterpart  in  the  TEXT  of  the  BEGIN 
Response,  with  the  following  exception: 

III   k  4  c  (i),  Connection-state 

This  field  indicates  the  present  state  of  the 
connection.  The  possible  values  of  this  field  and 
their  meanings  are: 

0  Closed 

1  Open 

2  Waiting  for  open  to  complete 

3  Waiting  for  close  to  complete 


142 


DRAFT 


6/23/77 


HH  PSP 
Scenario 


iv.  Scenario 

Let  us  consider  how  this  PSP  can   be   used   to   remotely 

control   a   Network   Control   Program  in  the  front  end.   We  will 

assume  that  there  is  a  program  in  the  host  that  wishes  to  open   a 

Telnet  connection  to  remote  host  12.  A  BEGIN  Command  is  sent  to 
the  front  end: 

<BEGINXC><host  =  12Xmsgs  =  15><bits  =  12000> 

Because  the  defaults  for  the  HH-PSP  favor  initiating  a  Telnet 
connection  (i.e.,  a  duplex  connection  established  by  an  ICP  to 
socket  1)  the  BEGIN  Command  does  not  have  to  specify  many  of  the 
parameters.  The  HH  Service  in  the  front  end  opens  the  connection 
and  sends  a  BEGIN  Response  to  the  host: 

<BEGINXRXSTATUSrO><state=1><host  =  12><Fgnskt  =  523  9> 
<msgs= 12><bits=  12000> 

indicating  that  the  connection  attempt  was  successful.  The 
program  now  sends  and  receives  via  TRANSMIT  Commands. 

At  some  time  later  the  program  in  the   host   receives   an 
END  Command: 

<ENDXCXcause  =  Foreign  host  failure> 

This  indicates  that  the  network  connection  has  been  closed 
because  the  remote  host  crashed.  The  front  end  wishes  to 
terminate  the  service.  The  program  immediately  sends  an  END 
Response: 

<ENDXR> 


The  channel  is   now   closed.    At   some   later   time   the 
program  may  attempt  to  re-establish  the  connection. 


143 


DRAFT  8/23/77  HH  PSP 

References 


Y,  References 

1.  McKenzie,  A. A.   "Host/Host  Protocol  for  the  ARPA  Network,"  NIC 
#7117,  1972.   Also  in  the  ARPANET  Protocol  Handbook. 

2.  Postel,  J.   "Official  Initial  Connection  Protocol,"  NIC  #7101, 
1971.   Also  in  the  ARPANET  Protocol  Handbook. 


144 


Appendix  4 


Network  Virtual  Terminal 

Process-to-Service 

Protocol  Specification 


CAC  Technical  Memorandum  103 

by 
John  Day 


145 


Network  Virtual  Terminal 

Process-to-Ser vi ce  Protocol 

Specification 

I.  Service  Code  Number 

5 

II.  Description  of  the  Service 

This  document  is  a  process-to-service  protocol  specification 
as  defined  in  the  Host-t o-Front-End  Protocol  ( H b P )  Specification 
[ARPANET  RFC  710].  It  describes  a  protocol  for  offloading  a 
network  virtual  terminal  protocol  (e.g.,  Telnet  for  the  ARPANET) 
to  a  front  end.  This  protocol  allows  some  flexibility  in  the 
decree  of  offloading  that  may  be  achieved.  Although  the  protocol 
is  applicable  to  a  general  virtual  terminal  service,  the 
discussion  below  is  in  terms  of  the  ARPANET  Telnet  Protocol, 
which  is  currently  the  only  such  protocol  widely  used. 

The  functions  of  the  typical  network  virtual  terminal 
implementation  are: 

1.  manipulating  network  connections, 

2.  negotiating  Telnet  options, 

3.  mapping  between  local  terminal  representations 
and  network  virtual  terminal  representations, 

4.  transmitting  data  over  connections, 

5.  handling  special  control  functions,  and 


147 


DRAFT 


8/23/77 


NVTS  PSP 
Description  of  the  Service 


6.       interfacing  the  remote  network  connections  so  that 
they  appear  to  the  host  to  be  local  terminals. 

The  offloading  scheme  represented  by  this  model  places 
manipulating  connections  and  transmitting  data  over  the  net  in 
the  front  end.  The  interfacing  of  remote  terminals  so  that  they 
appear  as  local  terminals  must  be  done  in  the  host.  The  scheme 
is  flexible  in  that  the  remaining  functions  (option  negotiation 
and  translation  between  local  and  network  representations)  nay  be 
implemented  in  either  the  front  end  or  the  host,  depending  on 
local  installation  constraints.  Typically  the  translation  will 
be  done  in  the  front  end.  Section  IV  below  discusses  the 
offloading  of  Telnet  options. 

The  only  support  this  service  requires  in  the  front  end  is 
access  to  an  ARPANET  NCP.  In  the  host  it  is  necessary  for  the 
residual  part  of  the  Telnet  implementation  to  be  able  to  make  its 
logical  channels  appear  as  if  they  were  terminals  connected  to 
the  host.   This  may  require  system  modification  in  some  cases. 

There  are  several  possible  ways  in  which  service  could  be 
initiated  and  controlled.  The  scheme  described  in  this  protocol 
appears  to  be  the  simplest  and  most  flexible.  In  this  scheme, 
BEGIN  Commands  only  go  from  the  host  to  the  front  end.  When  the 
front  end  service  module  receives  a  BEGIN  Command,  it  either  does 
a  listen  on  the  contact  socket  or  it  sets  up  a  connection  as 
requested.   It   sends   a   BEGIN   Response   to   the   host   when   a 


148 


8/23/77 


NVTS  PSF 
Description  of  the  Service 


connection  is  established.  The  host  process  must  generate  a 
distinct  BEGIN  Command  lor  each  connection  it  is  willing  to 
accept.  Thus,  the  host  is  able  to  limit  the  number  of  Telnet 
users  by  withholding  BEGIN  Commands.  The  front  end  may  also 
limit  demand  on  its  resources  by  refusing  BEGIN  Commands  from  the 
hos t . 

The  network  virtual  terminal  process-to-service  protocol 
uses  HFP  Messages  to  carry  information  between  the  residual  part 
of  Telnet  in  the  host  (the  "process")  and  the  network  virtual 
terminal  service  module  (the  "service")  in  the  front  end.  A 
brief  summary  of  the  specific  Message  types  follows. 


BEGIN  Command 

is  used  to  initiate  connections. 

EEGIN  Response 

is  used  to  confirm  the  establishment  of  a 
connection,  or  to  refuse  a  BEGIN  Command. 

END  Command 

is  used  to  terminate  a  connection. 

END  Response 

is  used  to  confirm  the  termination. 

TRANSMIT  Command 

is  used  to  transfer  data  (including  Telnet  option 
negotiations  and  control  functions)  to  and  from  the 
Telnet  connection. 

TRANSMIT  Response 

is  used  to  acknowledge  data  transfer. 

EXECUTE  COMMAND 

is  used  by  the  process  to  request  the  service  module 

a)  to  send  a  Telnet  control  function, 

b)  to  modify  the  suggested  allocation, 

c)  to  negotiate  Telnet  options,  or 

d)  to  report  the  status  of  the  connection. 


149 


DRAFT 


ft/23/77 


NVTS  PSP 
Description  of  the  Service 


is  used  by  the  service  to  pass  to  the  process  out- 
of-band  Telnet  control  functions  (e.g.  IP,  AO,  and 
Break) . 

EXECUTE  Response 

a)  is  used  to  acknowledge  the  success  or  failure  of  the 
action  requested  by  the  process  via  the  EXECUTE 
Command,  and 

b)  if  requested  reports  on  the  status  of  the 
connection. 

Systems  which  can  easily  set  terminal  parameters  may  offload  many 

functions    using    the    EXECUTE    Command.    For   such   systems 

adaptations  of   this   process-to-service   protocol   could   define 

requests   in   a   form  that  would  allow  the  host  to  be  ignorant  of 

the  actual  negotiation  mechanism.   For   instance,   an   adaptation 

could   define   an   EXECUTE   Command   request   to   indicate  that  a 

certain  system  primitive  was  to  be  called  and  given  such  and  such 

parameters.    Since   not   all   systems  can  do  this,  and  the  means 

available  to  the  ones  that  can  differ  considerably,  we  have   left 

the    specification    of    such    features    for   the   adaptation 

descriptions. 

This  process-to-service  protocol  requires  the  implementation 
in  the  front  end  of  the  following  additional  protocols: 
ARPANET  Host-Host  Protocol 
ARPANET  Initial  Connection  Protocol 
ARPANET  Telnet  Protocol 

The  details  of  the  use  of  HFP   Messages   are   given   in   the 
following  section. 


150 


fc/23/77 


NVTS  P3P 
ELGIN  Command 


III.  Message  Use 

III  A.  BEGIN  Command 

III  A  1 .  When  sent 

A  BEGIN   Command   is   sent   by   the  host   process   to 

indicate   that   it  wishes  to  establish  a  Telnet  connection. 

The  host  process  sends  a   BEGIN   Command  for   each   Telnet 
connection  it  will  accept. 


Ill  A  2.  Action  on  rece i  £ t 

When  the  service  module  receives  a  BEGIN   Command,  it 

attempts   to   set   up   a   connection   as   specified   by  the 

parameters  in  the  TEXT.   The  service  module  may  refuse  the 
BEGIN  Command  by  sending  an  appropriate  BEGIN  Response. 


Ill  A  3.  TEXT  field  syntax 

Security : 
Establishment : 

Control-bits  : 
Init/Listen 
Socket /Channe  1 
ICP/Direct 
Relative/Absolute 
Unattachable /Attachable 

host : 

1*  oreicrn    Socket : 

Mess  ages : 

Bits: 

Local  Socket: 

Timeout: 

field  semanti cs 


VAhlALLL( ? ) 
COMPLEX (6 ) 
F1XED(5) 


FIXED(32) 
F1XED( 32) 
tIXED( 16) 
FIXED( 32) 
F1XED(32) 
F  1 X  E  D  (  1  b  ) 


III  A  4  a.  Security 

This  field  may  be  used  by  the  host  to  validate  the 
access  privileges  of  the  sender  of  the  BEGIN  Command. 
The  default  value  of  the  field  is  empty.  Note:  At  this 
time,  very  little  work  has  been  done  on  the  organization 
of  security  for  networks  or  these  kinds  of  systems.  It 
is  not  clear  where  access  control  should  be  placed.  This 
field  has  been  included  in  case  some  systems  require 
validation  at  this  point. 

Ill  A  4 o .  Establishment 

This  set  of  parameters  describes  the  kind  of 
connection  t  >  te  associated  with  this  channel.  The 
default   values   of   the   establishment   parameters   are 


151 


DPAFT 


8/23/77 


NVTS  PSP 
BEGIN  Command 


chosen  to  favor  the  Server  Telnet  service.  This  means 
that  a  BEGIN  Command  specifying  only  defaults  would 
cause  the  front  end  to  listen  for  an  ICP  connection  on 
the  standard  Telnet  contact  socket  (socket  1)  from  any 
host  for  an  indefinite  period  of  time.  The  default 
values  of  the  fields  are  set  at  zero;  the  default  value 
may  be  indicated  by  the  absence  of  the  field.  Thus,  a 
BEGIN  Command  sent  to  the  front  end  for  a  server  Telnet 
session  may  have  an  empty  TEXT  field. 

Ill    A  4  b  (1).  Control-bUs 

The  bits  in  this  field  govern  the  kind  of 
connection  to  be  established  and  the  interpretation 
of  the  parameters. 

Ill  A  4  b  (1)  (a),  Ijsten/Init 

When  this  bit  is  zero  (default),  the  connection  is 
to  be  passively  listened  for.  When  this  bit  is 
one,  the  connection  is  to  be  actively  initiated. 
The  use  of  this  bit  in  specifying  connection 
sockets  is  detailed  in  table  1. 

Ill  A  4  b  (1)  (b).  Socket/Channel 

If  this  bit  is  zero,  the  logical  channel  from 
the  process  is  to  be  established  to  a  new  ARPANET 
connection.  If  this  bit  is  one,  the  logical 
channel  from  the  process  is  to  be  attached  to  an 
already  existing  HFP  channel  (e.g.  a  channel 
already  established  to  the  host-host  service 
module  and  therefore  providing  access  to  an 
existing  network  connection.)  The  default  value  is 
zero  . 

Ill    A  4  b  (1)  (Q).  ICP/Direct 

This  bit  is  relevant  only  when  a  new  network 
connection  is  requested.  (Socket/Channel  bit  is 
zero.)  When  this  bit  is  zero  (default),  the 
connection  is  to  be  established  via  the  Initial 
Connection  Protocol.  When  this  bit  is  one,  the 
connection  is  to  be  established  directly.  The  use 
of  this  bit  in  specifying  connection  sockets  is 
detai led  in  table  1 . 

Ill  A  4  b  (1)  (d).  Relative/Absolute 

This  field  affects  the  value  of  the  local 
sockets  for  the  connection.  See  III  A  4  b  (6)  for 
details.  The  default  case  is  Relative  (value 
zero)  . 


152 


fa  / ,: 3  /  7  7 


NVTS  PSt 
EEG1N  Command 


III  A  k    b  (  1 )  (  e  )  .  Una ttachable/A t tachable 

When  this  bit  is  one,  the  network  terminal 
service  module  is  reauested  to  make  the  logical 
channel  available  for  attachment  bv  other  service 
modules  within  the  front  end  (such  as  a  data 
transformation  service).  Otherwise  this  bit  is 
zero  (default).  See  CAC  lechnical  f-.emorandum  No. 
bO,  p.  3»  for  a  discussion  of  this  feature. 

Ill  A  4  b  (2)  .  Host 

This  field  specifies  the  network  hosts  from 
which  (or  tc  which)  the  lelnet  connection  is  to  be 
established.  The  default  value  is  zero,  indicating 
that  a  connection  from  any  host  will  be  accepted. 
(The  default  value  is  legal  only  if  the  Listen/lnit 
bit  is  zero  (Listen),  otherwise  a  host  must  be 
specified.  ) 

The  host  field  is  parsed  as: 


Network : 
IMP  : 

host-at-lK  P : 


frIXEPU) 
H  X  E  D  (  1  fc  ) 
t IXED(fa  ) 


III  A  k    b  (i).  t-oreisrr  Socket 

This  field  is  used  as  follows  to  construct  the 
e  f  f ect i  ve  foreign  socket  (e.f.s.)  for  making  the 
con  ne  c  t i  on . 

Case  1.  foreign     Socket     field     =     ?.  ero; 
Listen/lnit   bit   =   zero.   foreign  host 
choo  s  es  the  e.f.s. 
Case  2.     Foreign  Socket  field  =  one;   Listen/lnit 

bit  =  zero.   The  e.f.s.  is  one. 
Case  3-  Foreign  Socket  field  i    zero.   The  e.f.s. 
is   the   contents   of  the  Foreirn  Socket 
field. 

1  h  e   default   value   of   this   field  is   •>.  e  r  o  .    Ihe 

effective   foreign   socket   is   used  in  various  ways, 

depending  upon  the  values  of  certain  of   the   control 

hits,  to  effect  the  connection.  See  table  1  for 
de tai Is . 

Ill  A  4  b  (k) .    Message? 

'ihis  field  and  the  tits  field  allow  the  process 
to  indicate  to  the  service  module  the  flow  rate 
desirable  on  the  connection.  The  service  module  may 
use  this  information  in  any  way  its  implementors  deem 


153 


DRAFT 


8/23/77 


NVTS  PSP 
BEGIN  Command 


desi  rable. 

This  field  contains  the  number  of  Host-Host 
messages  the  process  suggests  be  allocated  on  the 
connection.  If  the  value  of  this  field  is  zero 
(default),  the  service  module  chooses  the  number  of 
messages  on  its  own. 

Ill  A  4  b  (5).  bits 

This  field  contains  the  number  of  bits  the 
process  suggests  be  allocated  for  the  connection.  If 
the  value  of  this  field  is  zero  (default),  the 
service  module  chooses  the  number  of  bits  on  its  own. 

Ill  A  H    b  (6).  Local  Socket  or  Logical  Channel 

If  the  Socket/Channel  bit  is  one,  this  field 
contains  the  channel  Group  and  Member  values 
specifying  the  HFP  channel  to  which  connection  is  to 
be  made.   The  format  of  this  field  is  then: 

<not  used):  F1XED(4) 
Group:      FIXED(12) 
Member:     FIXED(16) 


If  the  Socket/Channel  bit  is  ze 
used  as  follows  to  construct  th 
.l.s.)  for  making  the  conne 
Relative/Absolute  bit 
Socket  field  i  zero 
contents  of  the  Grou 
HEADER  will  be  conca 
low-order  20  bits  of  t 
field  to  form  the  e.l.s 
Relative/Absolute  =  zer 
field  =  zero.  In  this 
will  choose  a  number  wh 
bits  are  equal  to  the  G 
HEADER . 

Case  3.  Relati ve/ Absolu te  =  one 
the  effective  local  s 
the  contents  of  the  Loc 


socket  (e. 

Case  1  , 


Case  2. 


ro ,  this  field  is 
e  effective  local 
ction . 

=  zero,  Local 
In  th  i  s  case,  th  e 
p  field  in  the 
tenated  with  the 
he   Local   Socket 

o,  Local  Socket 
case,  the  service 
ose  high  order  12 
roup  field  in  the 

In  this  case 
ocket  is  equal  to 
al  Socket  field. 


The  effective  local  socket  is  used  in  various  ways, 
depending  upon  the  values  of  certain  of  the  control 
bits,  to  effect  the  connection.  See  table  1  for 
detai Is  . 

Ill    A   *    b    (7).  Timeout 

This  field  contains  the  maximum  length  of   time, 
in   seconds,  that  the  service  module  is  to  attempt  to 


154 


DRAFT 


8/23/77 


NVTS  PSP 
BEGIN  Command 


establish  the  connection  (in  the  absence  of  an  error 
or  exceptional  condition).  If  the  service  module  has 
been  unable  to  establish  the  connection  within  this 
time  period,  it  is  to  abandon  the  attempt.  If  this 
field  contains  zero  (default),  the  time  period  is  to 
be  infinite. 


155 


DRAFT 


b/23/77 


NVTS  PSP 
EEGIN  Command 


Tab}?  1 


Control  Bits   i     Foreign  Sockets     !      Local  Sockets 

j   for  the  connection    i   for  the  connection 

i        IThe  e.f.s.  will  be  used! 
!        las  the  contact  socket   | 

{  Init   i f or  the  connection.     ie.l.s.  +  2  and  e.l.s.  +  3 
!        jThe  data  sockets  will   i 
!        |be  chosen  by  the  for-   i 
!        !  eign  host .              i 
ICp   j  _ „__  j • „„„ _--.- . 

i        !                        jThe  e.l.s.  will  be  used 
!        !                       las  the  contact  socket 
!        I                       {for  the  connection. 
[Listen  je.f.s.  +2  and  e.f.s.  +3!The  data  sockets  will 
!        !                        ibe  chosen  by  the 
i        i                        {service  as  in  Case  2  of 
!        i                        ! Ill  A  4  b  (6). 

Direct      !  e.f.s.  and  e.f.s.  +1   i  e.l.s.  and  e.l.s.  +  1 

156 


6/23/77 


NVTS  PSP 
PEGIN  Response 


IU    B,    BEGIN    Respond 

III    B    1 .    When    sent 

The  BEGIN  Response  is  sent  by  the  service  module  to 
indicate  that  a  successful  network  connection  has  been 
established,  or  that  the  BEGIN  Command  has  been  refused. 

Ill  B  2.  Action  on  receipt 

When  the  BEGIN  Response  is  received,  the  host  process 
should  determine  whether  a  successful  connection  was  made. 
If  so,  it  may  send  or  receive  data.  If  not,  it  may  be 
appropriate  to  invoke  an  error  recovery  procedure. 

Ill  B  3,  TEXT  field  syntax 

Security : 
Connection-info: 

Connection-state: 

Host: 

Foreign  Socket: 

Messages: 

Bits: 

Local  Socket: 

III    B  4.  TEXT  field  semantics 
111  B  4  a.  Security 


VARIAELE(?) 
COMPLEX( ? ) 
FIXED (4) 
FIXED(32) 
FIXED(32) 
F1XED( 16) 
FIXED(32) 
FIXED(32) 


This  field  may  be  used  to  allow  the  front  end  to 
validate  the  access  privileges  of  the  user  (in  the  case 
where  the  front  end  performs  some  user  authentication 
tasks)  and  to  pass  the  information  along  to  the  host. 
This  field  could  be  particularly  important  for 
monitoring  access  by  terminals  directly  connected  to  the 
front  end. 

HI  B  M  bt  CpnnecUon-infQ 

This  field  describes  the  connection  associated  with 
this  channel. 


Ill  B  1  b  (1! 


Connection-state 


This  field  indicates  the  success  or  failure  of 
the  BEGIN  Command.  The  value  zero  indicates  success 
while  any  non-zero  value  indicates  failure.  The 
particular  value  of  the  non-zero  field  gives  the 
reason  for  failure.  The  possible  values  of  this 
field  and  their  meanings  are: 


157 


DRAFT 


8/23/77 


NVTS  PSP 
BEGIN  Response 


0  Success 

1  Illegal  connection  type 

2  Invalid  local  socket 

3  Unknown  host 

4  Improper  access 

5  Front  end  terminating  service 

6  Connection  attempt  timeout 

7  Network  not  available 
b  Foreign  host  dead 

9  Connection  refused  by  foreign  host 

Others  may  be  defined  later,   or   in   the   adaptation 
descriptions. 

XII  B  H    b  (2),  Host 

If  the  connection  attempt  was  successful,  this 
field  contains  the  ARPANET  host  address  of  the  host 
to  which  the  connection  was  established.  (See  III  A 
4  b  (2).  ) 

III  B  4  b  M).  Foreign  Socket 

If  the  connection  attempt  was  successful,  this 
field  contains  the  socket  number  at  the  foreign  host 
to  which  the  connection  was  established. 


If  the  connection  attempt  was  successful,  these 
fields  contain  the  flow  control  parameters  for  the 
connection  at  the  time  the  BEGIN  Response  was 
generated . 

Ill  B  4  b  (5).  loc3l  Socket 

If  the  connection  attempt  was  successful,  this 
field  contains  the  local  socket  number  for  the 
connection. 


158 


DRAFT 


6/23/77 


NVTS  PSP 
END  Command 


III  C.  END  Command 

III  C  1.  When  sent 

III  C  1  a,  By  the  process 

The  END  Command  may  be  sent  by  either  the  process 
or  the  service  to  terminate  a  Telnet  connection.  If 
sent  by  the  process,  it  usually  indicates  that  the  host 
has  requested  that  the  connection  be  closed. 

Ill  C  I   bt  by  the  service  module 

The  service  module  may  send  an  END  Command  because 
the  foreign  host  has  closed  the  connection  in  response 
to  a  user  request,  or  because  some  failure  condition  has 
occurred  that  requires  that  the  connection  be  aborted. 

Ill  c  g,  Action  on  receipt 

III  C  2  a.  By  the  process 

When  the  process  receives  an  END  Command,  it  should 
acknowledge  it  as  promptly  as  possible  by  sending  an  END 
Response. 

Ill  c  g  b.  py  the  service  module 

When  the  service  module  receives  an  END  Command,  it 
should  close  the  Telnet  connection.  Once  the  connection 
is  closed,  it  should  send  the  END  Response  to  the 
process . 

Ill  C  ^  TEXT  field  syntax 

Status:   FIXED  (3) 

III  C  4  at,  Status 

This  field  indicates  the  cause  of  the  termination 
of  the  TELNET  connection.  The  values  of  the  field  and 
their  associated  meanings  are: 

0  Normal  close  by  foreign  host 

1  Network  failure 

2  Foreign  host  failure 

3  User  requested  close 

4  Improper  Access 

5  Front  end  terminating  service 

Other  causes  for  failure  may  be  defined  at  a  later  date. 


159 


DRAFT 


8/23/77 


NVTS  PSP 
END  Command 


The  default  value  of  the  field  is  zero. 


160 


6/23/77 


NVTS  PSF 
END  Response 


III  D.  END  Response 

III  D  1 .  When  sent 

The  END  Response  is  sent  by  either  the  process  or  the 
service  module  to  acknowledge  that  an  cND  Command  has  been 
received  and  proper  action  taken. 

Ill  D  2.  Action  on  receipt 

When  either  the  process  or  the  service  receives  an  END 
Response,  it  should  assume  that  all  dialogue  associated 
with  this  logical  channel  has  completed,  and  it  should 
ignore  any  other  Commands  on  this  channel  except  a  BEGIN 
Command. 


Ill    D  1.  TEXT  field  syntax 

The  TEXT  field  in  the  END  Response  is  not  used  in  this 
protocol . 


DRAFT  b/23/77  NVTS  PSP 

TRANSMIT  Command 


III  E.  TRANSMIT  Command 

The  description  below  assumes  that  a  Go-Ahead  facility  is 
needed  for  the  handling  of  half  duplex  terminals.  Not  all 
installations  will  need  this  facility;  those  that  do  not 
should  set  the  Go-Ahead/More-Data  Control  bit  to  zero  and 
ignore  the  specification  of  how  this  bit  is  interpreted. 

Ill  6  It  When  sent 

The  TRANSMIT  Command  may  be  sent  by  either  side  to 
transfer  data.  Data  may  be  sent  only  when  the  connection 
is  in  the  ESTABLISHED  state  and  when  the  flow  control 
discipline  permits.  (See  HFP  Specification.) 

Ill  E  2.  Action  0n  receipt 

III  E  2  a.  by  the  process 

When  the  process  receives  a  TRANSMIT  Command,  it 
will  treat  the  contents  of  the  Data  field  of  the  TEXT  as 
data  to  be  processed. 

Ill  g  2  bt  By  the  service  module 

When  the  service  module  receives  a  TRANSMIT 
Command,  it  will  treat  the  contents  of  the  Data  field  of 
the  TEXT  as  data  to  be  transmitted  over  the  Telnet 
connection. 

Ill  E  3.  TEXT  field  syntax 

The  TEXT  field  contains  one  or  more  instances  of  the 
following  structure. 

Control-bits:  FIXED(2) 

Text/Control 

Go-Ahead/ More-Data 
Data:  VARIABLES) 

III  E  4,  Text  field  semantics 

III  e  ^  a,  control  bits 

The  Control  bits  indicate  the  nature  and  the  mode 
of  the  information  in  the  associated  Data  field  being 
passed  to  the  process  or  service. 

Ill  6  **  a  d)f  Text/control 

When  this  bit  is  zero  (default),  it  indicates 
that  the  Data  field  contains  text  to  be  transmitted. 
When  this  bit  is  one,   it   indicates   that   the   Data 


162 


DRAFT 


8/23/77 


NVTS  PSP 
TRANSMIT  Command 


field  contains  a  specific  Telnet 
function . 


option   or   control 


III  6  »  3  (2).  Qo-Ahead/Mpre-Pata 

when  this  bit  is  zero  (default),  it  specifies 
that  the  sender  has  transmitted  all  the  data  it 
wishes  and  the  receiver  may  now  "turn  the  line 
around"  and  send  data.  It  is  convenient  for  the  host 
process  if  the  service  makes  each  Data  field  of  the 
TEXT  correspond  to  one  line  of  input  from  the 
terminal,  including  the  end-of-line  character.  (This 
may  be  agreed  on  by  the  service  and  process.)  In  this 
way,  only  one  of  the  processes  must  be  bothered  with 
looking  for  end-of-line  sequences.  If  this  bit  is 
one,  there  is  more  data  to  follow. 

Ill  E  4  b.  Data 


If  the  Text /Con t rol  bit  is  cnc ,  the  Data  field  uill 
contain  the  text  of  a  Telnet  option  negotiation  or 
control  function.  If  the  Text/Control  bit  is  zero 
(default),  the  Data  field  contains  text  which  is  to  be 
transmitted  or  has  been  received  on  the  Telnet 
connection. 


163 


6/23/77 


NVTS  PSP 
TRANSMIT  Response 


III   Ft  TRANSMIT  Response 


The  TRANSMIT  Response  is  used  as   described 
specification . 


in   the   HFP 


164 


b/23/77 


NVTS  PSP 
SIGNAL  Command 


III  G.  SIGNAL  Command 

The  SIGNAL  Command  is  not  used  in  the  process-to-service 
protocol.  SIGNAL  Commands  may  be  generated  by  process  or 
service  to  request  that  the  channel  protocol  module  (CPM) 
carry  out  the  appropriate  action  on  the  logical  channel.  (See 
HFP  specification.)  Thus,  the  effect  of  the  SIGNAL  Command  is 
restricted  to  the  logical  channel  (HFP)  level. 


165 


DRAFT  6/23/77  NVTS  PSP 

SIGNAL  Response 


III  H.  siqnal  Response 

The  SIGNAL  Response  is  not   used   by   either   process   or 
service. 


166 


DnAFT 


6/23/77 


NVTS  PSP 
EXECUTE  Command 


III  J.  EXECUTE  Command 

By  the  process 

The  process  sends  an  EXECUTE  Command  to  request 
that  the  service  module 

a)  send  a  Telnet  control  function; 

b)  modify  the  suggested  allocation; 

c)  negotiate  a  Telnet  option;  or 

d)  return  the  status  of  the  connection. 

EY  the  service 

The  service  sends  an  EXECUTE  Command  to  the  process 
to  notify  it  that  certain  Telnet  control  functions  have 
been  received. 

Ill  J  2.  Action  on  receipt 

When  the  service  module  or  process  receives  an  EXECUTE 
Command,  it  will  decode  it  and  perform  the  action 
indicated.   (See  below.) 


Ill  J  3,  TEXT  field  syntax 


Code: 
Parameters : 


FIXED(2) 
VARIABLES  ) 


III  J  4  TEXT  field  semantics 

III  J  4  a.  Code 

This  field  contains  an   encoding   of   the   type   of 
request.   The  codes  are: 


Send  control  function 
Modify  suggested  allocation 
Negotiate  Telnet  option 
Status 


III  J  4  b.  parameters 

This  field,  if  present,  contains  any  parameters 
necessary  to  perform  the  request  indicated  in  the  code 
field.  A  discussion  of  the  requests  and  their 
associated  parameters  follows. 

Ill  J  4  c.  Send  Control  Function 

III  J  4  c  (1).  When  sent 


167 


6/23/77 


NVTS  PSP 
EXECUTE  Command 


Ev  the  process 

This  request  is  sent  to  the  service  to 
request  the  service  module  to  send  one  of  the 
out-of-band  Telnet  control  functions  (IP,  AO, 
AYT,  or  Break)  to  the  foreign  host. 

By  the  service 

This  request  is  sent   by   the   service   to 

notify   the   process  that  an  out-of-band  Telnet 

control  function   has  been   received   from   the 
foreign  host. 

Ill  J  4  c  (2).  Action  on  receipt 

gy  the  process 

When  the  process  receives  a  control 
function  request,  it  should  take  whatever  action 
is  required  according  to  the  semantics  defined 
by  the  Telnet  protocol.  The  only  exception  to 
this  is  the  Abort  Output  control  function.  When 
the  process  receives  an  Abort  Output,  it  should 
flush  all  data  buffered  for  transmission  to  the 
front  end.  It  should  insert  a  Data  Mark  into 
the  data  stream  and  send  a  SYNCH  control 
function  to  the  front  end. 

Ey  the  service 


Func 

func 

stre 

acco 

serv 

func 

buff 

(exc 

Mark 

serv 

INS 

also 

host 

the 

one 

disc 

Mark 

Data 

rece 

fore 


When 
tion 
tion  ) 
am 

r  danc 
ice 
tion , 
ered 
ept  T 

is 
ice 

me  ss 

send 
( 
Data 

in 
ard  d 
is 

Mark 
ived 
ign  h 


the 

req 
,  it 
at 
e  wi 

mod 
it 

fro 
elne 

det 
odul 
acre 

a  T 
The 
Mark 
the 
ata 
f  oun 

in 

fro 
ost . 


servi 
uest 
shoul 
the 
th  the 
ule 
shou 
the 
t  cont 
ected 
e  shou 
to  be 
elnet 
servi 
sent 
data 
coming 
d.   If 
the   d 
m   the 
) 


ce  re 
(othe 
d  ins 
earli 

Teln 

recei 

Id   f 

fro 

rol  f 

in 
Id  ca 
sent 

Data 
ce 
fro 

stre 

from 

the 
ata 

host 


cei  ve 
r   th 
er  t 
est 
e  t  pr 
ves 
lush 
nt 

uncti 
the 
use  a 
to  th 
Mar 
odule 
the  h 
am , 

the 
servi 
strea 

must 


in  a 
it  i 
possi 
otoco 

a 

all 
nd 

ons ) 
data 
n  ARP 
e  for 
k   to 

may 
ost  o 
while 
host 
ce  mo 
m ,   t 

not 


Sen 

SYN 
nto 
ble 
1. 
SYNC 

dat 
nd 
unti 

st  r 

ANET 

ei*n 

th 

eith 

m 

con 
unti 
dule 
he 
be  s 


d   Con 
CH  con 
the 
point 
When 
con 
it 
to  the 
1   a 
earn . 
Host- 
host  , 
e   for 
er  pas 
ay   in 
tinuin 
1  the 

inser 
Data 
ent  to 


trol 

trol 

data 

in 

the 
trol 

has 

net 
Data 

The 
Host 

and 
eign 
s  on 
sert 
g  to 
Data 
ts  a 
Mark 

the 


168 


DRAFT 


8/23/77 


NVTS  PSP 
EXECUTE  Command 


III  J  4  c  m.  Parameter  field  syntax 

Control  Function:   FIXED(8) 

III  J  4  c  (4).  Parameter  field  semantics 

This  field  contains  a  Telnet   control   function. 
The  possible  values  and  their  meanings  are: 


242 
243 
244 
245 
246 


SYNCH 

Break 

Interrupt  Process 

Abort  Output 

Are  You  There 


Although  there  are  other  Telnet  control 
functions,  they  are  dependent  on  their  position  in 
the  data  stream  and  thus  would  not  have  any  meaning 
in  this  context. 

Ill  J  4  d.  Modify  suggested  allocation 

This  request  is  sent  by  the  process  to  the  service 
module  to  modify  the  allocation  suggested  in  the  BEGIN 
Command.  The  service  module  may  use  this  information  in 
any  way  it  wishes  to  modify  its  flow  control  strategy 
with  the  network. 

Ill  J  H  0  M).  Parameter  field  syntax 


Messages : 
Bits  : 


FIXED( 16) 
FIXED(32) 


III  J  4  d  (2).  Parameter  field  semantics 

The  semantics  of  the  Mepsaces  and  bits  fields 
are  identical  vith  those  described  in  sections  III  A 
4  b  (4)  and  III  A  4  b  (5) . 

Ill  J  4  e.  Negotiate  a  Telnet  option 

This  process-to-service  protocol  provides  two  ways 
for  the  process  to  negotiate  a  Telnet  option.  It  may 
either  do  the  negotiation  itself  by  placing  the  option 
commands  in  the  data  stream  or  it  may  request  the 
service  module  to  perform  the  negotiation  for  it.  The 
latter  way  uses  this  variant  of  the  EXECUTE  Command.  It 
should  be  noted  that  this  method  can  only  be  used  when 
the  effect  of  the  option  need  not  be  synchronized  with 
the  data  stream. 

Ill  J  4  e  (1).  Parameter  field  syntax 


169 


DRAFT 


8/23/77 


NVTS  PSP 
EXECUTE  Command 


Negotiation:  FIXED(b) 
Option  Code:  FIXED(8) 
Subnegotiation:  VARIAELE(?) 

HI    J  4  e  (2).  Parameter  field  semantics 

HI  J  4  e  (2)  (a).  Negotiation 

This  field  allows  the  process  to  control 
option  negotiation  in  general  or  to  control  the 
negotiation  of  a  particular  option.  The  legal 
values  of  the  field  are: 

1  indicates  service  module  should 
refuse  all  options 

2  indicates  service  module  should 
not  refuse  any  options  (i.e.,  it 
should  pass  those  not  done  by  the 
front  end  to  the  host  process) 

3  indicates  service  module  should 
refuse  any  options  not  handled  by 
the  front  end 

251  WILL 

252  WON'T 

253  DO 

254  DON'T 

The  meanings  of  WILL,  WON'T,  DO  and  DON'T  are 
specified  in  the  Telnet  Protocol  Specification 
[ARPANET  NIC  18639].  The  initial  state  (i.e., 
whether  options  are  accepted  or  not)  is  an 
installation  parameter. 

Ill  J  4  e  (2)  (b).  Option  code 

This  field  contains  the  code  for  the  Telnet 
option  to  be  negotiated.  The  values  of  these 
codes  may  be  found  in  the  specifications  of  the 
respective  options. 

HI  ^  4  e  (2)  (c).  Subnegotjatjon 

This  field,  if  present,  will  contain  one  or 
more  subnegotia ti ons  for  the  option  specified  by 
the  option  code  field.  These  subnegotiations  are 
to  be  performed  for  the  process.  Subnegotiation 
parameters  will  be  bracketed  within  this  field  by 
the  Telnet  control  functions  IAC  SB  and  IAC  SE , 
where 


IAC 

= 

255 

SB 

= 

250 

SE 

r 

240 

170 


DRAFT 


6/23/77 


NVTS  PSP 
EXECUTE  Command 


III  J  H   f.   fteturn  gtatvis 

No   additional   parameters   are   needed   for 
request . 


171 


DRAFT 


6/23/77 


NVTS  PSP 
EXECUTE  Response 


III  K.  EXECUTE  Response 
III  K  1.  When  sent 

The  service  module  sends  an  EXECUTE  Response  when 

a)  it  has  completed   the   operation   requested   by   an 
EXECUTE  Command  or 

b)  it  has  received  an  EXECUTE  Command  whose  TEXT  is  in 
error. 

Note:  In  the  case  of  options  negotiated  by  the  use  of  the 
EXECUTE  Command,  the  EXECUTE  Response  is  sent  after  all 
subnegotiations  have  been  completed  or  the  option  has  been 
refused . 

The  process  sends  an  EXECUTE  Response  to  acknowledge 
the  receipt  of  a  control  function. 

Ill  K  2.  Action  on  receipt 

When  the  process  receives  an  EXECUTE  Response,  it 
should  examine  the  TEXT  to  see  whether  the  Response 
indicates  an  error.  If  no  error  is  indicated,  it  may 
consider  that  the  action  requested  by  the  EXECUTE  Command 
was  successful.  If  an  error  is  indicated,  appropriate 
error  recovery  action  should  be  initiated.  This  action  is 
idiosyncratic  to  the  process. 


IU    K  1.  TEXT  field  syntax 


Result: 
Ref-code : 
Parameters : 


FIXED(3) 
FIXEDC3) 
VARIABLE(?) 


Ill   k  Mt  text  field  semantic? 

XII  K  4  a.  ResuU 

This  field  contains  an  encoding  of  the  result  of 
the  request  (made  in  a  previous  EXECUTE  Command)  to 
which  the  EXECUTE  Response  is  a  reply.   The  codes  are: 

0  Success 

1  Illegal  code  in  request 

2  TEXT  too  short 

3  Illegal  or  unsupported  parameter  value 

III  K  it  b.  Ref-code 

This  field  contains  the  same  value  as  the  Code 
field  of  the  TEXT  of  the  EXECUTE  Command  to  which  the 
EXECUTE  Response  is  a  reply. 


172 


DRAFT 


8/23/77 


NVTS  PSP 
EXECUTE  Response 


III  I   S  c.  Parameters 

This  field,  if  present,  contains  additional 
information  about  the  outcome  of  the  request.  A 
discussion  of  these  parameters  follows.  No  parameters 
are  needed  for  a  Response  that  acknowledges  receipt  of  a 
control  function. 

Ill  K  it  dt  New  mipcmpn 

These  parameters  are  sent  by  the  service  module  to 
the  process  in  response  to  a  Modify  Suggested  Allocation 
request . 

Ul    K  H  d  (1).  Parameter  field  syntax 


Messages : 
Bits: 


FIXED( 16) 
FIXED(32) 


III  K  k    d  (2).  Parameter  field  semantics 

The  semantics  of  the  Messages  and  Bits  fields 
are  identical  to  those  described  in  Section  III  B  h  b 
(4). 

Ill  k  4  et  option  negotiation 

This   reply   is   sent   by   the   service   module   in 
response  to  the  Negotiate  Telnet  Option  request. 

LLL-JL-JL-S  LLL.  Parameter  field  SYPtax 

Negotiation:  FIXED(6) 
Option  Code:  FIXED(8) 
Subnegotiation:  VARIABLES) 

III  K  4  e  (2)t  Parameter  field  semantics 

III  K  4  e  (2)  (a),  Negotiation 

This  field  will  contain  a  code  indicating  the 
final  outcome  of  the  negotiation.  Legal  values 
are : 

250  indicates    service    module     is 
currently  accepting  options 

251  WILL 

252  WON'T 

253  DO 

254  DON'T 

255  indicates    service    module     is 
currently  refusing  all  options 


173 


DRAFT 


b/23/77 


NVTS  PSP 
EXECUTE  Response 


III  M  ?  (?)  (t>)  ,  Option  code 

This  field  contains  the  code  of  the  Telnet 
option  that  was  negotiated. 

Ill    K  4  e  (2)  (c)t  SubneKQUatjon 

This  field  will  contain  the  final  state  of 
any  subnegotiations  that  were  performed.  The 
format  will  be  consistent  with  the  request  format 
for  subnegotiation . 

Ill    K  **  ft  SUtvg 

This   reply   is   sent   by   the   service   module   in 
response  to  a  status  request. 

Ill  K  4  f  (1).  Parameter  field  syntax 

The  parameter  field  for  this  EXECUTE  Response  is 
formatted  identically  to  the  connection-info  field 
specified  in  the  TEXT  of  the  BEGIN  Response. 

Ill  K  4  f  (2).  parameter  Held  semantics 

This  field  has  the  same  meaning  as  the 
connection-info  field  in  the  TEXT  of  the  BEGIN 
Response  with  the  following  exception: 

III    K  4  f  (2)  (a).  Connection-state 

This  field  indicates  the  present  state  of  the 
connection.  The  possible  values  of  this  field  and 
their  meanings  are: 

0  Closed 

1  Open 

2  Waiting  for  open  to  complete 

3  Waiting  for  close  to  complete 


174 


DRAFT 


b/23/77 


NVTS  PSP 
Offloading  Telnet  Options 


IV.  Offloading  Telnet  Options 

An  installation  may  take  one  of  two  two  basic  approaches  to 
offloading  the  Telnet  options.  One  approach  is  to  offload 
nothing.  In  this  case,  the  Telnet  service  in  the  front  end  need 
only  reformat  the  data  stream,  handle  the  network  connections  and 
(perhaps)  do  character  translation.  The  other  approach  is  to 
offload  as  much  as  possible,  given  the  characteristics  of  the 
host.  In  this  case,  the  front  end  must  also  be  able  to  negotiate 
and  execute  some  of  the  Telnet  options.  Unfortunately,  for  some 
of  the  Telnet  options  it  is  not  possible  to  say  definitively 
whether  they  can  be  offloaded  or  not.  Table  2  can  be  used  as  a 
guide  to  how  readily  the  various  options  can  be  offloaded. 

Two  attributes  of  each  option  determine  whether  or  not  it 
can  be  offloaded.  An  option  nay  or  nay  not  affect  the  host's 
terminal-handling  parameters.  The  taking  effect  of  an  option  Tiay 
or  may  not  have  to  be  synchronized  with  the  data  stream.  If  an 
option  affects  the  host's  terminal-handling  parameters,  then, 
although  some  of  its  processing  may  be  offloaded,  some  processing 
will  have  to  be  done  in  the  host.  If  an  option  requires 
synchronization  with  the  data  stream,  it  may  be  very  difficult, 
if  not  impossible,  to  offload  it.  Table  2  lists  the  current 
ARPANET  Telnet  options  and  indicates  whether  they  may  be 
offloaded.  Some  of  the  options  are  discussed  below  in  greater 
detail.  Note  that  all  options  that  are  not  supported  by  the  host 
may  be  offloaded,  i.e.  the  front  end  can  refuse  negotiations 
without  involving  the  host. 


175 


DRAFT  6/23/77  NVTS  PSP 

Offloading  Telnet  Options 


Option  Nam? 


Telnet 

Synch 

Can 

Option 

Host 

w/Data 

Off- 

Num. 

Pepf? 

Stream 

load? 

H 

no 

no 

yes 

0 

yes 

yes 

no 

19 

yes 

yes 

yes 

20 

yes 

yes 

maybe 

1 

no 

yes 

no 

17 

no 

yes 

yes 

18 

yes 

no 

no 

10 

no 

no 

yes 

13 

no 

no 

yes 

11 

yes 

no 

no 

12 

no 

no 

yes 

16 

no 

no 

yes 

8 

? 

no 

maybe 

9 

? 

no 

maybe 

n 

yes 

no 

no 

15 

no 

no 

yes 

2 

no 

yes 

yes 

7 

yes 

yes 

no 

5 

yes 

yes 

some 

3 

no 

no 

yes 

6 

yes 

yes 

no 

Approximate  Message  Size 

Binary  Transmission 

Byte  Macro 

Data  Entry  Terminal 

Echo 

Extended  ASCII 

Logout 

Output  Carriage  Ret.  Dispos. 

Output  Formfeed  Dispos. 

Output  Horz.  Tab  Stops 

Output  Horz.  Tab  Stops  Dispos. 

Output  Linefeed  Dispos. 

Output  Line  Width 

Output  Page  Size 

Output  Vert.  Tabstops 

Output  Vert.  Tabstops  Dispos. 

Reconnection 

RCTE 

Status 

Suppress  Go  Ahead 

Timing  Mark 


Table  2.   Classification  of  Telnet  Options 

Elnarv  Transmission.  In  most  cases,  this  option  cannot  be 
offloaded.  However,  the  fact  that  it  has  been  negotiated  may  be 
of  interest  to  the  service  module  in  the  front  end.  If  the  front 
end  has  been  doing  (or  normally  does)  some  translation  tasks  for 
the  host,  it  will  be  necessary  to  coordinate  the  beginning  of 
binary  data  with  the  cessation  of  such  translation. 

Bvte  Macro.  If  this  option  is  supported  and  any  other 
options  or  functions  are  offloaded,  then  this  option  must  be 
offloaded.  This  option  provides  a  means  for  mapping  arbitrary 
strings  into  one  byte.   Therefore,  when  this  option  is  in  effect, 


176 


DhAFT 


6/23/77 


NVTS  PSP 
Offloading  Telnet  Options 


the  macro  expansion  must  take  place  at  the  earliest  point. 

Data  Entry  Terminal  (PET).  It  may  be  possible  to  offload  all 
or  part  of  this  option  depending  on  the  nature  of  the  host 
system.  If  the  host  supports  only  one  form  of  data  entry 
terminal,  then  the  front  end  can  map  many  DET  option  subcommands 
into  the  form  required  by  the  local  terminals  or  programs. 

Echo.  In  general,  it  is  not  possible  to  offload  this 
option,  since  the  process  in  the  host  which  is  connected  to  this 
terminal  may  wish  to  echo  characters  other  than  those  typed. 
However,  there  are  cases  where  it  might  be  desirable  if  the  front 
end  did  handle  this  option  for  certain  kinds  of  hosts.  For 
example,  consider  computers  that  support  only  half-duplex 
terminals,  such  as  IBM  360*s,  Burroughs  6700's,  or  Honeywell 
6000's.  Suppose  that  a  user  connects  to  such  a  host  and  asks  it 
to  DO  ECHO.  It  would  be  quite  reasonable  to  have  the  front  end 
handle  the  echoing  and  present  the  host  with  an  apparent  line- 
at-a-time  environment.  This  would  avoid  many  of  the  difficulties 
of  trying  to  fit  a  line -at-a-time  system  into  a  charact er-at-a- 
tip'e  mode. 

Output  Line  Width.  Once  again,  the  decision  to  offload  this 
option  rests  heavily  on  how  line-width  regulation  is  enforced. 
If  the  regulation  of  line  width  is  done  by  simple  "line  folding", 
then  this  function  may  be  performed  by  the  front  end.  However, 
if  regulating  line  width  requires  more  fundamental  adjustments  or 
more  sophisticated  action,  it  is  quite  likely  that  it  will  not  be 


177 


DRAFT 


b/23/77 


NVTS  PSP 
Offloading  Telnet  Options 


possible  to  offload  this  option. 

Output  Page  Size.  The  decisions  that  are  relevant  for 
offloading  this  option  are  similar  to  the  ones  described  for 
output-line  width.  Some  systems  may  interpret  the  regulation  of 
page  size  as  follows.  The  maximum  number  of  lines  in  a  page  is 
sent.  If  there  is  still  data  to  be  sent,  the  sender  pauses, 
waiting  for  an  input  from  the  user  indicating  that  he  is  ready  to 
proceed.  If  this  is  the  sort  of  regulation  desired  when  this 
option  is  negotiated,  then  it  can  be  offloaded.  However,  if  more 
fundamental  adjustments  or  more  sophisticated  action  is  required, 
it  may  not  be  possible  to  offload  it. 

Remote  Controlled  Transmission  and  Echoing.  The  RCTE 
option  is  meant  as  a  more  general  mechanism  to  replace  the  Echo 
option.  If  RCTE  is  used  to  replace  the  Echo  option,  then  it  may 
be  offloaded  under  the  same  conditions  as  the  Echo  option. 
Otherwise,  offloading  is  not  possible  and  actually  defeats  the 
purpose  of  the  RCTE  option. 

Status .  Since  not  all  options  may  be  offloaded,  it  is 
necessary  to  offload  part  of  the  Status  option  and  to  leave  part 
of  it  in  the  front  end.  It  is  suggested  that  the  Status  option 
be  handled  in  the  following  way: 

When  the  service  module  in  the  front  end  receive?.  a  Status 
option  negotiation,  it  will  respond  favorably  to  the  request  by 
sending  a  WILL  STATUS  to  the  sender.  It  will  then  relay  the 
option   to   the  host  in  the  normal  manner  and  wait  for  a  response 


178 


DRAFT 


6/23/77 


NVTS  PSP 
Offloading  Telnet  Options 


from  the  host.  When  the  host  receives  the  DO  STATUS  command  from 
the  front  end,  it  will  transmit  back  to  the  front  end  the 
subnegotiation  specifying  the  state  of  the  options  it  handles. 
When  this  subnegotiation  is  received  by  the  front  end,  it  will 
insert  into  this  subnegotiation  the  status  of  the  options  it 
handles  and  then  it  will  send  the  completed  subnegotiation  to  the 
foreign  host. 

If  no  options  are  supported  in  the  host  or  if  no  options  are 
supported  in  the  front  end,  then,  of  course,  this  procedure  may 
be  avoided  and  the  whole  operation  done  in  the  front  end  or  in 
the  host,  respectively.  Also  it  is  possible  for  the  front  end  to 
know  what  options  are  not  supported  and  supply  the  default  status 
in  format! on. 

Suppress  Go  Ahead  In  a  sense  the  Suppress  Go  Ahead  Option 
is  always  offloadable.  If  the  host  always  penerates  go-aheads 
then  it  is  no  problem  for  the  front  end  to  filter  them  out  when 
the  option  is  negotiated.  However,  it  is  impossible  for  the 
front  end  to  insert  go  aheads  when  the  option  has  its  default 
value. 

Telnet  "Svnch"  Sequences.  In  some  cases,  searching  for 
"interesting"  characters  in  the  data  stream  may  be  offloaded. 
For  example,  if  the  only  characters  deemed  interesting  are  the 
Telnet  special  characters,  then  this  function  may  be  offloaded. 
Or  the  front  end  may  be  provided  with  a  list  (on  either  a  .static 
or   dynamic   basis)  of  strings  to  be  searched  for.   However,  even 


179 


DRAFT 


8/23/77 


NVTS  PSP 
Offloading  Telnet  Options 


if  these  functions  are  performed  in  the  front  end,  they  must  also 
be  done  in  the  host  before  the  "synch"  sequence  is  received.) 
The  only  reason  for  offloadinp  this  function  is  to  decrease  the 
response  time  to  the  user's  request. 


180 


6/23/77 


NVTS  PSP 
Scenario 


V.  Scenario 

Let  us  consider  how  this  protocol  might  be  used  by  a  process 
in  the  host  to  initiate  a  Telnet  connection.  We  will  assume  that 
as  many  Telnet  functions  as  possible  have  been  offloaded. 

The  user  initiates  a  Telnet  connection  by  causing  a  EEG1N 
Command  to  be  sent  to  the  front  end: 

<BEGINXCXcontrol-bits  =  initXhost  =  12> 


Since  the  default  settings  for  a  BEGIN  Command  favor 
listening  for  a  Telnet  connection,  the  Command  must  in  this  case 
explicitly  request  that  the  connection  be  initiated.  The  NVT 
Service  Module  (NSM)  in  the  front  end  will  open  the  Telnet 
connection  to  host  12.  Once  the  connection  is  established,  the 
NSM  will  send  a  Begin  Response  to  the  host: 

<BEGINXRXconnection  stat  e  =  0Xhost  =  12  Xf  orei  gn  skt  =  M283> 
<msg=10Xbits  =  10000Xlskt=5607> 

The  channel  is  now  established  and  data  can  flow.  Almost 
immediately  the  system  herald  message  arrives  from  host  12  and  is 
passed  to  the  local  host: 

<TRANSMlTXCXtext ,  Go-ahea  d>Cen  t  er  for  Adv. 
Computation<CRLF>Please  log  in: 

(Since  TRANSMIT  Responses  require  no  action  by  either  the 
service  or  the  process,  they  will  not  be  shown  in  this  example.) 
The  process  wishes  to  have  the  remote  Telnet  implementation  cease 

181 


DRAFT 


fa/23/77 


NVTS  PSP 
Scenario 


echoing  characters.   So  it  requests  the  front   end   to   negotiate 
with  the  remote  Telnet  process: 

<EXECUTE><C><code=2><D0N'T><option  code=1> 

The  NSM  in  the  front  end  enters  into  an  option  negotiation 
with  the  remote  Telnet  process  and  is  successful  in  stopping  the 
remote  character  echoing.   The  NSM  then  informs  the  process: 

<EXECUTEXRXresult  =  OX  ref- coder  2><  WON' T> 
<option  code=1> 

The  user  now  continues  with  his  Telnet  session,  sending  data 
to  the  remote  host  and  receiving  responses  from  it.  Data  and 
responses  are  transferred  between  the  host  and  the  front  end  by 
TRANSMIT  Commands. 


182 


6/23/77 


NVTS  PSP 
References 


VI.  References 


1.  Postel,  Jon,  "Telnet   Protocol   Specification,"   NIC   #15372, 
Aug.  1973- 

2.  Postel,  Jon,  "Telnet  Option  Specifications,"  NIC  #15373,  Aug. 
1973. 

3.  Postel,  Jon,  "Telnet  Binary  Transmission  Option,"  NIC  #15389. 

4.  Postel,  Jon,  "Telnet  Echo  Option,"  NIC  #15390. 

5.  Postel,  Jon,  "Telnet  Reconnection  Option,"  NIC  #15391. 

6.  Postel,  Jon,  "Telnet  Suppress  Go  Ahead  Option,"  NIC  #15392. 

7.  Postel,  Jon,  "Telnet  Status  Option,"  NIC  #16237. 

8.  Postel,  Jon,  "Telnet  Timing  Mark  Option,"  NIC  #16238. 

9.  Postel,   Jon,   "Telnet   Extended-Options-List   Option,"   NIC 
#16239. 

10.  Walden,  David  C,  "Telnet   Output   Line   Width   Option,"   NIC 
#20196,  November  1973- 

11.  Walden,  David  C.,   "Telnet   Output   Page   Size   Option,"   NIC 
#20197,  November  1973. 

12.  Crocker,   D.H.   and    Postel,    J.B.,    ''Remote    Controlled 
Transmission  and  Echo  Telnet  Option,"  NIC  #19059,  November  1973- 

13.  Crocker,  D.H.,   "Telnet   Output   Carriage-Return   Disposition 
Option,"  NIC  #31155  (RFC  652),  October  1974. 

14.  Crocker,  D.H.,  "Telnet  Output   Horizontal   Tabstops   Option," 
NIC  #31156  (RFC  653),  October  1974. 

15.  Crocker,  D.H.,   "Telnet   Output   Horizontal   Tab   Disposition 
Option,"  NIC  #31157  (RFC  654),  October  1974. 

16.  Crocker,  D.H.,  Telnet  Output   Formfeed   Disposition   Option," 
NIC  #31158  (RFC  655),  October  1974. 


17.  Crocker,  D.H.,  Telnet  Output  Vertical  Tabstops   Option,' 
#31159  (RFC  656),  October  1974. 


NIC 


18.  Crocker,   D.H.,   Telnet   Output   Vertical   Tab    Disposition 
Option,"  NIC  #31160  (RFC  657),  October  1974. 

19.  Crocker,  D.H.,   "Telnet   Output   Linefeed   Disposition",   NIC 
#31161  (RFC  656),  October  1974. 


183 


DRAFT 


8/23/77 


NVTS  PSP 
References 


20.  Crocker,  D.H.,  "Telnet  Byte  Macro  Option",  RFC  729,  1977. 

21.  Day,  John,  "Offloading  ARPANET  Protocols  to  a  Front  End",  CAC 
Document  No.  230,  Center  for  Advanced  Computation,  University  of 
Illinois  at  Urbana-Champai  *?n ,  1977. 

22.  Day,  John,  "Telnet  Data  Entry  Terminal  Option",  RFC  731, 
1977. 

23.  Grossman,  G.R.,  "ARPANET  Host-Host  Process-t o-Service 
Protocol  Specification",  CAC  Technical  Memorandum  No.  80,  Center 
for  Advanced  Computation,  University  of  Illinois  at  Urbana- 
Champaign,  1977. 

24.  Grossman,  G.R.,  "Hos t-t o-Fron t-End  Protocol  Specification", 
RFC  7 10,  1977. 


IRA 


Appendix  5 


User  FTP 
Process- to-Service 
Protocol  Specification 


CAC  Technical  Memorandum  101 


by 
John  Day 


User    FTP 

Process-to-Service    Protocol 

Speci  f ication 

I,  s.e_r_ylce   Cole JLumb e_r 

7 

II.  Description  of  the  Service 

This  document  is  a  process-to-service  protocol  (PSP) 
specification  as  defined  in  the  Host-to-Front-End  Protocol  (HFP) 
Specification  [ARPANET  RFC  710].  It  specifies  a  process-to- 
service  protocol  for  providing  user  file  transfer  protocol  (FTP) 
services  to  a  process  through  the  HFP. 

The  file  transfer  protocol  [5]  is  a  protocol  for 
transferring  files  between  hosts  on  the  ARPANET.  FTP  provides 
the  mechanisms  not  only  for  file  transfer,  but  also  for  various 
file  management  functions  such  as  deleting  and  renaming  files.  A 
user  FTP  session  requires  two  facilities:  1)  an  FTP  interpreter 
to  send  FTP  commands,  receive  FTP  replies  and  control  tl  a 
transfer;  and  2)  a  data  transfer  facility  at  each  host  to 
actually  move  the  data  and  to  perform  any  data  translation 
required.  This  document  specifies  a  process-to-service  protocol 
that  provides  a  process-oriented,  rather  than  a  human-oriented, 
interface  to  a  user  FTP  module  (FTP  interpreter)  in  the  front 
end.  This  process-to-service  protocol  would  be  used  by  resource 
sharing  or  distributed  computing  application  programs.  In 
essence,  this  PSP  allows  the  user  FTP  interpreter  to  be  offloaded 

187 


6/23/77 


User  FTP  PSP 
Description  of  Service 


while  leaving  the  user  interface  in  the  host.  This  process-to- 
service  protocol  is  analogous  in  many  ways  to  the  network  virtual 
terminal  process-to-service  protocol  [3]- 

This  PSP  is  used  in  conjunction  with  the  File  Access  PSP  to 
offload  the  user  side  of  FTP.  This  PSP  is  used  in  two  offloading 
schemes  (see  CAC  Document  No.  230)  that  differ  only  in  whether 
data  translation  is  done  in  the  host  or  in  the  front  end.  In 
either  case  it  may  be  necessary  for  information  to  be  passed 
either  between  the  user  FTP  service  module  and  the  file  access 
service  module  in  the  front  end  or  between  the  user  FTP  interface 
and  the  file  access  module  in  the  host. 

The  user  FTP  process-to-service  protocol  uses  H F P  Messages 
to  carry  information  between  the  process  and  the  service  module. 
A  brief  summary  of  the  function  of  specific  Message  types 
follows . 


BEGIN  Command 

from  the  host  process 

requests  that  an  FTP  connection  be  established. 

BEGIN  Response 

from  the  service  module 

a)  confirms  the  establishment  of  the  connection  or 

b)  reports  the  reason  for  failure. 

END  Command 

from  the  process 

requests  the  closing  of  the  connection. 

from  the  service  module 

reports  the  closing  of  the   connection   by   the 
foreign  host,  or  reports  a  system  failure. 

ENP  Response 

from  the  process 

acknowledges  the  closing  of  the  connection, 
from  the  service  module 


188 


b/23/77 


User  FTP  PSP 
Description  of  Service 


acknowledges  the  closing  of  the  connection. 


189 


DRAFT 


b/23/77 


User  FTP  PSP 
Description  of  Service 


TRANSMIT  Command, 

from  the  process 

carries  FTP  commands  (perhaps  encoded)   to   the 

service   module  for  transmission  to  the  foreign 

host  over  the  ARPANET. 
fro;n  the  service  module 

carries  FTP  replies  (perhaps  encoded)   received 

over  the  ARPANET  to  the  process. 

TRANSMIT  fiesp onse 

is  used  to  acknowledge  receipt  of  FTP   commands   and 
replies . 

EXECUTE  Command 

from  the  host  process 

requests  that  the  service  module 

a)  report  the  status  of  a  connection; 

b)  send  a  special   control   function   to   the 
foreign  host;  or 

c)  modify  the  allocation  on  the  connection. 

EXECUTE  Response 

from  the  service  module 

a)  acknowledges  the  success  or  failure  of  the 
action  requested  by  the  process  via  the  EXECUTE 
Command  and, 

b)  if  requested,  reports  on  the  status  of  the 
connec  tion  . 


This  service  requires  implementations  in  the   front   end   of 
the  following  additional  protocols: 

ARPANET  Host-Host  Protocol 

ARPANET  Initial  Connection  Protocol 

ARPANET  Telnet  Protocol 

ARPANET  File  Transfer  Protocol  (user  side) 

File  Access  Process -to-Servi ce  Protocol 

The  implementation  of  the  file  access  process-to-service  protocol 
and  an  interface  to  this  PSP  are  required  in  the  host. 


190 


DRAFT 


8/23/77  User  FTP  PSP 

Description  of  Service 


The  detailed   specification   of   the   use   of   HfrP   hessases 
follows . 


191 


DRAFT 


b/23/77 


User  FTP  PSP 
BEGIN  Command 


III.    Message  Use 

III  A.  BEGIN  Command 

III  A  1 .  When  sent 

A  BEGIN  Command  is  sent  by  the  process  to  request  that 
the  service  module  attempt  to  establish  an  ARPANET  FTP 
connection . 

Ill  A  2  .  Acti on  on  receipt 

When  the  service  module  receives  the  BEGIN  Command,  it 
will  attempt  to  establish  the  FTP  connection  according  to 
the  parameters  in  TEXT. 


VARIABLE( ?) 
COMPLEX(b  ) 
BIXED(4) 


III  A  3.  TEXT  field  syntax 

Security : 
Establishment : 
Control-bits : 

Socket/Channel 

ICP/Direct 

Relative/Absolute 

Unattachable/Attachable 
host:  FIXED(32) 

Foreign  Socket:  FIXED (32) 

Messages:  FIXED(16) 

Bits:  FIXED(32) 

Local  Socket:  FIXED(32) 

Timeout:  FIXED(16) 

III  A  4.  TEXT  field  semantics 

III  A 


This,  field  can  be  used  to  validate  the  process' 
access  privileges  to  network  resources.  It  is 
particularly  important  to  limit  access  to  network 
security  objects.  The  substructure  and  content  of  this 
field  are  installation  dependent. 

NOTE:  At  this  writing,  not  enough  is  known  about 
security  in  networks  and  front  ends  to  make  any 
statement  about  the  utility  of  validation  at  this  point 
in  the  system.  This  field  is  included  in  case  some 
systems  require  validation  at  this  point. 


192 


tt/23/77 


User  FTP  PSP 
BEGIN  Command 


III  A  jj  b.  Establishment 


the 

esta 

FTP 

the 

fore 

an  I 

an 

pro  t 

zero 

the 

end 

fore 


Thi 

net 
blis 

ser 
f'ron 
ictn 
CP    t 

FTP 
oco  1 

a 
i  iel 

to 
ign 


s  set 
work 

hmen  t 

vi  ce . 

t  end 

host 

o  the 

con 

Th 

defau 

d  .   T 

esta 

host . 


of  par 

connec 

pararae 

This 

specif 

field  w 

FTP  co 

trol   c 

e  defau 

It  valu 

hus ,  mo 

blish 


ame t er 
ti  on  . 
t  ers  a 
mean 
ying  o 
ould  c 
n  ta  ct 
onnec t 
It  val 
e  may 
st  bEG 
an  FTP 


s  erove 

The 
re  oho 
s  that 
nly   d 
aus  e  t 

ocket 
ion  i 
u e s  of 
be  ind 
IN  Com 

s  e  s  s  i 


rn  s 

def 
sen 

a  b 
ef  au 
he  f 

( so 


the 
icat 

ma  nd 
on  w 


the  es 
aul  t 
to  fa 
EGIN  C 
Its 
ront  e 
eke t  3 
ccorda 
field 
ed  by 
s  sent 
i  11  on 


ta  blish 
va  lues 
vor   th 
omman  d 
xcep  t 
nd  to  i 
)  and 
nee   wi 
s  are 
the  a  bs 
to  the 
ly  spec 


ment  of 
for  the 
e  user 
sent  to 
in  the 
n  i  t  i  a  t  e 
set  up 
th  the 
set  at 
e  n  c  e  of 
f  ron  t 
ify  the 


III  A  H    b  ( 1 ) .  Control-bits 

The  bits   in   this   field   covern   the   kind  of 

connection   to   be   established,   the   method   of  its 

establishment,   and    the    interpretation    of  the 
parameters . 

Ill  A  4  b  (1)  (a).  Socket/Channel 


III  A  4  b  ( 1 )  ( b) .  ICP/Direct 

When  this   bit   is    zero    (default),    the 

connection  is   to   be  established  via  the  Initial 

Connection  Protocol.  When  this   bit   is   one,   the 

connection  is   to   be  established  directly  to  the 
specified  foreign  socket.   The  use  of  this  bit   in 

specifying  connection  sockets  is  detailed  in  table 
1  . 

Ill  A  4  b  (1)  (c).  Relative/Absolute 

This  field  affects  the  values  of  the  local 
sockets  for  the  connection.  See  III  A  k  b  (6)  for 
details.  The  default  case  is  Relative  (value 
zero ) . 


193 


6/23/77 


User  FTP  PSP 
EEGIN  Command 


III    A  4  b  (1)  (d).  Vnattachable/Attachable 

When  this  bit  is  one,  the  service  module  is 
requested  to  make  the  logical  channel  available 
for  attachment  by  other  service  modules  within  the 
front  end  (such  as  a  data  transformation  service). 
If  this  bit  is  zero  (default),  the  service  module 
is  not  requested  to  make  the  logical  channel 
available  for  attachment  within  the  front  end. 

HI  A  4  b  (2).  host 

This  field  specifies  the  network  host  to  which 
the  connection  is  to  be  made.  No  default  value  of 
this  field  is  specified  in  the  PSP.  If  this  field  is 
to  have  a  default  value,  the  value  and  its  meaning 
must  be  specified  in  the  adaptation  description. 

The  Host  field  is  parsed  as: 


Network : 
Imp : 
host-at-Irrn: 


FlXFD(b) 
F  I X  E  D  (  1  6  ) 
F I X  E  D  (  o  )  . 


Foreign  So eke t 

This  field  is  used  as  follows  to  construct  the 
effective  foreign  socket  (e.f.s.)  for  ma  kins?  the 
connection . 

Case  1.  Foreign  Socket  field  =  zero.   The  e.f.s. 

is  three. 
Case  2.  Foreign  Socket  field  i    zero.   The  e.f.s. 

is   the   contents   of  the  Foreign  Socket 

field. 

The  default  value  of  this  field  is  zero.  The  e.f.s., 
in  conjunction  with  the  ICP/Direct  bit,  is  used  to 
determine  the  foreign  sockets  for  the  connection.  See 
table  1  for  details. 

Ill  A  4  b  (4)  .  Messages 

This  field  and  the  Bits  field  allow  the  process 
to  indicate  to  the  service  module  the  flow  rate 
desirable  on  the  FTP  data  connection.  The  service 
module  may  use  this  information  in  any  way  its 
implementors  deem  desirable. 

This  field  contains  the  number  of  ARPANET  Host- 
Host  messages  the  process  suggests  be  allocated  on  the 
connection.  If  the  value  of  this  field  is  zero 
(default),   the   service   module  chooses  the  number  of 


194 


b/23/77 


User  FTP  PSP 
BEGIN  Command 


messages  on  its  own. 

Ill  A  4  b  (5) .  bits 

This  field  contains  the  number  of  bits  the 
process  suggests  be  allocated  for  the  FTP  data 
connection.  If  the  value  of  this  field  is  zero 
(default),  the  service  module  chooses  the  number  of 
bits  on  its  own. 

Ill  A  4  b  (6)  .  Local  Socket 


This  field  is  used  as  foil 
effective  local  socket  (e. 
connection . 

Case  1.  Relative/Absolute 
Socket  field  i  z 
contents  of  the  Gr 
will  be  concaten 
20  bits  of  the  Loc 
the  e  .  1  .  s  . 

Case  2.  Re  la t i ve/ Absolu te 
Socket   field   =  z 
service  will  choos 
order   12    bits 
field  in  the  HEADE 

Case  3.  Relative/Absolute 
case   the  effectiv 
to   the   contents 
field. 


ows   to   construct 
l.s.)   for   making 


the 
the 


bit  =  zero ,  Loca 1 
ero.  In  this  case,  the 
oup  field  in  the  HLADth 
ated  with  the  low-order 
al  Socket  field  to  form 

bit  =  zero ,  Loca 1 
ero.  In  this  case,  the 
e  a  number  whose  high 
are  equal  to  the  Group 
R. 

bit   =   one .    In   this 
local  socket  is  equal 

of   the   Local   Socket 


The  relationship  between  the  e.l.s.  and  the  local 
socket  values  depends  upon  the  value  of  the  ICP/Direct 
bit.   See  table  1  for  details. 

Ill  A  H    b  (7)  .  Timeout 

This  field  contains  the  maximum  length  of  time,  in 
seconds,  that  the  service  module  is  to  attempt  to 
establish  the  connection  (in  the  absence  of  an  error  or 
exceptional  condition).  If  the  service  module  has  been 
unable  to  establish  the  connection  within  this  time 
period,  it  is  to  abandon  the  attempt.  If  this  field 
contains  zero  (default),  the  time  period  is  to  be 
infinite. 


195 


DRAFT 


b/23/77 


User  FTP  PSP 
BEGIN  Command 


IfiLJLl.fi     1 


i  Control  Bits  i  Foreien  Sockets  !  Local  Sockets  i 
j                !   for  the  connection    |   for  the  connection    ! 

!  iThe  e.f.s.  will  be  used!  ! 
i  ias  the  contact  socket  I  ! 
i  ICP  i f or  the  connection.  ie.l.s.  +  2  and  e.l.s.  +3i 
i  IThe  control  connection  !  I 
!  isockets  will  be  chosen  !  i 
!                i by  the  foreign  host .    !                       ! 

i     Direct      i  e.f.s.  and  e.f.s.  +1   i  e.l.s.  and  e.l.s.  +  1  ! 

196 


6/23/77 


User  FTP  PSF 
EEGIN  Response 


III  B.  BEGIN  Response 

III  B  1.  When  sent 

A  BEGIN  Response  is  sent  by  the  service  module  to 
report  the  outcome  of  an  attempt  to  establish  an  FTP 
connection  requested  by  a  BEGIN  Command.  The  Status  field 
in  the  HEADER  will  indicate  whether  the  connection  attempt 
was  successful  or  unsuccessful. 

Ill  B  2.  Action  on  receipt 

When  the  process  receives  a  BEGIN  Response  indicating 
a  successful  connection,  it  may  proceed  to  send  and  receive 
data  on  the  connection.  When  the  process  receives  a  BEGIN 
Response  indicating  an  unsuccessful  connection,  it  should 
perform  the  appropriate  error  recovery. 

Ill  B  3t  TEXT  field  syptay 

Connection-info : 

Connection-state: 

Host: 

Foreign  Socket: 

Messages: 

Bits: 

Local  Socket: 


COMPLEX(b) 
FIXED(4) 
FIXED(32) 

FIXED ( 32) 
FIXED ( 16) 
FIXED (32) 
F1XKD(52) 


III  B  4.  TEXT  field  semantics 

III  B  4  a.  Connection-state 

If  the  connection  attempt  was  successful  (as 
indicated  by  the  Status  field  in  the  HEADER),  this  field 
will  contain  the  value  1  which  will  be  compatible  with 
the  "open"  state  value  defined  for  this  field  in  the 
TEXT  of  the  EXECUTE  Response.  (See  section  III  K  4  c 
(1).  ) 

If  the  connection  attempt  was  unsuccessful,  this 
field  contains  an  encoded  reason  for  the  failure.  Ihe 
codes  are: 


Illegal  control  bit  combination 

Invalid  local  socket 

Invalid  host 

Connection  attempt  timeout 

Network  not  available 

Foreign  host  dead 

Connection  refused 

Front  end  terminating  service 

Network  connection  incompletely  specified 


197 


DRAFT 


6/23/77 


User  FTP  PSP 
BEGIN  Response 


in  e  **  Ot  vq$% 

If  the  connection  attempt  was  successful,  this 
field  contains  the  ARPANET  host  address  of  the  host  to 
which  the  connection  was  established.  (See  III  A  4  b 
(2).  ) 

IU  E  **  Ct  Foreign  Socket 

If  the  connection  attempt  was  successful,  this 
field  contains  the  socket  number  at  the  foreign  host  to 
which  the  connection  was  established. 

Ill  B  k    d.  Messages  and  Eits 

If  the  connection  attempt  was  successful,  these 
fields  contain  the  flow  control  parameters  for  the 
connection  at  the  time  the  BEGIN  Response  was  generated. 

Ill  B  it  e.  Local  Socket 

If  the  connection  attempt  was  successful,  this 
field  contains  the  local  socket  number  for  the 
connection . 


198 


DRAFT 


6/23/77 


User  FTP  PSP 
END  Command 


III  C.  END  Command 

III  C  1 .  When  sent 

III  C  1  a.  By  the  process 

An  END  Command  is  sent  by  the  process  to  request 
the  service  module  to  close  the  network  connection. 

Ill  C  1  b.  by  the  service  module 

An  END  Command  is  sent  by  the  service  module  to 
notify  the  process  that  the  connection  has  been  closed 
by  the  foreign  host  or  by  a  failure  of  the  foreign  host 
or  the  network. 

Ill    C  2,  Action  on  receipt 

III  C  Z    a.  By  the  process 

When  the  process  receives  an  END  Command,  it  should 
consider  the  connection  closed.  The  process  should  send 
an  END  Response  and  take  appropriate  recovery  action. 

Ill  C  2  b>  3y  the  service  module 

When  the  service  module  receives  an  END  Command,  it 
should  allow  data  queued  for  transmission  to  the  network 
to  drain,  unless  Flush  awav  (bit  1)  is  set  in  the 
Control  field.  It  should  then  initiate  the  process  of 
closing  the  connection.  When  the  connection  is  closed, 
the  service  module  should  send  an  END  Response. 

HI  C  1,  TEXT  field  syntax 

Cause:  FIXED(3) 
III  C  M.  TEXT  field  semantics 

III  C  *4  a.  Cause 


This  field  contains  an  encoded  reason 

the  END  Command.   The  codes  are: 

0  Normal  completion  (default) 

1  Network/process  failure 

2  Foreign  host  failure 

3  User  requested  termination 

4  Front  end  terminating  service 


for   sending 


199 


DRAFT 


b/23/77 


User  FTP  PSP 
END  Response 


III  D.  END  Response 

III    p  1  at  By  the  process 

The  END  Response  is  sent  by  the  process  to 
acknowledge  the  receipt  of  an  END  Command  and  complete 
the  termination  of  the  associated  logical  channel. 

Ill  D  1  b.  Bv  the  service  module 

The  END  Response  is  sent  by  the  service  module  to 
acknowledge  receipt  of  an  END  Command,  notify  the 
process  that  the  connection  has  been  closed  as 
requested,  and  terminate  the  logical  channel. 

Ill  D  2,  Actjon  on  receipt 

III  D  2  at  py  the  process 

When  the  process  receives  the  END  Response,  it 
should  consider  the  ARPANET  connection  to  be  closed  and 
the  HFP  logical  channel  to  be  terminated. 

Ill  P  2  b.  Pv  the  service  module 

When  the  service  module  receives  the  END  hesponse, 
it  should  consider  the  logical  channel  to  be  terminated. 

HI  D  3.  TEXT  fjeld_sxDlax 

The  TEXT  field  in  the  END  Response  is  not  used  in  this 
protocol . 


200 


DRAFT 


6/23/77 


User  FTP  PSF 
TRANSMIT  Command 


III  E.  TRANSMIT  Command 

III  E  1 .  When  sent 

III  E  1  a.  Bv  the  process 

The  TRANSMIT  Command  is  sent  by  the  process  to  pass 
FTP  commands  to  the  service  module  for  transmission  over 
the  network  to  the  foreign  host. 

Ill  E  1  b.  Bv  the  service  module 

The  TRANSMIT  Command  is  sent  by  the  service  module 
to  pass  FTP  replies  that  have  arrived  over  the  network 
from  the  foreign  host  to  the  process. 

Ill  £  2.  ActiQh  on  recej.pt 

III  E  2  a.  Bv  the  process 

When  the  process  receives  a  TRANSMIT  Command,  it 
will  treat  the  contents  of  the  TEXT  as  FTP  replies  to  be 
processed.   (See  section  IV  tor  details.) 

Ill  E  2  b.  By  the  service  module 

When  the  service  module  receives  a  TRANSMIT 
Command,  it  will  treat  the  contents  of  the  TEXT  rs  FTP 
commands  to  be  transmitted  over  the  network.  (See 
section  IV  for  details.) 

Ill  E  3.  TEXT  field  syntax 

Control:  FIXED(1) 

Go-Ahead/More-Data 
Data:  VARIAhLh(?) 

Ill    E    4.    TEXT    field    semantics 

III    E    H    a.     Control 

The  single  bit  in  this  field  indicates  whether  or 
not  the  sender  of  the  TRANSMIT  Command  has  completed 
sending  data.  It  is  used  to  facilitate  handling  half- 
duplex  terminals  connected  to  the  process.  The  receiver 
of  a  TRANSMIT  Command  with  this  bit  set  to  0  (default) 
should  assume  that  the  sender  has  completed  sending  d^i? 
and  that  the  receiver  is  now  free  to  send  any  data  that 
it  has.  If  the  bit  is  set  to  1  the  sender  has  more  data 
to  send  and  the  receiver  should  not  send  data  at  this 
t  ime . 


201 


DRAFT 


6/23/77 


User  FTP  PSP 
TRANSMIT  Command 


III  E  4  b.  Data 

The  Data  field  contains  the  FTP  commands  and 
replies  to  be  transferred.  For  more  details  see  CAC 
Document  230,  and  section  IV. 


202 


DRAFT 


8/23/77 


User  FTP  PSP 
TRANSMIT  Response 


UJL 


The  TRANSMIT  Response  is  used 
specif i  cation . 


descri bed   in   the 


203 


6/23/77  User  FTP  PSP 

SIGNAL  Command 


III  G.  SIGNAL  Command 

The  SIGNAL  Command  is  not  used  in  the  process-to-service 
protocol.  SIGNAL  Commands  may  be  generated  by  process  or 
service  to  request  that  the  CPM  carry  out  the  appropriate 
action  on  the  logical  channel.  (See  HFP  specification.) 
Thus,  the  effect  of  the  SIGNAL  Command  is  restricted  to  the 
logical  channel  level. 


204 


DRAFT 


6/23/77 


User  FTP  PSP 
SIGNAL  Response 


III  H.  SIGNAL  Response 

The  SIGNAL  Response  is  not   used   by   either   process   or 
service. 


205 


6/23/77 


User  FTP  PSP 
EXECUTE  Command 


III  J.  EXECUTE  Command 

XII  J  1.  Whep  Sent 

The  process  sends  an  EXECUTE  Command   to   request   the 
service  module  to 

a)  report  the  status  of  a  specified  connection, 

b)  send  a  Telnet  control  function, 

c)  handle  Telnet  options  and  FTP  replies,  or 

d)  modify  the  allocation  for  the  connection. 

The  service  module  does  not  send  EXLCUTE  Commands  for   this 
protocol . 

Ill  J  2.  Action  upon  Receipt 

When  the  service  module  receives  an  EXECUTE  Command  it 
will  decode  and  act  on  the  request. 


FIXED(2) 
VARIABLE( ?) 


Ill  J  V  TEXT  fjejd  syntax 

Code: 
Parameters : 

III  J  M.  TEXT  fiejd  semantics 

III  J  4  a.  Code 

This  field  contains  an  encoding  of  the  type  of 
request.   The  codes  are: 

0  Report  status 

1  Send  control  function 

2  Handle  Telnet  options  and  FTP  replies 

3  Modify  suggested  allocation 

III  J  4  b.  Parameters 

This  field  contains  the  parameters  for  specifying 
the  requests.  The  contents  will  vary  according  to  the 
type  of  request. 

Ill  J  4  b  (1).  Report  status 

No  parameters  are  required. 

Ill  J  ^  b  (2).  Send  control  function 

III    J  **  b  (2)  (a),  Parameter_fjel4  syntax 

Control  Function:        FIXED  (b) 


206 


6/23/77 


User  FTP  PSP 
EXECUTE  Command 


III  J  4  b  (2)  (b).  Parameter  field  semantics 

This  field  contains  a  parameter  specifying  a 
Telnet  control  function  that  the  User  FTP  module 
should  send  on  the  control  connection.  The 
parameter  values  and  their  meanings  are: 

242  SYNCH 

243  Break 

244  Interrupt  process 

245  Abort  output 

246  Are  you  there 


III  J  4  b  (^).  Handle  options  and  FTP  replies 
III  J  4  b  (1)  (a).  Parameter  fie  Id  syntax 


Option  control: 
Reply  text  control: 


F  I X  E  D  (  2  ) 
FIXED( 1 ) 


III  J  4  b  (3)  (b).  Parameter  field  semantics 

These  fields  contain  parameters  that  indicate 

1)  how  the  front  end  should  respond  to  Telnet 
option  negotiations  on  the  control   connection   or 

2)  whether  or  not  the  front  end  should  forward  the 
text  of  FTP  replies  to  the  host.  How  Telnet 
options  and  FTP  replies  are  handled  before  the 
process  sends  the  relevant  EXECUTE  Commands  is 
installation-specific  and  must  be  specified  in  the 
adaptation  description.  The  parameter  values  and 
their  meanings  are: 

Option  control  values: 

1  Refuse  all  options 

2  Refuse  no  options 

3  Refuse  options  not  handled  by  the 
front  end 

Reply  text  control  values: 

0  Send  FTP  reply  text 

1  Don't  send  FTP  reply  text 

L  J  4  b (  4 ) .  Modi  f  v  sug gested  allocation 

III  J  4  b  (4)  (a).  Parameter  field  syntax 


Mess  ages : 
Bits: 


FIXED( 16) 
FIXED(32) 


III  J  4  b  (4)  (b).  Parameter  field  seman tics 

The  semantics  of  this  field  are  identical 


207 


DRAFT 


b/23/77 


User  FTP  PSP 
EXECUTE  Command 


those  described  for  the  allocation  fields  in  the 
BEGIN  Command.  (See  sections  III  A  i*  b  ( H )  -  III 
A  J*  b  (5).  ) 


208 


DRAFT 


6/23/11 


User  FTP  PSP 
EXECUTE  Response 


III  K.  EXECUTE  Response 
III  K  1.  When  Sent 

The  service  module  sends  an  EXECUTE  Response  when 

a)  it  has  completed  the  operation   requested   by 
EXECUTE  Command,  or 

b)  it  has  received  an  EXECUTE  Command  whose  TEXT 
in  error. 


EXECUTE   Responses   for   this 


The  process   does   not   send 
process-to-service  protocol. 

Ill  K  2.  Action  on  Receipt 

When  the  process  receives  an  EXECUTE  Response,  it 
should  examine  the  TEXT  to  see  whether  the  Response 
indicates  an  error.  If  no  error  is  indicated,  it  may 
consider  that  the  action  requested  by  a  previous  EXECUTE 
Command  was  successful.  If  an  error  is  indicated, 
appropriate  error  recovery  action  should  be  initiated. 
This  action  is  idiosyncratic  to  the  process. 

Ui  K  3.  text  field  syntax 

Result:  FIXED(2) 

Ref-Code:  F1XED(2) 

Connection-info:  COMPLhX(?) 

Control  connection-state:  FIXED(2) 

Data  connection-state:  FIXED(2) 

Host:  FIXED(32) 

Foreign  Socket:  FIXED(32) 

Messages:  FIXED(16) 

Bits:  FIXED(32) 

Local  Socket:  FIXED(32) 

III  K  4.  TEXT  field  semantics 

III    K  M  a.  Result 

This  field  contains  an  encoding  of  the  result  of 
the  request  (made  in  a  previous  EXECUTE  Command)  to 
which  the  EXECUTE  Response  is  a  reply.   The  codes  are: 


Success 

Illegal  code  in  request 

TEXT  too  short. 


Ill    K  4  p.  Ref-code 

This  field  contains  the   same   value   as   the   Code 
field   of   the   TEXT  of  the  EXECUTE  Command  to  which  the 


209 


DRAFT 


6/23/77 


User  FTP  PSP 
EXECUTE  Response 


EXECUTE  Response  is  a  reply. 

Ill  K  4  c.  Connection-Info 

This  field  is  present  only  if  the  Ref-code  has  a 
value  of  zero  or  three  (status  or  modify  allocation). 
The  semantics  of  this  field  are  identical  with  the 
Connection-info  field  of  the  BEGIN  Response  (section  III 
B  4)  with  the  following  exception. 

Ill  K  4  c  (1).  Control  connection-state 

If  the  ref-code  value  is  zero  (status),  this 
field  indicates  the  present  state  of  the  FTP  control 
connection.  The  possible  values  of  this  field  and 
their  meanings  are: 


0 
1 
2 
3 

III    K  4  c  (2). 


Closed 

Open 

Waiting  for  open  to  complete 

Waiting  for  close  to  complete 


Data 


pn-s tat e 


If    the    ref-code    value      is      zero       (status),  this 

field      indicates      the      present      state    of    the    FTF  Data 

connection.       The    possible    values    of       this      field  and 
their    meanings    are: 

0  Closed 

1  Open 

2  Waiting  for  open  to  complete 

3  Waiting  for  close  to  complete 


210 


DRAFT 


6/23/77 


User  FTP  PSP 
Details  of  Offloading 


IV.  Details  of  Offloading  User  FTP 

The  ARPANET  File  Transfer  Protocol  consists  of  two  TiRjor 
sections:  a  command-and-response  section  and  a  data  transfer 
section.  The  file  access  process-to-service  protocol  deals  with 
offloading  the  data  transfer  portion,  while  this  protocol  and  the 
program  access  process-to-service  protocol  deal  with  different 
ways  of  offloading  the  command-and-response  section. 

The  program  access  process-to-service  protocol  offloads  the 
entire  command-and-response  section  including  the  user  interface. 
Thus  programs  which  wish  to  use  FTP  are  required  to  deal  with  the 
human-oriented  interface  of  the  front  end.  The  user  FTP 
process-to-service  protocol  defines  an  offloading  scheme  more 
appropriate  for  the  use  of  FTP  by  programs.  Alternatively,  one 
can  view  this  protocol  as  defining  an  offloading  scheme  that 
leaves  the  user  interface  in  the  host. 

In  this  protocol,  the  TRANSMIT  Command  can  be  used  to  send 
FTP  commands  and  replies  between  the  service  module  and  the 
process.  Some  installations  may  wish  to  send  some  intermediate 
form  or  encoding  peculiar  to  their  host's  file  system  or  user 
interface  and  let  the  service  module  in  the  front  end  translate 
into  the  proper  FTP  Commands.  For  most  installations,  the  best 
method  of  encoding  this  information  is  to  just  send  the  FTP 
commands  themselves.  Since  many  of  the  parameters  are  character 
strings,  little  is  saved  by  additional  encoding.  The  only  major 
exceptions   would  be  the  data  transfer  parameter  commands  such  as 


211 


DRAFT 


8/23/77 


User  FTP  PSP 
Details  of  Offloading 


TYPE,  MODE,  etc.  Similar  arguments  hold  for  the  replies. 
Because  of  the  semantics  attached  to  the  individual  decimal 
digits,  some  coding  would  be  possible,  but  of  limited  utility. 
Some  installations  may  wish  to  use  the  control  function  described 
in  Section  III  J  H  b  (3)  to  send  only  the  reply  code  to  the 
process  and  not  the  full  text  of  the  reply.  Section  V  gives  a 
suggested  structure  for  encoded  FTP  commands  and  replies. 

File  transfers  can  be  handled  in  two  ways:  either  the  host 
or  the  front  end  controls  the  transfer.  In  either  case  the 
transfer  is  mediated  by  the  file  access  process-to-service 
protocol.  If  the  transfers  are  controlled  from  the  host  (i.e., 
the  using  file  access  module  in  the  host),  then  the  process  will 
supply  the  file  access  service  module  in  the  host  with  the  local 
file  name.  Thus,  the  FTP  file  transfer  commands  (e.g.  RETR, 
SEND,  etc.)  can  be  sent  as  they  are  defined  in  the  protocol  to 
the  front  end.  However,  if  the  transfers  are  controlled  from  the 
front  end  (i.e.,  by  the  using  file  access  module  in  the  front 
end),  the  process  must  inform  the  service  module  in  the  front  end 
of  the  names  of  both  the  local  file  and  the  remote  file  to  be 
used  in  the  transfer.  This  will  require  that  both  pathnames 
(local  and  foreign)  be  passed  to  the  front  end.  For  further 
discussion  of  FTP  offloading  see  [4]. 


21? 


DRAFT 


6/23/77 


User  FTP  PSP 
Encoding  of  FT?  Commands 


V.  Suggested  Encoding  of  FTP  Commands  and  heplies 
V  A  .  Command  Syntax 


Code: 
Parameters 


FIXEDC5) 
VARIABLE*?) 


V  A  1.  Command  Semantics 

V  A  1  a.  Code 

This  field   contains   a   code   which   represents 
particular  FTP  command.   The  values  are: 


0 

USER 

1 

PASS 

2 

ACCT 

3 

REIN 

4 

BYE 

5 

BYTE 

6 

SOCK 

7 

PASV 

6 

TYPE 

9 

STRU 

10 

MODE 

1 1 

RETR 

12 

STOR 

13 

APPE 

14 

ALLO 

15 

REST 

16 

RNFR 

17 

RNTO 

1b 

ABOR 

19 

DELE 

20 

LIST 

21 

NLST 

22 

SITE 

23 

STAT 

24 

HELP 

V  A  1  b.  Parameters 

This  field  contains  any   parameters   necessary 
the  commands.   They  are  encoded  as  follows: 


for 


V  A  1  b  (1).  Parameters  for USER,  PASS,  ACCT 

Access  Parameter:   VARIABLE(  ) 

V  A  1  b  ( 2 ) .  Param eters  for   Data  Transfer  Commands 


Byte  Size: 
Socket : 


FIXED(8) 
FIXED(32) 


DRAFT 


8/23/77 


User  «TP  PSP 
Encoding  of  FTP  Commands 


Type: 

Stru: 

Mode: 

Alio: 

File  Transfer: 

Foreign  path : 
Local  path: 


F1XED(4) 

FIXED( 1 ) 

FIXED(2) 

FIXED(  ) 

C0MPLEX(2) 

VARIAbLt(?) 
VARIAbLE(? ) 


V  B,  Reply  syptax 

Reply  code: 
Reply  text : 


FIXED( 10) 
VARIABLES  ) 


The  three-digit  reply  codes  are  coded  as 

Bits  0-2:  1st  digit 

Eits  3-5:  2nd  digit 

Bits  6-9:  3rd  di*it 


214 


DRAFT 


6/23/77 


User  FTP  PSP 
Scenario 


VI.  sgenario 

Let  us  consider  how  this  protocol  might  be  used  to  offload  a 
user  FTP  which  has  its  user  interface  in  the  host  and  uses  the 
file  access  process-to-service  protocol  to  transfer  files.  The 
using  file  access  module  (UFAM)  and  the  data  translation 
functions  are  in  the  front  end. 

The  user  initiates  the  host's  user  FTP  process  (UFP)  and 
asks  for  a  connection  to  ILL-CAC.  The  UFP  notes  that  this  is  a 
normal  FTP  request  and  sends  a  BEGIN  Command  to  the  front  end 
specifying  only  the  foreign  host  (the  other  parameters  have  their 
default  values) : 

<BEGINXCXsecurity  =  day,johnXcontrol-bits=0Xhost=12> 

The  user  FTP  service  module  (UFSto)  in  the  front  end  will 
then  attempt  an  ICP  to  socket  3  (the  FTP  contact  socket)  at  ILL- 
CAC.  Once  the  connection  is  established  the  UFSto  will  return  a 
BEGIN  Response  to  the  UFP  indicating  the  outcome: 

<EEGINXRX?tater1Xhost=12X  foreign  skt  =  4399Xmsg=H> 
<bits=2000X1skt  =  23b3> 

Later  the  herald  message  arrives  from  the  FTP  server  at 
ILL-CAC  and  is  passed  to  the  UFP: 

<IRANSMITXC>300  Center  for  Adv.   Computation.    Please   locr 
in: 


215 


DRAFT 


6/23/77 


User  FTP  PSP 
Scena  rio 


(Since  TRANSMIT  Responses  require  no  action  by  either  the 
service  or  the  process,  they  will  not  be  shown  in  this  example.) 
The  user  now  sends  the  FTP  USER  command  which  is  passed  from  the 
UFP  to  the  UFSM  and  on  to  the  net: 

<TRANSMITXOUSER  day 

(The  UFSM  notes  what  command  is  being  sent  so  that  it  can 
know  what  replies  it  should  expect  in  return.  For  most  commands 
this  is  mainly  an  integrity  check  on  the  operation  of  the  server. 
However,  for  the  data  transfer  commands  the  replies  indicate  the 
state  of  the  transfer  and  may  have  an  effect  on  the  control  of 
the  data  connection.)  The  response  comes  from  the  server  FTP  and 
is  passed  on  to  the  UFP: 

<TRANSMITXC>331  Please  enter  password 

The  user  enters  the  FTP  PASS  command  and  it  is  passed  to  the 

UFSM: 

<TRANSMITXOPASS  John 

This  command  is  then  sent  to  the  server  FTP.  khen  the 
response  arrives  it  is  passed  to  the  UFP: 

<TRAKSMITXC>230  User  logged  in  for  file  transfer 

The  user  now  wishes  to  move  a  file  from  the  server  to  a 
local  file  on  the  host.  Since  such  transfers  are  initiated  and 
controlled  by  the  UFAM  in  the  front  end,  both  the  local  and 
remote   pathnames  must  be  passed  to  the  front  end.   The  following 


216 


6/23/77 


User  FTP  PSP 
Scenario 


command  is  sent  to  the  UFSM: 

<TRANSMITXORETR  junk. note  to  note,  junk 

where  the  first  pathname  is  the  remote  one  and  the  second  the 
local  one.   The  UFSM  will  send  the  portion: 

RETR  junk. note 

to  the  server  FTP,  initiate  a  data  connection  on  the  default  data 
socket,  and  pass  the  second  pathname,  the  local  port  and  security 
information  to  the  UFAM.  The  UFAM  will  then  establish  a  session 
with  the  host  and  begin  transfer  of  data  into  the  host.  Once  the 
transfer  has  begun  the  server  FTP  will  send  a  125  reply  which 
will  be  passed  on  to  the  UFP: 

<TRANSMITXC>125  File  Transfer  begun 

After  the  transfer  has  completed  the  server  FTP  will  send  a  226 
which  will  be  passed  on  to  the  UFP: 

<TRANSMITXC>226  File  Transfer  completed 

Suppose  that  the  user  then  wishes  to  delete  the  file  he   has 
just  transferred.   The  UFP  sends  an  FTP  DELE  command  to  the  UFSM: 

<TRANSMITXODELE  junk. note 

The  UFSM  passes  the  TEXT  of  this  message  on   to   the   server 
FTP.   Later  a  reply  is  returned  and  passed  on  the  UFP: 

<TRANSMITXC>250  File  junk. note  deleted 


217 


b/23/77 


User  FTP  PSP 
Scenario 


The  user  then  wishes  to  terminate  the  FTP  session.  The  UFP 
passes  an  FTP  QUIT  command  to  the  UFSM: 

<TRANSMITXOQUIT 

The  UFSM  passes  the  QUIT  on  to  the  server  FTP.  The  server 
FTP  responds  with  a  221  reply.  However,  before  this  reply  is 
received  the  UFP  terminates  the  channel  by  sending  an  END 
Command  : 

<ENDXCXs  tat  us  =  0>   (indicating  normal  termination) 

and  the  UFSM  replies  promptly  with: 

<ENDXR> 

The  UFSM  is  then  left  to  close  all  network  connections  in 
accordance  with  the  FTP  protocol  and  to  notify  the  UFAM  to 
terminate  its  session  also. 


218 


6/23/77 


User  FTP  PSP 
References 


VII.  References 

1.  Day,  J.  "Server  FTP  Process -to-Servi ce  Protocol,"  CAC 
Technical  Memorandum  No.  100,  Center  for  Advanced  Computation, 
University  of  Illinois  at  Urbana-Champai *n ,  1977. 

2.  Day,  J.  "File  Access  Process-t o-Ser vi ce  Protocol,"  CAC 
Technical  Memorandum  No.  102,  Center  for  Advanced  Computation, 
University  of  Illinois  at  Ur  bana-Champ  ai  c;n  ,  1977. 

3.  Day,  J.  "Network  Virtual  Terminal  Process-t o-Service 
Protocol,"  CAC  Technical  Memorandum  No.  103.  Center  for 
Advanced  Computation,  University  of  Illinois  at  Urbana- 
ChampaiKn,  1977. 

4.  Day,  J.  "Offloadine  ARPANET  Protocols  to  a  Front  End,"  CAC 
Document  No.  230,  Center  for  Advanced  Computation,  University 
of  Illinois  at  Urbana-Champai *n ,  1977. 


5.  Neigus,  N. 
1973. 


•The  File  Transfer   Protocol, 


ARPANhl 


RFC       542, 


6.    Nei<?us,    N;     Poerran,    K.;    and    Postel,    J. 
Reply    Codes,"    ARPANET    RFC    6U0,     1974. 


■A    New    Schema       for       FTP 


7.    Postel,    J.       "Telnet    Protocol    Specification,"    NIC    #1b639,     1973. 


21Q 


Appendix  6 


Server  FTP 
Process -to-Service 
Protocol  Specification 


CAC  Technical  Memorandum  100 

by 
John  Day 


221 


Server  FTP 

Process-to-Service  Protocol 
Specification 


I.  Service  Code  Number 


II.  Description  of  the  Service 

This  document  is  a  process-to-service  protocol  specification 
as  defined  in  the  Host-to-Front-End  Protocol  (HFP)  Specification 
[ARPANET  RFC  710].  It  describes  a  protocol  for  offloading  the 
server  side  of  the  ARPANET  File  Transfer  Protocol  [  *J  ]  . 

The  file  transfer  protocol  (FTP)  is  a  protocol  for 
transferring  files  between  hosts  on  the  ARPANET.  FTP  provides 
the  mechanisms  not  only  for  file  transfer,  but  also  for  various 
file  management  functions  such  as  deleting  and  renaming  files.  A 
Server  FTP  session  requires  an  FTP  protocol  interpreter  to 
control  the  transfer  and  to  perform  the  file  management 
operations  and  a  data  transfer  process  to  actually  move  the  data 
and  to  perform  any  translations  between  the  network  data 
representation  and  the  local  data  representation.  The  file 
access  process-to-service  protocol  deals  with  offloading  the  data 
transfer  section.  The  server  FTP  process-to-service  protocol 
deals  with  offloading  the  command-and-response  section.  Of  the 
twenty-five  FTP  commands  defined  in  the  protocol,  only  seven  must 
be  done  by  the  residual  server  FTP  process  in  the  host.  The 
others  are  handled  by  either  the  file  access   service   module   or 


DRAFT 


b/23/77 


Server  FTP  PSP 
Description  of  Service 


the  server  FTP  process  in  the  front  end.  Those  seven  commands 
are  : 

RENAME 

DELETE 

SITE 

STATUS  (are) 

ALLOCATE 

LIST 

NAME-LI ST 

The  FTP  commands  used  for  user  authentication  (US Eh,  PASS,  and 
ACCT)  may  or  may  not  be  offloaded  depending  on  the  security 
policy  arrangement  between  the  front  end  and  the  host. 

The  organization  of  some  host  systems  may  be  such  that  the 
ALLOCATE,  LIST  and  NAME-LIST  commands  are  best  performed  through 
the  file  access  process-to-service  protocol.  Depending  on  the 
particular  offloading  environment  the  other  commands  may  be 
handled  in  either  the  host  or  the  front  end. 

This  process-to-service  protocol  requires  implementations  in 
the  front  end  of  the  following  additional  protocols: 

ARPANET  Host-Host  Protocol 

ARPANET  Initial  Connection  Protocol 

ARPANET  Server  Telnet 

ARPANET  File  Transfer  Protocol  (Server  side) 

File  Access  Process-t o-Ser vi ce  Protocol 


224 


DRAFT 


b/23/77 


Server  FTP  PSP 
Description  of  Service 


Implementations  of  the  File  Access  PSP  and  a  residual  Server  FTP 
which  uses  the  Server  FTP  PSP  will  normally  be  required  in  the 
host.  (Installations  that  only  allow  the  transfer  of  data  by 
network  users  will  not  require  the  use  of  this  protocol.) 

The  server  FTP  process-to-service  protocol  uses  HFP  Messages 
to  carry  information  between  the  residual  part  of  Server  FTP  in 
the  host  (the  "process")  and  the  server  FTP  service  module  (the 
"service")  in  the  front  end.  A  brief  summary  of  the  specific 
Message  types  follows. 


bEGIN  Command 

is  used  to  initiate  connections. 

EEGIN  Response 

is   used   to   confirm    the    establishment    of    a 
connection,  or  to  report  the  reason  for  failure. 

END  Command 

is  used  to  terminate  a  connection. 

ENP  Response 

is  used  to  confirm  the  termination  of  a  connection. 

TRANSMIT  Command 

is  used  to  transfer  FTP  commands  and  replies  to   and 
from  the  Telnet  connection. 

TRANSMIT  Response 

is  used  to  acknowledge  the  transfer  of  FTP  commands 
and  replies. 

EXECUTE  Command  and  Response 

a)  report  the  status  of  connections, 

b)  perform  control  functions,  and 

c)  modify  suggested  allocations. 


The  details  of  the  use  of  HFP   Messages   are   given   in   the 
following  section. 


225 


DRAr  i 


6/23/77 


Server  FTP  PSP 
Description  of  Service 


III.  Message  Use 

HI    A.    BEQXN    Command 

III    A    1.    When    sent 

III  A  1  a.  by  the  host  process 

A  BEGIN  Command  is  sent  by  the  host  process  to 
indicate  that  it  is  able  to  accept  an  FTP  user.  The 
host  process  sends  as  many  BEGIN  Commands  as  the  number 
of  connections  it  will  accept. 

I?I  A  1  b. By  the  service  module 

In  some  offloading  schemes,  a  BEGIN  Command  is  sent 
by  the  service  module  to  request  FTP  service  in  behalf 
of  a  particular  user. 

Ill  A  2.  Action  on  receipt 

III  A  2  a.  Bv  the  service  module 

When  the  service  module  receives  a  BEGIN  Command, 
it  attempts  to  set  up  a  connection  as  specified  by  the 
parameters  in  the  TEXT.  The  service  module  may  refuse 
the  BEGIN  Command  by  sending  an  appropriate  BEGIN 
Response. 

Ill  A  2  b.  Bv  the  host  process 

When  the  host  receives  a  BEGIN  Command,  it  should 
attempt  to  provide  FTP  service  for  those  FTP  commands 
not  handled  in  the  front  end.  The  host  may  refuse  the 
request  for  service  by  sending  an  appropriate  BEGIN 
Response.  The  only  field  the  host  process  should  expect 
in  the  TEXT  of  the  BEGIN  Command  is  the  Security  field. 


Security: 
Es ta  blishmen t : 
Control-bits : 

Socket/Channel 

ICP/Direct 

Relative/Absolute 

Unattachable/Attachable 
Host: 

Foreign  Socket: 
Messages : 
Bits: 

Local  Socket  or  Logical  Channel: 
Timeou  t : 


VAR1AELEC?) 
COMPLEX(tt) 
FIXED(M) 


FIXED(32) 
FIXED(32) 
FIXED( 16) 
FIXED(32) 
FIXED(32) 
FIXED( 16) 


2?6 


DRAFT 


8/23/77 


Server  FTP  PSP 
BEGIN  Command 


III  A  IL  TEXT  field  semantics 
Xii  a  a  a.  security 

This  field  may  be  used  by  the  front-end  or  the  host 
to  validate  the  access  privileges  of  the  server  or  user, 
respectively.  The  default  value  of  the  field  is  empty. 
Note:  At  this  time,  very  little  work  has  been  done  on 
the  organization  of  security  for  networks  or  these  kinds 
of  systems.  It  is  not  clear  where  access  control  should 
be  placed.  This  field  has  been  included  in  case  some 
systems  require  validation  at  this  point. 


Ill  A  4  b,  Establishment 


conne 
def  au 
favor 
Comma 
would 
for  a 
(sock 
time, 
a  de 
field 
for  a 


This 
ction 
It  for 

the 
nd  sen 

caus 
n  ICP 
et   3) 

The 
fault 
Thu 
Serve 


set 
to 
the 
Serv 
t  to 
e   th 
conne 
fro 
def  au 
valu 
s,  mo 
r  FTP 


of  pa 
be  as 
establ 
er  FTP 
the  fr 
e  f ron 
ction 

ny 

It  val 

e  may 

st  BEG 

sessi 


rameter 
sociate 
ishment 
servic 
ont    end 
t-end    S 
on    the 
host 
ues    of 
be    indi 
IN    Comm 
on    will 


par 

spe 
erve 
stan 
for 
the 
cate 
ands 

hav 


escribes 
ith  thi 
ameters 
This  mea 
cif ying 
r  FTP  Se 
dard  FTP 
an  indef 
fields  a 
d  by  the 
s ent  to 
e  an  emp 


the  ki 
s  channel 
are  chos 
ns  that  a 

only   de 
rvice  to 

contact 
inite  per 
re  set  at 

absence 

the  fron 
ty  TEXT  f 


nd   of 

The 

en   to 

BEGIN 
faults 
listen 
socket 
iod  of 

zero  ; 
of  the 
t  end 
ield. 


Ill  A  **  b  (1),  Control-bits 


The  bits  in  this  field  govern  the  kind  of 
connection  to  be  established  and  the  interpretation 
of  the  parameters. 

Ill  A  4  b  (1)  (»),  Socket/Channel 

If  this  bit  is  zero,  the  logical  channel  from 
the  relay  process  is  to  be  established  to  a  new 
ARPANET  connection.  If  this  bit  is  one,  the 
logical  channel  from  the  host  process  is  to  be 
attached  to  an  already  existing  HFP  channel  (e.*. 
a  channel  already  established  to  the  FTP  service 
module  and  therefore  providing  access  to  an 
existing  network  connection.)  The  default  value  is 
zero. 

Ill  A  H    b  (1)  (b).  ICP/Direct 

This  bit  is  relevant  only  when  a  new  network 
connection  is  requested.  (Socket/Channel  bit  is 
zero.)  When  this  bit  is  zero  (default),  the 
connection  is  to  be  established  via  the  Initial 
Connection  Protocol.   When  this  bit   is   one,   the 


??7 


DRAFT  8/23/77  Server  FTP  PSP 

BEGIN  Command 


connection  is  to  be  established  directly.  The  use 
of  this  bit  in  specifying  connection  sockets  is 
detailed  in  table  1. 

Ill  A  4  b  (1)  (c).  Relative/Absolute 

This  field  affects  the  value  of  the  socket 
for  the  local  connection.  See  III  A  4  b  (6)  for 
details . 

Ill  A  4  b  (1)  (d).  Unattachable/Attachable 

When  this  bit  is  one,  the  server  FTP  service 
module  is  requested  to  make  the  logical  channel 
available  for  attachment  by  other  service  modules 
within  the  front  end  (such  as  a  data 
transformation  service).  Otherwise  this  bit  is 
zero  (default).  See  CAC  Technical  Memorandum  No. 
60,  p.  3i  for  a  discussion  of  this  feature. 

HI  A  1  b  (2).  Host 

This  field  specifies  the  network  host  or  hosts 
from  which  the  FTP  connection  is  to  be  expected.  The 
default  value  is  zero,  indicating  that  a  connection 
from  any  host  will  be  accepted.  The  Host  field  is 
parsed  as: 

Network:  FIXED(6) 

IMP:  FIXEDM6) 

Host-at-IMP:  FIXED(8) 

III  A  if  b  (3).  Forejgp  Socket 

This  field  is  used  as  follows  to  construct  the 
effective  foreign  socket  (e.f.s.)  for  making  the 
connection . 

Case  1.  Foreign  Socket  field  =  zero.   The  e.f.s. 

is  three. 
Case  2.  Foreign  Socket  field  i    zero.   The  e.f.s. 

is   the   contents   of  the  Foreign  Socket 

field. 

The  default  value  of  this  field  is  zero.  The 
relationship  between  the  e.f.s.  and  the  foreign 
sockets  for  the  connection  depends  upon  the  value  of 
the  ICP/Direct  bit.   See  table  1  for  details. 

Ill  A  k    b  (4).  Mess  ages 

This  field  and  the  Bits  field  allow  the  process 
to   indicate   to   the   service   module   the  flow  rate 


228 


DRAFT 


6/23/77 


Server  FTP  P  S  P 
BEGIN  Command 


desirable  on  the  FTP  data  connection.  The  service 
module  may  use  this  information  in  any  way  its 
implementors  deem  desirable. 

This  field  contains  the  number  of  host-host 
messages  the  process  suggests  be  allocated  on  the 
connection.  If  the  value  of  this  field  is  zero 
(default),  the  NCP  chooses  the  number  of  messages  on 
its  own. 

Ill  A  4  b  (5).  Pits 

This  field  contains  the  number  of  bits  the 
process  suggests  be  allocated  for  the  FTP  data 
connection.  If  the  value  of  this  field  is  zero 
(default),  the  NCP  chooses  the  number  of  bits  on  its 
own. 

Ill  A  4  b  (6).  Local  Socket  or  Logical  Channel 

If  the  Socket/Channel  bit  is  one,  this  field 
contains  the  channel  Group  and  Member  values 
specifying  the  HFP  channel  to  which  connection  is  to 
be  made.   The  format  of  this  field  is  then: 

<not  used):  FIXED(^) 
Group:      FIXED(12) 
Member:     FIXEDM6) 


If  the  Socket/Channel  bi 
used  as  follows  to  constr 
socket  (e.l.s.)  for  making  th 


Case  1  . 


Case  2. 


Case  3- 


Relative/Absolut 
Socket  field  i 
contents  of  th 
HEADER  will  be 
low-order  20  bit 
field  to  form  th 
Relative/Absolut 
field  =  zero.  I 
will  choose  a  nu 
bits  are  equal  t 
HEADER  . 

Relative/Absolut 
the   effective 
the  contents  of 


t 

is  zero , 

uct   the  e 

e 

connect i 

e 

bit   r 

zero.   In 

e 

Group 

concat  en; 

s 

of   the 

e 

e.l.s. 

e 

=  zero, 

n 

this  cas 

mber  whose 

0 

the  Groui 

e 

=  one  . 

local  sock 

the  Local  ; 

this  field  is 
ffective  local 
on. 

zero  ,  Loca 1 
this  case,  the 
field  in  the 
a t  ed   with  the 

Local   Socket 

Local  Socket 
e,  the  service 

high  order  12 
p  field  in  the 

In.  this  case 
et  is  equal  to 
Socket  field. 


The  relationship  between  the  e.l.s.  and  the  local 
sockets  for  the  connection  depends  upon  the  value  of 
the  ICP/Direct  bit.   See  table  1  for  details. 

Ill  A  4  b  (7) .  Timeout 


229 


DRAFT 


b/23/77 


Server  FTP  PSP 
BEGIN  Command 


This  field  contains  the  maximum  length  of  time, 
in  seconds,  that  the  service  module  is  to  attempt  to 
establish  the  connection  (in  the  absence  of  an  error 
or  exceptional  condition).  If  the  service  module  has 
been  unable  to  establish  the  connection  within  this 
time  period,  it  is  to  abandon  the  attempt.  If  this 
field  contains  zero  (default),  the  time  period  is  to 
be  infinite. 


230 


DRAFT 


8/23/77 


Server  FTP  PSP 
BEGIN  Command 


Table  1 


Control  Bits   !     Foreign  Sockets     i      Local  Sockets 

!   for  the  connection    j   for  the  connection 

!The  e.f.s.  will  be  used! 
las  the  contact  socket   i 
ICP       .for  the  connection.     ie.l.s.  +  2  and  e.l.s.  +  3 
'The  control  connection  ,' 
{sockets  will  be  chosen  i 
i by  the  foreign  host.    i 

Direct      i  e.f.s.  and  e.f.s.  +1   |  e.l.s.  and  e.l.s.  +  1 

231 


DRAFT 


6/23/77 


Server  FTP  PSP 
EEGIN  Response 


III  B.  begin  Response 

III  P  1.  When  sept 

III  p  1  a,  gy  the  service  module 

The  BEGIN  Response  is  sent  by  the  service  module  to 
indicate  that  a  successful  network  connection  has  been 
established,  or  that  the  BEGIN  Command  has  been  refused. 

Ill  B  1  fri By  the  host  propels 

The  BEGIN  Response  is  sent  by  the  host  to  indicate 
that  it  has  established  FTP  service  for  the  non- 
offloaded  FTP  commands,  or  that  the  host  is  unable  to 
provide  such  service. 

Ill  B  2.  Action  on  receipt 

III  B  g  a.  By  the  host 

When  the  BEGIN  Response  is  received  by  the  host, 
the  process  should  determine  whether  a  successful 
connection  was  made.  If  so,  it  may  send  or  receive 
data.  If  not,  it  may  be  appropriate  to  invoke  an  error 
recovery  procedure. 

Ill  p  2  b.  By  the  service  module 

The  only  field  that  the  service  module  should 
expect  to  see  in  the  TEXT  of  a  BEGIN  Response  is  the 
Status  field.  The  service  module  should  take  note  of 
the  Status  field  value;  otherwise  no  action  is  called 
for. 


Ill  B  3,  TEXT  field  syntax 

Security : 
Connection -info: 

Status: 

Host: 

Foreign  Socket: 

Messages: 

Bits: 

Local  Socket: 

III  B  4,  TEXT  field  semantics 
III  B  1J  a.  Security 


VARIABLES?) 
COKPLEX(?) 
FIXED(4) 
FIXED(32) 
FIXEDC32) 
FIXED( 16) 
FIXED(32) 
FIXED(32) 


This  field  may  be  used  to  allow  the  host  to 
validate  the  access  privileges  of  the  user  and  to  pass 
the  information  along  to  the  front  end.  This  field 
could  be  particularly  important  for  monitoring  access  by 


23? 


6/23/77  Server  FTP  PSP 

BEGIN  Response 


users  directly  connected  to  the  front  end. 

Ill  E  4  b.  Connection-info 

This  field  describes  the  connection  associated  with 
this  channel. 

Ill  B.Jj.b  (1).  Status 

This  field  indicates  the  success  or  failure  of 
the  BEGIN  Command.  The  value  zero  indicates  success 
while  any  non-zero  value  indicates  failure.  The 
particular  value  of  the  non-zero  field  Rives  the 
reason  for  failure.  The  possible  values  of  this 
field  and  their  meanings  are: 


0  Success 

1  Illegal  connection  type 

2  Invalid  local  socket 

3  Unknown  host 

4  Improper  access 

5  Front  end  terminating1  srrvice 

6  Connection  attempt  timeout 

7  Network  not  available 
b  Foreign  host  dead 

9  Connection  refused 

10  Local  host  overloaded 

Others  may  be  defined  later. 

Ill  B  1  b  (2).  host 

If  the  connection  attempt  was  successful,  this 
field  contains  the  ARPANET  host  address  of  the  host 
to  which  the  connection  was  established.  (See  III  A 
4  b  (2).  ) 

III    B  4  b  (1).  Foreign  Socket 

If  the  connection  attempt  was  successful,  this 
field  contains  the  socket  number  at  the  foreign  host 
to  which  the  connection  was  established. 

Ill  B  4 _ b  (4)  .  Messages  and  Bits 

If  the  connection  attempt  was  successful,  these 
fields  contain  the  flow  control  parameters  for  the 
connection  at  the  time  the  BEGIN  Response  was 
gene  rated . 

Ill  B  4  b  (5).  Local  Socket 


233 


DRAFT 


i/23/77 


Server  FTP  PSP 
BEGIN  Response 


If  the  connection  attempt  was  successful,  this 
field  contains  the  local  socket  number  for  the 
connection. 


23A 


DRAFT 


8/23/77 


Server    FTP  PSP 
END  Command 


III  Ct  ENP  Command 

III  C  1 .  When  sent 

The  END  Command  may  be  sent  by  either  the  process  or 
the  service  to  terminate  an  FTP  connection.  If  sent  by  the 
process,  it  usually  indicates  that  the  host  system  has 
requested  that  the  connection  be  closed.  The  service  module 
may  send  an  END  Command  because  the  foreign  host  has  closed 
the  connection  in  response  to  a  user  request,  or  because 
some  failure  condition  has  occurred  that  requires  that  the 
connection  be  aborted. 

Ill  C  2t  Action  on  receipt 

HI    Q  2  af  By  the  process 

When  the  process  receives  an  END  Command,  it  should 
acknowledge  it  as  promptly  as  possible  by  sending  an  END 
Response. 

Ill  C  2  b.  By  the  service  module 

When  the  service  module  receives  an  END  Command,  it 
should  close  the  FTP  data  connection  (if  open),  send  the 
proper  FTP  replies  indicating  termination  (120,  221,  421 
or  530),  and  close  the  control  connection.  Once  the 
connections  are  closed,  the  service  module  should  send 
the  END  Response  to  the  process. 

HI  c  T-   text  mid  syntax 

Status:   FIXED  (3) 

III  C  4tTEXT  field  semantics 

III  C  4  a.  Status 

This  field  indicates  the  cause  of  the  termination 
of  the  TELNET  connection.  The  values  of  the  field  and 
their  associated  meanings  are: 

0  Normal  close  by  foreign  host 

1  Network  failure 

2  Foreign  host  failure 

3  User  requested  close 

4  Improper  access 

5  Front  end  terminating  service 

Other  causes  for  termination  may  be  defined  at   a   later 
date.   The  default  value  of  the  field  is  zero. 


235 


DRAFT 


6/23/77 


Server  FTP  PSP 
END  Response 


III  pt  ENP  Response 

III  D  1.  When  sent 

The  END  Response  is  sent  by  either  the  process  or  the 
service  module  to  acknowledge  that  an  END  Command  has  been 
received  and  proper  action  taken. 

Ill    P  Zr    Action  on  receipt 

When  either  the  process  or  the  service  receives  an  END 
Response,  it  should  assume  that  all  dialogue  associated 
with  this  logical  channel  has  completed,  and  it  should 
ignore  any  other  Commands  on  this  channel  except  a  BEGIN 
Command. 

Ill    D  3.  TEXT  field  syntax 

The  TEXT  field  in  the  END  Response  is  not  used  in  this 
protocol . 


236 


DRAFT 


8/23/77 


Server  FTP  PSP 
END  Response 


III  E.  TRANSMIT  Command 

III  E  1 .  When  sent 

III  E  1  a.  Bv  the  process 

The  TRANSMIT  Command  is  sent  by  the  process  to 
pass  FTP  replies  to  the  service  module  for 
transmission  over  the  network  to  the  foreign  host. 
(For  details  of  offloading  see  CAC  Document  230.) 

Ill  E  1  b.  By  the  service  module 

The  TRANSMIT  Command  is  sent  by  the  service 
module  to  pass  FTP  commands  that  have  arrived  over 
the  network  from  the  foreign  host  to  the  process. 
(For  details  of  offloading  see  CAC  Document  230.) 

Ill    E  2.  Action  Qh  regejpt 

III  E  2  a.  Bv  the  process 

When  the  process  receives  a  TRANSMIT  Command,  it 
will  treat  the  contents  of  the  TEXT  as  an  FTP  command 
to  be  processed.   (For  details  see  CAC  Document  230.) 

Ill  E  2  b.  Bv  the  service  module 

When  the  service  module  receives  a  TRANSMIT 
Command,  it  will  treat  the  contents  of  the  TEXT  as  an 
FTP  reply  to  be  transmitted  over  the  network.  (For 
details  see  CAC  Document  230.) 

HI  E  3.  TEXT  field  syptax 

Control:  FIXED(1) 

Go-Ahead/More-Data 
Data:  VARIAELE(?) 

Ill    E  M.  TEXT  field  semantics 

III    E  4  a.  Control 

The  single  bit  in  this  field  indicates  whether 
or  not  the  sender  of  the  TRANSMIT  Command  has 
completed  sending  data.  It  is  used  to  facilitate 
handling  half-duplex  terminals  connected  to  the 
process.  The  receiver  of  a  TRANSMIT  Command  with 
this  bit  set  to  0  (default)  should  assume  that  the 
sender  has  completed  sending  data  and  that  the 
receiver  is  now  free  to  send  any  data  that  it  has. 
If  the  bit  is  set  to  1  the  sender  has  more  data  to 
send   and   the   receiver  should  not  send  data  at  this 


237 


DRAFT 


6/23/77 


Server  FTP  PSP 
END  Response 


time. 

Ill  E  4  b.  Data 

The  Data  field  contains  the  FTP  commands  and 
replies  to  be  transferred.  For  more  details  see  CAC 
Document  230,  and  section  IV. 


238 


DRAFT 


8/23/77 


Server  FTP  PSP 
TRANSMIT  Response 


III  F.  TRANSMIT  Response 

The  TRANSMIT  Response  is  used  as  described  in  the   hFP 
specification . 


23Q 


DRAFT 


6/23/77 


Server  FTP  PSP 
SIGNAL  Command 


III  G.  SIGNAL  Command 


The  SIGNAL  Command  is   not   used 
service   protocol.    SIGNAL   Commands 


in 
may 


the   process-to- 
be  generated  by- 


process  or  service  to  request  that  the  CPM  carry  out  the 
appropriate  action  on  the  logical  channel.  (See  HFP 
specification.)  Thus,  the  effect  of  the  SIGNAL  Command  is 
restricted  to  the  logical  channel  (HFP)  level. 


240 


DRAFT 


8/23/77 


Server  FTP  PSP 
SIGNAL  Response 


III  H.  SIGNAL  Response 

The  SIGNAL  Response  is  not  used  by  either   process   or 
service. 


241 


8/23/77 


Server  FTP  PSP 
EXECUTE  Command 


III  J.  P-ECUTE  Command 

III  J  1.  When  Sent 

The  process  sends  an  EXECUTE  Command  to  request  the 
service  module  to 

a)  report  the  status  of  a  specified  connection, 

b)  send  a  Telnet  control  function, 

c)  handle  Telnet  options  and  FTP  replies,  or 

d)  modify  the  allocation  for  the  connection. 

The  service  module  does  not  send   EXECUTE   Commands   for 
this  protocol. 

Ill  J  2.  Action  upon  Receipt 

When  the  service  module  receives  an  EXECUTE  Command 
it  will  decode  and  act  on  the  request. 


FIXED(2) 
VARIAbLE( ?) 


Ill  J  3.  TEXT  field  syntax 

Code: 
Parameters : 

HI    J  4.  TEXT  field  semantics 

III    J  4  a.  Code 

This  field  contains  an  encoding  of  the  type  of 
request.   The  codes  are: 

0  Report  status 

1  Send  control  function 

2  Handle  Telnet  options  and  FTP  replies 

3  Modify  suggested  allocation 

III  J  4  b.  Parameters 

This  field  contains  the  parameters  for 
specifying  the  requests.  The  contents  will  vary 
according  to  the  type  of  request. 

Ill  J  4  b  (1).  Report  status 

No  parameters  are  required. 

Ill  J  4  b  (2).  Send  control  function 

III  J  4  b  (2)  (a).  Parameter  field  syntax 

Control  Function:        FIXED  (b) 


242 


DRAFT 


6/23/77 


Server  FTP  PSP 
EXECUTE  Command 


HI    v>  ^  b  (?)  (b),  Parameter  field  semantics 

This  field  contains  a  parameter  specifying 
a  Telnet  control  function  that  the  User  FTP 
module  should  send  on  the  control  connection. 
The  parameter  values  and  their  meanings  are: 

242  SYNCH 

243  Break 

244  Interrupt  process 

245  Abort  output 

246  Are  you  there 

HI  J  **  P  (3)t  Hapdle  options  and  FTP  replies 
III  J  4  b  (3)  (a).  Parameter  field  syntax 


Option  control : 
Reply  text  control: 


FIXED(2) 
FIXED( 1  ) 


III  J  4  b  (3)  (b).  Parameter  field  semantics 


These 
indicating 
respond  to  Te 
control   conn 
front  end  sho 
replies  to  th 
FTP  replies  a 
sends    the 
installation- 
in     the 
parameter  val 


fields     con 
1 )  how   the 
lnet  option  n 
ection   2)  wh 
uld  forward 
e  hos t .   How 
re  handled  be 
relevant   EXE 
specific  and 
daptation    d 
ues  and  their 


tain     pa 
front   end 
egotiat i  on 
ether   or 
the   text 
Telnet  opt 
fore   the 
CUTE   Comm 
must  be   s 
escription 
eanings 


rame 

sh 

s  on 

not 

of 
ions 

pro 
ands 
peci 

are  : 


t  er  s 

ould 
the 
the 
FTP 
and 

cess 
is 

tied 
The 


Option  control  values: 

1  Refuse  all  options 

2  Refuse  no  options 

3  Refuse  options  not  handled  by  the 
front  end 

Reply  text  control  values: 

0  Send  FTP  reply  text 

1  Don't  send  FTP  reply  text 

III  J  4  b  (4).  Modify  suggested  allocation 
III  vl  4  b  (4)  (q).  Parameter  field  syntax 


Messages : 
Bits: 


FIXED( 16) 
FIXEDC32) 


III  J  4  b  (4)  (b).  Parameter  field  semantics 


243 


DRAFT 


fa/23/77 


Server  FTP  PSF 
EXECUTE  Command 


The  semantics  of  this  field  are 
identical  to  those  described  for  the 
allocation  fields  in  the  BEGIN  Command  (see 
sections  III  A  H    b  ( 4 )  -  III  A  H  b  (5).) 


244 


DRAFT 


b/23/77 


Server  FTP  PSP 
EXECUTE  Response 


III  k,  EXECUTE,  Response 
XIX  K  i.  When  Sent 

The  service  module  sends  an  EXECUTE  Response 
when 

a)  it  has  completed  the  operation  requested  by 
an  EXECUTE  Command,  or 

b)  it  has  received  an   EXECUTE   Command   whose 
TEXT  is  in  error. 

The  process  does  not  send  EXECUTE  Responses  for   this 
process-to-service  protocol. 

Ill  k  2.  Action  on  Receipt 

When  the  process  receives  an  EXECUTE  Response, 
it  should  examine  the  TEXT  to  see  whether  the 
Response  indicates  an  error.  If  no  error  is 
indicated,  it  may  consider  that  the  action  reauested 
by  a  previous  EXECUTE  Command  was  successful.  If  an 
error  is  indicated,  appropriate  error  recovery  action 
should  be  initiated.  This  action  is  idiosyncratic  to 
the  process. 

XXI  K  3-  TEXT  field  syntax 


FIXED(2) 
PIXED(2) 
COMPLEX*? ) 
FIXED (2) 
FIXEDC2) 
FIXED(32) 
FIXEDC32) 
FIXED( 16) 
FIXED(32) 
FIXED(32) 


Result: 

Ref-Code: 

Connection-info: 

Control  connection-state: 

Data  connection-state: 

Host: 

Foreign  Socket: 

Messages: 

Bits: 

Local  Socket: 

II  K  *J  .  TEXT  field  semantics 
III  K  H    a.  Result 


This  field  contains  an  encoding  of  the  result 
of  the  request  (made  in  a  previous  EXECUTE 
Command)  to  which  the  EXECUTE  Response  is  a  reply. 
The  codes  are: 

0  Success 

1  Illegal  code  in  request 

2  TEXT  too  short. 


Ill  K  4  b.  Ref-code 


2^5 


8/23/77 


Server  FTP  PSP 
EXECUTE  Response 


This  field  contains  the  same  value  as  the 
Code  field  of  the  TEXT  of  the  EXECUTE  Command  to 
which  the  EXECUTE  Response  is  a  reply. 

Ill  K  M  c.  Connection-info 

This  field  is  present  only  if  the  Ref-code 
has  a  value  of  zero  or  three  (status  or  modify 
allocation).  The  semantics  of  this  field  are 
identical  with  those  of  the  Connection-info  field 
of  the  EEGIN  Response  (section  III  fc  4),  with  the 
exception  of  the  Status  field,  which  has  been 
divided  into  two  fields  with  the  following 
meanings . 

Ill    K  4  c  (1).  Contro;  connectjonj^state 

If  the  ref-code  value  is  zero  (status), 
this  field  indicates  the  present  state  of  the 
FTP  control  connection.  The  possible  values  of 
this  field  and  their  meanings  are: 

0  Closed 

1  Open 

2  Waiting  for  open  to  complete 

3  Waiting  for  close  to  complete 

III  K  4  c  (2).  Data  connection-state 

If  the  ref-code  value  is  zero  (status), 
this  field  indicates  the  present  state  of  the 
FTP  Data  connection.  The  possible  values  of 
this  field  and  their  meanings  are: 

0  Closed 

1  Open 

2  Waiting  for  open  to  complete 

3  Waiting  for  close  to  complete 


246 


DRAFT 


6/23/77  Server  FTP  PSP 

Details  of  Offloading  Server  FTP 


IV.  Details  of  Offloading  Server  FTP 

The  ARPANET  File  Transfer  Protocol  (FTP)  consists  of 
two  major  sections:  a  command-and-response  section  and  a 
data  transfer  section.  The  file  access  process-to-service 
protocol  deals  with  offloading  the  data  transfer  section 
and  the  FTP  commands  for  data  transfer  (RETRIEVE,  STORE, 
and  APPEND).  The  Server  FTP  process-to-service  protocol 
deals  with  offloading  the  command-and-response  section.  We 
here  describe  some  of  the  aspects  of  offloading  the  Server 
FTP.  These  aspects  include  session  establishment  and 
control,  user  authentication,  restart,  and  interaction  with 
the  file  access  module. 

Sess  ion  esta  bl ishmen t  and  con t  rol .  There  are  several 
possible  ways  in  which  service  could  be  initiated  and 
controlled.  The  scheme  described  in  this  protocol  appears 
to  be  the  simplest  and  most  flexible.  In  this  scheme, 
BEGIN  Commands  only  co  from  the  host  to  the  front  end. 
When  the  front  end  service  module  receives  a  BEGIN  Command, 
it  sets  up  a  connection  as  requested.  In  most  cases,  the 
service  module  will  not  be  requested  to  actively  initiate  a 
connection  but  only  to  set  up  a  lister  on  socket  3  and  wait 
for  a  request  for  service  from  a  remote  host.  After  a 
connection  has  been  established,  the  service  module  sends  a 
BEGIN  Response  to  the  host.  The  host  process  must  generate 
a  distinct  BEGIN  Command  for  each  connection  it  is  willing 
to   accept.    Thus,  the  host  is  able  to  limit  the  number  of 


247 


DRAFT 


8/23/77  Server  FTP  PSP 

Details  of  Offloading  Server  FTP 


FTP  users  by  withholding  BEGIN  Commands.  The  front  end  may 
also  limit  demand  on  its  resources  by  refusing  BEGIN 
Commands  from  the  host. 

If  user  authentication  is  done  in  the  front  end,  then 
an  alternative  method  may  be  used.  Since  most  FTP  sessions 
consist  of  logging  in,  moving  one  or  more  files,  and  then 
logging  out,  virtually  no  traffic  is  sent  on  the  Server  FTP 
channel.  Everything  is  handled  by  the  server  FTP  service 
module  (SFSM)  and  the  file  access  modules,  unless  the  user 
does  a  DELETE  or  RENAME.  Therefore,  it  makes  sense  to 
leave  control  of  the  service  in  the  front  end.  The  SFSM  in 
the  front  end  would  listen  on  socket  3  as  usual.  When  a 
user  connected  to  the  FTP  contact  socket,  a  connection 
would  be  established.  The  user  would  be  logged  in,  and 
data  transfer  parameters  set.  When  the  user  sent  a  data 
transfer  command,  the  UFAM  would  be  asked  to  set  up  a 
session.  At  this  point  the  host  could  refuse  access  if  it 
were  too  heavily  loaded.  Normally  the  transfer  and  the 
session  would  be  done  without  requiring  the  use  of  a  Server 
FTP  PSP  channel. 

User  authentication  and  security.  The  ARPANET  FTP 
provides  three  commands  for  authenticating  users:  USER, 
PASS,  and  ACCT.  Depending  on  the  security  arrangement 
between  the  host  and  the  front  end,  it  may  be  possible  to 
offload  these  commands.  This,  however,  implies  that  the 
host   trusts   the  front  end's  security  as  much  as  it  trusts 


248 


6/23/77  Server  F1F  PSP 

Details  of  Offloading  Server  FTP 


it  own.  Some  systems  may  wish  to  restrict  network  access 
to  data  transfers.  For  example,  a  data  base  system  might 
allow  remote  network  users  to  query  and  even  to  update  data 
bases  and  to  transfer  files  in  and  out,  but  the  system 
might  wish  to  restrict  delete  and  rename  capabilities  to 
local  users  only.  In  this  case,  the  Server  FTP  PSP  would 
not  be  used  at  all,  and  the  Server  FTP  module  in  the  front 
end  would  use  the  File  Access  PSP  only. 

Restart .  An  important  aspect  of  FTP  that  can  be 
offloaded  is  the  facility  to  restart  a  transfer  that  has 
been  aborted  because  of  a  host  or  network  failure.  There 
are  two  cases  to  consider:  data  poine  out  to  the  net  and 
data  coming  in  from  the  net.  Let  us  first  consider  data 
moving  out.  If  the  front  end  can  exert  enough  addressing 
control  through  the  FA-PSP,  it  is  possible  to  allow  the  FAS 
in  the  front  end  to  insert  the  restart  markers,  thus 
offloading  this  function  from  the  host.  The  only 
requirement  is  that  the  FAS  in  the  front  end  be  able  to 
address  the  same  point  in  the  file  when  given  the  restart 
marker  and  commence  the  transfer  at  that  point.  If  this  is 
not  possible  then  these  functions  must  be  in  the  host. 


For  data  coming  into  the  host,  it  is  necessary  for  the 
Server  FTP  to  be  able  to  report  to  the  User  FTP  when  the 
data  associated  with  a  particular  marker  has  been  entered 
into  the  file,  and  to  associate  with  the  user-specified 
markers  a  locally  generated  marker   that   can   be   used   to 


DRAFT  8/23/77  Server  FTP  PSP 

Details  of  Offloading  Server  FTP 


restart  the  transfer  at  this  point. 

Interaction  with  the  file  access  module .  Offloading 
Server  FTP  will  in  most  cases  require  the  Using  File  Access 
Module  (UFAM)  to  be  in  the  front  end.  The  Server  FTP 
Service  Module  (SFSM)  acts  as  an  intelligent  message 
switch.  The  SFSM  does  not  actually  perform  any  of  the  FTP 
commands,  except  possible  those  having  to  do  with 
connection  control  (e.g.,  BYE  or  REINITIALIZE)  or  user 
authentication.  When  the  SFSM  receives  a  command  that  is 
not  offloaded,  it  will  pass  the  command  on  to  the  residual 
Server  FTP  in  the  host.  (The  command  may  be  first 
translated  into  some  other  form.  If  the  command  is  one 
that  is  offloaded  (e.g.,  one  of  the  data  transfer  parameter 
commands),  the  SFSM  will  use  its  knowledge  of  the 
facilities  supported  in  the  front  end  and  send  a  suitable 
reply  to  the  foreign  host.  This  information  is  then 
communicated  to  the  UFAM  to  specify  the  translation 
requirements  for  the  transfer.  The  SFSM  may  hold  parameter 
information  until  a  data  transfer  command  is  received  and 
then  relay  all  information  specifying  the  transfer 
(including  the  data  connection  sockets)  or  the  parameters 
may  be  relayed  as  they  are  determined  depending  on  the 
implementations  and  the  IPC  facilities  in  the  front  end. 

If  the  translation  is  done  in  the  front  end,  the  UFAM 
in  the  front  end  requires  that  only  the  file  parameters  be 
specified   in   the   BEGIN   Command.    If,    however,    data 


250 


DRAFT 


b/23/77  Server  FTP  PSF 

Details  of  Offloading  Server  FTP 


translation   is   done   in   the   host,   the   data    transfer 
parameters  roust  also  be  present.  (See  [2].) 

Content  of  TRANSMIT  Commands.  In  this  protocol,  the 
TRANSMIT  Command  is  used  to  send  FTP  commands  and  replies 
between  the  service  module  and  the  host.  Some 
installations  may  wish  to  send  some  interactive  form  or 
encoding  peculiar  to  their  host's  file  system  and  let  the 
service  module  in  the  front  end  translate  it  into  the 
proper  FTP  commands.  For  most  installations,  the  best 
method  of  encoding  this  information  is  to  just  send  the  FTP 
commands  themselves.  Since  many  of  the  parameters  are 
character  strings,  little  is  saved  by  additional  encodings. 
The  only  major  exceptions  would  be  the  data  transfer 
parameter  commands  such  as  TYPE,  MODE,  etc.,  which  are  not 
sent  to  the  host  in  most  Server  FTP  offloading  schemes. 
Similar  arguments  hold  for  the  replies.  because  of  the 
semantics  attached  to  the  individual  decimal  digits,  some 
encoding  is  possible,  but  it  is  of  limited  utility.  Some 
installations  may  wish  to  use  the  control  function 
described  in  section  III  J  M  b  (3)  to  suppress  the  text 
associated  with  replies.  Server  FTP  offloadings  that  also 
support  file  systems  in  the  front  end  may  find  it  useful  to 
pass  only  reply  codes  from  the  host  and  generate  a 
consistent  set  of  reply  text  from  the  front  end.  For  a 
suggested  encoding  for  FTP  commands  and  replies,  see 
Section  V  of  [ 1] . 


251 


DRAFT  6/23/77  Server  FTP  PSP 

Scenarios 


V.  scenarios 

User  authentication  in  the  host .  Consider  the 
following  scenario  for  an  offloaded  Server  FTP.  We  will 
assume  that  user  authentication  and  the  FTP  commands  USER, 
PASS,  and  ACCT  are  done  in  the  host.  We  will  also  assume 
that  the  seven  FTP  commands  listed  in  Section  II  are  done 
in  the  host.  All  other  FTP  commands  are  to  be  handled  by 
the  front  end.  Further,  the  data  transfer  process  is  also 
in  the  front  end  and  the  file  access  module  is  used  to 
transfer  the  file  from  the  host.  We  will  not  describe  the 
behavior  of  the  file  access  module  in  detail.  For  a 
scenario  describing  its  use  see  the  specification  of  the 
File  Access  Process-t  o-Servi  ce  Protocol  [?.].  Also  we  will 
not  be  concerned  with  the  detailed  functioning;  of  the 
channel  protocol. 

First,  the  residual  Server  FTP  module  (SFh)  in  the 
host  will  send  a  BEGIN  Command  to  the  front  end  offering 
FTP  Service: 

<BEGINXC> 

Since  no  parameters  are  present,  the  defaults  are  assumed. 
The  Server  FTP  Service  Module  (SFSM)  will  listen  for  an  ICP 
on  socket  3  (the  FTP  contact  socket)  from  any  host  for  an 
indefinite  period  of  time. 

Some  time  later,  a  remote  user  connects  to   socket   3. 


252 


8/23/77 


Server  FTP  PSP 
Scenarios 


The  ICP   protocol   is   performed   and   the   Telnet  control 

connection   is   opened.    The   SFSM   will  then  send  the  FTP 

herald  message  (a  300  reply)  to  the  remote  host  and  a  EEGIN 
Response  to  the  local  host. 

<EEGINXRXsuccessXKost=12XForeign        Socket  =  57b3^> 

<Messages  =  1><bitsr2000XLocal  Socket=247fc> 

In  order  to  support  another  user,  the   host   will   now 
send  another 

<BEGINXC>  . 

When  the  FTP  USER  command  is  received  from  the   remote 
user,  the  SFSM  sends  it  to  the  SFM: 

<TRANSMITXC>USER  day 

(Since  TRANSMIT  Responses  do  not  require  any  action  by  the 
services  or  the  process  they  are  not  shown  here.) 

The  SFM  replies  with 

<TRANSMITXC>331  Please  send  pass  command. 

The  SFSK  sends  the  TEXT  of  this  command  over  the  net  to  the 
user.  The  user  responds  by  sending  the  FTP  PASS  command, 
which  is  then  relayed  to  the  SFM: 

<TRANSMITXOPASS  John 

The  SFM  replies  with 


253 


DRAFT 


6/23/77 


Server  FTP  PSP 
Scenarios 


<TRANSMITXC>230  looped  in.  please  proceed. 

The  user  then  sends  an  FTP  RETR  command  requesting  that  a 
file  "junk. note"  be  moved  from  the  local  host  to  the 
foreign  (i.e.,  the  user's)  host.   The  SFSM  will  then 

1)  do  a  listen  on  the  default  data  socket,  and 

2)  pass  the  command,  the  user  identification  parameters, 
and  information  on  the  local  socket  or  port  to  the 
Using  File  Access  Module  (UFAM)  in  the  front  end. 

(Since  no  data  transfer  parameter  commands  were  received, 
the  defaults  are  assumed. 

The  UFAM  will  then  establish  a  session  with  the 
Serving  FAM  (SFAM)  in  the  host  and  attempt  to  access  the 
file.  When  a  successful  EEGIN  Response  is  returned,  the 
UFAM  will  open  the  data  connection  and  notify  the  SFSM  that 
the  transfer  can  begin.  The  SFSM  will  now  send  the  FTP  150 
reply  to  the  remote  host  indicating  that  the  transfer  is 
ready  to  start.  The  UFAM  will  then  transfer  the  data  to 
the  network..  When  the  transfer  is  complete,  the  UFAM  will 
notify  the  SFSM  which  will  send  the  FTP  250  reply  to  the 
remote  host  indicating  the  end  of  transfer. 

Now  the  user  decides  to  delete  the  file   he  has   just 

transferred,   so   he  sends  an  FTP  DELE  command  to  the  SFSM. 

the  SFSM  recognizes  that  this  is  not  a  command  it  does  and 
passes  it  on  to  the  host: 

<TRANSMITXODELE  junk. note 


254 


DRAFT 


6/23/77 


Server  FTP  PSP 
Scenarios 


The  host  deletes  the  file  and  returns: 

<TRANSMITXC>250  File  junk. note  deleted. 

Finally  the  user  is  finished,  and  sends  the  FTP  b\E 
command.  The  SFSM  will  send  an  FTP  221  reply  indicating 
that  it  is  closing  the  Telnet  connection,  close  the  data 
connection,  notify  the  UFAM  to  terminate  its  session,  and 
terminate  its  own  session  with  the  host  by  sending  an  END 
Command : 

<ENDXC><3>      (indicating  a  user-requested  close) 
The  host  will  respond  with 

<ENDXR> 

and  the  interaction  is  complete. 

User  authentication  in  the  front  end .  Let  us  consider 
how  this  protocol  would  be  used  if  user  authentication  is 
done  in  the  front  end.  Let  us  assume  that  the  only  FTP 
commands  handled  by  the  host  are  the  seven  listed  in 
Section  II.  We  will  also  assume  that  the  data  transfer 
commands  are  handled  by  the  Using  File  Access  Module  (UFAM) 
in  the  front  end. 

The  Server  FTP  Service  Module  (SFSM)  is  offering  FTP 
service  by  listening  on  socket  3  (the  FTP  contact  socket). 
A  user  at  some  remote  host  does  an  ICP  to  the  contact 
socket   and   a  control  connection  is  established.   The  user 


255 


DRAFT 


8/23/77 


Server  FTP  PSP 
Scena  ri  os 


sends  the  FTP  USER  and  PASS  commands  and  is  logged  in  by 
the  SFSM  for  file  transfer  service.  The  user  then  sends  a 
RETR  command  to  transfer  the  file  "junk. note"  to  his  host. 
Ihe  necessary  information,  including  pathname,  user 
identification,  and  network  data  sockets,  are  passed  to  the 
UFAM.  The  UFAM  establishes  a  session  and  transfers  the 
file.  After  the  transfer  is  complete,  the  user  wishes  to 
delete  the  same  file  and  sends  the  FTP  command: 

DELE  junk. note 

This  requires  establishing  a  Server  FTP  PSP  channel  to  the 
host,  since  one  has  not  been  required  as  yet.  Ihe  SFSM 
sends  a  BEGIN  Command  to  the  front  end: 

<BEGINXCXsecurity  =  day,john> 
The  Server  FTP  Module  (SFM)  in  the  host  acknowledges  with: 

<BEGINXR> 
The  SFSM  then,  sends  over  the  command: 

<TRANSMITXC>DELE  junk. note 

(Since  TRANSMIT  Responses  do  not  require  any  action  by 
either  the  process  or  the  service,  they  are  not  shown  in 
this  example.)  The  file  is  deleted  and  the  reply  sent  back 
to  the  SFSM: 

<TRANSMITXC>250  File  junk. note  deleted. 


256 


DRAFT 


6/23/77 


Server  FTP  PSP 
Scenarios 


The  TEXT  of  this  TRANSMIT  Command  is  then  sent  over  the 
control  connection  to  the  user.  The  user  decides  he  is 
finished  and  sends  an  FTP  BYE  Command  to  the  front  end. 
The  SFSM  immediately  sends  the  proper  FTP  reply  to  the 
user,  notifies  the  UFAM  to  terminate  its  session  and  sends 
an  END  Command  to  the  SFM  in  the  host: 

<ENDXC><0>      (indicating  normal  completion) 

The  SFM  replies  immediately  with: 

<ENDXR>. 

Note  that  if  the  user  had  not  asked  to  delete  the  file  this 
PSP  would  not  have  been  used  at  all. 


257 


DRAFT 


b/23/77 


Server  FTP  PSP 
References 


VI.  References 

1.  Day,  J.  "User  FTP  Process-t o-Servi ce  Protocol,"  CAC 
Technical  Memorandum  No.  101,  Center  for  Advanced 
Computation,  University  of  Illinois  at  Urbana -Champai en , 
1977. 

2.  Day,  J.  "File  Access  Process-t o-Servi ce  Protocol,"  CAC 
Technical  Memorandum  No.  102,  Center  for  Advanced 
Computation,  University  of  Illinois  at  Urbana -Champ ai  em  , 
1977. 

3.  Day,  J.  "Offloading  ARPANET  Protocols  to  a  Front  End," 
CAC  Document  No.  230,  Center  for  Advanced  Computation, 
University  of  Illinois  at  Urbana -Champ ai gn ,  1977. 


Neigus ,  N . 
5M2,  1973. 


"The  File  Transfer   Protocol, 


ARPANET   RFC 


Neigus,  N.;  Posrran,  K.;  and  Postel,  J.    "A   New   Schema 
for  FTP  Reply  Codes,"  ARPANET  RFC  640,  1974. 

Postel,  J.   "Telnet  Protocol  Specification,"  NIC  #16639, 
1973- 


258 


UNCLASSIFIED 

SECURITY  CLASSIFICATION  OF  THIS  PAGE  (When  Dmtm  Entered) 

REPORT  DOCUMENTATION  PAGE 


1.     REPORT  NUMBER 

CAC  Document  Number   230 

CCTC-UkTl    Tin  piitiiptH-    TJimiKov     7S11 


2.  GOVT  ACCESSION  NO. 


3.     RECIPIENT'S  CATALOG  NUMBER 


..     TITLE  (mnd  Subtitle) 

Network  Research  in  Front  Ending  and  Intelligent 
Terminals  -  Offloading  ARPANET  Protocols  to  a 
Front  End 


5.     TYPE  OF  REPORT  &  PERIOD  COVERED 

Research 


6.  PERFORMING  ORG.  REPORT  NUMBER 

CAC  #230 


7.  AUTHORS 

John  D.  Day 


S.  CONTRACT  OR  GRANT  NUMBERf.) 

DCA100-76-C-0088 


I.     PERFORMING  ORGANIZATION  NAME  AND  ADDRESS 

Center  for  Advanced  Computation 
University  of  Illinois  at  Urbana-Champaign 
Urbana,  Illinois   61801 


lenter 

WWMCCS  ADP  Directorate,  11440  Isaac  Newton  Sq. ,  N. 
Reston,  Virginia  22090 


12.  REPORT  DATE 

September  30,  1977 


NUMBER  OF  PAGES 

262 


14.     MONITORING  AGENCY  NAME  ft   AODRESSfi/  different  from  Controlling  Office) 


15.     SECURITY  CLASS,  (of  thla  report) 

UNCLASSIFIED 


16.     DISTRIBUTION   STATEMENT  (of  thla  Repot 


Copies  may  be  requested  from  the  address  given  in  (11)  above. 


17.     DISTRIBUTION   STATEMENT  (of  the  mbst 


mtcred  in  Block  20,   If  different  from  Report) 


No  restriction  on  distribution. 


18.     SUPPLEMENTARY   NOTES 


9.     KEY  WORDS  (Continue  on  r 

Network  front  end 
Network  protocols 


elde  If  neceaamry  mnd  Identity  by  block  number) 


20.     ABSTRACT  (Cot 


tmry  mnd  identify  by  block  n 


The  CAC  is  engaged  in  an  investigation  of  the  benefits  to  be  gained  by 
employing  a  network  front  end.   This  document  presents  a  discussion  of 
alternative  strategies  for  offloading  ARPANET  protocol  implementations  to  a 
front  end.   A  set  of  six  appendices  specify  the  host-to-front-end,  process-to 
service  protocols  required  to  implement  the  various  strategies. 


dd  ,;■ 


EDITION  OF    1  NOV  65  IS  OBSOLETE 


UNCLASSIFIED 

S E CURITY  CLASSIFICATION  OF  THIS  PAGE  (When  Dmtm  Ent ered) 


M