标签: packet

半径的最大数据包大小

RADIUS 是否有最大数据包大小?我的一个应用程序需要发送签名的生物特征图像以进行身份​​验证,我不确定radius 是否能够处理它。

authentication radius packet

2
推荐指数
1
解决办法
4330
查看次数

在 Scapy 中迭代图层的字段

我想遍历字段的名称,例如srcanddst并且也有它们的值。,我试过这个:

for field in pkt['Ethernet']:
    print field
Run Code Online (Sandbox Code Playgroud)

但是我需要一个函数,它会给我一个包含字段名称及其值的字典,例如 -

{'dst':'00:0a:95:9d:68:16','src':'00:0a:95:9d:68:16','type':'tcp'}
Run Code Online (Sandbox Code Playgroud)

python iteration scapy packet

2
推荐指数
1
解决办法
2744
查看次数

网络数据包究竟是什么时候创建的?

在从客户端到主机(或反之亦然)的消息传输过程中,消息实际上是在哪个点被分割成数据包?

根据我目前的理解,应用程序将整个文件放入套接字并将其完全移交给 TCP。TCP 首先缓冲文件/消息,然后在合适的时候(什么时候合适?)切割缓冲区数据的块(创建数据包)并添加 TCP 标头以将块转换为段。

如果应用层根本没有数据包,我们为什么要在应用层谈论数据包?只是整个文件......这不正确。

有人可以证实我的理解吗?

networking tcp packets packet tcp-ip

2
推荐指数
1
解决办法
954
查看次数

我的 UDP 校验和计算每次都给出错误的结果

我正在尝试手动计算各种 UDP 数据包的校验和,但与 Wireshark 中显示的结果相比,我总是得到错误的结果。下面是我如何做的一个例子:

Source Address: 192.168.0.103 (0xC0A8, 0x0067)
Destination Address: 192.168.0.1 (0xC0A8, 0x0001)

Source Port: 57090 (0xDF02)
Destination Port: 8000 (0x1F40)

Packet length: 19 (0x0013)
Data: hello world (0x6865, 0x6C6C, 0x6F20, 0x776F, 0x726C, 0x6400)

Expected checksum: 0xEDFD (from wireshark)
Run Code Online (Sandbox Code Playgroud)

我知道 UDP 校验和是使用以下变量计算的:

Source IP + Destination IP + 17 (0x0011 - protocol code) + 10 (0x000A - pseudoheader length) + Source Port + Destination Port + UDP Packet Length + Data
Run Code Online (Sandbox Code Playgroud)

所有这些都以 16 位为一组。

所以我的计算是(按相同顺序):

0xC0A8 + 0x0067 …
Run Code Online (Sandbox Code Playgroud)

checksum udp packet

2
推荐指数
1
解决办法
2164
查看次数

EtherCAT从站可以有静态地址吗?

我们开发了一种新机器,其中许多电机通过 EtherCAT 连接到主控制器。。我希望为每个电机设置一个特定的地址

我看到可以在电机软件中设置EtherCAT ID,编号从1到32766(32767让主站分配地址)

但我对此选项有点困惑,因为文档仅包含有关主设备分配地址的选项的详细信息

“Configured Station Alias”是从站分配的静态地址吗?

从机是否包含两个地址?一套由主机设置,一套由从机选择性设置?

允许主机设置从机地址是否有速度或可靠性等优势?

所有或大多数 EtherCAT 设备(从设备和主设备)是否包含 IP 地址?

例如 Beckhoff EtherCAT 文档: http://www.manualsdir.com/manuals/757430/beckhoff-ethercat-technology-section-i.html ?page=27

EtherCAT数据包图: EtherCAT数据包

automation ip-address packet master-slave ethercat

2
推荐指数
1
解决办法
3757
查看次数

Java数据报套接字未接收数据包

我正在尝试使用Java数据报在服务器和客户端之间创建一个数据包流。问题是,尽管我收到了正在发送数据包的确认信息,但它们在到达我设置的客户端侦听器之前都丢失了。我现在有了它,所以5秒钟后会有超时,每次我运行它时都会发生。

class DGServer extends Thread
{
    private DatagramSocket server;

