gpt4 book ai didi

ubuntu - 如何在一个 UDP 数据包中发送大量数据?

转载 作者:行者123 更新时间:2023-12-04 18:30:07 33 4
gpt4 key购买 nike

尝试使用 Netcat 发送 UDP 数据包

nc -u 127.0.0.1 1234

并使用 tcpdump 查看实际数据包
tcpdump -i any -vv -n udp dst port 1234

理论上,UDP 数据包大小约为 64K,但是当我发送大小大于 2048 的消息时,Netcat 会拆分数据并发送 2 个单独的 UDP 数据包。例如,如果我发送以下长字符串
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789

tcpdump 将显示 2 个数据包:
08:13:09.171828 IP (tos 0x0, ttl 64, id 25262, offset 0, flags [DF], proto UDP (17), length 2076)
127.0.0.1.33279 > 127.0.0.1.1234: [bad udp cksum 0x061c -> 0x7eb9!] UDP, length 2048
08:13:09.171842 IP (tos 0x0, ttl 64, id 25263, offset 0, flags [DF], proto UDP (17), length 981)
127.0.0.1.33279 > 127.0.0.1.1234: [bad udp cksum 0x01d5 -> 0x3723!] UDP, length 953

是否可以通过 Netcat 或其他工具在一个 UDP 数据包中发送长消息?在 Internet 上找不到 Netcat 的任何选项。

附言我正在使用 Ubuntu 14.04

最佳答案

问题是因为 netcat 读取特定大小的 block 并以这些 block 大小写入。而且由于它是从流(即标准输入)中读取的,因此无论如何都无法定义诸如消息边界之类的东西。我看不到使用 nc 更改读取大小的任何选项,但如果您需要一些命令行来发送更大的数据包,您可以使用 Perl 或类似的东西:

$ dd if=/dev/zero bs=1024 count=32 | perl -MIO::Socket::INET -e \
'IO::Socket::INET->new(PeerAddr => q[127.0.0.1:1234], Proto => q[udp])->send(do { local $/; <STDIN> })'

$ tcpdump -i lo -n port 1234
... IP 127.0.0.1.42061 > 127.0.0.1.1234: UDP, length 32768

关于ubuntu - 如何在一个 UDP 数据包中发送大量数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38530070/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com