2019-04-20 17:09:13 weixin_43625577 阅读数 170
  • 【直通华为HCNA/HCNP系列R篇3】路由器接口配置与管理

    全面介绍华为新一代企业路由器——AR G3系列路由器各种接口,特别是各种主要的WAN接口以及其对应的各种WAN技术的配置与管理方法。课程中,通过大量实验、示例直观地向大家演示了这些复杂的WAN接口和技术在各种WAN应用连接中的具体配置方法,真正做到了“拿来即用”。

    25156 人正在学习 去看看 王达

一、僵尸扫描

1、极度隐蔽;

2、实施条件苛刻;

3、扫描发起方和被扫描的目标服务器之间的网络必须实现地址伪造(现在的边界路由器大都加入了防地址伪造过滤的策略);

4、必须有一个僵尸机。

选择僵尸机的条件:

  • 闲置系统
  • 系统使用递增的IPID(如果目标系统的IPID永远是0或者是随机产生的,则僵尸扫描无法实现)。现在主流的Linux系统和新版Windows系统的IPID都是随机产生的,早期的XP、2003、2000的IPID都是顺序产生的)

二、扫描目的

控制僵尸机,通过僵尸机的IPID值判断被扫服务器上那些端口是开放的。

三、扫描原理

扫描过程:

1、Scanner(扫描者)向Zombie(僵尸机)发送一个SYN/ACK 数据包(在此之前,扫描者和僵尸机没有建立三次握手)

2、正常情况下,僵尸机向扫描者返回一个RST,RST包中会有一个IPID,假设为X

3、扫描者向目标主机发送一个SYN包,SYN包中伪造源IP地址为僵尸机的IP地址,所以在目标主机看来,SYN包是由僵尸机发给它的

4、如果目标主机的端口是开放状态,则目标主机向僵尸机发送SYN/ACK包

5、在僵尸机看来,它和目标主机之前并没有建立TCP连接,因此,僵尸机会向目标主机返回一个RST包,算上它上次向扫描者发的RST包,这是僵尸机发的第二个RST包,故RST包中的IPID值为X+1

6、此时,扫描者再向僵尸机发送一个SYN/ACK数据包,僵尸机一看,扫描者又向它无缘无故发送了一个SYN/ACK数据包,所以二话不说,直接向扫描者发出它的第三个RST包,此时IPID=X+2。

7、扫描者根据僵尸机发给它的RST包中的IPID值来判断目标端口的开放状态。如果目标端口开放,则IPID为X+2;否则为X+1。

        在上述扫描过程中,如果僵尸机和其他主机之间产生数据包的传输,IPID就会递增,从而影响结果的准确性,这也就是为什么要求僵尸机必须足够空闲且IPID值递增的原因。即使最后被发现,暴露的也是僵尸机,不会透漏任何和扫描者有关的信息,在整个过程中,没有建立一次完整的三次握手,所以说该扫描方法及其隐蔽,但同时实施的条件也及其苛刻。

四、实验环境

实现僵尸扫描只能用nmap或者scapy来实现

  • Kali(攻击者):192.168.247.157
  • Red Hat 6.5(目标主机):192.168.247.130
  • Window XP(僵尸机):192.168.247.132

1、僵尸扫描——Scapy

root@kali:~# scapy
WARNING: No route found for IPv6 destination :: (no default route?)
INFO: Can't import python ecdsa lib. Disabled certificate manipulation tools
Welcome to Scapy (2.3.3)

#给僵尸机发送SYN|ACK包,回包中的IPID值为16019
>>> sr1(IP(dst='192.168.247.132')/TCP(dport=445,flags='SA'))
Begin emission:
*Finished to send 1 packets.

Received 1 packets, got 1 answers, remaining 0 packets
<IP  version=4L ihl=5L tos=0x0 len=40 id=16019 flags= frag=0L ttl=128 proto=tcp chksum=0x8bc9 src=192.168.247.132 dst=192.168.247.157 options=[] |<TCP  sport=microsoft_ds dport=ftp_data seq=0 ack=0 dataofs=5L reserved=0L flags=R window=0 chksum=0x3d9c urgptr=0 |<Padding  load='\x00\x00\x00\x00\x00\x00' |>>>

#给目标主机发送一个伪造源IP为僵尸机的SYN包
>>> sr1(IP(src='192.168.247.132',dst='192.168.247.130')/TCP(dport=22,flags='S'))
.Begin emission:
*Finished to send 1 packets.

Received 2 packets, got 1 answers, remaining 0 packets
<IP  version=4L ihl=5L tos=0x0 len=44 id=0 flags=DF frag=0L ttl=64 proto=tcp chksum=0xca73 src=192.168.247.130 dst=192.168.247.132 options=[] |<TCP  sport=ssh dport=ftp_data seq=3271218019 ack=1 dataofs=6L reserved=0L flags=SA window=14600 chksum=0x582c urgptr=0 options=[('MSS', 1460)] |<Padding  load='\x00\x00' |>>>

#再次给僵尸机发送SYN|ACK包,回包中的IPID值为16021;IPID增加了2,因此目标主机的445端口开放.
>>> sr1(IP(dst='192.168.247.132')/TCP(dport=445,flags='SA'))
Begin emission:
Finished to send 1 packets.
*
Received 1 packets, got 1 answers, remaining 0 packets
<IP  version=4L ihl=5L tos=0x0 len=40 id=16021 flags= frag=0L ttl=128 proto=tcp chksum=0x8bc7 src=192.168.247.132 dst=192.168.247.157 options=[] |<TCP  sport=microsoft_ds dport=ftp_data seq=0 ack=0 dataofs=5L reserved=0L flags=R window=0 chksum=0x3d9c urgptr=0 |<Padding  load='\x00\x00\x00\x00\x00\x00' |>>>

WireShark抓包情况如下:

Scapy扫描——python脚本  

#!/usr/bin/python
# -*- coding: utf-8 -*-
# 该脚本用于识别僵尸机,并控制僵尸机对目标主机进行端口扫描

from scapy.all import *
import time
import sys

def IsZombie(zombie_ip):  #判断僵尸机是否是一个合格的僵尸机
	a1 = sr1(IP(dst = zombie_ip)/TCP(flags = "SA", dport = 445),timeout = 1,verbose = 0)
	time.sleep(2)   #给僵尸机充足的时间,以判断僵尸机网络是否繁忙
	a2 = sr1(IP(dst = zombie_ip)/TCP(flags = "SA", dport = 445),timeout = 1,verbose = 0)
	if (a1[IP].id + 1) == a2[IP].id: #比较两次ipid值
		print ("this is a good zombie!")
		action = raw_input("do you want to use this zombie?(y/n)")
		if action == "y":
			target_ip = raw_input("please input the target's ip:") #目标主机ip
			scan(zombie_ip,target_ip)
        	else:
			sys.exit()
	else:
        	print ("this is not a good zombie!")

