Ⅰ linux下如何抓指定IP的包
用tcpm命令可以抓指定IP的包,具体命令为:
tcpmp tcp -i eth1 -t -s 0 -c 100 and dst port 22 and src net 192.168.1.1 -w ./target.cap
参数解析:
tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型。
-i eth1 : 只抓经过接口eth1的包
-t : 不显示时间戳
-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
-c 100 : 只抓取100个数据包
dst port 22 : 抓取目标端口是22的数据包
src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.1
-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析
(1)linux网卡收包扩展阅读
tcpmp语法格式:
tcpmp [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]
tcpmp主要参数说明:
1、-a 尝试将网络和广播地址转换成名称。
2、-c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
3、-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
4、-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
5、-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
6、-e 在每列倾倒资料上显示连接层级的文件头。
7、-f 用数字显示网际网络地址。
8、-F<表达文件> 指定内含表达方式的文件。
9、-i<网络界面> 使用指定的网络截面送出数据包。
10、-l 使用标准输出列的缓冲区。
11、-n 不把主机的网络地址转换成名字。
12、-N 不列出域名。
Ⅱ 我的linux服务器开启着http 服务,但是网卡的接收数据包不大,发送的数据包非常的大,怎么解决呀
你网络是怎么一个结构。
公网->路由->linux服务器
公网->linux服务器
如果中间有个路由,可以设置一下上下行流量
如果直接接到linux服务器上,不知道你是神马linux.iptables也可以限制上下行流量
纳闷,难道你接公网中间不加台防火墙吗?
其实最好的方法还是抓包分析一下具体在干吗。然后过滤掉无用的包。
Ⅲ linux下怎么指定网卡发包收包
linux下有命令可直接执行抓包的,命令如下:
1、tcpmp -vv -i ethN -s 10240 -w /root/abc.cap host ip
2、上述命令中,ethN,是你要抓的本机网卡,一般是eth0,可使用ifconfig查看使用的哪个网卡
-s 指定的是抓包数量 -w指定的是抓到的包写到哪个位置 host ip即为抓取哪个ip 的包
Ⅳ linux socket网络编程怎样收发包
1.send函数
ssize_t send( SOCKET s, const char *buf, size_t len, int flags );
(1)send先比较待发送数据的长度len和套接字s的发送缓冲的长度, 如果len大于s的发送缓冲区的长度,该函数返回SOCKET_ERROR;
(2)如果len小于或者等于s的发送缓冲区的长度,那么send先检查协议是否正在发送s的发送缓冲中的数据,如果是就等待协议把数据发送完,如果协议还没有开始发送s的发送缓冲中的数据或者s的发送缓冲中没有数据,那么send就比较s的发送缓冲区的剩余空间和len;
(3)如果len大于剩余空间大小,send就一直等待协议把s的发送缓冲中的数据发送完;
(4)如果len小于剩余空间大小,send就仅仅把buf中的数据到剩余空间里(注意并不是send把s的发送缓冲中的数据传到连接的另一端的,而是协议传送的,send仅仅是把buf中的数据到s的发送缓冲区的剩余空间里)。
注意:
(1)如果send函数数据成功,就返回实际的字节数,如果send在数据时出现错误,那么send就返回SOCKET_ERROR;如果send在等待协议传送数据时网络断开的话,那么send函数也返回SOCKET_ERROR。
(2)要注意send函数把buf中的数据成功到s的发送缓冲的剩余空间里后它就返回了,但是此时这些数据并不一定马上被传到连接的另一端。如果协议在后续的传送过程中出现网络错误的话,那么下一个Socket函数就会返回SOCKET_ERROR。(每一个除send外的Socket函数在执行的最开始总要先等待套接字的发送缓冲中的数据被协议传送完毕才能继续,如果在等待时出现网络错误,那么该Socket函数就返回 SOCKET_ERROR)
(3)在Unix系统下,如果send在等待协议传送数据时网络断开的话,调用send的进程会接收到一个SIGPIPE信号,进程对该信号的默认处理是进程终止。
2.recv函数
ssize_t recv(int s, char *buf, size_t len, int flags);
(1)recv先等待s的发送缓冲中的数据被协议传送完毕,如果协议在传送s的发送缓冲
中的数据时出现网络错误,那么recv函数返回SOCKET_ERROR。
(2)如果s的发送缓冲中没有数据或者数据被协议成功发送完毕后,recv先检查套接字s的接收缓冲区,如果s接收缓冲区中没有数据或者协议正在接收数 据,那么recv就一直等待,直到协议把数据接收完毕。当协议把数据接收完毕,recv函数就把s的接收缓冲中的数据到buf中。(注意:协议接收到的数据可能大于buf的长度,所以 在这种情况下要调用几次recv函数才能把s的接收缓冲中的数据完。recv函数仅仅是数据,真正的接收数据是协议来完成的)
(3)recv函数返回其实际的字节数。如果recv在时出错,那么它返回SOCKET_ERROR;如果recv函数在等待协议接收数据时网络中断了,那么它返回0。
注意:在Unix系统下,如果recv函数在等待协议接收数据时网络断开了,那么调用recv的进程会接收到一个SIGPIPE信号,进程对该信号的默认处理是进程终止。
Q&A:
(1)两次send一次recv会发生什么?
一次性读取两次send的内容。
(2)recv之后,接收缓冲区会被清空吗?
是的。
Ⅳ linux系统,使用无线网卡的时候可以收到包,但是发不出去包。
检查一下ip地址之类的是否正确
Ⅵ linux多队列网卡始终只有一个队列收包是怎么回事
答:很多无线网卡都很难知道它们的芯片是什么??我买了好几个54M的网卡都不行,分别是:BLEKINF5D700BUFFALOWLI2-PCI-G54。
Ⅶ Linux网卡收到了ping包,但是没有回应是怎么回事
查看一下配置,看是否屏蔽了ICMP,如果屏蔽了,即使开机也不会被局域网的其他电脑ping到
Ⅷ 如何处理Linux虚拟机网卡只能收包不能发包问题
打开虚拟机,启动Linux系统,启动完成后输入用户名和密码,按回车键登录系统。
配置Linux网络,使其能与主机Window 7正常通讯。注:网络配置可在网上搜索相关文章
在Linux下安装samba服务器,安装命令如下:
$sudo apt-get install samba smbfs samba-common smbclient
创建Samba配置文件
4.1打开配置文件
$sudo vim /etc/samba/smb.conf
4.2在smb.conf最后添加
[username]
path = /home/username
available = yes
browseable = yes
public = yes
writable = yes
(注意:上面设置中,username换成你的用户名,如果在前面有"#",需要把它去掉)
4.3把"#===== Share Definitions====="部分修改成如下图所示:
创建samba账户
$sudo smbpasswd -a USERNAME(USERNAME换成你的用户名)
会要求输入samba账户的密码
New SMB password:
Retype new SMB password:
[如果没有此步骤,当你登录时会提示session setup failed:NT_STATUS_LOGON_FAILURE]
重启samba服务器
$sudo /etc/init.d/samba reload(修改过smb.conf的话要执行一次)
$sudo /etc/init.d/samba restart
测试samba安装是否成功
可以到window下输入ip测试
在文件夹处输入"\\" + "Linux机器的IP或主机名",如图:
在Window下建立“映射网络驱动器”
打开“计算机”,找到如下图标注所示的“映射网络驱动器”,然后点击它
网络驱动器的设置
点击“驱动器”按钮,选择系统所剩甫姬颠肯郯厩奠询订墨下的盘符,如下图所示。这里我们选择“Z”盘
10.1选择需要映射的共享文件夹。在“文件夹”后面的输入框中输入我们Linux中sanba设置的共享文件夹路径,如下图:
[下图中的SHAREDIR输入你自己的共享文件名]
10.2选上登录时重新连接
10.3点击完成【按钮】,系统会为我们映射网络驱动器
打开“计算机”,会看到如下红色框标注图所示。双击网络驱动器,就可以直接访问到我们Linux下设置的共享目录了。
Ⅸ 抓包一定在linux下,借助特定外置网卡
一是外置网卡可能比内置卡信号要好些;二是大家都在用虚拟机,虚拟机是不识别内置卡的。没有特殊需要,用usb启动或硬盘启动linux,完全可以使用内置卡,很好用的。
Ⅹ linux查看网卡每秒接收多少个数据包
每个核 5万的速率可能是极限了,但 Linux的网络栈究竟可能达到多少呢?我们换一种更有趣的方式来问: 在 Linux上,编写一个每秒接收 100万 UDP数据包的程序究竟有多