草庐IT

java - 在 tcp 连接中... Java(数据包)

当我有一个使用数据包的TCP连接时..(服务器/客户端应用程序)我是否应该继续来回发送数据包(在服务器和客户端之间)只是为了查看连接是否有效或是否不必要?就像一个KeepAlive数据包..另一个问题是,如果我通过流发送一个int(DataOutputStream)而不是发送一个Packet对象(ObjectOutputStream),它是否会产生巨大的差异(性能方面),它平均有5个字段,至少3个方法和一些setter和getter?它会在性能方面产生如此大的差异吗? 最佳答案 是的。这称为心跳。这有助于心跳接收者检测连接是否有问题

ruby - 通过 Internet 发送 TCP 数据包(使用 Ruby)

我正在尝试学习如何通过Internet将TCP数据包发送到另一台计算机。也就是说,计算机1通过Internet将数据发送到计算机2(使用TCP)。假设两台计算机都正确设置了端口转发,我将如何在两台计算机之间建立TCP连接(最好使用Ruby)?我在我的LAN上运行它,但是当我通过Internet尝试时,它似乎不起作用。我的尝试(基本上):计算机1:server=TCPServer.new32500client=server.accept计算机2:TCPSocket.newPUBLIC_IP_OF_COMPUTER_1,32500问题是TCPSocket永远不会连接到TCPServer。我

tcp - Microchip TCP/IP 堆栈 PIC18F 无效数据包序列号/确认号

亲爱的StackOverflowers,我正在开展一个项目,使用Microchip的TCP/IP堆栈在我的自定义(和测试)板上的PIC18F87J60上实现一些东西。作为测试,我编写了一些代码来设置连接,将其保持x秒,然后优雅地关闭它。我已经将它实现为一个有限状态机。我还没有添加发送和接收数据。但是,我的程序无法建立连接。使用Wireshark我注意到我的设备通过DHCP成功接收到IP地址并且ARP解析正确完成。我现在省略了DNS,因为这也会出错,但我稍后会解决这个问题。我还看到第一个SYN数据包由我的设备发送并由服务器回复,但3次握手中的3e步骤出错了。确认号只是一个随机数,因此服务

sockets - 当其中一个数据包被丢弃时,TCP 协议(protocol)将如何延迟数据包传输?

如果客户端套接字发送:数据包A-丢弃数据包B数据包C服务器套接字是否会接收并排队B和C,然后当接收到A时,B和C将立即传递给服务器应用程序?或者B和C也会被反感?或者在A交付之前根本不会发送任何数据包? 最佳答案 TCP是一种复杂的协议(protocol),它会根据当前网络状态更改许多参数,有关该主题的书籍很多。回答您的问题最清楚的方法是说TCP通常以字节为单位维护给定的发送“窗口”大小。这是在成功返回先前发送的确认之前将发送的数据量。在旧的TCP规范中,在该窗口内丢弃的数据包将导致从丢弃的数据包开始完全重新发送数据。为了解决这个明

python - 使用 python 创建用于发送 TCP 和 UDP 数据包的客户端和服务器程序

如果用户询问他是否愿意通过TCP或UDP发送,我必须使用python编写客户端和服务器程序。服务器只是发回数据,因为我想知道它需要多长时间(RTT)。服务器如何检测客户端发送的是TCP还是UPD数据?这仅用于教育目的,不能用于生产。到目前为止,我有以下代码:客户端.pyimportsocketnumerofpackets=int(raw_input("Howmanypacketsshouldbesent?\n>"))connectiontype=raw_input("TCPorUDP?\n>")hostname='localhost'i=0ifconnectiontype!="TCP"

networking - 将网络接口(interface)卡接收到的所有数据包推送到 TCP/IP 堆栈

是否可以将NIC接收到的所有数据包推送到TCP/IP堆栈,即使它们的以太网地址与我的以太网地址不匹配?换句话说,我想在我的NIC上处理所有传入的数据包。谁能提到更改网络接口(interface)驱动程序代码的可能场景?我如何检查驱动程序代码的操作? 最佳答案 在典型的系统中,这已经发生了。也就是说,您所要做的就是将接口(interface)置于混杂模式。然后驱动程序将它接收到的所有数据包发送到TCP/IP堆栈。检查任何普通的网络驱动程序,您会发现在处理接收到的数据包时,不会将MAC(或以太网)地址与设备的MAC地址进行比较。大大简化

linux - 如何拦截和修改某个进程发送和接收的tcp数据包?

假设有一个进程在我的控制下(我可以运行它并向它发送命令)发送和接收tcp数据包(可能是一些其他类型的协议(protocol))我怎样才能拦截它的传出数据包并改变它们的有效载荷?在另一个问题(Intercepting/ReroutingTCPSYNpacketstoC++programinlinux)中建议将Netfilter作为解决方案对于传入的数据包,我只需要读取它们,这样问题就可以用wireshark或类似的东西解决。根据我的特定用例(特定的已知和受控过程),我试图了解是否有更好的方法。最终目标是在进程发送数据包后立即有效地更改其有效负载,并监控其余数据包。谢谢

c - 如何将数据包从 NF_INET_PRE_ROUTING 移动到 NF_INET_POST_ROUTING?

我有一个使用netfilterHook的内核模块。目标是将数据包转发到另一个目的地。正如我所看到的那样,来自外部的设计数据包daddr设置为我的服务器IP通过NF_INET_PRE_ROUTING,然后假设为本地应用程序排队。在NF_INET_PRE_ROUTING上,我更改特定数据包(检测我自己的协议(protocol))并将daddr替换为远程服务器IP,将saddr替换为我的服务器IP。我想从内核模块本身内部进行,但找不到将现有数据包移动到另一个路由点的方法(NF_INET_FORWARD或NF_INET_LOCAL_OUT甚至NF_INET_POST_ROUTING)或创建新数

Delphi 将数据包附加到 TBytes,验证并读取

我有这个PCB用ATMEL-microcontroller通过TCP通信LantronixXport.它使用30字节长的asci字符串发送一些继电器和传感器的状态报告,格式如下:400000000000000000414243303031303030303030303030303030303339|||||byte[0]=$40||||||-byte[11]=$43//'C'Always||---byte[10]=$42//'B'Always|-----byte[9]=$41//'A'Alwaysbyte[1..8]=booleanvalues:=Bool(byte[x]);byte[

tcp - Erlang get_tcp 数据包接收

我正在编写按照协议(protocol)运行的erlangtcp-server。每个数据包正好有4个字节大小。有一个特例数据包->.此数据包表明,服务器必须读取下一个PayloadLength字节的原始数据。当然,我可以接收原始数据流并在erlang代码中解析此协议(protocol)。但是我想知道,有没有办法使用内置的erlang包打包?当我的数据包以其长度开头时,我可以说[{packet,HeaderLength}]。有什么办法可以强制erlang自动将接收到的数据按4字节的chuks打包吗?UPD:我打算使用{active,once}模式。我也可以使用gen_tcp:recv(So