草庐IT

p_adts_header

全部标签

java - 使用 Java 套接字读取 IP 层 header

有没有办法(在Java中)使用TCP或UDP套接字读取IP层header(我对src和dstIP感兴趣)?我知道可以使用pcap(数据包捕获),但我没有找到使用套接字的方法。这背后的原因是什么? 最佳答案 在操作系统层面,你需要rawsockets访问IP层header。但幸运的是,纯Java中不存在原始套接字,因此您需要native代码来进行相关的系统调用。有些Java库使用JNI组件进行native调用。一个例子(我过去曾成功使用过)是Rocksaw. 关于java-使用Java套接

java - 哪些库可用于解析 IP header 字节的 Java?

在我的项目中,我们编写自己的IPheader解析代码已有一段时间了。我开始怀疑我们的时间是否可以更好地花在其他地方。谷歌搜索没有产生太多用处。基本上,我正在寻找的是一个第三方库,它能够从存储在字节数组中的IP数据包header中解析出所有有意义的信息。有人告诉我那里有一个JavaWireshark库,它使用JNI来包装libpcap。有谁知道纯Java解决方案?商业或开源解决方案都可以接受。 最佳答案 关于您的libpcap问题,请查看WinPCaplinkspage你会发现jNetPcap

windows - 修改所有传出数据包的 TCP/IP header 中的目标端口

使用SSH隧道将地址为server1:port1的流量路由到server2:port2。现在,问题是我想将所有TCP/IP数据包从桌面重定向到server1:port1到server2:port2。在Windows上使用“hosts”文件,我将server1的ip映射为server2的ipaddress。[本地DNS映射]http://server2:port2//给出所需的页面。http://server1:port2//给出所需的页面,因为服务器1的ip被映射为服务器2的ip。是否可以重写所有发往某个主机的TCP/IP数据包的目标端口?[Transformdestinationpo

linux - header 中存在 TCP 标志

在我的ubuntu9.04上/usr/include/netinet/tcp.h定义了tcpheader如下structtcphdr{u_int16_tsource;u_int16_tdest;u_int32_tseq;u_int32_tack_seq;#if__BYTE_ORDER==__LITTLE_ENDIANu_int16_tres1:4;u_int16_tdoff:4;u_int16_tfin:1;u_int16_tsyn:1;u_int16_trst:1;u_int16_tpsh:1;u_int16_tack:1;u_int16_turg:1;u_int16_tres2:2

tcp - 如何处理 Erlang 中 TCP 流中数据包的错误长度 header ?

我正在使用gen_tcp在Erlang中通过TCP接收消息。根据{packet,4}选项的指定,流通过使用4字节长度的header分成数据包。这就是我调用gen_tcp:listen/2的方式:gen_tcp:listen(Port,[binary,inet,{active,once},{packet,4}]).如您所见,我使用了{active,once}选项,这样我就可以从进程邮箱中获取我的数据包,而不会淹没它。只要长度header正确,这就可以正常工作。如果不是,任何事情都可能发生。所以我想以某种方式处理错误数据包的可能性。这有点棘手,因为我实际上是在处理流。忽略错误的数据包是可以

c - libpcap - 数据包 ip header 长度为零字节,带有环回 tcp 请求

我正在尝试使用libpcap查看TCP负载信息。为此,我需要找到负载在内存中的位置。我正在使用这个ProgrammingWithPcap指南找出请求负载的位置。当嗅探来自与服务(环回适配器)位于同一台机器上的客户端的数据包时,IPheader长度为0。我无法成功找到请求负载的位置。收听环回适配器时是否会出现这种情况?我正在使用MacOSx10.8系统监听适配器“lo0”。这是我正在尝试的://thiscallbackiscalledwhenapacketisfoundvoidgot_packet(u_char*args,conststructpcap_pkthdr*header,con

tcp - 如何从它的 TCP header 中检测 Telegram 协议(protocol)?

我有一些客户端连接到我的服务器。我想知道他们使用telegram的程度(来自桌面和移动应用程序)。谁能解释我如何从数据包的header中检测到该协议(protocol)?我从Telegram官方网站上读到这个:同一协议(protocol)有一个简化版本:如果客户端发送0xef作为第一个字节(重要:仅在第一个数据包之前),则数据包长度由单个字节编码(0x01..0x7e=数据长度除以4;或0x7f后跟3个长度字节(小端字节序)除以4)后跟数据本身(不添加序列号和CRC32)。但我不明白什么时候使用删节版? 最佳答案 Telegram使

header - 访问和更改 tcp header 上的保留位

在rfc793,section-3.1,TCPheaderheader有6个保留位,在rfc3168上减少到4个保留位.我如何在Linux上或使用程序访问和更改这些位,甚至如何为此目标编写程序? 最佳答案 标准套接字API没有为应用程序提供直接更改TCPheader中各个标志的方法。我可以想到几种可能的方法来解决这个问题:编写一个TUN/TAP网络设备,对通过它的数据包执行所需的header修改,然后再将它们转发到真实的网络设备。内核配置为通过您的TUN/TAP设备发送所有传出数据包。使用PF_PACKET套接字从用户空间构造和发送

tcp - 有什么方法可以通过 gen_tcp 获取 ether/ip header ?

有没有办法不仅获取传入消息的正文。还有它的ether/IPheader?现在我正在使用gen_tcp并通过主动控制进程接收消息。现在套接字是通过'of_driver'以这种方式打开的:gen_tcp:connect(IpAddr,Port,[binary,{packet,raw},{active,false}],CONNECT_TIMEOUT) 最佳答案 据我所知,您无法通过gen_tcp获取以太网或IPheader。你可以使用theprocketlibrary打开原始套接字。(传递给gen_tcp的{packet,raw}选项不是

c - 在 Tshark 中检查数据包时伪造的 TCP header 长度

我试图发送一个TCPSYN通过端口8000将数据包发送到我机器上的服务器.然后,我想检查服务器是否响应SYNACK.如果是这种情况,那么我会发回RST数据包中止连接。然而,当我嗅到SYN我发出的数据包告诉我TCPheader的伪造长度为0,但事实并非如此。我使用的嗅探器是tshark,顺便一提。这是我的代码:在main功能,我运行这个:FLAGSf=SYN;tcp_scan("127.0.0.1",8000,f,0);此函数组装IPheader:structiphdr*assemble_ip(char*dest,unsignedintproto){/*AssembleIPLayer*/