gpt4 book ai didi

sockets - 套接字编程中的套接字与端口有何不同?

转载 作者:行者123 更新时间:2023-12-01 20:20:04 26 4
gpt4 key购买 nike

我想两者都允许主机到主机协议(protocol)将数据传递到正确的进程。但是,它们有什么不同呢?

最佳答案

网络应用程序(通常)是在套接字 API 之上编写的。在某些方面,套接字是连接两个或多个网络应用程序的网络“管道”的入口点。双方都需要打开一个套接字来创建网络“管道”。套接字本质上是双向的,因此“管道”的两端可以同时向另一端发送数据并从另一端接收数据。两个端点通常位于不同的机器上。显然,没有什么可以阻止我们让它们坐在同一台机器上。

套接字由三个主要参数标识——其中之一是端口号。另外两个是:(a) 机器的 IP 地址(IPv4 或 IPv6)和 (b) 传输协议(protocol)(例如 TCP/UDP)。端口号是网络应用程序的逻辑本地标识点。每个主机对于每个协议(protocol)和每个地址族最多可以有 65,536 个端口;通常,0 到 1024 范围内的端口号是标准端口,为各种应用程序保留。此范围之外的端口通常可用于一般用途。总之,这三个参数对于整个网络中的给定套接字应该是唯一的。因此,您可以在同一台计算机上拥有两个 TCP 套接字应用程序,但为了使它们唯一可访问,它们需要绑定(bind)到不同的端口。有一种方法可以将多个套接字绑定(bind)到同一端口,但该方法用于多播应用程序。

所以,简单的答案是套接字和端口一起工作以允许两个网络应用程序进行通信。它们不是相互竞争的概念。

您可能会发现 Beej 网络指南中的套接字/绑定(bind)部分很有帮助。 https://beej.us/guide/bgnet/html/multi/syscalls.html#socket

关于sockets - 套接字编程中的套接字与端口有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18680898/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com