|
In this discussion we are primarily interested in two transport layer protocols: TCP and
UDP. Once IP passes the packet to the appropriate transport protocol, the transport
protocol reads two port numbers from the header, the source port and the destination port.
The source port identifies the application that sent the data, and the destination port
identifies the application that is to receive the data. In both TCP and UDP these are
16-bit values in the first word of the header. On most computer systems using TCP/IP the
association of these numbers to specific protocols is usually defined in a text file.
On a Microsoft Windows TCP/IP system the application level protocol port numbers are defined in a file called SERVICES. On Windows NT systems this file is found in the directory %SystemRoot%\System32\drivers\etc. On a UNIX system this file is usually called \etc\protocols. On both Windows and UNIX systems the file generally follows the same format: a service name, port number/protocol, and any aliases. Each field is separated by white space (spaces or tab characters) and comments are preceded by a pound character (#). The following is an example of a typical Windows NT SERVICES file:
# This file contains port numbers for well-known services as defined by
# RFC 1060 (Assigned Numbers).
#
# Format:
#
# <service name> <port number>/<protocol> [aliases...] [#<comment>]
#
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
qotd 17/tcp quote
qotd 17/udp quote
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp-data 20/tcp
ftp 21/tcp
telnet 23/tcp
smtp 25/tcp mail
time 37/tcp timserver
time 37/udp timserver
rlp 39/udp resource # resource location
name 42/tcp nameserver
name 42/udp nameserver
whois 43/tcp nicname # usually to sri-nic
domain 53/tcp nameserver # name-domain server
domain 53/udp nameserver
nameserver 53/tcp domain # name-domain server
nameserver 53/udp domain
mtp 57/tcp # deprecated
bootp 67/udp # boot program server
tftp 69/udp
rje 77/tcp netrjs
finger 79/tcp
link 87/tcp ttylink
supdup 95/tcp
hostnames 101/tcp hostname # usually from sri-nic
iso-tsap 102/tcp
dictionary 103/tcp webster
x400 103/tcp # ISO Mail
x400-snd 104/tcp
csnet-ns 105/tcp
pop 109/tcp postoffice
pop2 109/tcp # Post Office
pop3 110/tcp postoffice
portmap 111/tcp
portmap 111/udp
sunrpc 111/tcp
sunrpc 111/udp
auth 113/tcp authentication
sftp 115/tcp
path 117/tcp
uucp-path 117/tcp
nntp 119/tcp usenet # Network News Transfer
ntp 123/udp ntpd ntp # network time protocol (exp)
nbname 137/udp
nbdatagram 138/udp
nbsession 139/tcp
NeWS 144/tcp news
sgmp 153/udp sgmp
tcprepo 158/tcp repository # PCMAIL
snmp 161/udp snmp
snmp-trap 162/udp snmp
print-srv 170/tcp # network PostScript
vmnet 175/tcp
load 315/udp
vmnet0 400/tcp
sytek 500/udp
biff 512/udp comsat
exec 512/tcp
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
efs 520/tcp # for LucasFilm
route 520/udp router routed
timed 525/udp timeserver
tempo 526/tcp newdate
courier 530/tcp rpc
conference 531/tcp chat
rvd-control 531/udp MIT disk
netnews 532/tcp readnews
netwall 533/udp # -for emergency broadcasts
uucp 540/tcp uucpd # uucp daemon
klogin 543/tcp # Kerberos authenticated rlogin
kshell 544/tcp cmd # and remote shell
new-rwho 550/udp new-who # experimental
remotefs 556/tcp rfs_server rfs# Brunhoff remote filesystem
rmonitor 560/udp rmonitord # experimental
monitor 561/udp # experimental
garcon 600/tcp
maitrd 601/tcp
busboy 602/tcp
acctmaster 700/udp
acctslave 701/udp
acct 702/udp
acctlogin 703/udp
acctprinter 704/udp
elcsd 704/udp # errlog
acctinfo 705/udp
acctslave2 706/udp
acctdisk 707/udp
kerberos 750/tcp kdc # Kerberos authentication--tcp
kerberos 750/udp kdc # Kerberos authentication--udp
kerberos_master 751/tcp # Kerberos authentication
kerberos_master 751/udp # Kerberos authentication
passwd_server 752/udp # Kerberos passwd server
userreg_server 753/udp # Kerberos userreg server
krb_prop 754/tcp # Kerberos slave propagation
erlogin 888/tcp # Login and environment passing
kpop 1109/tcp # Pop with Kerberos
phone 1167/udp
ingreslock 1524/tcp
maze 1666/udp
nfs 2049/udp # sun nfs
knetd 2053/tcp # Kerberos de-multiplexor
eklogin 2105/tcp # Kerberos encrypted rlogin
rmt 5555/tcp rmtd
mtb 5556/tcp mtbd # mtb backup
man 9535/tcp # remote man server
w 9536/tcp
mantst 9537/tcp # remote man server, testing
bnews 10000/tcp
rscs0 10000/udp
queue 10001/tcp
rscs1 10001/udp
poker 10002/tcp
rscs2 10002/udp
gateway 10003/tcp
rscs3 10003/udp
remp 10004/tcp
rscs4 10004/udp
rscs5 10005/udp
rscs6 10006/udp
rscs7 10007/udp
rscs8 10008/udp
rscs9 10009/udp
rscsa 10010/udp
rscsb 10011/udp
qmaster 10012/tcp
qmaster 10012/udp
Well Known Ports are those from 0 through 1023. The assignment of port numbers in this range is controlled by the IANA. On most systems port in this range can only be used by system (or root) processes or by programs executed by privileged users. The Registered Ports are those from 1024 through 49151. They are not controlled by the IANA and on most systems can be used by ordinary user processes or programs executed by ordinary users. While the IANA can not control usage of these ports it does register or list uses of these ports as a convenience to the community. The Dynamic and/or Private Ports are those from 49152 through 65535. These are assigned dynamically by software. The numbers used by TCP/IP protocols are assigned and published by a group called the Internet Assigned Number Authority (IANA). The lists of assigned numbers maintained by the IANA are regularly documented as an RFC, the latest of which at the time of this writing being RFC 1700. These lists are also available via FTP. Port numbers are not necessarily unique between transport layer protocols. TCP and UDP do assign the same port numbers for similar and sometimes different purposes. It is the combination of the transport protocol and application port that uniquely identifies the application to which the data should be delivered. When a software application, such as Telnet or FTP, initiates a connection across TCP/IP, the application level protocol randomly selects a dynamic port number for the source, and the well-know port for the destination. This allows multiple users on a single computer or multiple instances of the same program on one computer to run concurrent sessions of the same application. The remote computer can tell the sessions apart by using the IP address and application protocol source port to uniquely identify the connection. The combination of an IP address and a port number is called a socket. On a Microsoft Windows system the common interface for accessing TCP/IP is called Windows Sockets, or WinSock for short. A pair of sockets, one source and one destination, defines the communication session for a connection oriented protocol such as TCP.
|