其他答案是正确的,但有点不完整 .
IP(又名"INET")套接字"connection"(即两个进程之间的通信,可能在不同的机器上)由5元组定义:协议,源地址,源端口,目的地址,目的端口 . 您可以看到,这不仅限于TCP等有状态连接 .
这意味着您可以将不同的进程绑定到该5元组的任何唯一实例 . 因为“协议”(例如TCP和UDP)是区分因素的一部分,所以每个都可以具有不同的过程 .
从理论上讲,如果它们绑定到不同的接口(网卡,环回等),你可以将不同的服务绑定到同一个TCP端口,尽管我从未尝试过 .
但是,标准做法是始终在同一端口号上使用相同的服务 . 如果同时支持UDP和TCP,则它们只是与同一服务通信的不同方式 . 例如,DNS使用端口53上的UDP进行查找,因为它们是小请求,并且比创建TCP连接更快,但DNS也在端口53上使用TCP进行“转移”,这些转移很少并且可能包含大量数据 .
最后,完全准确,它不一定是5元组 . IP使用"protocol"传递到下一层,例如TCP和UDP,尽管还有其他层 . TCP和UDP分别根据剩余的4个项目单独区分连接 . 可以在IP之上创建使用完全不同(可能是无端口)区分机制的其他协议 .
然后有不同的套接字“域”,例如“unix”套接字域,它与“inet”完全不同,并使用文件系统进行寻址 .