计算机端口详解
计算机“端口”是英文 port 的义译,可以认为是计算机与外界通讯交流的出口。其中硬件领域的端口又称接
口,如:USB 端口、串行端口等。软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端
口,是一种抽象的软件结构,包括一些数据结构和 I/O(基本输入输出)缓冲区。
可以先了解面向连接和无连接协议(Connection-Oriented and Connectionless
Protocols)
面向连接服务的主要特点有:面向连接服务要经过三个阶段:数据传数前,先建立连接,连接建立后
再传输数据,数据传送完后,释放连接。面向连接服务,可确保数据传送的次序和传输的可靠性。
无连接服务的特点是:无连接服务只有传输数据阶段。消除了除数据通信外的其它开销。只要发送实
体是活跃的,无须接收实体也是活跃的。它的优点是灵活方便、迅速,特别适合于传送少量零星的报文,
但无连接服务不能防止报文的丢失、重复或失序。
区分“面向连接服务”和“无连接服务”的概念,特别简单、形象的例子是:打电话和写信。两个人如果要
通电话,必须先建立连接——拨号,等待应答后才能相互传递信息,最后还要释放连接——挂电话。写信
就没有那么复杂了,地址姓名填好以后直接往邮筒一扔,收信人就能收到。TCP/IP 协议在网络层是无连
接的(数据包只管往网上发,如何传输和到达以及是否到达由网络设备来管理)。而“端口”,是传输层的
内容,是面向连接的。协议里面低于 1024 的端口都有确切的定义,它们对应着因特网上常见的一些服务。
这些常见的服务可以划分为使用 TCP 端口(面向连接如打电话)和使用 UDP 端口(无连接如写信)两种。
网络中可以被命名和寻址的通信端口是操作系统的一种可分配资源。由网络 OSI(开放系统互联参考
模型,Open System Interconnection Reference Model)七层协议可知,传输层与网络层最大的区
别是传输层提供进程通信能力, 网络通信的最终地址不仅包括主机地址,还包括可描述进程的某种标识。
所以 TCP/IP 协议提出的协议端口,可以认为是网络通信进程的一种标识符。
应用程序(调入内存运行后一般称为:进程)通过系统调用与某端口建立连接(binding,绑定)后,
传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都从该端口输出。在 TCP/
IP 协议的实现中,端口操作类似于一般的 I/O 操作,进程获取一个端口,相当于获取本地唯一的 I/O 文件,
可以用一般的读写方式访问。
类似于文件描述符,每个端口都拥有一个叫端口号的整数描述符,用来区别不同的端口。由于 TCP/IP