Articles of networking

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

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

unix / linux套接字中的阻塞模式是如何工作的?

阻塞模式是否将该特定任务置于“进程等待”状态,因为我认为非阻塞套接字需要来自用户的“忙等待”或“自旋locking”实现。 或者阻塞模式套接字只是内核的繁忙等待的隐式实现。 在信号量/互斥/监视器之类的locking机制中,通常通过将任务推入阻塞状态来实现locking。 我认为,如果这样的事情是可能的locking,然后套接字locking也可能以同样的方式实现。 我不知道,我认为轮询不是一个有效的方法,尤其是内核,因为内核总是有他的双手充满了这么多的任务。 谢谢。

如何将一个原始的L2数据包作为传入数据包注入到Linux上的接口?

我需要在Linux中将某些L2数据包(定制的)作为传入数据包注入特定接口,以testing运行在其上的一些应用程序。 有什么库(python首选)/例子,可以帮助吗? 我正在浏览Scrapy库,但看起来它只能将数据包作为传出数据包注入networking?

链接的docker集装箱之间的通信

我有两个docker集装箱在主机上的以下设置: 容器1 – UDP端口5043映射到主机端口5043(0.0.0.0:5043:5043) 容器2 – 需要以UDP方式将数据发送到端口5043上的容器1。 情况1 我启动Container 1并获取它的IP地址。 我使用这个IP地址并configurationContainer 2并启动它。 容器2能够通过调用udp://Container_1_IP:5043发送UDP数据到容器1 一切工作! 情景2 我通过将5043 UDP端口映射到主机的5043端口( 0.0.0.0:5043:5043 )来启动Container 1 我使用“ – 链接”链接容器2和容器1。 现在,当Container 2调用URL udp://Container_1_IP:5043 ,会出现错误“ Connection refused ”。 我确实能够使用IP从容器2内部ping容器1。 任何帮助,以获得scheme2为我工作将非常感激!

用很多系统呼叫等待分析networking软件/分析软件

我正在研究一个复杂的networking软件,我无法确定如何提高系统性能。 特别是在使用阻塞同步调用的软件的一部分中。 由于这部分系统正在进行繁重的计算,所以几乎不可能确定这个组件的慢度是由这些计算引起还是等待系统的其他部分。 是否有轻量级的分析器可以捕获这些信息? 我不能使用像valgrind这样的重型轮廓,因为这样会完全扭曲结果(虽然valgrind会是完美的,因为它捕获了所有必需的信息)。 我试图使用oProfile,但我只是无法得到任何有意义的结果(也许如果有一个简明的教程的地方…)。

UDP服务器给分段错误

我用UDP写了下面的echo服务器,但是我不知道为什么在sendto函数中给我分段错误,它收到很好,但是发送数据返回给客户端有问题。 我一直试图find几个小时的问题,但没有得到任何地方。 请有人指出错误,或者我可能做错了什么。 谢谢 #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #define true 1 #define false 0 int main(int argc,char **args){ int BUF_LENGTH=101; int port_no=1800; struct sockaddr_in serv_addr,rmt_addr; //rmt_addr=malloc(sizeof(struct sockaddr_in)); char *buffer=malloc(BUF_LENGTH); int byte_recv=0; int rmt_length=0; int sock_id; sock_id=socket(AF_INET,SOCK_DGRAM,0); if(sock_id<0){ printf("Error creating socket : %d",sock_id); return […]

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

我已经使用libpcap捕获了一个TCP数据包,并且我想把这个整个数据包(不用修改它)发送到另一个主机上的另一个端口上的另一个嗅探器。 有什么办法可以做到这一点? 非常感谢!

在单独的TCP段中发送数据,而不被TCP堆栈合并

在Linux上(内核3.0.0.12; C ++与GCC 4.6.1)我想通过(POSIX)send-call发送几个TCP数据包。 使用Wireshark,我可以看到数据包不是在单独的TCP帧中发送的,而是两个或更多的数据包在一起发送。 有没有办法告诉系统从一个send()缓冲区发送数据到自己的TCP数据包中? 程序stream不应该阻塞在发送呼叫。

sendmsg()中的辅助数据如何工作?

sendmsg()允许发送辅助数据到另一个套接字,我想知道这是如何工作的。 1)辅助数据是否与正常消息一起打包? 2)如果是这样,一个远程接收套接字如何知道如何parsing这个? 3)远程接收客户端如何检索这些辅助数据? 谢谢。

以编程方式获取networking链接types和速度

我不知道是否有一个更紧凑的方法来find链接速度和Linux中的networking接口的types(无线,以太网),而不是打开并读取/sys/class/net/eth0/type和/sys/class/net/eth0/speed文件。 如果没有,谁能告诉我在哪里可以find/sys/class/net/eth0/type返回的数字,在哪种networkingtypes对应? 编辑:它变得更糟! 经过一些无线的实验, /sys/class/net/wlan0/type也返回1,而/sys/class/net/wlan0/speed不存在,我必须从/sys/class/net/wlan0/wireless/link有时会返回不正确的速度。 例如在54Mbits卡中有时会返回55。 提前致谢!