草庐IT

SYN_RECV

全部标签

networking - 发送 SYN 并收到 SYN-ACK 后发送到远程主机的 RST 请求

我目前正在开发TCP/IP堆栈;我在Linux下运行,我使用libnet(用于传输)和libpcap(用于捕获以太网帧)来模拟链路层。我已经开始研究TCP,更具体地说是主动打开连接。基本上,我发送一个SYN数据包,远程主机以SYN-ACK响应,我必须通过ACK确认。问题是在我收到SYN-ACK后,RST数据包立即发送到服务器,可能是由内核发送的,而不是我自己的程序发送的。我认为libpcap捕获并由我的网络堆栈分析的数据包也被内核捕获,内核不明白为什么他从他从未尝试连接的主机收到SYN-ACK数据包,因此发送RST以取消连接。所以基本上,连接在还没有建立时就被重置了,这让我很难尝试其他

PHP socket_recv 十六进制为 20 字节但打印为空

我正在尝试与秤通信并发送数据。我正在使用wireshark来捕获所有数据。在wireshark上,当我发送我的代码时,您可以看到返回数据下方的比例,但我无法使用socket_recv在php上返回相同的数据。Wireshark收到的数据:10:01:00:00:00:00:00:14:01:00:00:00:00:01:00:01:00:00:00:00我的php代码结果:SocketcreatedConnectionestablishedMessagesendsuccessful20($buf总字节数)如您所见,$buf不是空的,它只是不打印它。我的php代码

tcp - 如何阻止 Windows 对无法识别的 SYN-ACK 数据包进行 TCP 重置?

在没有来自主机的初步SYN的情况下收到SYN-ACK时,是否有办法阻止Windows主机发送RST数据包?是否有一个bool注册表项?我不喜欢使用外部工具,但如果这是唯一的解决方案,请提及。但是,就我的目的而言,如果没有其他方法,可以仅针对特定IP地址、网络接口(interface)甚至特定端口禁用该机制。我在WindowsServer2008R2上。 最佳答案 SynattackprotectiononWindowsVista,Windows2008,Windows7,Windows2008R2,Windows8/8.1,Wind

Linux TCP 接受无 SYN|ACK

我正在尝试编写一个在Linux上运行的TCP透明代理。我想在收到传入连接后,启动相应的传出连接,但仅在传出连接成功时才接受(SYN|ACK)传入连接。TCP_DEFERRED_ACCEPT没有按照我的意愿行事——它总是发送SYN|ACK。问题是:如何使用Linux套接字API接受TCP连接,但延迟SYN|ACK? 最佳答案 您可以在Linux上做到这一点,但不能通过套接字API。您将使用NFQUEUE目标,它允许您将一些数据包重定向到用户空间并从您的程序中决定它们的命运。显然,您仍然需要在用户空间中解析数据包,但是搜索一些TCP标志

node.js - nginx tcp SYN 数据包未收到 ACK

我的服务器设置是nginx直接连接到node.js服务器(nginx和node.js在同一个Node中,nginx将请求转发到Node:127.0.0.1:8000)。症状是有时nginx日志中有一些504日志。并且node.js日志没有显示任何收到请求的迹象。然后我使用iptables启用了tcp日志,它将所有tcp数据包记录到端口8000。检查tcp日志后,nginx似乎试图与node.js服务器建立tcp连接,但它从未成功。它一直在重试发送SYN数据包,然后被nginx超时。这是一个示例(tcp+nginx日志):13:44:44sp:48103dp:8000SYN13:44:4

python - SYN 数据包没有得到回复(Python)原始套接字

每当我使用我的程序发送SYN数据包时,我都没有收到回复。我知道服务器正在工作,因为我可以使用普通套接字connect()方法连接到它,但是当我尝试使用RAW套接字来做我没有得到回复,甚至没有RST。根据Wireshark,这是我的数据包TransmissionControlProtocol,SrcPort:5173(5173),DstPort:5005n(5005),Seq:0,Len:0SourcePort:5173DestinationPort:5005[Streamindex:15][TCPSegmentLen:0]Sequencenumber:0(relativesequenc

c++ - socket Recv api 返回意外值

这是客户端代码。服务器连续发送数据。在这里,我正在查看13(header长度​​)字节的消息,获取在消息本身中编码的数据大小,并创建MESSAGE_HEADER_LENGTH+DATA-LENGTH的缓冲区大小。获得总消息大小后,我使用第二个recv从套接字读取数据。在初始连接设置和服务器与客户端之间的问候消息交换期间,它工作正常但是当服务器发送连续流时说(当我们在客户端服务器上单击按钮发送固定长度的连续消息,间隔为5000毫秒)recv无法正常工作并且recv缓冲区接收原始消息,其前面是垃圾或某个时间空字符串。#defineMESSAGE_HEADER_LENGTH13...whil

c - Recv 环形缓冲区与简单缓冲区

我正在开发客户端-服务器应用程序。我的应用程序使用可变大小的数据包,每个数据包都有一个header和可变长度的有效负载。我的难题是在执行recv时处理数据包的最佳方法是什么。我遇到的大多数教程都建议使用环形缓冲区,但据我所知,使用大小是您可以处理的最大数据包大小两倍的缓冲区会更有效。如果我使用环形缓冲区,我需要一个额外的缓冲区用于接收,然后我需要将缓冲区复制到环形缓冲区中,这意味着我需要执行一两个memcpys以将缓冲区插入环形缓冲区中如果我使用单缓冲区方法,我只需要一个缓冲区,我可以将其传递给recv调用和一个memmove调用,以便在我得到一个完整的数据包并且仍然有数据属于另一个数

tcp - recv() 函数不会在 python 中返回消息

我是使用python进行TCP/IP连接的新手我有这个简单的代码:importsockets=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect(("www.google.com",80))s.send("GET/\n")while1:received=s.recv(1024)ifreceived:printreceived但是当我运行它时,它会永远运行并且不会给我任何结果!!!你能帮帮我吗?谢谢 最佳答案 关注HTTPProtocols.send("GET/\n")这

python - TCP 非阻塞 socket.connect() 和 socket.recv() 错误问题。 (Python 或 C)

我正在用Python脚本对一个简单的HTTP重定向服务器进行一些压力测试。该脚本设置了带有非阻塞套接字的epoll(边缘触发模式)。但是我观察到一些我不太明白的东西,1)epoll可以在connect()过程中得到ECONNREFUSED和ETIMEOUTerrno。它们不是都表示远程服务器无法接受连接吗?它们有何不同,客户如何区分?2)有时当epoll通知EPOLLIN时,socket.recv()返回空字符串而不会抛出任何异常(或C中的errno),我可以继续读取套接字而不会收到任何异常或错误,它总是返回空字符串。这是为什么?谢谢, 最佳答案