1
计算机网络技术理论与实践
1.7.2 6.2 端口和Socket

6.2 端口和Socket

在网络中,IP地址用来在整个Internet上唯一标识一台主机,而在每台主机中都会有多个应用进程,每个应用进程是网络中端到端通信连接的端点,这些应用进程需要用到传输层的端口号进行区分和标识。

传输层的端口用一个16bit的整数型标识符来表示,即端口号。端口号跟协议相关,TCP/IP体系中传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互独立。端口号只具有本地意义,即端口号只是为了标识本计算机应用层中的各进程,在互联网中不同计算机的相同端口号是没有联系的。

端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用进程通过系统调用与某端口建立绑定关系(Binding)后,传输层传给该端口的数据都被相应的应用进程所接收,相应进程发给传输层的数据也都通过该端口输出。

在整个Internet上要想唯一的标识一个应用进程,就需要用到IP地址+端口号来标识,这就是Socket,也称为套接字、套接口标识。

Socket与端口和IP地址的关系如图6-1所示。

img166

图6-1 Socket结构示意图

Socket包括了IP地址(32bit)和端口号(16bit),其中IP地址用来在整个Internet网络上唯一标识一台主机,而端口号用来在这台主机上唯一标识一个应用进程,这样一个Socket就可以在整个Internet上唯一标识一个应用进程。