1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563
|
Network Working Group L. Masinter
Request for Comments: 2324 1 April 1998
Category: Informational
Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)
Status of this Memo
This memo provides information for the Internet community. It does
not specify an Internet standard of any kind. Distribution of this
memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (1998). All Rights Reserved.
Abstract
This document describes HTCPCP, a protocol for controlling,
monitoring, and diagnosing coffee pots.
1. Rationale and Scope
There is coffee all over the world. Increasingly, in a world in which
computing is ubiquitous, the computists want to make coffee. Coffee
brewing is an art, but the distributed intelligence of the web-
connected world transcends art. Thus, there is a strong, dark, rich
requirement for a protocol designed espressoly for the brewing of
coffee. Coffee is brewed using coffee pots. Networked coffee pots
require a control protocol if they are to be controlled.
Increasingly, home and consumer devices are being connected to the
Internet. Early networking experiments demonstrated vending devices
connected to the Internet for status monitoring [COKE]. One of the
first remotely _operated_ machine to be hooked up to the Internet,
the Internet Toaster, (controlled via SNMP) was debuted in 1990
[RFC2235].
The demand for ubiquitous appliance connectivity that is causing the
consumption of the IPv4 address space. Consumers want remote control
of devices such as coffee pots so that they may wake up to freshly
brewed coffee, or cause coffee to be prepared at a precise time after
the completion of dinner preparations.
Masinter Informational [Page 1]
RFC 2324 HTCPCP/1.0 1 April 1998
This document specifies a Hyper Text Coffee Pot Control Protocol
(HTCPCP), which permits the full request and responses necessary to
control all devices capable of making the popular caffeinated hot
beverages.
HTTP 1.1 ([RFC2068]) permits the transfer of web objects from origin
servers to clients. The web is world-wide. HTCPCP is based on HTTP.
This is because HTTP is everywhere. It could not be so pervasive
without being good. Therefore, HTTP is good. If you want good coffee,
HTCPCP needs to be good. To make HTCPCP good, it is good to base
HTCPCP on HTTP.
Future versions of this protocol may include extensions for espresso
machines and similar devices.
2. HTCPCP Protocol
The HTCPCP protocol is built on top of HTTP, with the addition of a
few new methods, header fields and return codes. All HTCPCP servers
should be referred to with the "coffee:" URI scheme (Section 4).
2.1 HTCPCP Added Methods
2.1.1 The BREW method, and the use of POST
Commands to control a coffee pot are sent from client to coffee
server using either the BREW or POST method, and a message body with
Content-Type set to "application/coffee-pot-command".
A coffee pot server MUST accept both the BREW and POST method
equivalently. However, the use of POST for causing actions to happen
is deprecated.
Coffee pots heat water using electronic mechanisms, so there is no
fire. Thus, no firewalls are necessary, and firewall control policy
is irrelevant. However, POST may be a trademark for coffee, and so
the BREW method has been added. The BREW method may be used with
other HTTP-based protocols (e.g., the Hyper Text Brewery Control
Protocol).
2.1.2 GET method
In HTTP, the GET method is used to mean "retrieve whatever
information (in the form of an entity) identified by the Request-
URI." If the Request-URI refers to a data-producing process, it is
the produced data which shall be returned as the entity in the
response and not the source text of the process, unless that text
happens to be the output of the process.
Masinter Informational [Page 2]
RFC 2324 HTCPCP/1.0 1 April 1998
In HTCPCP, the resources associated with a coffee pot are physical,
and not information resources. The "data" for most coffee URIs
contain no caffeine.
2.1.3 PROPFIND method
If a cup of coffee is data, metadata about the brewed resource is
discovered using the PROPFIND method [WEBDAV].
2.1.4 WHEN method
When coffee is poured, and milk is offered, it is necessary for the
holder of the recipient of milk to say "when" at the time when
sufficient milk has been introduced into the coffee. For this
purpose, the "WHEN" method has been added to HTCPCP. Enough? Say
WHEN.
2.2 Coffee Pot Header fields
HTCPCP recommends several HTTP header fields and defines some new
ones.
2.2.1 Recommended header fields
2.2.1.1 The "safe" response header field.
[SAFE] defines a HTTP response header field, "Safe", which can be
used to indicate that repeating a HTTP request is safe. The inclusion
of a "Safe: Yes" header field allows a client to repeat a previous
request if the result of the request might be repeated.
The actual safety of devices for brewing coffee varies widely, and
may depend, in fact, on conditions in the client rather than just in
the server. Thus, this protocol includes an extension to the "Safe"
response header:
Safe = "Safe" ":" safe-nature
safe-nature = "yes" | "no" | conditionally-safe
conditionally-safe = "if-" safe-condition
safe-condition = "user-awake" | token
indication will allow user agents to handle retries of some safe
requests, in particular safe POST requests, in a more user-friendly
way.
Masinter Informational [Page 3]
RFC 2324 HTCPCP/1.0 1 April 1998
2.2.2 New header fields
2.2.2.1 The Accept-Additions header field
In HTTP, the "Accept" request-header field is used to specify media
types which are acceptable for the response. However, in HTCPCP, the
response may result in additional actions on the part of the
automated pot. For this reason, HTCPCP adds a new header field,
"Accept-Additions":
Accept-Additions = "Accept-Additions" ":"
#( addition-range [ accept-params ] )
addition-type = ( "*"
| milk-type
| syrup-type
| sweetener-type
| spice-type
| alcohol-type
) *( ";" parameter )
milk-type = ( "Cream" | "Half-and-half" | "Whole-milk"
| "Part-Skim" | "Skim" | "Non-Dairy" )
syrup-type = ( "Vanilla" | "Almond" | "Raspberry"
| "Chocolate" )
alcohol-type = ( "Whisky" | "Rum" | "Kahlua" | "Aquavit" )
2.2.3 Omitted Header Fields
No options were given for decaffeinated coffee. What's the point?
2.3 HTCPCP return codes
Normal HTTP return codes are used to indicate difficulties of the
HTCPCP server. This section identifies special interpretations and
new return codes.
2.3.1 406 Not Acceptable
This return code is normally interpreted as "The resource identified
by the request is only capable of generating response entities which
have content characteristics not acceptable according to the accept
headers sent in the request. In HTCPCP, this response code MAY be
returned if the operator of the coffee pot cannot comply with the
Accept-Addition request. Unless the request was a HEAD request, the
response SHOULD include an entity containing a list of available
coffee additions.
Masinter Informational [Page 4]
RFC 2324 HTCPCP/1.0 1 April 1998
In practice, most automated coffee pots cannot currently provide
additions.
2.3.2 418 I'm a teapot
Any attempt to brew coffee with a teapot should result in the error
code "418 I'm a teapot". The resulting entity body MAY be short and
stout.
3. The "coffee" URI scheme
Because coffee is international, there are international coffee URI
schemes. All coffee URL schemes are written with URL encoding of the
UTF-8 encoding of the characters that spell the word for "coffee" in
any of 29 languages, following the conventions for
internationalization in URIs [URLI18N].
coffee-url = coffee-scheme ":" [ "//" host ]
["/" pot-designator ] ["?" additions-list ]
coffee-scheme = ( "koffie" ; Afrikaans, Dutch
| "q%C3%A6hv%C3%A6" ; Azerbaijani
| "%D9%82%D9%87%D9%88%D8%A9" ; Arabic
| "akeita" ; Basque
| "koffee" ; Bengali
| "kahva" ; Bosnian
| "kafe" ; Bulgarian, Czech
| "caf%C3%E8" ; Catalan, French, Galician
| "%E5%92%96%E5%95%A1" ; Chinese
| "kava" ; Croatian
| "k%C3%A1va ; Czech
| "kaffe" ; Danish, Norwegian, Swedish
| "coffee" ; English
| "kafo" ; Esperanto
| "kohv" ; Estonian
| "kahvi" ; Finnish
| "%4Baffee" ; German
| "%CE%BA%CE%B1%CF%86%CE%AD" ; Greek
| "%E0%A4%95%E0%A5%8C%E0%A4%AB%E0%A5%80" ; Hindi
| "%E3%82%B3%E3%83%BC%E3%83%92%E3%83%BC" ; Japanese
| "%EC%BB%A4%ED%94%BC" ; Korean
| "%D0%BA%D0%BE%D1%84%D0%B5" ; Russian
| "%E0%B8%81%E0%B8%B2%E0%B9%81%E0%B8%9F" ; Thai
)
pot-designator = "pot-" integer ; for machines with multiple pots
additions-list = #( addition )
Masinter Informational [Page 5]
RFC 2324 HTCPCP/1.0 1 April 1998
All alternative coffee-scheme forms are equivalent. However, the use
of coffee-scheme in various languages MAY be interpreted as an
indication of the kind of coffee produced by the coffee pot. Note
that while URL scheme names are case-independent, capitalization is
important for German and thus the initial "K" must be encoded.
4. The "message/coffeepot" media type
The entity body of a POST or BREW request MUST be of Content-Type
"message/coffeepot". Since most of the information for controlling
the coffee pot is conveyed by the additional headers, the content of
"message/coffeepot" contains only a coffee-message-body:
coffee-message-body = "start" | "stop"
5. Operational constraints
This section lays out some of the operational issues with deployment
of HTCPCP ubiquitously.
5.1 Timing Considerations
A robust quality of service is required between the coffee pot user
and the coffee pot service. Coffee pots SHOULD use the Network Time
Protocol [NTP] to synchronize their clocks to a globally accurate
time standard.
Telerobotics has been an expensive technology. However, with the
advent of the Cambridge Coffee Pot [CAM], the use of the web (rather
than SNMP) for remote system monitoring and management has been
proven. Additional coffee pot maintenance tasks might be
accomplished by remote robotics.
Web data is normally static. Therefore to save data transmission and
time, Web browser programs store each Web page retrieved by a user on
the user's computer. Thus, if the user wants to return to that page,
it is now stored locally and does not need to be requested again from
the server. An image used for robot control or for monitoring a
changing scene is dynamic. A fresh version needs to be retrieved from
the server each time it is accessed.
5.2 Crossing firewalls
In most organizations HTTP traffic crosses firewalls fairly easily.
Modern coffee pots do not use fire. However, a "firewall" is useful
for protection of any source from any manner of heat, and not just
fire. Every home computer network SHOULD be protected by a firewall
from sources of heat. However, remote control of coffee pots is
Masinter Informational [Page 6]
RFC 2324 HTCPCP/1.0 1 April 1998
important from outside the home. Thus, it is important that HTCPCP
cross firewalls easily.
By basing HTCPCP on HTTP and using port 80, it will get all of HTTP's
firewall-crossing virtues. Of course, the home firewalls will require
reconfiguration or new versions in order to accommodate HTCPCP-
specific methods, headers and trailers, but such upgrades will be
easily accommodated. Most home network system administrators drink
coffee, and are willing to accommodate the needs of tunnelling
HTCPCP.
6. System management considerations
Coffee pot monitoring using HTTP protocols has been an early
application of the web. In the earliest instance, coffee pot
monitoring was an early (and appropriate) use of ATM networks [CAM].
The traditional technique [CAM] was to attach a frame-grabber to a
video camera, and feed the images to a web server. This was an
appropriate application of ATM networks. In this coffee pot
installation, the Trojan Room of Cambridge University laboratories
was used to give a web interface to monitor a common coffee pot. of
us involved in related research and, being poor, impoverished
academics, we only had one coffee filter machine between us, which
lived in the corridor just outside the Trojan Room. However, being
highly dedicated and hard-working academics, we got through a lot of
coffee, and when a fresh pot was brewed, it often didn't last long.
This service was created as the first application to use a new RPC
mechanism designed in the Cambridge Computer Laboratory - MSRPC2. It
runs over MSNL (Multi-Service Network Layer) - a network layer
protocol designed for ATM networks.
Coffee pots on the Internet may be managed using the Coffee Pot MIB
[CPMIB].
7. Security Considerations
Anyone who gets in between me and my morning coffee should be
insecure.
Unmoderated access to unprotected coffee pots from Internet users
might lead to several kinds of "denial of coffee service" attacks.
The improper use of filtration devices might admit trojan grounds.
Filtration is not a good virus protection method.
Masinter Informational [Page 7]
RFC 2324 HTCPCP/1.0 1 April 1998
Putting coffee grounds into Internet plumbing may result in clogged
plumbing, which would entail the services of an Internet Plumber
[PLUMB], who would, in turn, require an Internet Plumber's Helper.
Access authentication will be discussed in a separate memo.
8. Acknowledgements
Many thanks to the many contributors to this standard, including Roy
Fielding, Mark Day, Keith Moore, Carl Uno-Manros, Michael Slavitch,
and Martin Duerst. The inspiration of the Prancing Pony, the CMU
Coke Machine, the Cambridge Coffee Pot, the Internet Toaster, and
other computer controlled remote devices have led to this valuable
creation.
9. References
[RFC2068] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., and T.
Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2068,
January 1997.
[RFC2186] Wessels, D., and K. Claffy, "Internet Cache Protocol (ICP),
version 2," RFC 2186, September 1997
[CPMIB] Slavitch, M., "Definitions of Managed Objects for Drip-Type
Heated Beverage Hardware Devices using SMIv2", RFC 2325, 1 April
1998.
[HTSVMP] Q. Stafford-Fraser, "Hyper Text Sandwich Van Monitoring
Protocol, Version 3.2". In preparation.
[RFC2295] Holtman, K., and A. Mutz, "Transparent Content Negotiation
in HTTP", RFC 2295, March 1998.
[SAFE] K. Holtman. "The Safe Response Header Field", September 1997.
[CAM] "The Trojan Room Coffee Machine", D. Gordon and M. Johnson,
University of Cambridge Computer Lab,
<http://www.cl.cam.ac.uk/coffee/coffee.html>
[CBIO] "The Trojan Room Coffee Pot, a (non-technical) biography", Q.
Stafford-Fraser, University of Cambridge Computer Lab,
<http://www.cl.cam.ac.uk/coffee/qsf/coffee.html>.
[RFC2235] Zakon, R., "Hobbes' Internet Timeline", FYI 32, RFC 2230,
November 1997. See also
<http://www.internode.com.au/images/toaster2.jpg>
Masinter Informational [Page 8]
RFC 2324 HTCPCP/1.0 1 April 1998
[NTP] Mills, D., "Network Time Protocol (Version 3) Specification,
Implementation and Analysis", RFC 1305, March 1992.
[URLI18N] Masinter, L., "Using UTF8 for non-ASCII Characters in
Extended URIs" Work in Progress.
[PLUMB] B. Metcalfe, "Internet Plumber of the Year: Jim Gettys",
Infoworld, February 2, 1998.
[COKE] D. Nichols, "Coke machine history", C. Everhart, "Interesting
uses of networking", <http://www-
cse.ucsd.edu/users/bsy/coke.history.txt>.
10. Author's Address
Larry Masinter
Xerox Palo Alto Research Center
3333 Coyote Hill Road
Palo Alto, CA 94304
EMail: masinter@parc.xerox.com
Masinter Informational [Page 9]
RFC 2324 HTCPCP/1.0 1 April 1998
11. Full Copyright Statement
Copyright (C) The Internet Society (1998). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Masinter Informational [Page 10]
|