linux 端口号分配

 端口号分配

TCP和UDP采用16b的端口号来识别应用程序。那么这些端口号是如何选择的呢?

服务器一般都是通过知名端口号来识别的。例如,对于TCP/IP实现来说,每个FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP(普通文件传输协议)服务器的UDP端口号都是69。任何TCP/IP实现所提供的服务都用知名的1~1 023之间的端口号。这些知名端口号由Internet号分配机构(Internet Assigned Numbers Authority, IANA)来管理。到1992年为止,知名端口号介于1~255之间。256~1 023之间的端口号通常都是由UNIX系统占用,以提供一些特定的UNIX服务,也就是说,提供一些只有UNIX系统才有的,而其他操作系统可能不提供的服务。现在IANA管理1~1 023之间所有的端口号。

Internet扩展服务与UNIX特定服务之间的一个差别就是telnet和rlogin,它们二者都允许通过计算机网络登录到其他主机上。telnet是采用端口号为23的TCP/IP标准,且几乎可以在所有操作系统上进行实现。相反,rlogin最开始时只是为UNIX系统设计的(尽管许多非UNIX系统现在也提供该服务),因此在20世纪80年代初,它的端口号为513,客户端通常对它所使用的端口号并不关心,只须保证该端口号在本机上是唯一的即可。客户端口号又称做临时端口号(即存在时间很短暂),这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着,其服务就运行。

大多数TCP/IP实现给临时端口分配1 024~5 000之间的端口号。大于5 000的端口号是为其他服务器预留的(Internet上并不常用的服务)。我们可以在后面看见许多给临时端口分配端口号的例子。大多数Linux系统的文件/etc/services都包含了人们熟知的端口号。为了找到telnet服务,可以运行以下语句:“grep telnet /etc/services”。表1-3是一些常用TCP服务和端口。

表1-3  常用TCP服务和端口

TCP 端口

    

    

7

echo

echo字符(用于测试)

9

discard

丢弃字符串(用于测试)

13

daytime

日期服务

19

chargen

字符生成器

21

ftp

文件传输协议(FTP

22

ssh

安全shell(虚拟终端或文件传输)

23

telnet

远程登录

25

smtp

电子��件

37

time

时间服务

42

nameserve

TCP名字服务

43

whois

NIC whois服务

53

domain

域名服务(DNS

79

finger

用户信息

80

http

WWW(万维网)

110

pop3

邮局协议3POP3

111

sunrpc

SUN的远程过程调用(RPC

113

auth

远程用户名认证服务

119

nntp

网络新闻传输协议(NNTP

143

imap

交互式邮件访问协议

443

https

SSL加密的HTTP

512

exec

在远程UNIX主机上执行命令

513

login

登录到远程UNIX主机(rlogin

514

shell

从远程UNIX主机获得shellrsh

续表 

TCP 端口

    

    

515

printer

远程打印

1080

socks

SOCKS应用代理服务

2049

NFS

TCP之上的NFSNFS over TCP

6000~6001

X

X Window系统

UDP为运行于同一台或不同机器之上的两个或多个程序之间传输数据包提供了简单的、不可靠的连接。“不可靠”意味着操作系统不保证每个发出的包都能到达,也不保证包能够按序到达。不过UDP是尽力传输的,在LAN中UDP通常能达到100%的可靠性。UDP的优点在于它比TCP的开销少,较少的开销使得基于UDP的服务可以用TCP 10倍的吞吐量传输数据。

UDP主要用于SUN的NFS、NIS、主机名解析和传输路由信息。对于有些服务而言,偶然丢失一个包并不会带来太大的负面影响,因为它们会周期性地请求一个新包,或者那些包本身并不是很重要。这些服务包括who、talk和一些时间服务。表1-4是一些常用UDP服务和端口。

表1-4  常见UDP服务和端口

你可能感兴趣的:(网络编程)