Articles of networking

了解netstat输出

tcp 0 0 :::111 :::* LISTEN 以上是netstat -nl | grep 111的输出 netstat -nl | grep 111 ::: 111段的含义是什么?

读取之后会发生什么情况是为Linux套接字调用的

调用read之后实际发生了什么: n = read(fd, buf, try_read_size); 这里fd是一个TCP套接字描述符。 buf是缓冲区。 try_read_size是程序试图读取的字节数。 我想这可能会最终调用一个系统调用内核。 但任何人都可以提供一些细节? 在glibc或内核源代码中说源代码的实现?

编程使用ARP

我需要一些可在Linux下编译的C或C ++代码,以便能够获取任意数量的远程主机的IP地址列表,并为每个主机获取以太网MAC地址。 这些主机可能在同一个子网上,或者它们可能在路由器的不同子网上。 如果某些或全部远程主机的MAC地址是路由器上接口的地址,那么可以。 最后,我想把IP地址和MAC地址交给FPGA,FPGA将使用这些信息格式化并通过以太网将UDP / IP数据包发送到主机。 显然,FPGA也会被赋予自己的MAC地址和IP地址来填充数据包中的源MAC和源IP地址。 是否有一些我可以指出的代码,可以创build和广播ARP数据包到这些远程机器,并接收ARP响应数据包,使目标MAC地址可以被提取?

在Linux上使用Python更改IP设置

我需要提供一个Python程序,允许用户dynamic改变他的设备(IP,掩码,DNS和网关)的networking参数。 例如,将他的IP从192.168.1.10/24更改为192.168.1.15/24。 我不想以root身份运行我的程序 – 但我可以给我的用户一些特定的权利(例如将用户添加到可以修改/usr/network/interfaces文件的组)。 我发现的是pynetlinux库,但它只提供IP和掩码修改,需要以root身份运行(或者我可能会误用它)。 我可以通过parsinginterfaces文件并运行一些bash / shell命令来做到这一点,但我不想重新发明轮子。 我很确定有些人已经有我的问题,做了一些伟大的事情。 我在Ubuntu 12.04上运行。 我需要我的程序在Ubuntu 14.04,CentOS和RedHat上工作

如何检测tcp客户端连接到服务器在c + +

我有一个TCP客户端/服务器,我想检测客户端的连接丢失; 因为我的客户端有多个接口,我一次连接到服务器与其中之一,我想知道如何检测客户端的连接丢失,以便我可以连接我的tcp客户端与另一个接口到服务器,如果他们全部我把我的数据存储在文本文件中。 我GOOGLE了,我已经看到保持活着,但不是我想要的。 如果这是重要的我的项目是在Linux和代码是在C + +。

沙盒公开访问GCC

我想添加一个function到一个基于Linux的Web服务,允许不可信用户上传源代码到一个小的C ++程序,并将该代码自动保存到服务器上的文件,并用gcc编译,然后执行,捕获标准输出。 (这是一个与ideone.com,或者spoj.pl,或者topcoder.com,或者codechef.com或者许多其他网站完全不同的function。) 我的问题是: Q1。 我如何沙箱的可执行文件,以防止恶意用户试图破坏文件系统或访问networking等? Q2。 是否有一个公平/准确的方法来将系统资源加速处理,如处理器时间和内存使用情况?

父和子代之间的文件描述符共享

在Unixnetworking编程中,有一个Pre-forked服务器的例子,它使用Unix域pipe道上的消息传递来指示subprocess处理一个传入的连接: for ( ; ; ) { rset = masterset; if (navail <= 0) FD_CLR(listenfd, &rset); /* turn off if no available children */ nsel = Select(maxfd + 1, &rset, NULL, NULL, NULL); /* 4check for new connections */ if (FD_ISSET(listenfd, &rset)) { clilen = addrlen; connfd = Accept(listenfd, cliaddr, &clilen); for (i = 0; […]

如何使我的Docker容器通过第二个接口与另一个节点通信?

我正在努力执行一个可悲的testing,其中涉及到sandbox01networking中的服务器与在“Docker Host”服务器中运行的Docker容器之间的通信(该计算机与sandbox01networking中的其他节点位于同一个子网中。即在10. *地址/范围内有一个名为ens34的接口,在9 *networking上还有一个eth0接口,允许它访问外部世界:下载软件包,docker图像等等。 )。 无论如何,这里有一个图来说明我有什么: 问题:无法在sandbox01子网(10. *networking)中的节点和容器之间进行通信。 例如,someserver.sandbox01→mydocker2:ens34 :: docker0 :: vethXXX→容器只有当我停止iptables,这使得事情真的很神秘! 只是想知道如果你面临任何类似的问题..任何想法将不胜感激。 谜题:经过多次testing,确认容器不能与10. *networking中的任何其他节点进行通信 – 它的行为不如预期:它应该通过其网关docker0(172.17 .0.1),并通过docker主机中的路由表find与“someserver.sandbox01”(10.1.21.59)进行通信的path。 它只在我们让它在iptables中处理MASQUARADE时才起作用。 但是,Docker会自动添加这个规则: -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -c 0 0 -j MASQUERADE -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -c 0 0 -j MASQUERADE **请注意那里的“!-o docker0”,所以Docker不希望我们掩盖发送请求的IP地址? 不知何故,这是在搞乱沟通 容器响应任何通过IP 9的通信。*(eth0) – 即,我可以从我的笔记本电脑发送请求 – 但从来没有通过10. *(ens34)。 […]

TrafficStats特定应用程序特定的networking接口

我知道我可以使用下面的trafficstats API的方法来获取任何给定的应用程序的所有networking接口的字节发送和接收。 但是,我如何才能获得移动设备的统计信息? 这样我就可以分离手机和wifi数据。 getUidTxBytes(int uid) 获取此UID通过networking发送的字节数。 getUidRxBytes(int uid) 获取通过networking接收的这个UID的字节数。 看起来像这样的东西从API中缺less。 和其他方式getUidMobileRxBytes(int uid)

主机做不必要的DNS查找本地主机

我有一个centOS系统(embedded和非常二进制文件)与下面的/ etc / hosts。 $cat /etc/hosts 127.0.0.1 localhost localhost 此外,主机被分配一个DNS服务器,返回一些无效的IP用于localhost的域名查找。 但是由于一些networking的限制,我无法避免与这个DNS的连接。 我的问题是,当我已经有一个有效的/ etc / hosts文件为什么系统查询本地 DNS的DNS? 我怎么能阻止呢? 任何帮助将不胜感激。