def scan(zombie_ip,target_ip):
	print("\nScanning target:"+target_ip+" with zombie:"+zombie_ip)
	print("\n------------------Open Ports on Target---------------\n")
	for port in range(1,1000):
		try:
			start_val=sr1(IP(dst=zombie_ip)/TCP(flags="SA",dport=port),timeout=2,verbose=0) #给僵尸机发送第一个SYN/ACK数据包
			send(IP(dst=target_ip,src=zombie_ip)/TCP(flags="S",dport=port),verbose=0) #给目标主机发送一个伪造原地址的SYN数据包
			end_val = sr1(IP(dst=zombie_ip)/TCP(flags="SA"),timeout=2,verbose=0) #给僵尸机发送第二个SYN/ACK数据包
			if (start_val[IP].id+2) == end_val[IP].id:   #比较ipid值,从而判断端口是否开放
				print(port)
		except:
			pass

print("------------------Zombie Scan Suite-------------------\n")
ip = raw_input("the zombie's ip:")
IsZombie(ip)

运行结果如下:

root@kali:~# python zombie.py
------------------Zombie Scan Suite-------------------

the zombie's ip:192.168.247.132
this is a good zombie!
do you want to use this zombie?(y/n)y
please input the target's ip:192.168.247.130

Scanning target:192.168.247.130 with zombie:192.168.247.132

------------------Open Ports on Target---------------

22
80
89
106
111
112
118
124
142
148
154

 2、僵尸扫描——nmap

  • 发现僵尸机

nmap -p445 僵尸机IP --script=ipidseq.nse       //--script=ipidseq.nse为nmap自带脚本

root@kali:~# nmap -p445 192.168.247.132 --script=ipidseq.nse
Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-13 21:22 CST
Nmap scan report for bogon (192.168.247.132)
Host is up (0.0014s latency).

PORT    STATE SERVICE
445/tcp open  microsoft-ds
MAC Address: 00:0C:29:84:C8:F7 (VMware)

Host script results:
|_ipidseq: Incremental!    //IPID递增

Nmap done: 1 IP address (1 host up) scanned in 0.85 seconds
  • 扫描目标

nmap  目标IP  -sI  僵尸机IP  -Pn  -p  扫描端口范围

root@kali:~# nmap 192.168.247.129 -sI 192.168.247.132 -Pn -p 0-100
Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-13 21:37 CST
Idle scan using zombie 192.168.247.132 (192.168.247.132:80); Class: Incremental
Nmap scan report for bogon (192.168.247.129)
Host is up (0.030s latency).
Not shown: 100 closed|filtered ports
PORT   STATE SERVICE
80/tcp open  http
MAC Address: 00:0C:29:8F:74:74 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 2.93 seconds

 

2019-05-26 10:25:52 weixin_43803070 阅读数 91
  • 【直通华为HCNA/HCNP系列R篇3】路由器接口配置与管理

    全面介绍华为新一代企业路由器——AR G3系列路由器各种接口,特别是各种主要的WAN接口以及其对应的各种WAN技术的配置与管理方法。课程中,通过大量实验、示例直观地向大家演示了这些复杂的WAN接口和技术在各种WAN应用连接中的具体配置方法,真正做到了“拿来即用”。

    25156 人正在学习 去看看 王达

为什么识别操作系统呢?
因为操作系统安装之后默认情况下会开放端口,我们可以根据扫描操作系统的版本知道默认开放的服务和端口。
原理:
通过ttl值识别,不同类型的操作系统起始值是不同的,win的ttl是128(65-128)(1-64)是Linux活unigx,某些特殊的版本可能是255。每次经过一个路由器ttl会减一。所以根据数据包发送的目标地址,在目标主机上抓取收到的数据包的ttl值可以判断数据包经过几次路由器。
主动扫描:
nmap:

root@kali:~# nmap 192.168.19.132 -O   //-O大写

xprobe:

root@kali:~# xprobe2 192.168.191.32   

结果不太可靠。
被动扫描:
p0f:
命令执行之后,开始进行监听数据包(与本机进行交互的数据包),根据数据包判断目标IP以及操作系统类型。
在这里插入图片描述

snmp:
简单网络管理协议,他的通信走的udp161 和162,被查询的服务端使用的是161端口,客户端查询机器使用的是162端口,snmp可以查看设备的很多详细信息(内存大小、cpu情况)。
工作原理:
客户端需要有一个MB库,根据MB库对服务端进行查询。
首先我们需要在win03中安装snmp服务:
在这里插入图片描述SNMP的基本思想:为不同种类的设备、不同厂家生产的设备、不同型号的设备,定义为一个统一的接口和协议,使得管理员可以是使用统一的外观面对这些需要管理的网络设备进行管理。通过网络,管理员可以管理位于不同物理空间的设备,从而大大提高网络管理的效率,简化网络管理员的工作。

snmp中的团体(community)是基本的安全机制,用于实现SNMP网络管理员访问SNMP管理代理时的身份验证。类似于密码,默认值为 public。团体名(Community name)是管理代理的口令,管理员被允许访问数据对象的前提就是网络管理员知道网络代理的口令。如果把配置管理代理成可以执行Trap命令,当网络管理 员用一个错误的分区名查询管理代理时,系统就发送一个autenticationFailure trap报文。

2016-06-20 17:23:50 wyc_cs 阅读数 23033
  • 【直通华为HCNA/HCNP系列R篇3】路由器接口配置与管理

    全面介绍华为新一代企业路由器——AR G3系列路由器各种接口,特别是各种主要的WAN接口以及其对应的各种WAN技术的配置与管理方法。课程中,通过大量实验、示例直观地向大家演示了这些复杂的WAN接口和技术在各种WAN应用连接中的具体配置方法,真正做到了“拿来即用”。

    25156 人正在学习 去看看 王达
Linux中nc命令是一个功能强大的网络工具,全称是netcat。

语法:

nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]

参数说明:

-g<网关> 设置路由器跃程通信网关,最丢哦可设置8个。

-G<指向器数目> 设置来源路由指向器,其数值为4的倍数。

-h 在线帮助。

-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。

-l 使用监听模式,管控传入的资料。

-n 直接使用IP地址,而不通过域名服务器。

-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。

-p<通信端口> 设置本地主机使用的通信端口。

-r 乱数指定本地与远端主机的通信端口。

-s<来源位址> 设置本地主机送出数据包的IP地址。

