gpt4 book ai didi

java - TCP连接建立

转载 作者:可可西里 更新时间:2023-11-01 02:34:21 24 4
gpt4 key购买 nike

我正在尝试通过 java 程序连接到远程主机:

socket = new java.net.Socket(host,port);     

我收到以下异常:

java.net.ConnectException: Connection refused: connect

跟踪我的电脑和远程主机之间的IP包,我看到我的电脑发送了3次SYN包,收到了3次[RST,ACK]包。

为什么我的电脑发送了三个 SYN 数据包,尽管只有一个连接建立?

是操作系统的TCP/IP协议(protocol)栈的问题吗?

或者是由于 Java 对 java.net.Socket 的实现?类(class)?

最佳答案

SYN 的重传可能是为了遵守RFC793。 :

The TCP must recover from data that is damaged, lost, duplicated, or delivered out of order by the internet communication system. This is achieved by assigning a sequence number to each octet transmitted, and requiring a positive acknowledgment (ACK) from the receiving TCP. If the ACK is not received within a timeout interval, the data is retransmitted.

重试 SYN 是有道理的,因为无论出于何种原因,ACK 都可能丢失。重新传输的次数和超时将取决于 TCP 实现而不是 Java。

关于java - TCP连接建立,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7970734/

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