小编zzy*_*zzy的帖子

如何在Go中为TCP数据包设置"do not fragment"标志位?

我打算在Go中设置"do not fragment"标志位,与它在C中的帖子相同.我检查了常量列表但是我没有找到这个选项.那么Go中的相应选项是什么?

提前致谢!

sockets tcp go

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

发送带有效负载的TCP SYN数据包

在启动TCP连接时是否可以发送带有自定义有效负载的SYN数据包?我的直觉是它在理论上是可行的.我正在寻找一种在Linux中实现这一目标的简单方法(使用C或Go语言),但由于它不是标准行为,我还没有找到有用的信息.(这篇文章很相似,但不是很有帮助.)

请帮帮我,谢谢!

编辑:抱歉模棱两可.不仅是这种任务的可能性,我也在寻找一种方法,甚至是样本代码来实现它.

sockets linux tcp packet

4
推荐指数
2
解决办法
7566
查看次数

Linux 支持进程的内存隔离吗?

更详细地说,问题是:没有root权限,一个进程是否可以读取(而不仅仅是写入)另一个进程的内存?(例如,通过某种方式读取 /proc/gcore 或 /proc/[PID]/mem。我还不确定他们的权限要求。)

我确实明白虚拟地址是实现的,每个进程都有自己的空间。我进行了快速搜索,但既没有找到强有力的保证,也没有找到破解方法。这篇文章说:

系统中的每个进程都有自己的虚拟地址空间。这些虚拟地址空间彼此完全独立,因此运行一个应用程序的进程不会影响另一个应用程序。此外,硬件虚拟内存机制允许保护内存区域免遭写入。这可以保护代码和数据不被恶意应用程序覆盖。

我不确定“影响”是否也包括“读取”,硬件似乎只保护内存不被覆盖。

大家知道Linux系统的这种隔离是否有强有力的保证,或者如果它可能被黑客攻击,如何保证?

提前致谢!

linux memory process isolation

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

VLOG 不适用于 Google 日志库 (glog)

我的目的很简单:以某种方式查看由 glog 库提供的 VLOG(5) 打印的日志。

我有以下代码:

google::InitGoogleLogging(argv[0]);
google::ParseCommandLineFlags(&argc, &argv, true);
FLAGS_logtostderr = 1;
FLAGS_v = 10;
LOG(INFO) << "info"; // OK, I see it
LOG(WARNING) << "warning"; // OK
VLOG(5) << "vlog"; // Nothing :(
Run Code Online (Sandbox Code Playgroud)

无论我在这里手动设置标志(FLAGS_logtostderrFLAGS_v),还是通过命令行(--v=10)传递它,我都从未在任何地方找到字符串“vlog”:既没有 stdout、stderr 也没有在\tmp. 我想我没有改变输出路径。

我在这里想念什么吗?知道如何启用VLOG吗?

c++ logging c++11 glog

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

Wireshark / tcpdump / libpcap在Linux内核中的哪里拦截数据包?

根据这个,Wireshark是能够将数据包之前,(我自己因此我不能让这样的数据包)下降。而且我仍然想知道wireshhark在Linux内核中的确切位置以获取数据包。

答案是“在UN * Xes上,它使用libpcap,而在Linux上,它使用AF_PACKET套接字。” 有谁有使用“ AF_PACKET套接字”的更具体示例?如果我正确理解Wireshark,则网络接口卡(NIC)会复制所有传入数据包,并将其发送到用户定义的过滤器(伯克利数据包过滤器)。但是,这发生在哪里呢?还是我对这种理解有误,在这里我想念什么吗?

提前致谢!

linux networking wireshark linux-kernel

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

`ether_header` 和 `ethhdr` 有什么区别?

我目前正在尝试解析原始缓冲区中的数据包。我发现以太网标头似乎有两种结构:ether_headerethhdr. 我有点困惑他们有什么区别和关系?我可以互换使用它们吗?

我做了一个快速搜索:

这篇文章建议 IP 标头存在两个相同的实现。以太网(可能还有 TCP、UDP 等)是这种情况吗?

此补丁显示了从一种实现更改为另一种实现的努力。我不确定这背后的动机:也许一种实现在某种程度上“更好”?

谢谢!

ip networking network-programming ethernet

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

如何在 Linux 中获取给定进程的 TCP 套接字的文件描述符?

我试图找到给定进程的所有TCP 套接字的文件描述符,即。给定它的 pid,这样我就可以在另一个进程中获得套接字选项而无需修改原始进程。

例如,如果我知道文件描述符是fd,那么我希望调用getsockopt(fd, ...)以在另一个进程中检索选项。我想知道这可行吗?如果是这样,如何fd在原始过程之外获得我需要的?

我试图在创建套接字时打印出返回值,即。s = socket(...); printf("%d\n", s);,保持原始进程运行并在getsockopt(s, ...)其他地方调用但它不起作用 - 似乎这样的返回值是依赖于进程的。

我也找到了 unix 域套接字的解决方案,但我不想修改原始进程的代码。

至于\proc\<PID>\fd直接阅读还是利用阅读lsof,我想说我不知道​​如何从他们那里找到我需要的东西。我的直觉是它们可能是潜在的解决方案。

当然,也欢迎任何其他想法。说实话,我对Linux中的文件描述符机制不是很熟悉。

c sockets linux tcp file-descriptor

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