OldeWorldeWebServices
New technology for describing old protocols.
Many of the networked services we use on the Web, and with the Web, predate our current concern for XML-based protocols.
HTTP and SOAP are great and everything, but how about trying to use RDF/XML for describing the kinds of services that already populate the Internet. ldap, SSH, SMTP, IMAP, POP, IRC, Z39.50... there are dozens of protocols out there already, exchanging cryptic messages on different ports. Some, but not all, are standardised. But there is no standard or even defacto mechanism for describing and discovering them all. Or none that I've heard of.... How for example do gameplayers find Quake servers? How do I remember how many Web servers I'm running, their ports and purposes?
The new world of XML-based Web Services offers some techniques for technology-sharing across protocols. XML and SOAP-based Web services share a lot more common structure than the protocols listed below, which share little more than network-level "plumbing". But the old world is still out there, and real people and companies are spending real time and money trying to manage, catalogue, discover and maintain services using pre-"Web Service" services.
If that's the case, how can might an RDF/XML vocabulary for describing these services look?
a quick sketch
...of how it might look.
Note that we indirect through the use of protocol spec URIs to avoid maintaining an expensive central registry of protocols. The Web works well enough as a registry, it is doubtful we could do a better job.
This markup describes some services in RDF/XML. Note that the same markup can be used to describe radically different application areas. Each one perhaps rather niche (libraries, gamers...) but if a simple common language can benefit them all, the costs may be low enough to proceed with this idea. Note also that the use of RDF and XML namespaces allows these descriptions to be mixed freely with others. For example we might give sysadmin contact details for the various services, or in the case of the digital library scenario hinted at in the first example, we could use richer RDF to characterise the collection exposed using the protocol. This namespace mixing also allows our core vocabulary to be rather simple, since others can extend their service descriptions with more application-specific vocabulary.
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://esw.w3.org/topic/OldeWorldeWebServices#vocab" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:owws="http://esw.w3.org/topic/OldeWorldeWebServices#vocab"> <Service rdf:about="z3950://biblio.example.org/opac1"> <protocolIanaName>z3950</protocolIanaName> <path>/opac1</path> <host>biblio.example.org</host> <protcolSpecification rdf:resource="http://www.loc.gov/z3950/agency/document.html"/> <port>2100</port> <operationType>210/tcp</operationType> <dc:title>The example.org Online Public Access Catalog</dc:title> <dc:description>This is a bibliographic database. Books and stuff. Libraries use them...</dc:description> </Service> <Service> <host>frag.example.com</host> <port>26000</port> <operationType>udp</operationType> <protocolSpecification rdf:resource="http://www.gamers.org/dEngine/quake/QDP/qnp.html"> <dc:title>The example.com Quake gameserver</dc:title> <dc:description>Lots of popular games use network-based protocols, sometimes only partially documented. It is a common use case to be able to want to lookup nearby servers in a directory of some kind. </dc:description> </Service> <!-- others to writeup: LDAP (big corporate use) WWW (which servers are we running? who maintains them?); related to Apache XML config thread --> </rdf:RDF>
nearby in the web
Thinks to link or write about...
- RFC-1498 On the Naming and Binding of Network Destinations
- URI scheme registry (in RDF...)
- Describing search services, collection descriptions etc discussion from eLib/JISC lists
- mapping services to their RFCs?
- The z39.50 sample above shows this to be partly about decomposing URIs
- The quake sample shows it working without a Quake service URI scheme
- How does this compliment WSDL? Could we actually use WSDL for this? help! examples welcome...
- What about Web Service choreography? Are any of these protocols stateful and representable using WS choreog techniques?
- RDF for Web server config (discussion; example)
retro chic: /etc/services
From /etc/services on a Debian Linux machine: some well known networked services
# Network services, Internet style # # Note that it is presently the policy of IANA to assign a single well-known # port number for both TCP and UDP; hence, officially ports have two entries # even if the protocol doesn't support UDP operations. # # Updated from http://www.iana.org/assignments/port-numbers and other sources. # New ports will be added on request if they have been officially assigned # by IANA or are needed by a debian package. # If you need a huge list of used numbers please install the nmap package. tcpmux 1/tcp # TCP port service multiplexer echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/tcp users daytime 13/tcp daytime 13/udp netstat 15/tcp qotd 17/tcp quote msp 18/tcp # message send protocol msp 18/udp # message send protocol chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp-data 20/tcp ftp 21/tcp fsp 21/udp fspd ssh 22/tcp # SSH Remote Login Protocol ssh 22/udp # SSH Remote Login Protocol telnet 23/tcp smtp 25/tcp mail time 37/tcp timserver time 37/udp timserver rlp 39/udp resource # resource location nameserver 42/tcp name # IEN 116 whois 43/tcp nicname re-mail-ck 50/tcp # Remote Mail Checking Protocol re-mail-ck 50/udp # Remote Mail Checking Protocol domain 53/tcp nameserver # name-domain server domain 53/udp nameserver mtp 57/tcp # deprecated bootps 67/tcp # BOOTP server bootps 67/udp bootpc 68/tcp # BOOTP client bootpc 68/udp tftp 69/udp gopher 70/tcp # Internet Gopher gopher 70/udp rje 77/tcp netrjs finger 79/tcp www 80/tcp http # WorldWideWeb HTTP www 80/udp # HyperText Transfer Protocol link 87/tcp ttylink kerberos 88/tcp kerberos5 krb5 kerberos-sec # Kerberos v5 kerberos 88/udp kerberos5 krb5 kerberos-sec # Kerberos v5 supdup 95/tcp hostnames 101/tcp hostname # usually from sri-nic iso-tsap 102/tcp tsap # part of ISODE. csnet-ns 105/tcp cso-ns # also used by CSO name server csnet-ns 105/udp cso-ns rtelnet 107/tcp # Remote Telnet rtelnet 107/udp pop2 109/tcp postoffice pop-2 # POP version 2 pop2 109/udp pop-2 pop3 110/tcp pop-3 # POP version 3 pop3 110/udp pop-3 sunrpc 111/tcp portmapper # RPC 4.0 portmapper TCP sunrpc 111/udp portmapper # RPC 4.0 portmapper UDP auth 113/tcp authentication tap ident sftp 115/tcp uucp-path 117/tcp nntp 119/tcp readnews untp # USENET News Transfer Protocol ntp 123/tcp ntp 123/udp # Network Time Protocol pwdgen 129/tcp # PWDGEN service pwdgen 129/udp # PWDGEN service netbios-ns 137/tcp # NETBIOS Name Service netbios-ns 137/udp netbios-dgm 138/tcp # NETBIOS Datagram Service netbios-dgm 138/udp netbios-ssn 139/tcp # NETBIOS session service netbios-ssn 139/udp imap2 143/tcp imap # Interim Mail Access P 2 and 4 imap2 143/udp imap snmp 161/udp # Simple Net Mgmt Proto snmp-trap 162/udp snmptrap # Traps for SNMP cmip-man 163/tcp # ISO mgmt over IP (CMOT) cmip-man 163/udp cmip-agent 164/tcp cmip-agent 164/udp mailq 174/tcp # Mailer transport queue for Zmailer mailq 174/udp # Mailer transport queue for Zmailer xdmcp 177/tcp # X Display Mgr. Control Proto xdmcp 177/udp nextstep 178/tcp NeXTStep NextStep # NeXTStep window nextstep 178/udp NeXTStep NextStep # server bgp 179/tcp # Border Gateway Proto. bgp 179/udp prospero 191/tcp # Cliff Neuman's Prospero prospero 191/udp irc 194/tcp # Internet Relay Chat irc 194/udp smux 199/tcp # SNMP Unix Multiplexer smux 199/udp at-rtmp 201/tcp # AppleTalk routing at-rtmp 201/udp at-nbp 202/tcp # AppleTalk name binding at-nbp 202/udp at-echo 204/tcp # AppleTalk echo at-echo 204/udp at-zis 206/tcp # AppleTalk zone information at-zis 206/udp qmtp 209/tcp # The Quick Mail Transfer Protocol qmtp 209/udp # The Quick Mail Transfer Protocol z3950 210/tcp wais # NISO Z39.50 database z3950 210/udp wais ipx 213/tcp # IPX ipx 213/udp imap3 220/tcp # Interactive Mail Access imap3 220/udp # Protocol v3 pawserv 345/tcp # Perf Analysis Workbench pawserv 345/udp # Perf Analysis Workbench zserv 346/tcp # Zebra server zserv 346/udp # Zebra server fatserv 347/tcp # Fatmen Server fatserv 347/udp # Fatmen Server rpc2portmap 369/udp # Coda portmapper codaauth2 370/tcp codaauth2 370/udp # Coda authentication server ulistserv 372/tcp # UNIX Listserv ulistserv 372/udp ldap 389/tcp # Lightweight Directory Access Protocol ldap 389/udp # Lightweight Directory Access Protocol https 443/tcp # http protocol over TLS/SSL https 443/udp # http protocol over TLS/SSL snpp 444/tcp # Simple Network Paging Protocol snpp 444/udp # Simple Network Paging Protocol microsoft-ds 445/tcp # Micorsoft Naked CIFS microsoft-ds 445/udp # Micorsoft Naked CIFS saft 487/tcp # Simple Asynchronous File Transfer saft 487/udp # Simple Asynchronous File Transfer npmp-local 610/tcp dqs313_qmaster # npmp-local / DQS npmp-local 610/udp dqs313_qmaster # npmp-local / DQS npmp-gui 611/tcp dqs313_execd # npmp-gui / DQS npmp-gui 611/udp dqs313_execd # npmp-gui / DQS hmmp-ind 612/tcp dqs313_intercell # HMMP Indication / DQS hmmp-ind 612/udp dqs313_intercell # HMMP Indication / DQS ipp 631/tcp # Internet Printing Protocol ipp 631/udp # Internet Printing Protocol # # UNIX specific services # exec 512/tcp biff 512/udp comsat login 513/tcp who 513/udp whod shell 514/tcp cmd # no passwords used syslog 514/udp printer 515/tcp spooler # line printer spooler talk 517/udp ntalk 518/udp route 520/udp router routed # RIP timed 525/udp timeserver tempo 526/tcp newdate courier 530/tcp rpc conference 531/tcp chat netnews 532/tcp readnews netwall 533/udp # -for emergency broadcasts gdomap 538/tcp # GNUstep distributed objects gdomap 538/udp # GNUstep distributed objects uucp 540/tcp uucpd # uucp daemon klogin 543/tcp # Kerberized `rlogin' (v5) kshell 544/tcp krcmd # Kerberized `rsh' (v5) afpovertcp 548/tcp # AFP over TCP afpovertcp 548/udp # AFP over TCP remotefs 556/tcp rfs_server rfs # Brunhoff remote filesystem nntps 563/tcp snntp # NNTP over SSL nntps 563/udp snntp # NNTP over SSL submission 587/tcp # Submission [RFC2487] submission 587/udp # Submission [RFC2487] ldaps 636/tcp # LDAP over SSL ldaps 636/udp # LDAP over SSL tinc 655/tcp # tinc control port tinc 655/udp # tinc packet port silc 706/tcp # SILC silc 706/udp # SILC kerberos-adm 749/tcp # Kerberos `kadmin' (v5) webster 765/tcp # Network dictionary webster 765/udp rsync 873/tcp # rsync rsync 873/udp # rsync ftps-data 989/tcp # FTP over SSL (data) ftps 990/tcp # FTP over SSL telnets 992/tcp # Telnet over SSL telnets 992/udp # Telnet over SSL imaps 993/tcp # IMAP over SSL imaps 993/udp # IMAP over SSL ircs 994/tcp # IRC over SSL ircs 994/udp # IRC over SSL pop3s 995/tcp # POP-3 over SSL pop3s 995/udp # POP-3 over SSL # # From ``Assigned Numbers'': # #> The Registered Ports are not controlled by the IANA and on most systems #> can be used by ordinary user processes or programs executed by ordinary #> users. # #> Ports are used in the TCP [45,106] to name the ends of logical #> connections which carry long term conversations. For the purpose of #> providing services to unknown callers, a service contact port is #> defined. This list specifies the port used by the server process as its #> contact port. While the IANA can not control uses of these ports it #> does register or list uses of these ports as a convienence to the #> community. # socks 1080/tcp # socks proxy server socks 1080/udp # socks proxy server lotusnote 1352/tcp lotusnotes # Lotus Note lotusnote 1352/udp lotusnotes # Lotus Note ingreslock 1524/tcp ingreslock 1524/udp prospero-np 1525/tcp # Prospero non-privileged prospero-np 1525/udp datametrics 1645/tcp old-radius # datametrics / old radius entry datametrics 1645/udp old-radius # datametrics / old radius entry sa-msg-port 1646/tcp old-radacct # sa-msg-port / old radacct entry sa-msg-port 1646/udp old-radacct # sa-msg-port / old radacct entry radius 1812/tcp # Radius radius 1812/udp # Radius radius-acct 1813/tcp radacct # Radius Accounting radius-acct 1813/udp radacct # Radius Accounting rtcm-sc104 2101/tcp # RTCM SC-104 IANA 1/29/99 rtcm-sc104 2101/udp # RTCM SC-104 IANA 1/29/99 cvspserver 2401/tcp # CVS client/server operations cvspserver 2401/udp # CVS client/server operations venus 2430/tcp # codacon port venus 2430/udp # Venus callback/wbc interface venus-se 2431/tcp # tcp side effects venus-se 2431/udp # udp sftp side effect codasrv 2432/tcp # not used codasrv 2432/udp # server port codasrv-se 2433/tcp # tcp side effects codasrv-se 2433/udp # udp sftp side effect mon 2583/tcp # MON mon 2583/udp # MON dict 2628/tcp # Dictionary server dict 2628/udp # Dictionary server gds_db 3050/tcp # InterBase server gds_db 3050/udp # InterBase server icpv2 3130/tcp icp # Internet Cache Protocol (Squid) icpv2 3130/udp icp # Internet Cache Protocol (Squid) mysql 3306/tcp # MySQL mysql 3306/udp # MySQL distcc 3632/tcp # distributed compiler distcc 3632/udp # distributed complier rfe 5002/tcp # Radio Free Ethernet rfe 5002/udp # Actually uses UDP only jabber-client 5222/tcp # Jabber Client Connection jabber-client 5222/udp # Jabber Client Connection jabber-server 5269/tcp # Jabber Server Connection jabber-server 5269/udp # Jabber Server Connection cfengine 5308/tcp # CFengine cfengine 5308/udp # CFengine postgres 5432/tcp # PostgreSQL Database postgres 5432/udp # PostgreSQL Database x11 6000/tcp x11-0 # X Window System x11 6000/udp x11-0 # X Window System x11-1 6001/tcp # X Window System x11-1 6001/udp # X Window System x11-2 6002/tcp # X Window System x11-2 6002/udp # X Window System x11-3 6003/tcp # X Window System x11-3 6003/udp # X Window System x11-4 6004/tcp # X Window System x11-4 6004/udp # X Window System x11-5 6005/tcp # X Window System x11-5 6005/udp # X Window System x11-6 6006/tcp # X Window System x11-6 6006/udp # X Window System x11-7 6007/tcp # X Window System x11-7 6007/udp # X Window System afs3-fileserver 7000/tcp bbs # file server itself afs3-fileserver 7000/udp bbs # file server itself afs3-callback 7001/tcp # callbacks to cache managers afs3-callback 7001/udp # callbacks to cache managers afs3-prserver 7002/tcp # users & groups database afs3-prserver 7002/udp # users & groups database afs3-vlserver 7003/tcp # volume location database afs3-vlserver 7003/udp # volume location database afs3-kaserver 7004/tcp # AFS/Kerberos authentication afs3-kaserver 7004/udp # AFS/Kerberos authentication afs3-volser 7005/tcp # volume managment server afs3-volser 7005/udp # volume managment server afs3-errors 7006/tcp # error interpretation service afs3-errors 7006/udp # error interpretation service afs3-bos 7007/tcp # basic overseer process afs3-bos 7007/udp # basic overseer process afs3-update 7008/tcp # server-to-server updater afs3-update 7008/udp # server-to-server updater afs3-rmtsys 7009/tcp # remote cache manager service afs3-rmtsys 7009/udp # remote cache manager service font-service 7100/tcp xfs # X Font Service font-service 7100/udp xfs # X Font Service wnn6 22273/tcp # wnn6 wnn6 22273/udp # wnn6 # # Datagram Delivery Protocol services # rtmp 1/ddp # Routing Table Maintenance Protocol nbp 2/ddp # Name Binding Protocol echo 4/ddp # AppleTalk Echo Protocol zip 6/ddp # Zone Information Protocol #========================================================================= # The remaining port numbers are not as allocated by IANA. #========================================================================= # Kerberos (Project Athena/MIT) services # Note that these are for Kerberos v4, and are unofficial. Sites running # v4 should uncomment these and comment out the v5 entries above. # kerberos4 750/udp kerberos-iv kdc # Kerberos (server) udp kerberos4 750/tcp kerberos-iv kdc # Kerberos (server) tcp kerberos_master 751/udp # Kerberos authentication kerberos_master 751/tcp # Kerberos authentication passwd_server 752/udp # Kerberos passwd server krb_prop 754/tcp krb5_prop hprop # Kerberos slave propagation krbupdate 760/tcp kreg # Kerberos registration kpasswd 761/tcp kpwd # Kerberos "passwd" swat 901/tcp # swat kpop 1109/tcp # Pop with Kerberos knetd 2053/tcp # Kerberos de-multiplexor zephyr-srv 2102/udp # Zephyr server zephyr-clt 2103/udp # Zephyr serv-hm connection zephyr-hm 2104/udp # Zephyr hostmanager eklogin 2105/tcp # Kerberos encrypted rlogin # Hmmm. Are we using Kv4 or Kv5 now? Worrying. # The following is probably Kerberos v5 --- ajt@debian.org (11/02/2000) kx 2111/tcp # X over Kerberos iprop 2121/tcp # incremental propagation # # Unofficial but necessary (for NetBSD) services supfilesrv 871/tcp # SUP server supfiledbg 1127/tcp # SUP debugging # # Services added for the Debian GNU/Linux distribution # linuxconf 98/tcp # LinuxConf poppassd 106/tcp # Eudora poppassd 106/udp # Eudora imsp 406/tcp # Interactive Mail Support Protocol imsp 406/udp # Interactive Mail Support Protocol ssmtp 465/tcp smtps # SMTP over SSL nqs 607/tcp # Network Queuing system moira_db 775/tcp # Moira database moira_update 777/tcp # Moira update protocol. moira_ureg 779/udp # Moira user registration. omirr 808/tcp omirrd # online mirror omirr 808/udp omirrd # online mirror customs 1001/tcp # pmake customs server customs 1001/udp # pmake customs server rmiregistry 1099/tcp # Java RMI Registry skkserv 1178/tcp # skk jisho server port predict 1210/udp # predict -- satellite tracking rmtcfg 1236/tcp # Gracilis Packeten remote config server wipld 1300/tcp # Wipl network monitor xtel 1313/tcp # french minitel xtelw 1314/tcp # french minitel support 1529/tcp # GNATS sieve 2000/tcp # Sieve mail filter daemon cfinger 2003/tcp # GNU Finger ndtp 2010/tcp # Network dictionary transfer protocol frox 2121/tcp # frox: caching ftp proxy ninstall 2150/tcp # ninstall service ninstall 2150/udp # ninstall service zebrasrv 2600/tcp # zebra service zebra 2601/tcp # zebra vty ripd 2602/tcp # RIPd vty ripngd 2603/tcp # RIPngd vty ospfd 2604/tcp # OSPFd vty bgpd 2605/tcp # BGPd vty ospf6d 2606/tcp # OSPF6d vty afbackup 2988/tcp # Afbackup system afbackup 2988/udp # Afbackup system afmbackup 2989/tcp # Afmbackup system afmbackup 2989/udp # Afmbackup system xtell 4224/tcp # xtell server fax 4557/tcp # FAX transmission service (old) hylafax 4559/tcp # HylaFAX client-server protocol (new) pcrd 5151/tcp # PCR-1000 Daemon noclog 5354/tcp # noclogd with TCP (nocol) noclog 5354/udp # noclogd with UDP (nocol) hostmon 5355/tcp # hostmon uses TCP (nocol) hostmon 5355/udp # hostmon uses UDP (nocol) mrtd 5674/tcp # MRT Routing Daemon bgpsim 5675/tcp # MRT Routing Simulator canna 5680/tcp # cannaserver sane 6566/tcp saned # SANE network scanner daemon ircd 6667/tcp # Internet Relay Chat zope-ftp 8021/tcp # zope management by ftp webcache 8080/tcp # WWW caching service tproxy 8081/tcp # Transparent Proxy omniorb 8088/tcp # OmniORB omniorb 8088/udp # OmniORB mandelspawn 9359/udp mandelbrot # network mandelbrot zope 9673/tcp # zope server amanda 10080/udp # amanda backup services kamanda 10081/tcp # amanda backup services (Kerberos) kamanda 10081/udp # amanda backup services (Kerberos) amandaidx 10082/tcp # amanda backup services amidxtape 10083/tcp # amanda backup services smsqp 11201/tcp # Alamin SMS gateway smsqp 11201/udp # Alamin SMS gateway xpilot 15345/tcp # XPilot Contact Port xpilot 15345/udp # XPilot Contact Port sgi-cmsd 17001/udp # Cluster membership services daemon sgi-crsd 17002/udp # Cluster reset services daemon sgi-gcd 17003/udp # SGI Group membership daemon sgi-cad 17004/tcp # Cluster Admin daemon isdnlog 20011/tcp # isdn logging system isdnlog 20011/udp # isdn logging system vboxd 20012/tcp # voice box system vboxd 20012/udp # voice box system binkp 24554/tcp # binkp asp 27374/tcp # Address Search Protocol asp 27374/udp # Address Search Protocol dircproxy 57000/tcp # Detachable IRC Proxy tfido 60177/tcp # fidonet EMSI over telnet fido 60179/tcp # fidonet EMSI over telnet
Tyler Durden says... ...use SOAP