-u 使用UDP传输协议。

-v 显示指令执行过程。

-w<超时秒数> 设置等待连线的时间。

-z 使用0输入/输出模式,只在扫描通信端口时使用。

实例:

1、TCP端口扫描

# nc -v -z -w2 127.0.0.1 1-100
Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!
Connection to 127.0.0.1 53 port [tcp/domain] succeeded!
Connection to 127.0.0.1 80 port [tcp/http] succeeded!
...
nc: connect to 127.0.0.1 port 100 (tcp) failed: Connection refused

2、从192.168.1.2拷贝文件到192.168.1.3

首先在接收端192.168.1.3上: nc -l 1234 > test.txt

然后在发送端192.168.1.2上: nc 192.168.1.3 < test.txt

注意:先运行接收端,指定一个端口为1234,文件为test.txt,再执行发送端,并且发送端必须存在同名的文件test.txt

3、传输目录

从server1(192.168.16.233)拷贝nginx目录内容到server2(192.168.48.47)上。需要先在server2上,用nc激活监听,

server2上运行:# nc -l 1234 | tar xzv-

server1上运行:# tar czv- nginx | nc 192.168.48.47 1234 

4、简单聊天工具

在192.168.1.2上: nc -l 1234

在192.168.1.3上: nc 192.168.1.2 1234

这样,双方就可以相互交流了。使用ctrl+C(或D)退出

转载请注明:一路博客,http://www.16boke.com/article/detail/161



 Ubuntu  nc 
2018-04-03 19:45:59 qingchenldl 阅读数 200
  • 【直通华为HCNA/HCNP系列R篇3】路由器接口配置与管理

    全面介绍华为新一代企业路由器——AR G3系列路由器各种接口,特别是各种主要的WAN接口以及其对应的各种WAN技术的配置与管理方法。课程中,通过大量实验、示例直观地向大家演示了这些复杂的WAN接口和技术在各种WAN应用连接中的具体配置方法,真正做到了“拿来即用”。

    25156 人正在学习 去看看 王达

Linux nc常用命令

Linux中nc命令是一个功能强大的网络工具,全称是netcat。

nc/netcat(选项)(参数)
选项:

-g<网关>:设置路由器跃程通信网关,最多设置8个;
-G<指向器数目>:设置来源路由指向器,其数值为4的倍数;
-h:在线帮助;
-i<延迟秒数>:设置时间间隔,以便传送信息及扫描通信端口;
-l:使用监听模式,监控传入的资料;
-n:直接使用ip地址,而不通过域名服务器;
-o<输出文件>:指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存;
-p<通信端口>:设置本地主机使用的通信端口;
-r:指定源端口和目的端口都进行随机的选择;
-s<来源位址>:设置本地主机送出数据包的IP地址;
-u:使用UDP传输协议;
-v:显示指令执行过程;
-w<超时秒数>:设置等待连线的时间;
-z:使用0输入/输出模式,只在扫描通信端口时使用。

参数:

主机:指定主机的IP地址或主机名称;
端口号:可以是单个整数或者是一个范围。

TCP端口扫描

# nc -v -z -w2 192.168.0.3 1-100
-v:显示指令执行过程;
-z:使用0输入/输出模式,只在扫描通信端口时使用。
-w2:设置等待连线的时间为2s;
root@kali:~/Desktop# nc -v -z -w2 192.168.211.106 38324
192.168.211.106: inverse host lookup failed: Unknown host
(UNKNOWN) [192.168.211.106] 38324 (?) open

root@kali:~/Desktop# nc -v -z -w2 192.168.211.106 38322-38325
192.168.211.106: inverse host lookup failed: Unknown host
(UNKNOWN) [192.168.211.106] 38324 (?) open

UDP端口扫描

# nc -u -z -w2 192.168.0.1 1-1000 //扫描192.168.0.3 的端口 范围是 1-1000

扫描指定端口

# nc -nvv 192.168.0.1 80 //扫描 80端口
(UNKNOWN) [192.168.0.1] 80 (?) open

使用netcat实现局域网聊天

一端先启好监听:

nc -l 9999

另一端端进行连接:

nc 192.168.220.128 9999

连接之后的任一边的输入在另一边都可看到

#Ubantu (192.168.118.137 9999)

ldl@ubuntu:~$ nc -l 9999
wode
我的
Linux真好用 ^H,^H^H-=13
#kali(192.168.118.134)

root@kali:~/Desktop# nc 192.168.118.137 9999
wode^H^H^H
我的
Linux真好用-=13

发现输入的内容(中文英文字符)都可以正确解析,但是非打印字符不会传输。退格等键无用。

Ctrl+C 断开连接。

使用netcat实现文件传输

和局域网聊天是原理一样的,不过把输入输出重定向到文件
接收入端先启好监听:

nc -l 9999 > recv.txt

发送端进行发送:

nc 192.168.220.128 9999 < send.txt

不过传输完之后不会自动断开连接得手动ctrl+c断开,而且转输完成并没有什么标志不知是否已传完。


接收端:

ldl@ubuntu:~/Desktop$ ls
源代码
ldl@ubuntu:~/Desktop$ nc -l 9999 > test.c
^C
ldl@ubuntu:~/Desktop$ ls
test.c  源代码

发送端:
root@kali:~/Desktop# nc 192.168.118.137 9999 < test.c


2019-08-08 17:09:34 weixin_44683855 阅读数 22
  • 【直通华为HCNA/HCNP系列R篇3】路由器接口配置与管理

    全面介绍华为新一代企业路由器——AR G3系列路由器各种接口,特别是各种主要的WAN接口以及其对应的各种WAN技术的配置与管理方法。课程中,通过大量实验、示例直观地向大家演示了这些复杂的WAN接口和技术在各种WAN应用连接中的具体配置方法,真正做到了“拿来即用”。

    25156 人正在学习 去看看 王达

ip:网络配置工具

ip命令是iproute软件包中的一个强大的网络配置工具,用于显示或管理Linux系统的路由,网络设备,策略路由和隧道

选项说明:
参数选项	解释说明(带@的为重点)
-s	输出更详细的信息,为了相似更详细的信息,可重复使用此选项
-r	显示主机时,不使用IP地址,而是使用主机的域名
网络对象	指定要管理的网络对象(link:网络设备 address:IP地址 addrlabel:协议地址标
        签管理 route:路由表 rule:策略路由表 runnel:IP隧道 )
help	ip help:查看ip命令的帮助 ip【object】help:查看指定的网络对象的帮助
操作命令	对指定的网络对象完成的具体操作。通常,每一个具体操作的命令后面又有一组相关的         命令选项。不同的操作对象所支持的操作命令也不同。下面按照操作的网络对象给出所
        支持的常见操作命令
