既然提到端口,我们就来分析一下为什么要使用端口的缘由吧。我们首先要知道的是,运输层有复用和分用的功能。应用层所有的应用进程都可以通过运输层再传送到IP层,这就是复用。运输层从IP层收到数据后必须交付到指明的应用进程,这就是分用。我们知道,单个进程是用进程标识符来标志的,但在计算机操作系统指派的进程标识符标志运行在应用层的进程是不行的,因为不同的操作系统使用不同的进程标识符。为了让不同操作系统间也实现进程间通信,因此得用一种方法对TCP/IP体系的应用进程进行标志。同时,我们在进行通信的时候,必须知道起点和终点,即通信的一方和另一方,那么我们如何识别终点呢,这里就要使用到协议端口号(端口)。虽然通信的终点是应用进程,但我们要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作就由TCP来完成。
关于端口,分为软件端口和硬件端口。
软件端口:在协议栈层间的抽象的协议端口,应用层的各种协议进程与运输实体进行层间交互的一种地址
硬件端口:不同硬件设备进行交互的接口
在TCP/UDP的首部格式中,都有源端口和目的端口。当运输层收到IP层交上来的运输层报文时,就能根据其首部中的目的端口把数据交付应用层的目的应用进程。
TCP/IP的运输层用一个16位端口号来标志一个端口,端口号只具有本地的意义。
注:不同的计算机具有相同的端口是没有关联的
16位的端口号可允许有65535个不同的端口号。
端口号的分类:
服务器端使用的端口号:分为两类,(1)熟知端口号(系统端口号):数值为0-1023;这些数值在www.iana.org中可查到。常用的熟知端口号为:
- FTP: 21
- TELNET: 23
- SMTP: 25
- DNS: 53
- TFTP: 69
- HTTP: 80
- SNMP: 161
- SNMP(trap): 162