ServerSocket 是否接受任意端口上的返回套接字?

2023-12-27

关于 java 中的服务器套接字,我见过许多与此类似的答案:“假设您有一台服务器,其端口 5000 上有服务器套接字。客户端 A 和客户端 B 将连接到我们的服务器。

客户端 A 在端口 5000 上向服务器发送请求。客户端 A 端的端口由操作系统选择。通常,操作系统会选择下一个可用的端口。此搜索的起点是以前使用的端口号 + 1(因此,例如,如果操作系统最近发生在我们的端口 45546 上,则操作系统将尝试 45547)。

假设不存在连接问题,服务器会收到客户端 A 在端口 5000 上进行连接的请求。然后服务器会打开自己的下一个可用端口,并将其发送给客户端。在这里,客户端 A 连接到新端口,服务器现在再次拥有可用的端口 5000。”

我在 stackoverflow 上的多个问题中看到了类似的答案,这些问题涉及如何在accept()返回的套接字中使用与 ServerSocket 正在侦听的端口不同的端口。我一直认为 TCP 是由四组信息来识别的:

客户端 IP :客户端端口和服务器 IP :服务器端口 -> 协议(以区分 TCP 和 UDP)

那么为什么accept()需要返回绑定到不同端口的套​​接字呢?每个标头中发送的四重信息是否足以区分来自不同计算机的同一服务器端口的多个连接,而无需使用服务器计算机上的不同端口进行通信?


然后,服务器打开自己的下一个可用端口,并将其发送给客户端。

不。它创建一个新的套接字same本地端口号。没有第二端口号被分配或发送给客户端。服务器对连接请求的响应的 SYN/ACK 段不包含第二个端口号。

在这里,客户端 A 连接到新端口,

否。客户端确认 SYN/ACK 数据包,并且客户端连接到original确认 SYN/ACK 后,从那时起端口。没有第二个连接。

现在服务器的端口 5000 再次可用。”

一直都是这样。

我在 stackoverflow 上的多个问题中看到了类似的答案,这些问题涉及如何在accept()返回的套接字中使用与 ServerSocket 正在侦听的端口不同的端口。

任何这样的答案都是不正确的,应该“以极大的偏见”否决并进行负面评论。 TCP 握手定义在RFC 793 http://www.ietf.org/rfc/rfc793.txt并且没有指定第二端口和第二连接消息的分配和交换。只有三条消息,这甚至不足以发生这种情况。

那么为什么accept()需要返回绑定到不同端口的套​​接字呢?

事实并非如此。

每个标头中发送的四重信息是否足以区分来自不同计算机的同一服务器端口的多个连接,而无需使用服务器计算机上的不同端口进行通信?

Yes.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ServerSocket 是否接受任意端口上的返回套接字? 的相关文章

  • Spring Batch 多线程 - 如何使每个线程读取唯一的记录?

    这个问题在很多论坛上都被问过很多次了 但我没有看到适合我的答案 我正在尝试在我的 Spring Batch 实现中实现多线程步骤 有一个包含 100k 条记录的临时表 想要在 10 个线程中处理它 每个线程的提交间隔为 300 因此在任何时
  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • 如何在 javadoc 中使用“<”和“>”而不进行格式化?

    如果我写
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • 编译器抱怨“缺少返回语句”,即使不可能达到缺少返回语句的条件

    在下面的方法中 编译器抱怨缺少退货声明即使该方法只有一条路径 并且它包含一个return陈述 抑制错误需要另一个return陈述 public int foo if true return 5 鉴于Java编译器可以识别无限循环 https
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List

随机推荐