link对象支持的操作命令:set(修改设备属性),show(显示设备属性)
address对象支持的操作命令:add(添加协议地址),del(删除协议地址),flush(清除协议地址),show(查看协议地址)
addrlabel对象支持的操作命令:add,del,list,flush
route对象支持的操作命令:add,change,replace,delete,show,flush,get
rule对象支持的操作命令:add,delete,flush,show
tunnel对象支持的操作命令:add,change,delete,prl,show

使用范例
(1)显示网络设备属性
ip link show eth0 #显示eth0网卡属性
ip -s link show eth0 #显示详细属性
RX: bytes packets errors dropped overrun mcast #显示每个网络设备上数据包的统计信息
ip -s -s link show eth0 #使用两个-s显示更详细属性
在这里插入图片描述
(2)关闭和激活网络设备
在这里插入图片描述
(3)修改网卡MAC地址
在这里插入图片描述
(4)查看网卡信息
在这里插入图片描述在这里插入图片描述
(5)添加或删除IP地址
在这里插入图片描述
在这里插入图片描述
删除网卡的主IP地址,同时会删除该网卡的所有IP地址
删除网卡的辅助IP地址,不会影响该网卡的其他IP地址
思考:
我们该如何用ip命令创建网卡的别名IP呢?
https://blog.csdn.net/weixin_44683855/article/details/98874272
(6)查看路由表
[root@Mr_chen ~]# ip route
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.100
192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.222
169.254.0.0/16 dev eth0 scope link metric 1002
default via 192.168.0.1 dev eth0
[root@Mr_chen ~]# ip route | column -t #使用column命令格式化,选项-t,默认根据空格分隔判断输入行的列数来创建一个表
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.100
192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.222
169.254.0.0/16 dev eth0 scope link metric 1002
default via 192.168.0.1 dev eth0
[root@Mr_chen ~]# route -n #与route命令对比一下
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
(7)添加或删除路由表
[root@Mr_chen ~]# ip route add 192.168.1.0/24 via 192.168.0.254 dev eth1 #添加静态路由
[root@Mr_chen ~]# ip route | column -t
192.168.1.0/24 via 192.168.0.254 dev eth1
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.100
192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.222
169.254.0.0/16 dev eth0 scope link metric 1002
default via 192.168.0.1 dev eth0
[root@Mr_chen ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 192.168.0.254 255.255.255.0 UG 0 0 0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
[root@Mr_chen ~]# ip route del 192.168.1.0/24 #删除静态路由
[root@Mr_chen ~]# ip route | column -t
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.100
192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.222
169.254.0.0/16 dev eth0 scope link metric 1002
default via 192.168.0.1 dev eth0

netstat:查看网络状态

netstat命令用于显示本机网络的连接状态,运行端口和路由表等信息。

选项说明:
参数选项	解释说明(带@的为重点)
-r	显示路由表信息,该功能类似与前面学过的route和ip route
-g	显示多播功能群组成员,该功能类似于前面学过的ip maddr
-i	显示网络接口信息,该功能类似于前面学过的ip -s link
-s	显示各类协议的统计信息
-n	显示数字形式的地址而不是去解析主机,端口或用户名。默认情况下,netstat命令会尝试解
    析并显示主机的主机名,这个过程通常比较长也是非必需的@
-a	显示处于监听状态和非监听状态的socket信息@
-A	显示指定网络类型的网络连接状态
-c<秒数>	后面跟的秒数表示每隔几秒就刷新显示一次@
-l	仅显示连接状态为“LISTEN”的服务的网络状态
-t	显示所有的TCP连接情况@
-u	显示所有的UDP连接情况@
-p	显示socket所属进程的PID和名称@

使用范例
(1)常用选项组合一
在这里插入图片描述
第一行活动网络连接说明:

列数 名称 含义
第一列 Proto socket使用的协议(TCP,UDP,RAW)
第二列 Recv-Q 接收到但是还未处理的字节数
第三列 Send-Q 已经发送但是未被远程主机确认收到的字节数
第四列 Local Address 本地主机地址和端口
第五列 Foreign Address 远程主机地址和端口
第六列 State socket的状态,通常仅仅有TCP的状态,状态值可能有ESTABLISHED,SYN_SENT,SYN_RECV,FIN_WAIT1,FIN_WAIT2,TIME_WAIT等

第6列State状态信息详解

状态 含义
ESTABLISHED socket已经建立连接,表示处于连接的状态,一般认为有一个ESTABLISHED是一个服务的并发连接。该连接状态在生产场景中很重要,需要重点关注
SYN_SENT socket正在积极尝试建立一个连接,即处于发送后连接前的一个等待但未匹配进入连接的状态
SYN_RECV 已经从网络上收到一个连接请求
FIN_WAIT1 socket已关闭,连接正在或正要关闭
FIN_WAIT2 连接已关闭,并且socket正在等待远端结束
TIME_WAIT socket正在等待关闭处理仍在网络上的数据包,这个连接状态在生产场景中很重要,需要重点关注
CLOSED socket不再被占用了
CLOSE_WAIT 远端已经结束,等待socket关闭
LAST_ACK 远端已经结束,并且socket也已经关闭,等待acknowledgement
LISTEN socket正在监听连接请求
CLOSING socket关闭,但是我们仍旧没有发送数据
UNKNOWN socket状态未知

(2)常用选项组合二
在这里插入图片描述

以上命令语句的作用为显示所有TCP和UDP正在监听的连接信息
-l : 显示所有LISTEN状态的网络连接
-n : 显示IP地址,不进行DNS解析成主机名,域名
-t : 显示所有TCP连接
-u : 显示所有UDP连接
-p : 显示进程号和进程名

(3)显示当前系统的路由表
[root@localhost ~]# netstat -rn #使用-r显示路由表信息,-n不进行DNS解析,加快命令执行速度
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
提示:该命令相当于route -n
(4)选项-i显示网络的接口状况
[root@localhost ~]# netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 4103 0 0 0 403 0 0 0 BMRU
lo 16436 0 0 0 0 0 0 0 0 0 LRU

以下是命令结果解释
Iface : 表示网络设备的接口名称
MTU : 表示最大传输单元,单位为字节
RX-OK/TX-OK : 表示已经准确无误地接收/发送了多少数据包
RX-ERR/TX-ERR : 表示接收/发送数据包时产生了多少错误
RX-DRP/TX-DRP : 表示接收/发送数据包时丢弃了多少数据包
RX-OVR/TX-OVR : 表示由于误差而遗失了多少数据包。
Flg : 表示接口标记,其中各标记含义具体如下。 
L : 表示该接口是个回环设备。
B : 表示设置了广播地址。
M : 表示接收所有数据包。
R : 表示接口正在运行。
U : 表示接口处于活动状态。
O : 表示在该接口上禁用arp。
P : 表示一个点到点的连接

正常情况下,RX-ERR/TX-ERR,RX-DRP/TX-DRP和RX-OVR/TX-OVR的值都应该为0,如果这几个选项的值不为0,并且很大,那么网络质量肯定有问题,网络传输性能也一定会下降。
(5)统计各个状态的网络连接个数
[root@Mr_chen ~]# netstat -n | awk ‘/^tcp/{Mr_chen[$NF]++}END{for(i in Mr_chen)print i,Mr_chen[i]}’
TIME_WAIT 6163
FIN_WAIT1 42
FIN_WAIT2 1056
ESTABLISHED 4542
SYN_RECV 53
LAST_ACK 30

ss : 查看网络状态

ss命令是类似并将取代netstat的工具,它能用来查看网络状态信息,包括TCP,UDP连接,端口等。它的优点是能够显示更多更详细的有关网络连接状态的信息,而且比netstat更快速更高效。
如果系统没有ss命令,那就需要安装一下,ss命令属于iproute包,因此安装命令是yum -y install iproute
在这里插入图片描述
使用范例
(1)常用选项组合一
[root@Mr_chen ~]# ss -an #显示所有的socket连接
在这里插入图片描述
[root@Mr_chen ~]# ss -an | column -t #上面的输出写在文档中会有点乱,下面用column格式化一下。
在这里插入图片描述
(2)常用选项组合二
[root@Mr_chen ~]# ss -lntup | column -t #显示所有正在监听的TCP和UDP连接
在这里插入图片描述
(3)显示socket统计
[root@Mr_chen ~]# ss -s #统计当前的established,closed,orphaned和waiting的TCP socket数量
在这里插入图片描述
当服务器产生大量的socket连接时,通常会使用该命令来做宏观数据统计;ss的大部分参数应用和netstat很像。

ping : 测试主机之间的网络连通性

ping命令可用于测试主机之间网络的连通性。执行ping命令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而可得知该主机运作正常。
在这里插入图片描述
使用范例
(1)测试到目标主机的网络连通性
[root@localhost ~]# ping www.baidu.com #ping命令直接接域名或IP,会一直显示ping结果
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
#显示ping的域名及其IP地址,发送的是56字节的数据
64 bytes from 61.135.169.121: icmp_seq=1 ttl=57 time=10.1 ms
#从目标主机收到的数据是64字节,icmp_seq是收到包的序列号,ttl是数据包的生存期,time是延迟。
64 bytes from 61.135.169.121: icmp_seq=2 ttl=57 time=46.4 ms
64 bytes from 61.135.169.121: icmp_seq=3 ttl=57 time=62.5 ms
^C #直到Ctrl+c强制终止
www.a.shifen.com ping statistics — #这里是ping的统计结果
3 packets transmitted, 3 received, 0% packet loss, time 2632ms #发了3个包,收到3个,丢失率0%,时间为2632ms
rtt min/avg/max/mdev = 10.175/39.730/62.569/21.911 ms
#rtt是传输的时间延迟。min/avg/max/mdev==>最小/平均/最大/算数平均差

扩展知识:
1)ping命令会显示一个时间作为衡量网络参数延迟的参数,以判断源主机与目标主机之间网络的质量。
2)ping命令的输出信息中含有TTL值。TTL(Time To Life)称为生存周期,它是ICMP报文在网络上的存活时间。不同的操作系统发出的ICMP报文的生存期各不相同,常见的生存期为32,64,128和255等。TTL值反映了ICMP报文所能够经过的路由器数目,每经过一个路由器,路由器都会将其数据包的生存期减去1,如果TTL值变为0,则路由器将不再转发此报文。

