标签: network-protocols

如何通过没有IP地址的nic发送WOL包(或任何东西)?

我正在尝试在所有接口上发送WOL包以唤醒网关(这是DHCP服务器,因此机器还没有IP).

似乎我只能将套接字绑定到IP和端口对......

所以问题是:如何创建一个绑定到没有IP的NIC的套接字(或其他东西)?(任何语言都可以.c#是首选)

@ctacke:我知道WOL是由MAC地址完成的...我的问题是Windows只在NIC上发送UDP广播,Windows认为是主要的NIC(甚至连我的Vista机器上的默认路由都不是NIC) ).我似乎无法找到一种方法将套接字绑定到没有IP地址的接口.(像DHCP客户端这样做)

@Arnout:为什么不呢?客户端知道网关的MAC地址.我只想要像DHCP客户端一样发送WOL数据包... ...(DHCP发现数据包声称来自0.0.0.0)我不介意我是否必须逐字节构造整个数据包...

c# network-programming ethernet network-protocols winpcap

7
推荐指数
1
解决办法
7525
查看次数

如何使用SharpPcap捕获HTTP数据包

我想捕获我的机器的所有传入HTTP数据包.要做到这一点,我使用的是SharpPcap,这是一个WinPcap包装器.

SharpPcap运行良好,但它捕获TCP数据包,这是太低的水平,无法做我想要的.有谁知道如何从所有这些TCP数据包中轻松获得完整的HTTP请求/响应?

谢谢

c# sniffing network-protocols sharppcap

7
推荐指数
1
解决办法
1万
查看次数

使用HTTP/1.1 Pipelining发出多个请求

使用HTTP/1.1 Pipelining时标准对发出多个请求的说法是什么,而不等待每个请求完成?服务器在实践中做了什么?

我问,因为我曾尝试编写一个客户端,它会发出一批GET多个文件的请求,并记得收到错误.我不确定是否是由于我错误地发出了GET或者需要等待每个请求完成才能发出下一个请求GET.

language-agnostic http network-protocols

7
推荐指数
1
解决办法
1218
查看次数

可靠的UDP和ACK方法问题

我正在阅读有关可靠UDP的实现(即发送ACK数据包并再次重新发送非确认数据包).

我似乎在网络中找到了两种主要模式:

  1. 客户端使用该数据包的序列为每个接收到的数据包发送ACK.除非收到ACK,否则服务器假定数据包未送达.

  2. 客户端发送一个ACK数据包,其中包含它认为缺失的数据包序列.服务器假定数据包已传递,除非它从客户端收到一条ACK,说它缺少序列,然后再次重新发送请求的(丢失的)数据包.

简而言之,在1.中,客户端发送接收到的数据包的序列,而在2.客户端发送丢失数据包的序列.

只是想知道每种方法的优点/缺点是什么,哪一种更主流(我假设1,但是2似乎是一种非常聪明的方法,因为大多数数据包确实到达而且通常只丢失一些).

编辑:两种方法的简短示例:

Method 1: Server sends: 1,2,3,4,5 
Client received: 1,3,5,4 
Client sends back: ACK 1, ACK 3, ACK 5, ACK 4  
Server resends: 2.. maybe more if ACK packets were lost


Method 2:
Server sends 1,2,3,4,5,6,7,8
Client receives: 1,3,2,5,7
Client Sends :ACK (lowest continuous 3,highest received 7,  seem to be missing 4,6)
Server resends: 4,6,8
Run Code Online (Sandbox Code Playgroud)

udp network-protocols unreliable-connection

7
推荐指数
1
解决办法
1万
查看次数

从IPv6中删除碎片有什么好处?

我正在开发一个项目,其中包括使用java套接字开发应用程序.然而,在阅读一些基本原理和新近推出的IPv6范式时,这促使我在下面提出问题,

从IPv6中删除碎片有什么好处?

如果有人能让我理解为什么会有帮助吗?

我在互联网上进行了研究,但没有找到任何有用的描述.

sockets networking tcp network-protocols ipv6

7
推荐指数
2
解决办法
9008
查看次数

如何在SMPP中正确表示消息类

我目前正在试图找出sms类如何在SMPP中正确表示.但是我现在完全被标准和它的文档混淆了.

