tcp连接时为什么从客户端发了两个连接

在电脑上写了个网页,通过局域网用手机访问,然后用wireshack抓包
然后发现手机两个端口与服务器都建立了连接,这是为什么啊

img

而且还有一个不知道从哪来的连接,也没看到有tcp连接的建立,就突然发送了数据

img

可能是因为网页中包含了多个资源,例如图片、CSS文件、JavaScript文件等。当手机访问网页时,需要下载这些资源,因此会建立多个TCP连接,以便同时下载多个资源,提高下载速度。每个TCP连接都有自己的端口号,因此在Wireshark中可以看到多个端口与服务器建立了连接。

在Wireshark中开启下TCP流追踪功能,分析下完整过程看看

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:

在TCP连接建立的过程中,客户端和服务器端都需要发送SYN(同步)和ACK(确认)数据包来进行连接的建立。这个过程被称为三次握手。一般情况下,客户端发送SYN数据包,服务器端接收到后发送ACK数据包回应,最后客户端再发送ACK数据包确认连接建立。这样才能保证连接的可靠性和正确性。

在你的情况下,从wireshark抓包数据来看,第一个连接是从客户端(192.168.1.7)向服务器(192.168.1.6)发送SYN数据包,服务器回应ACK数据包,然后客户端再发送ACK数据包确认连接建立。这是TCP连接正常建立的过程。

然而,第二个连接的建立过程有些不同。从wireshark的抓包数据来看,这是一个UDP连接,而不是TCP连接。UDP是无连接的协议,不需要建立连接,也不需要进行三次握手。因此,UDP连接可以直接发送数据,而不需要等待连接建立完成。这个UDP连接是从客户端的49169端口向服务器的1900端口发送的。

至于你提到的还有一个不知道从哪来的连接,从wireshark的抓包数据来看,这是一个TCP连接,但是没有看到三次握手的过程。这个连接可能是由于网络中的其他设备或程序发送的,也可能是由于网络嗅探器自身的行为导致的。需要进一步排查才能确定具体原因。

总之,在TCP连接建立的过程中,客户端和服务器端都需要发送SYN和ACK数据包来进行连接的建立。如果你发现客户端发送了两个连接,一个是正常的TCP连接,另一个是UDP连接,那么很可能是有其他设备或程序在网络中进行了相应的操作。需要进一步排查确定原因。

如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7492864
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:TCP协议可靠性是如何保证之滑动窗口,超时重发,序列号确认应答信号
  • 除此之外, 这篇博客: TCP的慢启动、拥塞避免、重传、快恢复乱七八糟总是记不清?11个连环问让你一次性打通任督二脉中的 Q: 上面提到了超时, 那么TCP客户端是怎么判断报文发送超时的呢? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • A:每次发送数据包的时候, 都会有一个相应的计时器,一旦超过 RTO(超时时间) 而没有收到 ACK, TCP就会重发该数据包。

    没收到 ACK 的数据包都会存在重传缓冲区里,等到 ACK 后,就从缓冲区里删除。

  • 以下回答由chatgpt基于相关博客总结生成:

    对于问题描述,可能存在以下几种情况导致手机端和服务器端建立了两条连接:

    1. 可能存在网络延迟或丢包等问题,导致正常的TCP三次握手失败,或者某些报文丢失,从而需要重新尝试建立连接。这时可能会出现多次握手情况,导致建立的多条连接。

    解决方案:可以通过对网络进行优化,避免网络丢包和延迟等问题的发生。也可以通过监控网络状态,及时检测并处理连接异常的情况,避免重复建立连接。

    1. 可能存在客户端或服务器端的代码逻辑错误,导致重复建立连接。

    解决方案:可以通过对代码进行调试和排查,查找并修复代码问题,避免重复建立连接的情况出现。

    另外关于突然发送数据的连接,可能存在以下情况:

    1. 可能是存在已经建立好的连接,但是在应用层协议中定义了不需要进行握手的情况,从而直接发送数据。

    解决方案:可以通过了解应用层协议的规范和定义,查找并修复问题。

    1. 可能是黑客或攻击者对应用程序的恶意攻击,导致突然发送数据。

    解决方案:可以通过加强系统安全防护措施,防范黑客和攻击者的攻击行为。同时可以考虑使用加密等技术保护数据传输的安全性。如果发现异常连接,可以及时断开连接并进行安全检查。

    总之,解决问题需要根据具体情况进行排查,加强网络管理和安全防护,以保障系统的正常运行和数据的安全性。

先检查下是不是自己过滤的有问题,105是你的ip,那112呢?112和你的服务器是同一个服务器ip地址吗?

img


看着112像是走的局域网,247的是走的公网111.30.170.247地址,两个不一样,所以怀疑你过滤有问题,你抓包如果抓走局域网的,就过滤下局域网的,

如果你确认你过滤没有问题,是两个连接,那大概率是你的代码问题了,是否哪个协议走的外网,哪个又走的是局域网了。

引用chatGPT作答,TCP连接是一种可靠的传输协议,它需要经历三次握手(SYN,SYN-ACK,ACK)才能建立连接。因此,如果客户端发起了两个连接请求,那么在服务端就会建立两个独立的TCP连接。这可能是由于网络问题、软件问题或其他原因导致的。

当您通过局域网用手机访问电脑上的网页时,手机会向服务器发起TCP连接。如果您使用的是不同的应用程序或浏览器,可能会发起多个TCP连接。这些连接可能使用不同的端口,因此在Wireshark抓包时,您可能会看到多个TCP连接建立的情况。

关于突然发送数据的情况,可能是由于网络中的其他应用程序或设备发送的数据。这些数据可能使用其他协议,如UDP或ICMP,因此您在Wireshark抓包时可能无法看到TCP连接的建立。如果您对这些数据源感到好奇,可以尝试使用Wireshark来分析数据包,了解它们的来源和目的地。

网页请求是http,8080估计是代理

TCP 连接时候的三次握手

三次握手​​​​​​​原理:

第1次握手:客户端发送一个带有SYN(synchronize)标志的数据包给服务端;

第2次握手:服务端接收成功后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了;

第3次握手:客户端再回传一个带有ACK标志的数据包,表示我知道了,握手结束。

其中:SYN标志位数置1,表示建立TCP连接;ACK标志表示验证字段。