(2)使用ping参数的不同组合的例子
[root@Mr_chen ~]# ping -c 3 -i 3 -s 1024 -t 255 www.baidu.com
PING www.baidu.com (61.135.169.121) 1024(1052) bytes of data.
1032 bytes from 61.135.169.121: icmp_seq=1 ttl=57 time=5.29 ms
1032 bytes from 61.135.169.121: icmp_seq=2 ttl=57 time=4.79 ms
1032 bytes from 61.135.169.121: icmp_seq=3 ttl=57 time=5.50 ms

www.baidu.com ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 6014ms
rtt min/avg/max/mdev = 4.795/5.198/5.507/0.304 ms

以下是命令说明
-c 3:发送3次ICMP包
-i 3:每次发包时间间隔为3s
-s 1024:设置发送的数据包大小为1024字节
-t 255:设置发送数据包的ttl值为255
nmap:网络探测工具和安全/端口扫描器

nmap命令是一款开放源代码的网络探测和安全审核工具,是Network Mapper的缩写。其设计目标是快速地扫描大型网络。nmap可以发现网络上有哪些主机,主机提供了什么服务(应用程序名称和版本号),并探测操作系统的类型及版本信息。
如果系统没有nmap命令,则可以使用下面的命令来安装:yum -y install nmap
在这里插入图片描述
使用范例
(1)查看主机当前开放的端口
[root@Mr_chen ~]# nmap 192.168.0.1 #直接接目标主机,默认会扫描1~1000端口

