Articles of networking

了解Tcpdumpfilter和位掩码

我想通过使用tcpdump嗅探http头。 这个filter工作正常,但我不明白 – (((ip[2:2] – ((ip[0]&0xf)<<2)) – ((tcp[12]&0xf0)>>2)) != 0) 我GOOGLE了,但我找不到任何有用的信息 这是整个tcpdump命令 sudo tcpdump -A 'dst [dest host] or src [src host] and tcp and (((ip[2:2] – ((ip[0]&0xf)<<2)) – ((tcp[12]&0xf0)>>2)) != 0)' -i eth0

如何计算TCP校验和

我正在写一个内核模块,它使用Netfilter钩子来修改一些TCP头信息,显然,在发送之前,我想重新计算校验和。 我也在接收端编辑标题,所以我也需要重新计算。 在网上search,我发现有些人说我可以简单地把它设置为0,它会为我计算,显然这是行不通的。 我也find了这个function tcp_v4_send_check(struct sock *sk, struct sk_buff *skb); 虽然没有人解释这是如何使用的,以及我是否可以在接收/发送方式中实际使用它。 我自己的尝试是将校验和设置为0,然后调用这个函数传递我有的skb和我有的skb-> sk,仍然没有。 那么请问,什么是直接计算TCP数据报校验和的方法?

Swarm需要在docker中使用overlay来使用多主机networkingfunction

我已经通过示例开始覆盖 ,我有一个简单的查询。 是否可以使用叠加使用多主机networkingfunction而不创buildswarm cluster ? 我不想使用像编织等第三方插件我想使用docker原生networking支持。 我有运行RHEL和3.16+ kernel docker 1.9 3.16+ kernel 。

linux:禁用loopback并通过一个comp的2个eth卡之间的线路发送数据

我有一个与2个乙烯卡,用接插线(从第一个到第二个直接eth。电缆连接)的comp。 Linux安装,我想从第一张网卡发送数据到第二。 我想强制数据包通过电缆传递。 我可以在卡上设置任何IP。 与平,我得到卡上的计数器不断。 是否有可能与TCP / IP套接字? PS。 我需要写一个程序。 这将通过eth发送数据包,所以stackoverflow相关的问题。 可以有一些操作系统依赖的方式,他们也会帮助我

在具有多个接口的服务器上接收多播(linux)

要在我的非默认网卡(dvb)上接收多播,请执行以下操作: 打开一个套接字(AF_INET,SOCK_DGRAM) 在dvb接口上join带有IP_ADD_MEMBERSHIP的多播地址 绑定多播地址(注意,一个常见的错误是绑定“0.0.0.0”,然后在该套接字上接收,甚至你不感兴趣的多播)和端口 此时接收所需多播数据包的唯一方法是在路由表中添加一条规则,通过dvb到达发送者所在的networking(另一个networking),就好像dvb需要回复多播发送者; 让我们说一个源发送者多播模式。 任何人都知道发生了什么事? 这个问题对我来说很烦,因为原则上我不知道发件人的IP地址。

Linux的USB连接/断开事件

您好,我正在一个embedded式Linux设备与usb端口使用g_ether驱动程序的USBnetworking。 当usb插头连接时,dmesg的输出是: g_ether小工具:全速configuration#2:RNDIS 拔下USB电缆时,不会将消息写入dmesg。 使用C如何侦听连接/断开事件? embedded式Linux操作系统没有任何附加function。 没有dbus守护进程或hotplug助手脚本。 我甚至不确定这些是否有用。

Linux UDP接收缓冲区的最大大小

Linux UDP接收缓冲区的最大大小是多less? 我认为这只受可用内存的限制,但是当我设置时 5GB的rmem_max: echo 5000000000 > /proc/sys/net/core/rmem_max 和4GB的实际套接字缓冲区(在Erlang): gen_udp:listen(Port, [{recbuf, 4000000000}]) 当我测量缓冲区利用率时,它显示: # netstat -u6anp | grep 5050 udp6 1409995136 0 :::5050 :::* 13483/beam.smp 我不能超过这个1.4GB。 对于较小的缓冲区大小,例如500MB,实际的缓冲区大小与configuration的值相匹配。 我的系统是Debian 6.0,机器有50GB RAM可用。

我可以从一个已知的MAC地址确定当前的IP吗?

我有一个shell脚本,它使用etherwake来唤醒本地networking上的一台机器。 机器清醒后,我不确定IP地址。 在试图回答我自己的问题时,我想到了: ip=$(ping -c 1 hostname | head -1 | awk '{print $3}' | sed 's/[()]//g') 这个解决scheme规定,我知道远程机器的主机名,这并不麻烦。 如果我知道的是MAC地址,有没有办法获得IP?

使用Recv-Q和Send-Q

netstat命令输出中使用Recv-Q和Send-Q列什么时候我们在实时场景中使用它? 在我的系统中,两列总是显示为零。 这是什么意思?

UDP IP分片和MTU

我试图了解在发送UDP数据包的上下文中看到的一些行为。 我有两个小Java程序:一个传输UDP数据包,另一个接收它们。 我在两台通过一台交换机连接的计算机之间的networking上本地运行它们。 两个networking适配器上的MTU设置(由/ sbin / ifconfig报告)均为1500。 如果我发送大小<1500的数据包,我收到它们。 预期。 如果我发送1500 <size <24258的数据包,我收到它们。 预期。 我已经通过wireshark确认IP层将它们分段。 如果我发送大小> 24258的数据包,则会丢失。 不期望。 当我在接收端运行wireshark时,我没有看到任何这些数据包。 我能够看到类似的行为与ping -s。 ping -s 24258 hostA可以工作 ping -s 24259 hostA失败。 有没有人了解可能发生的事情,或者有我应该寻找的想法? 这两台电脑都运行CentOS 5 64位。 我使用1.6 JDK,但我不认为这是一个编程问题,这是一个networking或操作系统的问题。