1 TCP/IP协议号
TCP/IP协议号是由网络专家定义的一个8位数值。当IP数据报到达正确的IP地址时,网络互连层必须将数据报传送到传输层,而传输层的协议不是唯一的,它至少包含两个主要协议TCP和UDP。为了确定哪个协议接收下层的数据报(或上层的用户数据包),必须使用TCP/IP协议号。为此,IP数据包的包头专门为协议号开辟了一个“窗口”——协议域。
协议号的工作方式是:
-
在信息发送方,协议号用来指明使用哪一种协议对用户数据包进行封装。例如协议号为6时,网络软件将使用TCP格式对数据包中的数据进行封装。
-
在信息接收方,网络软件通过检查该协议号,将IP数据报传递给与这个协议号相应的协议。例如协议号是17,就将数据报传递给UDP协议。
常见的协议号见下面的表1:
协议名 | 协议号 | 基 本 描 述 |
IP | 0 | 互连网协议 |
ICMP | 1 | 互连网消息协议 |
GGP | 3 | 网关——网关协议 |
TCP | 6 | 传输控制协议 |
EGP | 8 | 外部网关协议 |
UDP | 17 | 用户数据报协议 |
Xns_IDP | 22 | Xerox NS IDP |
rdp | 27 | 可靠数据流协议 |
rvd | 66 | MIT远程虚拟磁盘 |
表1:常见的TCP/IP协议号
2 TCP/IP端口号
网络互连层的IP协议将数据传送到传输层后,传输协议要将数据传递给正确的应用进程。为了识别是哪一个进程,就需要使用端口号。端口号是用来区分和标识应用进程的一个16位值,它也在IP数据报的包头中指定。包括两个端口号:源端口号——代表了发送数据的进程;目的端口号——代表了接收数据的进程。每个应用程序,不管是服务器还是客户端,都有一个唯一的端口号。尤其是专门为完成特定任务的网络程序(像FTP、Telnet和E-mail等这种广泛使用的应用程序)要使用由Internet权威机构制定的端口号——即众所周知的端口号见表2。
端口号 | 关键字 | 基 本 描 述 |
7 | Echo | 回波 |
9 | Discard | 丢弃 |
11 | Users | 活动的用户 |
13 | Daytime | 日期 |
15 | Netstat | 网络状态 |
21 | ftp | 文件传输协议 |
23 | Telnet | 远程登录 |
25 | SMTP | 电子邮件 |
37 | Time | 时间 |
43 | Nicname | 别名查询 |
69 | TFTP | 普通文件传送协议 |
79 | Finger | 用户信息查询 |
101 | Hostname | NIC主机名服务 |
表2:专用程序端口号
补:
DNS端口号是 53
用户在使用专用程序时,不允许改变其端口号,这是必须遵守的一条规则。不过,用户新开发的网络通信应用程序可以自己设置其端口号,但不能和用做公共服务的端口号发生冲突。一般情况下,所有小于255的端口号都保留做公共服务(程序),其它规定应视你使用的操作系统而定。
TCP/IP端口就像每个居民住户的门牌号码,你要访问某个家庭,除要知道这个家庭所在的国家、城市、小区和街道外,还要知道其门牌号码才能正确到达。TCP/IP的传输层协议(主要指TCP和UDP)要和各种端口直接打交道,特别是无连接的UDP协议,它在传输数据时重点就放在端口上。当然,面向连接的TCP协议在传输数据时将重点放在连接上,而不是端口,使用TCP的应用程序可以为同一端口打开多个连接,传输仍能正确进行。也就是说,UDP通信就像平信邮递业务,邮差(UDP)只将邮件(数据)放在正确的家庭或单位信箱(端口)中,并不通知收件人(应用程序)邮件已到;而TCP则更像邮政系统的电话业务,只有先建立呼叫(连接)后,才能使用电话(端口)进行对话(数据交换)。
需要注意的是:在编写发送方的应用程序时,一般不用关心程序使用的端口号,但在接收方必须知道。每次发送方传输报文时,传输层自动在包头的源端口域中插入正确的端口号。、