我可以使用scapy将图像或文档(以MB为单位)作为数据插入数据包吗?
这就是我发送数据的方法.
data = "University of texas at San Antonio"
a = IP(dst="129.132.2.21")/TCP()/data
send(a)
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个可以执行以下操作的Windows工具(或一组工具):
我已经有1和2,但我找不到工具3.
为了捕获我可以使用Wireshark,用于回放Colasoft Packet Player,但我找不到改变数据包发送到的主机的方法.
该工具应适用于Windows XP SP2/3.
如果我有一个大的HTTP数据包已被拆分成多个TCP数据包,我怎样才能将它们重新组合成一个HTTP数据包?基本上,在数据包的哪个位置,我想知道HTTP数据包何时开始/结束?我似乎无法在TCP标头中看到任何表示HTTP数据包开始或结束的标志/字段.
编辑:跟进回复.如果TCP管理流,它如何知道流何时开始和结束?这是由插座开合决定的吗?某些协议在某种程度上必须能够知道HTTP流/数据包何时开始和结束.这就是我想知道的.
我所处的情况是我在C#中使用数据包嗅探器读取TCP数据包,我希望能够重建HTTP请求/响应/等.像wireshark和其他各种嗅探器一样通过界面.或者,是否有任何C#库可以让您在更高级别进入HTTP流,从而节省了我自己重建HTTP流/数据包的麻烦?
谢谢.
这是我的问题:我们希望通过网络发送大小为150,000字节的消息.有四个跳,每个跳长20km,运行速度为100 Mb/s.但是,在发送之前,我们将消息拆分为1500字节的数据包.消息的端到端延迟是什么?使用铜的光速= c = 2*10 ^ 8 m/s,并将你的答案四舍五入到最接近的整数毫秒.
我到目前为止所用的是48ms,我按以下方式计算:1500字节= 12,000位12,000位/(100x10 ^ 6)[100Mb/s] = 0.00012s 20km /(2*10 ^ 8)[光速]在这个等式中] = 1e-7加起来你每跳得到0.0001201 x 4跳= 0.0004804s - > 48ms四舍五入到最接近的整数.
显然这是不正确的,我无法弄清楚我的错误.我的在线课程没有任何帮助,所以我转向SO.如果有人能直接指出我,我会很感激帮助.
我需要测试FTP应用程序的丢包.我使用了Wireshark数据包嗅探器,我得到了TCP Stream.
如何使用Wireshark找到丢包?
HTTP服务器通过多个数据包发送数据的正确方法是什么?
例如,我想传输一个文件,我发送的第一个数据包是:
HTTP/1.1 200 OK
Content-type: application/force-download
Content-Type: application/download
Content-Type: application/octet-stream
Content-Description: File Transfer
Content-disposition: attachment; filename=test.dat
Content-Transfer-Encoding: chunked
400
<first 1024 bytes here>
400
<next 1024 bytes here>
400
<next 1024 bytes here>
Run Code Online (Sandbox Code Playgroud)
现在我需要制作一个新包,如果我发送:
400
<next 1024 bytes here>
Run Code Online (Sandbox Code Playgroud)
所有的客户都关闭了我的连接,文件被缩短了.
我在第二个数据包中放入哪些标头继续使用数据流?
我的原始代码是用Python编写的,但是我需要将它转换为Perl,这些库是我在Python中没有的.
在Python中我会这样做:
packet=binascii.unhexlify('F0000000F6905C452001A8C0000000000160994E810FB54E0100DB0000000000000')
Run Code Online (Sandbox Code Playgroud)
和
这将创建一个包含二进制表示形式的字符串:
0xF0 0x00 0x00 0x00 0xF6 0x90 0x5C 0x45 etc...
Run Code Online (Sandbox Code Playgroud)
现在我的字符串是一个字节数组,我可以将它作为我的数据包的有效负载发送.我怎么做Perl?
是否应该丢弃具有未知IPv6扩展头的数据包?
通过检查RFC,我找不到这个问题的答案.IPv6 Essentials一书在第22页上说明:
如果节点需要下一个标头但无法识别Next Header字段中的值,则需要丢弃该数据包并将ICMPv6 Parameter Problem消息发送回数据包源.
我将其读作:除非路径上的所有 IPv6堆栈都知道如何处理标头,否则不会丢弃带有自定义扩展标头的IPv6数据包.或者等效地,如果路径上的单个IPv6设备不知道如何处理自定义标头,则会丢弃该数据包.
这似乎与扩展的一般概念不一致:即使自定义扩展不影响通用IPv6堆栈,我也无法在不升级整个网络的情况下引入新扩展.
networking network-programming network-protocols ipv6 packet
这是问题所在,它非常简单(理解......):
我家里有2台电脑,它们都有相同的公共IP地址(例如1.2.3.4).
我在咖啡馆(不同的网络)有一台电脑,所以它有一个不同的公共IP地址.
我想从咖啡馆的电脑发送一条消息(例如"hi")到我家里的一台电脑.
我正在使用Java,为发送者考虑以下非常简单的程序(为了简单起见,我为了简单处理了异常处理):
在主要我做:
sendPacket("hi");
Run Code Online (Sandbox Code Playgroud)
我有
void sendPacket(String message){
DatagramSocket myServerSocket = new DatagramSocket(9000); // server socket
byte[] sendData = new byte[message.length()]; // build msg
sendData = message.getBytes();
InetSocketAddress destSocketAddr = new InetSocketAddress("1.2.3.4", 9000); // destination socket addr
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, destSocketAddr); // make packet
myServerSocket.send(sendPacket); // send packet
}
Run Code Online (Sandbox Code Playgroud)
如果我的监听器(接收器)在家中的两台计算机上运行(两者都具有相同的公共IP地址1.2.3.4),我如何指定我打算将此消息发送到哪一个?
我们试图从数据包的 RTP 标头中提取“序列号”。我们使用 av_read_frame 将数据包读入 AVPacket 结构。
我们尝试使用 AVPacket.data 字段,希望它包含原始有效负载,但我们没有设法找到标头的正确位置。所以我们假设数据字段不包含完整的有效载荷 -如果我们错了,请更正。
有没有办法找到RTP头信息?