Starting Nmap 5.51 ( http://nmap.org ) at 2018-02-28 08:23 EST
Nmap scan report for localhost (192.168.0.1)
Host is up (0.014s latency). #目标主机正在运行
Not shown: 999 closed ports #999个端口关闭
PORT STATE SERVICE
80/tcp open http #开放的80端口http服务
MAC Address: CC:B2:55:DF:3C:83 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 0.37 seconds

(2)扫描主机的指定端口
[root@Mr_chen ~]# nmap -p 1024-65535 192.168.0.1 #-p选项指定扫描范围

Starting Nmap 5.51 ( http://nmap.org ) at 2018-02-28 08:26 EST
Nmap scan report for localhost (192.168.0.1)
Host is up (0.039s latency).
Not shown: 64511 closed ports
PORT STATE SERVICE
1780/tcp open unknown
MAC Address: CC:B2:55:DF:3C:83 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 17.46 seconds

(3)扫描局域网内所有的IP
[root@Mr_chen ~]# nmap 192.168.0.0/24 #使用网段的格式扫描局域网

Starting Nmap 5.51 ( http://nmap.org ) at 2018-02-28 08:29 EST
Nmap scan report for localhost (192.168.0.1)
Host is up (0.0072s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
80/tcp open http
MAC Address: CC:B2:55:DF:3C:83 (Unknown)

Nmap scan report for localhost (192.168.0.129)
Host is up (0.092s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
80/tcp open http
MAC Address: F0:FE:6B:69:5B:1E (Unknown)

Nmap scan report for localhost (192.168.0.133)
Host is up (0.33s latency).
All 1000 scanned ports on localhost (192.168.0.133) are closed
MAC Address: BC:3D:85:FE:3F:DA (Unknown)

Nmap scan report for localhost (192.168.0.233)
Host is up (0.0000010s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh

Nmap scan report for localhost (192.168.0.254)
Host is up (0.00016s latency).
Not shown: 992 closed ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
902/tcp open iss-realsecure
912/tcp open apex-mesh
5678/tcp open rrac
10000/tcp open snet-sensor-mgmt
MAC Address: 30:B4:9E:74:1B:3B (Unknown)

Nmap done: 256 IP addresses (5 hosts up) scanned in 19.27 seconds

[root@Mr_chen ~]# nmap -sn 192.168.0.0/24 #使用-sn选项不扫描端口

Starting Nmap 5.51 ( http://nmap.org ) at 2018-02-28 08:32 EST
Nmap scan report for localhost (192.168.0.1)
Host is up (0.0027s latency).
MAC Address: CC:B2:55:DF:3C:83 (Unknown)
Nmap scan report for localhost (192.168.0.233)
Host is up.
Nmap scan report for localhost (192.168.0.254)
Host is up (0.000071s latency).
MAC Address: 30:B4:9E:74:1B:3B (Unknown)
Nmap done: 256 IP addresses (3 hosts up) scanned in 2.56 seconds

[root@Mr_chen ~]# nmap -sn 192.168.0.232-234 #使用这种地址范围进行扫描

Starting Nmap 5.51 ( http://nmap.org ) at 2018-02-28 08:34 EST
Nmap scan report for localhost (192.168.0.233)
Host is up.
Nmap done: 3 IP addresses (1 host up) scanned in 0.81 seconds

(4)探测目标主机的服务和操作系统的版本
[root@Mr_chen ~]# nmap -O -sV 192.168.0.1

Starting Nmap 5.51 ( http://nmap.org ) at 2018-02-28 08:43 EST
Nmap scan report for localhost (192.168.0.1)
Host is up (0.0037s latency).
Not shown: 999 closed ports
PORT STATE SERVICE VERSION
80/tcp open http Linksys wireless-G WAP http config (Name D-Link Wireless N Router DIR-600M)
MAC Address: CC:B2:55:DF:3C:83 (Unknown)
Device type: general purpose
Running: Linux 2.4.X
OS details: Linux 2.4.18 - 2.4.35 (likely embedded)
Network Distance: 1 hop
Service Info: Device: WAP

OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 2.93 seconds
上边的输出信息中不仅包含了端口号,而且还包括了服务的版本号。在网络安全性要求较高的主机上,最好能够屏蔽服务版本号,以防止黑客利用特定版本的服务漏洞进行攻击。

tcpdump:监听网络流量

tcpdump命令是一个截获网络数据包的包分析工具。tcpdump可以将网络中传送的数据包的“头”完全截获下来以提供分析。它支持针对网络层,协议,主机,端口等的过滤,并支持与,或,非逻辑语句协助过滤有效信息。
tcpdump命令工作时要先把网卡的工作模式切换到混杂模式(promiscuous mode)。因为要修改网络接口的工作模式,所以tcpdump命令需要以root的身份运行。
在这里插入图片描述
使用范例
(1)不加参数运行tcpdump命令监听网络
[root@localhost ~]# tcpdump #默认情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
05:12:45.464963 IP localhost.ssh > localhost.50832: Flags [P.], seq 898292388:898292596, ack 861396487, win 317, length 208
05:12:45.465055 IP localhost.50832 > localhost.ssh: Flags [.], ack 208, win 523, length 0
05:12:45.465215 IP localhost.57595 > localhost.domain: 4104+ PTR? 254.0.168.192.in-addr.arpa. (44)
05:12:45.467851 IP localhost.domain > localhost.57595: 4104 1/0/0 PTR localhost. (67)
05:12:45.467906 IP localhost.57067 > localhost.domain: 107+ PTR? 233.0.168.192.in-addr.arpa. (44)
05:12:45.469444 IP localhost.domain > localhost.57067: 107 1/0/0 PTR localhost. (67)
05:12:45.469504 IP localhost.34192 > localhost.domain: 2703+ PTR? 1.0.168.192.in-addr.arpa. (42)
05:12:45.621206 IP localhost.ssh > localhost.50832: Flags [P.], seq 3120:3280, ack 1, win 317, length 160
05:12:45.621258 IP localhost.50832 > localhost.ssh: Flags [.], ack 3280, win 524, length 0
05:12:45.636742 IP localhost.ssh > localhost.50832: Flags [P.], seq 3280:3536, ack 1, win 317, length 256
05:12:45.643843 IP localhost.50832 > localhost.ssh: Flags [P.], seq 1:65, ack 3536, win 523, length 64
05:12:45.643889 IP localhost.ssh > localhost.50832: Flags [P.], seq 3536:3696, ack 65, win 317, length 160
^C #tcpdump命令在运行期间可以使用组合Ctrl+C终止程序
29 packets captured #最后三行就是按CTRL+C后输出的监听到的数据包汇总信息
32 packets received by filter
0 packets dropped by kernel
使用tcpdump命令时,如果不输入过滤规则,则输出的数据量将会很大。

(2)精简输出信息
[root@localhost ~]# tcpdump -q #默认情况下,tcpdump命令的输出信息较多,为了显示精简的信息,可以使用-q选项
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
05:33:01.438200 IP localhost.ssh > localhost.50832: tcp 208
05:33:01.479036 IP localhost.50832 > localhost.ssh: tcp 0
05:33:01.494539 IP localhost.ssh > localhost.50832: tcp 176
05:33:01.510460 IP localhost.ssh > localhost.50832: tcp 112
05:33:01.510907 IP localhost.50832 > localhost.ssh: tcp 0
05:33:01.525789 IP localhost.ssh > localhost.50832: tcp 176
05:33:01.541450 IP localhost.ssh > localhost.50832: tcp 112
05:33:01.541548 IP localhost.50832 > localhost.ssh: tcp 0
05:33:01.557049 IP localhost.ssh > localhost.50832: tcp 176
05:33:01.574173 IP localhost.ssh > localhost.50832: tcp 112
05:33:01.574486 IP localhost.50832 > localhost.ssh: tcp 0
05:33:01.583765 IP localhost.50832 > localhost.ssh: tcp 64
05:33:01.583857 IP localhost.ssh > localhost.50832: tcp 176
^C
24 packets captured
26 packets received by filter
0 packets dropped by kernel
[root@localhost ~]# tcpdump -c 5 #使用-c选项指定监听的数据包数量,这样就不需要使用Ctrl+C了
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
05:34:24.515192 IP localhost.ssh > localhost.50832: Flags [P.], seq 898300004:898300212, ack 861398503, win 317, length 208
05:34:24.515301 IP localhost.50832 > localhost.ssh: Flags [.], ack 208, win 519, length 0
05:34:24.515445 IP localhost.60389 > localhost.domain: 26412+ PTR? 254.0.168.192.in-addr.arpa. (44)
05:34:24.518180 IP localhost.domain > localhost.60389: 26412 1/0/0 PTR localhost. (67)
05:34:24.518247 IP localhost.38804 > localhost.domain: 7473+ PTR? 233.0.168.192.in-addr.arpa. (44)
5 packets captured
10 packets received by filter
0 packets dropped by kernel

(3)监听指定网卡收到的数据包
[root@Mr_chen ~]# tcpdump -i eth0 #使用-i选项可以指定要监听的网卡
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
05:46:06.865643 IP localhost.ssh > localhost.50832: Flags [P.], seq 898335828:898336036, ack 861403175, win 317, length 208
05:46:06.865721 IP localhost.50832 > localhost.ssh: Flags [.], ack 208, win 524, length 0
05:46:06.865876 IP localhost.37090 > localhost.domain: 16313+ PTR? 254.0.168.192.in-addr.arpa. (44)
^C
49 packets captured
52 packets received by filter
0 packets dropped by kernel

以下是命令的结果说明
05:46:06.865643:当前时间,精确到微妙
IP localhost.ssh > localhost.50832:从主机localhost的SSH端口发送数据到localhost
                                   的50832端口,“>”代表数据流向
Flags [P.]:TCP包中的标志信息,S是SYN标志的缩写,F(FIN),P(PUSH),R(RST),“.”          (没有标记)。
seq:数据包中的数据的顺序号。
ack:下次期望的顺序号
win:接收缓存的窗口大小
length:数据包长度

(4)监听指定主机的数据包
[root@Mr_chen ~]# tcpdump -n -c 5 host 192.168.0.254 #使用-n选项不进行DNS解析,加快显示速度。监听指定主机的关键字为host,后面直接接主机名或IP地址即可。本行命令的作用是监听所有192.168.0.254的主机收到的和发出的数据包
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
06:18:59.812585 IP 192.168.0.233.ssh > 192.168.0.254.50832: Flags [P.], seq 898389300:898389508, ack 861410071, win 317, length 208
06:18:59.812763 IP 192.168.0.254.50832 > 192.168.0.233.ssh: Flags [.], ack 208, win 524, length 0
06:18:59.813478 IP 192.168.0.233.ssh > 192.168.0.254.50832: Flags [P.], seq 208:496, ack 1, win 317, length 288
06:18:59.814441 IP 192.168.0.233.ssh > 192.168.0.254.50832: Flags [P.], seq 496:672, ack 1, win 317, length 176
06:18:59.814534 IP 192.168.0.254.50832 > 192.168.0.233.ssh: Flags [.], ack 672, win 522, length 0
5 packets captured
5 packets received by filter
0 packets dropped by kernel
[root@Mr_chen ~]# tcpdump -n -c 5 src host 192.168.0.254 #只监听从192.168.0.254发出的数据包,即源地址为192.168.0.254,关键字为src(source,源地址)
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
06:19:45.439633 IP 192.168.0.254.50832 > 192.168.0.233.ssh: Flags [.], ack 898393156, win 522, length 0
06:19:45.511489 IP 192.168.0.254.50832 > 192.168.0.233.ssh: Flags [.], ack 161, win 521, length 0
06:19:45.589521 IP 192.168.0.254.50832 > 192.168.0.233.ssh: Flags [.], ack 321, win 520, length 0
06:19:45.667712 IP 192.168.0.254.50832 > 192.168.0.233.ssh: Flags [.], ack 481, win 520, length 0
06:19:45.733979 IP 192.168.0.254.50832 > 192.168.0.233.ssh: Flags [.], ack 641, win 519, length 0
5 packets captured
6 packets received by filter
0 packets dropped by kernel
[root@Mr_chen ~]# tcpdump -n -c 5 dst host 192.168.0.254 #只监听192.168.0.254收到的数据包,即目标地址为192.168.0.254,关键字为dst(destination,目的地)
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
18:21:33.783811 IP 192.168.0.233.ssh > 192.168.0.254.55962: Flags [P.], seq 1885784800:1885785008, ack 322191067, win 317, length 208
18:21:33.785709 IP 192.168.0.233.ssh > 192.168.0.254.55962: Flags [P.], seq 208:400, ack 1, win 317, length 192
18:21:33.786677 IP 192.168.0.233.ssh > 192.168.0.254.55962: Flags [P.], seq 400:576, ack 1, win 317, length 176
18:21:33.787676 IP 192.168.0.233.ssh > 192.168.0.254.55962: Flags [P.], seq 576:752, ack 1, win 317, length 176
18:21:33.788684 IP 192.168.0.233.ssh > 192.168.0.254.55962: Flags [P.], seq 752:928, ack 1, win 317, length 176
5 packets captured
5 packets received by filter
0 packets dropped by kernel

(5)监听指定端口的数据包
[root@Mr_chen ~]# tcpdump -nn -c 5 port 22 #-nn不进行DNS解析,不将端口转换成服务名字, port指定监听端口
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
18:27:25.472624 IP 192.168.0.233.22 > 192.168.0.254.55962: Flags [P.], seq 1886385856:1886386064, ack 322195131, win 317, length 208
18:27:25.472764 IP 192.168.0.254.55962 > 192.168.0.233.22: Flags [.], ack 208, win 522, length 0
18:27:25.473731 IP 192.168.0.233.22 > 192.168.0.254.55962: Flags [P.], seq 208:496, ack 1, win 317, length 288
18:27:25.474746 IP 192.168.0.233.22 > 192.168.0.254.55962: Flags [P.], seq 496:672, ack 1, win 317, length 176
18:27:25.474836 IP 192.168.0.254.55962 > 192.168.0.233.22: Flags [.], ack 672, win 520, length 0
5 packets captured
5 packets received by filter
0 packets dropped by kernel

(6)监听指定协议的数据包
[root@Mr_chen ~]# tcpdump -n -c 5 arp #监听arp协议数据包,因此表达式直接写arp即可
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
18:29:08.056959 ARP, Request who-has 192.168.0.111 tell 192.168.0.1, length 46
18:29:08.978765 ARP, Request who-has 192.168.0.111 tell 192.168.0.1, length 46
18:29:09.900334 ARP, Request who-has 192.168.0.111 tell 192.168.0.1, length 46
18:29:10.822093 ARP, Request who-has 192.168.0.111 tell 192.168.0.1, length 46
18:29:12.050836 ARP, Request who-has 192.168.0.111 tell 192.168.0.1, length 46
5 packets captured
5 packets received by filter
0 packets dropped by kernel
[root@Mr_chen ~]# tcpdump -n -c 5 icmp #监听icmp数据包(想要查看下面的监控数据,可以使用其他机器ping本机即可)
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
18:30:55.576828 IP 192.168.0.254 > 192.168.0.233: ICMP echo request, id 1, seq 19956, length 40
18:30:55.576844 IP 192.168.0.233 > 192.168.0.254: ICMP echo reply, id 1, seq 19956, length 40
18:30:56.578427 IP 192.168.0.254 > 192.168.0.233: ICMP echo request, id 1, seq 19958, length 40
18:30:56.578445 IP 192.168.0.233 > 192.168.0.254: ICMP echo reply, id 1, seq 19958, length 40
18:30:57.582167 IP 192.168.0.254 > 192.168.0.233: ICMP echo request, id 1, seq 19960, length 40
5 packets captured
6 packets received by filter
0 packets dropped by kernel
常见的协议关键字有ip,arp,icmp,tcp,udp等类型
(7)利用tcpdump抓包详解tcp/ip连接和断开过程的案例
1)正常的TCP连接的三个阶段
:TCP三次握手
:数据传送
:TCP四次断开
2)TCP连接图示
TCP连接的状态机制如下图所示
在这里插入图片描述
3)TCP的状态标识
SYN:(同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立TCP连接时有效。表示一个新的TCP连接请求
ACK:(确认编号,Acknowledgement Number)是对TCP请求的确认标志,同时提示对端系统已经成功接收了所有的数据。
FIN:(结束标志,FINish)用来结束一个TCP回话。但对应端口仍然处于开放状态,准备接收后续数据。

4)使用tcpdump对tcp数据进行抓包
[root@Mr_chen www]# tcpdump tcp port 80 or dst 192.168.0.114 -i eth0 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

#抓包分析:三次握手过程
22:38:18.564320 ARP, Reply 192.168.0.233 is-at 00:0c:29:a8:ca:50, length 28
#发送了一个ARP响应包给目标MAC地址,告知对方本机的MAC地址
22:38:18.564418 IP 192.168.0.114.52367 > 192.168.0.233.http: Flags [S], seq 3675775834, win 14600, options [mss 1460,sackOK,TS val 4294710555 ecr 0,nop,wscale 6], length 0
#IP为192.168.0.114(client)通过临时端口52367向本机192.168.0.233(server)的80监听端口发起连接,client的初始包序号为3675775834,滑动窗口大小为14600字节(即TCP接收缓冲区的大小,用于TCP拥塞控制),mss大小为1460(即可接收的最大包长度),[S]=SYN
22:38:18.564434 IP 192.168.0.233.http > 192.168.0.114.52367: Flags [S.], seq 2909831439, ack 3675775835, win 14480, options [mss 1460,sackOK,TS val 15157720 ecr 4294710555,nop,wscale 6], length 0
#Server的响应连接,同时带上上一个包的ack信息(为client端的初始包序号+1,即3675775835,也就是server端下次等待接收这个包序号的包,用于TCP字节流的顺序控制。Server端的初始包序号为2909831439,mss也是1460)
22:38:18.564541 IP 192.168.0.114.52367 > 192.168.0.233.http: Flags [.], ack 1, win 229, options [nop,nop,TS val 4294710556 ecr 15157720], length 0
#Client端再次确认,tcp三次握手完成。“.”表示没有任何标识

以下是数据传输过程:
22:38:18.564654 IP 192.168.0.114.52367 > 192.168.0.233.http: Flags [P.], seq 1:169, ack 1, win 229, options [nop,nop,TS val 4294710557 ecr 15157720], length 168
#Client端发请求包,包长度是168字节。[P]=[push](传送数据标志)
22:38:18.564658 IP 192.168.0.233.http > 192.168.0.114.52367: Flags [.], ack 169, win 243, options [nop,nop,TS val 15157720 ecr 4294710557], length 0 #Server端回应Client端表示收到请求,并确认已经收到了之前的168字节
22:38:18.564707 IP 192.168.0.233.http > 192.168.0.114.52367: Flags [P.], seq 1:237, ack 169, win 243, options [nop,nop,TS val 15157720 ecr 4294710557], length 236 #Server回包,包长度236字节
22:38:18.564755 IP 192.168.0.233.http > 192.168.0.114.52367: Flags [P.], seq 237:258, ack 169, win 243, options [nop,nop,TS val 15157720 ecr 4294710557], length 21
22:38:18.564773 IP 192.168.0.114.52367 > 192.168.0.233.http: Flags [.], ack 237, win 245, options [nop,nop,TS val 4294710557 ecr 15157720], length 0
22:38:18.564818 IP 192.168.0.114.52367 > 192.168.0.233.http: Flags [.], ack 258, win 245, options [nop,nop,TS val 4294710557 ecr 15157720], length 0

以下是4次挥手过程:
22:38:18.564946 IP 192.168.0.114.52367 > 192.168.0.233.http: Flags [F.], seq 169, ack 258, win 245, options [nop,nop,TS val 4294710557 ecr 15157720], length 0
#Client端发送关闭连接请求,F=FIN(断开连接标志)
22:38:18.564956 IP 192.168.0.233.http > 192.168.0.114.52367: Flags [F.], seq 258, ack 170, win 243, options [nop,nop,TS val 15157720 ecr 4294710557], length 0
#Server端回应并确认了Client端的断开连接请求,并且也发送了FIN标志关闭。(只有当服务器传输未完成时,此处才会出现两次挥手,如果Clinet发起断开请求时,服务器已经传输数据完成,则此处服务端会直接回应关闭标志FIN)
22:38:18.565022 IP 192.168.0.114.52367 > 192.168.0.233.http: Flags [.], ack 259, win 245, options [nop,nop,TS val 4294710557 ecr 15157720], length 0
#Clinet端响应ack,关闭连接的四次挥手完成

提示:
tcpdump是一个非常强大并且好用的命令,请同学们多花精力来掌握,当然,要想掌握好,还需要一定的网络知识才行

网络扫描工具nc&nmap

阅读数 3829

没有更多推荐了,返回首页