草庐IT

python - 使用scapy时如何从数据包中读取整个ip层和tcp层?

我正在使用scapy接收ICMPDestinationunreachable(FragmentationneededICMPTYPE=3CODE=4)消息时进行TCP重传行为测试。测试流程是这样的:1.与服务器建立TCP连接2.TCP建立后向服务器发送HTTPGET请求3.当HTTPResponse返回时4.向设置了小MTU的服务器发送ICMP类型3代码4消息问题是ICMPTYPE=3CODE=4消息包含该HTTP响应数据包的IPheader和部分TCPheader(srt、dst和seq编号)。目前,我只是从HTTP响应数据包中读取每个参数(如IP标识、片段标记、ttl等)。问题是:

c - 如何区分同一 HTTPS 流量中的不同类型的数据包?

有些事情让我很困扰:我想区分来自Youtube的数据包和来自维基百科的数据包:它们都通过HTTPS传输,并且都来自端口443。由于它们使用HTTPS传输,因此无法理解它们的负载,我无法进行完整的深度数据包检测:我只能查看以太网、IP和TCP结构header。我可能会查看两个数据包的IP地址源,看看它们实际来自哪里,但要知道它们是来自Youtube还是维基百科,我应该已经知道这两个站点的IP地址。我想弄清楚的是一种通过HTTP流式传输(就像Youtube所做的那样)和简单的HTML传输(维基百科)来判断的方法,而无需调查有效负载。编辑1:在复制视频期间启动的Wiresharksessio

networking - 关于数据包的一些困惑

谷歌搜索一段时间后,我真的很困惑。答案就在我眼前,但我还是不明白!据说:Themaximumpacketsizeis65535(includingpacketheaders),butitactuallyisn't!ItistheMaximumTransmissionUnit(MTU)value!从程序员的角度来看,我应该考虑的值(value)是什么?如果我应该考虑的值是MTU,那么这个世界上存在的最小MTU值是多少?还有一件事。由于UDP使用数据报通过网络发送数据包,因此具有最大数据包大小是有意义的。但是,TCP以八位字节流的形式传输数据,那么为什么会有最大数据包大小呢?(只是好奇)在

python - Scapy sniff() 似乎没有捕获 TCP 数据包,只显示以太网帧

我有tcpdump和scapy在同一个界面上运行sniff()。发生scp文件传输。tcpdump:我看到了带有seq和acks的tcp数据包。scapysniff()返回列表:我在每个数据包summary()中看到的都是(MACaddr1)>(Macaddr2)(0x800)/Raw。即使在数据包.show()中,我也只看到带有“##[Ethernet]##”、src和dst的链路层内容。我以30的超时时间运行此程序,所以我知道我会捕获空文本文件的scp传输,所以我知道我的时间是正确的。肯定有TCP数据包通过,但没有检测到。Scapy有问题吗?谢谢 最佳答

tcp - 如何在不使用终止符或固定长度消息的情况下接收 TCP 数据包

我正在使用带有TCP的SpringIntegration2.0.3。应用程序行为是,它充当TCP客户端并使用TCP向第三方工具发送消息。因此应用程序使用TCP与第三方工具建立连接,发送消息,等待回复,当收到回复时(再次充当客户端)将关闭连接。现在的问题是第三方工具既不能添加任何终止符也不能制作定长消息。根据我的理解,有3种方法可以制作数据包并将其发送给应用程序1)始终发送固定大小的消息2)发送每条消息的消息大小3)使用标记系统来分隔消息但是我不能使用上面提到的任何方式,我想知道在这种情况下我的应用程序如何接收响应消息,是否可能? 最佳答案

node.js - 是否可以在 RTMP 协议(protocol)中为每个数据包插入额外的数据?

我目前正在研究电影和书籍圈子中使用的流媒体平台的简单实现。在这个故事中,secret是谎言,每个人都应该可以访问每个数据。用户可以将他们的数据流式传输到允许用户观看的服务器。现在,流应该进行完整性检查,但不应出于隐藏信息的目的加密其数据。为了解决这个问题,我想:设置客户端(android),通过RTMP流式传输他们的相机并发送数字签名作为提供身份验证、不可否认性和检查完整性的方式。设置接收数据的服务器,通过读取签名和验证哈希来确认流的身份。然后服务器将这个流中继到网络客户端..拥有一个网络客户端,观众可以在其中观看流媒体,同时还拥有与发布流媒体所使用的相同类型的安全性。现在我考虑了几种

xcode - 使用 TCP/IP 发送数据包以在 XCode 中使用

我是网络编程的新手,如果能帮助我理解一些好的进展步骤是什么,我将不胜感激。我正在设计一个iOS应用程序,它需要通过网络从另一台机器传送实时信息。我知道这台机器的IP地址,以及这台机器在发送和接收消息方面遵循的API。通过一些研究,我似乎需要在一台机器的端口上打开一个套接字,并在我的计算机上打开另一个套接字,然后使用TCP/IP在两者之间发送和接收数据包。此时我需要做的流程的一个很好的概述是什么?您建议使用哪种语言和环境最有效地让我能够从这台机器获取我需要的信息到我的XCode项目中?谢谢!任何帮助将不胜感激。 最佳答案 您只需要查找

java - 如果客户端从不发送 FIN 数据包关闭连接,连接是否超时?

我有一个用Netty实现的HTTP服务器。将消息推送到浏览器需要长轮询连接。大多数时候,服务器不会尝试关闭连接。在TCPsession中,如果任何一方想要关闭连接,它都会向另一方发送FIN数据包。如果服务器没有收到来自客户端的FIN,在1)用户有硬网络故障或2)有人试图攻击服务器的情况下,是否保证Netty服务器将收到超时(或其他某种)给定时间后的异常?如果它是真的,我不需要将Read/WriteTimeoutHandler添加到我的channel管道中,它会在计时器触发超时时关闭channel。我必须以任何一种方式关闭channel,否则我会泄漏资源。 最

Linux:如何将整个数据包发送到另一台主机上的特定端口?

我使用libpcap捕获了一个TCP数据包,我想将整个数据包(不修改)发送到另一台主机上的特定端口(该主机有另一个嗅探器监听该端口)。有什么办法可以做到这一点吗?非常感谢! 最佳答案 您没有具体说明您使用的是哪种编程语言以及到目前为止您尝试过什么。将IP地址字段更改为目标IP,将TCP端口字段更改为您想要的端口。不要忘记更新两个校验和。如果你想要的是TCP转发,Linuxkernelalreadydoesthisforyou. 关于Linux:如何将整个数据包发送到另一台主机上的特定端口

c# - 为 TCP/UDP 传输安全地标记数据包的开始/结束

我正在编写一个基于客户端/服务器的应用程序,该应用程序在本地网络上运行,以在客户端和服务器之间交换数据,我创建了一个非常简单的NetworkCommand对象,该对象被转换为byte[]并使用TCP或UDP发送。问题是正确地标记了end-of-packed,现在我使用了byte[]{0,0,0}和数据包结束标记,但在整个数据包本身中似乎重复了太多次。那么,我如何安全地标记end-of-packet?网络命令.csusingSystem;usingSystem.IO;namespaceCybotech.Common{publicenumCommandType{NeedIP=1,IPDat