草庐IT

java - 更改 tcp/ip 数据包 c++ 或 java

情况是这样的。网络中有服务器和客户端。他们这样交流:客户端发送对某些功能的请求。服务器向客户端发送函数参数。客户端尝试执行功能并向服务器发送应答。服务器向客户端发送它应该显示的数据。但有时客户端无法执行功能并发送错误。我想捕获第2步中的所有数据包,分析它们(我已经有了相关工具),防止其中一些数据包到达客户端,用我的程序处理它们并像第3步那样形成数据包。这必须在客户端完成边。我既不能访问服务器也不能访问客户端。所以,问题是:在C++或Java中是否有用于更改、注入(inject)和删除tcp/ip数据包的库?该解决方案应该适用于Win和Linux系统。另外,您是否有更好的想法来扩展客户端

c++ - 如何在异步 boost 中只读取一个数据包数据?

我有一个tcp客户端需要通过tcp读取数据但是我每次需要读取一个tcp包数据。我使用这段代码:socket_[socket_index]->async_receive(boost::asio::buffer(buf,max_size),boost::bind(&pipe::handle_read,shared_from_this(),boost::asio::placeholders::error,socket_index,boost::asio::placeholders::bytes_transferred));但有时我读取了多个数据包。我需要如何将其更改为只读取一个数据包数据?

tcp - 如何使用 libpcap 在原始数据包的 TCP header 中打印标志

sniffex.c是一个基于libpcap的程序,用于嗅探和显示一些数据包信息。我如何修改它以便打印TCP标志的值-urg、ack、psh、rst、syn和fin?请帮助.. 最佳答案 如果你在使用sniff_tcp的地方检查这段代码,确保打印出来th_flags此结构的成员,其中包含您需要的标志。/*TCPheader*/structsniff_tcp{u_shortth_sport;/*sourceport*/u_shortth_dport;/*destinationport*/tcp_seqth_seq;/*sequencen

c++ - TCP 数据包通常重新排序吗?

我正在重新实现一个旧的网络层库,但这次使用的是boostasio。我们的软件是与第3方软件进行tcpip对话。几条消息在双方都表现得很好,但有一种情况我误解了:第3方一个接一个地发送两条消息(消息A和B)(真正的短时间)但我在tcp-packet1中只收到消息A的一部分,消息A的结尾和整个消息B在tcp-packet2中。(我用wireshark嗅探)。我没有想到这种情况,我想知道它是否与tcp常见,我的层是否应该适应这种情况-或者我应该告诉第3方检查他们在他们这边做了什么,以便我在不同的数据包中收到了两条消息。 最佳答案 数据包可

tcp - TCP/IP 是否防止数据包重播?

TCP/IP是否会阻止同一数据包的多个副本到达目的地?还是由端点决定在它上面层幂等逻辑?如果可能,请引用TCP/IP规范中的特定段落。 最佳答案 从重复数据包中恢复是TCP堆栈的工作:TheTCPmustrecoverfromdatathatisdamaged,lost,duplicated,ordeliveredoutoforderbytheinternetcommunicationsystem.Thisisachievedbyassigningasequencenumbertoeachoctettransmitted,andre

linux - 如何防止 Linux 内核响应传入的 TCP 数据包?

对于我的应用程序,我需要拦截某些TCP/IP数据包并通过自定义通信链路(不是以太网)将它们路由到不同的设备。我需要所有的TCP控制数据包和完整的header。我已经弄清楚如何通过socket(PF_PACKET,SOCK_RAW,htons(ETH_P_IP));使用原始套接字获取这些数据有兴趣。但是,Linux也会看到这些数据包。默认情况下,当它接收到一个它不知道的TCP端口号的数据包时,它会发送一个RST。这不好,因为我打算稍后自己发回回复。如果我使用socket(PF_INET,SOCK_STREAM,0);和listen()在同一个端口上打开第二个“正常”套接字,Linux然后

networking - 网络流量嗅探时有什么办法可以过滤Hadoop数据包吗?

我的目标是识别与Hadoop集群相关的网络数据包,因为在我使用的集群中还有其他服务产生与Hadoop无关的网络流量。我假设我的Hadoop集群唯一使用HDFS和MapReduce,而不是其他应用程序,如HBase、Pig、Hive等...有没有办法过滤Hadoop数据包?例如,如果Hadoop使用固定源或目标端口(至少一个,源或目标)更新:我正在使用ApacheHadoop1.0.3和libpcap来嗅探数据包 最佳答案 我不确定您使用的是哪个Hadoop发行版,或者哪个数据包嗅探器,但您应该能够在这里采用几种不同的方法。假设您正在

c# - 在 C# 中使用 IP 协议(protocol)上的原始套接字读取传入数据包

我正在尝试在启用header的原始套接字上读取传入数据包。查看其他项目,例如CodeProject上的MJsniffer,我已经能够创建自己的代码来读取我想要的所有内容。问题:我只检索即将发布的信息。这是我初始化原始套接字的代码,此时处理代码无关紧要..//ResolvethehostnameorIPaddresstoamIPHostEntryinstanceIPHostEntryhIPHostEntry=Dns.GetHostEntry(Dns.GetHostName());//InitializeanewinstanceoftheSocketclass.SockethSocket=

Java 邮件 API 生成分段 IP 数据包,避免 EHLO 到 SMTP

我们目前在Tomcat7容器中运行的JavaMail应用程序遇到了一个相当奇怪的问题。JavaMailAPI以经典的方式使用,并不太花哨(只发送电子邮件通知,没有附件等)。在测试环境中,此代码成功将电子邮件发送到MSExchangeServer。该应用程序在XenHypervisor上运行,guest是Windows2008R2,Xen和Windows版本对于测试和生产是相同的。我们在JDK7u17(最新,昨天下载)上运行。与SMTP服务器的通信在EHLO/HELO阶段中断javax.mail.MessagingException:向SMTP服务器发送HELO命令失败然后我们尝试使用b

tcp - tcp 程序在收到 RST 或 FIN 后被动关闭 tcp 连接之前是否会检查丢失的数据包

如果A和B之间有tcp连接,发送一些数据包,然后发送TCPRST(或TCPFIN/ACK)以关闭连接,让我说?PKT1,PKT2,PKT3,TCP_RST或PKT1,PKT2,PKT3,TCP_FIN/ACK但是数据包到达是乱序的PKT1,TCP_RST(orTCP_FIN/ACK),PKT2,PKT3那B会怎么react?根据TCP_RST和TCP_FIN/ACK的序号,B知道有一些数据包丢失(PKT2和PKT3),B在关闭连接之前会等待PKT2和PKT3,或者B在收到TCP_RST(或TCP_FIN/ACK)时立即关闭连接?谢谢 最佳答案