在正常的短信我们有

  • Class0:Flash短信,显示在显示屏上
  • Class1:正常的Sms存储在SIM上或设备内部

查看SMPP规范,我首先data_codingsubmit_sm操作中找到参数,该参数用于设置通过MAP发送的DCS.据我所知,如果我们想要显式设置消息类,我们需要将此参数的前四位设置为1,然后指示编码的两位,然后指示消息类的另外两位.所以对于Class1 Sms,我们会设置1111xx01.到目前为止这是正确的吗?

如果我们尝试设置此DCS,但是目前我们还将数据编码设置为"8位数据".看来,有几款手机无法理解这一点.这是在任何地方指定的,我们可以改变它,或者是在发送其他消息类时需要的特殊编码.

当我们尝试使用SMPPv3.4建议的Message类设置方法时,会出现更多混乱.从3.4开始,操作中有一个可选参数submit_sm,称为dest_addr_subunit.根据标准,此参数应设置为0表示未知,1表示MS显示,2表示移动设备等.如果我看一下,与GSM消息类别相比,参数似乎会移动1.Class0编码为1,Class1编码为2,依此类推.这是正确的还是有更复杂的映射背后?

另外,如果我们设置dest_addr_subunit,我们是否仍然必须设置DCS,或者我们可以将此参数保留为默认值吗?

sms gsm network-protocols smpp

7
推荐指数
1
解决办法
9329
查看次数

如何在Python中生成Tcp,ip和Udp数据包?

谁能告诉我生成UDP,TCP和IP数据包的基本步骤是什么.我怎样才能用Python生成它?

python network-programming network-protocols

7
推荐指数
2
解决办法
3万
查看次数

C++中的SIP和RTP实现

是否有可靠的开源库用c ++编写来实现SIP和RTP协议?如果没有,使用boost.asio实现它们是否容易?

c++ sip network-protocols rtp

7
推荐指数
1
解决办法
6690
查看次数

数据包丢失和数据包重复

我试图找出丢包和数据包重复问题之间的区别.有谁知道'数据包重复'到底是什么?当在TCP中检测到丢失时,它是否与重新发送数据包相同?

udp tcp duplication network-protocols packet-loss

7
推荐指数
2
解决办法
2万
查看次数

二进制和文本结构(数据包)的高效解码

背景

有一个名为Wireshark的着名工具.我已经使用了很多年了.这很棒,但性能是问题所在.通用使用场景包括若干数据准备步骤,以便提取稍后要分析的数据子集.如果没有这一步,则需要几分钟才能进行过滤(Wireshark旁边的大痕迹无法使用).

在此输入图像描述

实际的想法是创建一个更快,更平行,更高效的更好的解决方案,用作数据聚合器/存储.

要求

实际要求是使用现代硬件提供的所有电源.我应该说有一个不同类型的优化空间,我希望我在上层做得很好,但技术是现在的主要问题.根据目前的设计,有几种类型的包解码器(解剖器):

  • 交互式解码器:解码逻辑可以在运行时轻松更改.这种方法对协议开发人员非常有用 - 解码速度并不重要,但灵活性和快速结果更为重要
  • 可嵌入的解码器:可以用作库.这种类型应该具有良好的性能并且足够灵活,可以使用所有可用的CPU和内核
  • 解码器即服务:可以通过干净的API访问.这种类型应提供最佳的品种性能和效率

结果

我目前的解决方案是基于JVM的解码器.实际的想法是重用代码,消除移植等,但仍然具有良好的效率.

  • 交互式解码器:在Groovy上实现
  • 可嵌入解码器:在Java上实现
  • 解码器即服务:Tomcat +优化+嵌入式解码器包装到servlet中(二进制输入,XML输出)

需要解决的问题

  • Groovy提供了强大的功能和一切,但在这种特殊情况下运气表现力
  • 将协议解码为树结构是一个死胡同 - 太多资源被浪费掉了
  • 内存消耗有点难以控制.我做了几次优化但仍不满意分析结果
  • 带有各种铃声和口哨声的Tomcat仍然会引入很多开销(主要是连接处理)

我在各地使用JVM做得对吗?您是否看到了实现最初目标的任何其他优秀和优雅的方法:获得易于编写的高度可扩展且高效的协议解码器?

协议,结果格式等不固定.

java decode network-protocols

7
推荐指数
1
解决办法
1650
查看次数