1. linux命令:查找出目前正在运行的TCP/UDP服务
netstat命令可以看到的哦
能否看一下my网名呢?以后要是遇到了这样的问题, 都还是可以帮助搞定的哦
2. linux和windows有没有发送tcp协议消息的命令行程序
下面大概分几个方面进行罗列:
Linux要包含
[cpp]
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
等头文件,而windows下则是包含
[cpp]
#include <winsock.h>
。
Linux中socket为整形,Windows中为一个SOCKET。
Linux中关闭socket为close,Windows中为closesocket。
Linux中有变量socklen_t,Windows中直接为int。
因为linux中的socket与普通的fd一样,所以可以在TCP的socket中,发送与接收数据时,直接使用read和write。而windows只能使用recv和send。
设置socet选项,比如设置socket为非阻塞的。Linux下为
[cpp]
flag = fcntl (fd, F_GETFL);
fcntl (fd, F_SETFL, flag | O_NONBLOCK);
,Windows下为
[cpp]
flag = 1;
ioctlsocket (fd, FIONBIO, (unsigned long *) &flag);
。
当非阻塞socket的TCP连接正在进行时,Linux的错误号为EINPROGRESS,Windows的错误号为WSAEWOULDBLOCK。
file
Linux下面,文件换行是"\n",而windows下面是"\r\n"。
Linux下面,目录分隔符是"/",而windows下面是"\"。
Linux与Windows下面,均可以使用stat调用来查询文件信息。但是,Linux只支持2G大小,而Windows只支持4G大小。为了支持更大的文件查询,可以在Linux环境下加
_FILE_OFFSET_BITS=64定义,在Windows下面使用_stat64调用,入参为struct __stat64。
Linux中可根据stat的st_mode判断文件类型,有S_ISREG、S_ISDIR等宏。Windows中没有,需要自己定义相应的宏,如
[cpp]
#define S_ISREG(m) (((m) & 0170000) == (0100000))
#define S_ISDIR(m) (((m) & 0170000) == (0040000))
Linux中删除文件是unlink,Windows中为DeleteFile。
time
Linux中,time_t结构是长整形。而windows中,time_t结构是64位的整形。如果要在windows始time_t为32位无符号整形,可以加宏定义,_USE_32BIT_TIME_T。
Linux中,sleep的单位为秒。Windows中,Sleep的单位为毫秒。即,Linux下sleep (1),在Windows环境下则需要Sleep (1000)。
Windows中的timecmp宏,不支持大于等于或者小于等于。
Windows中没有struct timeval结构的加减宏可以使用,需要手动定义:
3. 为什么linux中无法使用tcpmp命令
你是否在root用户执行的?网络监听需要root权限,切换到root用户下就可以正常使用了。
如果还不行,那就需要自己安装,安装方法如下:
1.网上下载获得libpcap和tcpmp
http://www.tcpmp.org/
2.安装c编译所需包:apt-get install build-essential
3.安装 libpcap的前置:apt-get install flex,apt-get install bison
4.安装libpcap。
tcpmp的使用必须有这库。
tar xvfz libpcap-1.2.1.tar.gz //解压
进入解压之后的文件目录 运行./configure //生成makefile文件
make //进行编译
make install //安装 库文件默认安装在目录 /usr/lib,头文件默认安装在 /usr/include
3.安装tcpmp
tar xvfz tcpmp.4.2.1.tar.gz //解压
进入解压之后的文件目录 运行./configure //生成makefile文件
make //进行编译
make install //安装 库文件默认安装在目录 /usr/lib,头文件默认安装在 /usr/include
4. linux的tcpmp命令可以抓其他主机的包么
将无线网卡设置为混杂模式,混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包。
5. 如何修改linux tcp
Linux系统的TCP端口范围是可以修改的,适当的调整TCP端口范围以满足个人需求,那么具体要如何修改TCP端口范围呢?不妨通过实例来了解下吧。
在启动自定义服务的时候,希望使用8370端口,却发现端口已经被nginx或node占用了,无法启动。但是lvs又已经申请了,改端口的话比较麻烦。所以可以修改下
/proc/sys/net/ipv4/ip_local_port_range
参数,使tcp协议分配的端口从一个比较大的范围开始启用,这样,node或nginx就不会占用较小的端口了。
代码如下
echo ‘32768 61000’ 》 /proc/sys/net/ipv4/ip_local_port_range
补充:临时端口范围调整
你能使用netstat命令来显示有多少个连接进入这个状态:[若是生产环境下,最好先进行测试,然后考虑一个端口的合适范围]
代码如下
shell》netstat -n | grep TIME_WAIT
shell》cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000
如果需要修改 echo “start-number
end-number”,start-number和end-number是0-65536端口号范围内的数,,0-1024最好不要用,通常是熟知端口,如果是专门的代理服务器的话,很多熟知端口没有使用,当然可以考虑!
不要忘记将echo命令加到系统启动脚本中,以使机器每一次重启后都生效
6. 在linux中执行命令tcpmp -i eth0 tcp and host 120.192.198.44 and greater 1000 –nn得到如下的结果。
Ack 描述的是同一个连接,同一个方向,下一个本端应该接收的
(对方应该发送的)数据片段的顺序号. Window是本端可用的数据接收缓冲区的大小(也是对方发送数据时需根据这个大小来组织数据).
7. 在Linux系统怎么用tcpmp命令
------------------------------------tcpmp--------------------------------
协议报文分析器:
sniffer: 商业工具
tcpmp, wireshark(GUI), tshark(CLI)
tcpmp [options] 过滤条件
获取报文的条件:
ip src host 172.16.100.1
tcp src or dst port 21
udp dst port 53
tcp src or dst port 21 AND src host 172.16.100.1
tcp port 21 AND host 172.16.100.1
tcpmp的语法:
tcpmp [options] [Protocol] [Direction] [Host(s)] [Value] [Logical Operations] [Other expression]
Protocol(协议):
Values(取值): ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
If no protocol is specified, all the protocols are used.
Direction(流向):
Values(取值): src, dst, src and dst, src or dst
If no source or destination is specified, the "src or dst" keywords are applied. (默认是src or dst)
For example, "host 10.2.2.2" is equivalent to "src or dst host 10.2.2.2".
Host(s)(主机):
Values(替代关键字): net, port, host, portrange.
If no host(s) is specified, the "host" keyword is used. 默认如果此段没有指定关键字,默认即host。
For example, "src 10.1.1.1" is equivalent to "src host 10.1.1.1".
Logical Operations:
(1) and
and or &&
(2) or
or or ||
(3) except
not or !
常用选项:
-i any : 指定在哪个网卡进行抓包
-n : 不反解主机名
-nn : 不反解主机名与端口号
-X : 以16进制格式与ASCII格式显示报文
-XX : 除了显示X的内容还显示以太网首部
-v, -vv, -vvv : 显示更详细的信息
-c # : Only get x number of packets and then stop.
-s : Define the snaplength (size) of the capture in bytes. Use -s0 to get everything, unless you are intentionally capturing less.
-S : Print absolute sequence numbers.
-e : Get the ethernet header as well.
-q : Show less protocol information.
-E : Decrypt IPSEC traffic by providing an encryption key.
-A :Display Captured Packets in ASCII
-w /path/to/some_file : Capture the packets and write into a file
-r /path/from/some_file : Reading the packets from a saved file
-tttt : Capture packets with proper readable timestamp
eg:
tcpmp -i eth0 -X -nn -vv tcp port 100
可以在报文上面看一下有无user与pass的信息.
tcpmp -i eth0 -X -nn -vv tcp port 110 and ip src 192.168.10.1
ip host 172.16.100.1
ip src host 172.16.100.1
ip dst host 172.16.100.1
ip src and dst host 172.16.100.1
8. linux系统中ss命令tcp的部分分别代表什么
跟你心想的中ss命令TCP的部分分别代表就是一个TCP协议而已。
9. 如何将linux主机接入到tcp/ip网络,请描述详细的步骤
最简单的配置方式可以直接使用命令进行临时配置网络:
#ifconfig eth0 XXX.XXX.XXX.XXX
#route add default gw XXX.XXX.XXX.XXX
#echo "nameserver XXX.XXX.XXX.XXX" >> /etc.resolv.conf
以上三行对应的是IP、网关和DNS三个的临时配置;
如果需要进行静态的方式配置网络,最通用的做法就是直接对配置文件进行修改:
由于不同的操作系统的网络配置文件位置不同,可以使用命令进行搜索:
#locate ifcfg | grep ethX(X代表定义号)
然后进入配置文档进行修改:
#IPADDR=XXX.XXX.XXX.XXX
#GATEWAY=XXX.XXX.XXX.XXX
#DNS=XXX.XXX.XXX.XXX
以上三个就是主要要修改的参数。
10. linux下tcp通信怎么限制客户端的连接数量
listen的backlog参数指定的是已经三次握手完成,达到了established状态但是等待accept的队列的容量。当这个容量超过上限的时候服务器端便不处理客户端的三次握手了。这个队列的容量当然不是楼主所说的并发连接数。
但是lisen的再后一道程序便是accept了。如果你想要的是在tcp并发连接数量超过上限的时候服务器不再处理了三次握手那么只有两种办法:
1.关闭listen的socket
2.自己修改tcp协议栈的实现,当然这个就比较麻烦了。
用iptables防火墙来限制tcp连接,
如下,限制用户的tcp连接数为50
iptables -I INPUT-p tcp -m connlimit --connlimit-above 50 -j REJECT