这是我所在组织的一位软件工程师提出的问题。我感兴趣的是最广义的定义。


当前回答

一般来说,你会得到很多理论,但区分这两个概念的最简单方法之一是:

为了获得服务,你需要一个服务号码。这个服务号码称为端口。就这么简单。

例如,HTTP as a service运行在端口80上。

现在,许多人都可以请求该服务,并建立了来自客户机-服务器的连接。会有很多联系。每个连接代表一个客户端。为了维护每个连接,服务器为每个连接创建一个套接字来维护其客户端。

其他回答

套接字= IP地址+端口(数字地址) 它们一起标识机器上网络连接的端点。(我刚刚是不是网络基础课不及格?)

端口表示IP网络协议的TCP和UDP传输中的通信端点。套接字是通信端点的软件抽象,通常用于这些协议的实现(套接字API)。另一种实现是XTI/TLI API。

参见:

史蒂文斯,W. R. 1998, UNIX网络编程:网络api:套接字和XTI;第一卷,普伦蒂斯大厅。 Stevens, W. R., 1994, TCP/IP图解,第1卷:协议,Addison-Wesley。

套接字由三部分组成:

IP地址 传输协议 端口号

端口是1到65535之间的数字,表示设备中的逻辑门。 客户端和服务器之间的每个连接都需要一个惟一的套接字。

例如:

1030为端口。 (10.1.1.2, TCP,端口1030)是一个套接字。

端口和插座可以比作银行分行。

“银行”的门牌号与IP地址类似。 银行有不同的部分,比如:

储蓄帐务部 个人贷款部 房屋贷款部 投诉部门

因此,1(储蓄账户部)、2(个人贷款部)、3(住房贷款部)和4(申诉部)是端口。

现在让我们假设你要开一个储蓄账户,你去了银行(IP地址),然后你去了“储蓄账户部门”(端口号1),然后你遇到了在“储蓄账户部门”工作的一名员工。让我们称他为SAVINGACCOUNT_EMPLOYEE1,用于开户。

SAVINGACCOUNT_EMPLOYEE1是套接字描述符,因此可能存在 SAVINGACCOUNT_EMPLOYEE1到SAVINGACCOUNT_EMPLOYEEN。这些都是套接字描述符。

同样地,其他部门将有员工在他们之下工作,他们类似于插座。

它们是来自两个不同领域的术语:“端口”是TCP/IP网络的概念,“套接字”是API(编程)的东西。“套接字”是通过将端口和主机名或网络适配器组合成一个数据结构(可以用来发送或接收数据)而形成的(在代码中)。