    public DGServer() throws IOException
    {
        server = new DatagramSocket();
    }

    public void run()
    {
        try
        {
            server.connect(App.Local, 4200);
            System.out.println("Server starting...");

            int i = 0;

            while (server.isConnected() && (i < 256))
            {
                byte[] buffer = new byte[1];
                buffer[0] = (byte) ++i;
                DatagramPacket packet = new DatagramPacket(buffer, buffer.length, App.Local, 4200);
                System.out.println("Sedning " + i + " to client...");

                server.send(packet);

                Thread.sleep(500);
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        System.out.println("Server Finished!");

        if (! server.isClosed()) …
Run Code Online (Sandbox Code Playgroud)

java sockets datagram packet loss

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

从套接字C++部分接收数据包

我有一个麻烦,我的服务器应用程序发送8字节长度的数据包 - AABBCC1122334455但我的应用程序分两部分收到此数据包,AABBCC1122334455通过"recv"函数,我该如何解决?

谢谢!

c++ sockets network-programming packet

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

Switch-Case数据包处理的替代方案

我一直在玩网络套接字,我的大多数问题都来自Windows Forms,但是我已经研究了很多程序,比如私有服务器模拟器,我对我的数据包处理感到不满意.

每个消息都以JSON格式化,如下所示:

{
"id":201,
"Message":"Hello, World.",
"User":"System",
"Color":"LawnGreen"
}
Run Code Online (Sandbox Code Playgroud)

"id"是所有数据包中的常量,它将识别数据包的功能.具有相同ID的数据包(以下称为标题)将始终具有相同的键,但不一定具有相同的值(duh,有人说).

我将JSON反序列化为动态并在数据包的标题上执行切换案例,如下所示:

switch((int)jsonPacket.id)
{
    case 201:
    ...
}
Run Code Online (Sandbox Code Playgroud)

鉴于这是一个非常小规模的聊天应用程序,甚至几乎没有开始尝试和实现所有IRC的功能,我是否仍然应该关注并不满意我的实现?小型游戏/测试台服务器使用相同的方法,但我不想在功能和性能方面限制自己,或者如果它变得令人讨厌.

任何想法都会有帮助.

c# sockets json packet switch-statement

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

检测DataInputStream流的结尾

我现在正在服务器上玩游戏.服务器的数据包读取循环是阻塞的,并且通常等待直到收到数据包才能继续循环.但是,如果客户端断开连接,DataInputStream将返回单个字节(-1),并且如预期的那样快速连续执行循环.但是,我不使用DataInputStream的read()方法一次读取一个字节,我使用read(byte [])方法将它们一次性读取到一个字节数组中.因此,我无法轻易检测到流是否返回值为-1的单个字节.

可能的解决方案:我可以检查数组的第一个字节是否为-1,如果是,则循环遍历数组以查看数组的其余部分是否为零.这样做看起来效率极低,我觉得随着客户端数量的增加会影响性能.

这是我的数据包读取循环的简化版本:

while (!thread.isInterrupted() && !isDisconnected())
{
    try
    {
        byte[] data = new byte[26];
        data = new byte[26];

        input.read(data);

        //Need to check if end of stream here somehow
        Packet rawPacket = Packet.extractPacketFromData(data); //Constructs packet from the received data

        if(rawPacket instanceof SomePacket)
        {
            //Do stuff with packet
        }
    }
    catch(IOException e)
    {
        disconnectClient(); //Toggles flag showing client has disconnected
    }
}
Run Code Online (Sandbox Code Playgroud)

java arrays networking packet datainputstream

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

MQTT QoS2为什么使用4个数据包?

我认为我们可以只使用publish和pubrcv来满足QoS2。

  1. ClientA->服务器发布数据包
  2. 服务器-> ClientA pubrecv数据包

当服务器接收发布数据包时,保存到db,然后服务器将其发布到其他客户端,例如。客户B。即使我们从ClientA接收两个相同的发布数据包,服务器也会检查db,并且知道这是重复的消息,因此不要发布到ClientB。

所以我认为不需要4个数据包。

我的逻辑正确吗?

qos packet mqtt

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